assext 0.1.0

Asset file extension tool - A Spine file processing tool that generates numbers in specified regions
# Assext - Asset File Extension Tool

A command-line tool written in Rust for processing Asset files and generating numbers in specified regions.

## Features

- Read Spine files (.atlas, .png, .skel) or single image files
- Allow users to select rectangular regions on images through a GUI window
- Automatically adjust and draw numbers within specified rectangular regions
- Support two output modes:
  - **Multi-file mode**: Generate multiple directories, each containing complete Spine files
  - **Single-image mode**: Generate numbered image files directly in the output directory

## Usage

```bash
cargo build
./target/debug/assext <SPINE_PATH> <OUTPUT_DIR> <COUNT>
```

### Parameters

- `SPINE_PATH`: Spine file path (without extension) or single image path, e.g., `./data/lixiaolong` or `./datasingle/lixiaolong`
- `OUTPUT_DIR`: Output directory, e.g., `output`
- `COUNT`: Number of files to generate, e.g., `3`

### Usage Modes

The program automatically selects the output mode based on input files:

#### Multi-file Mode (Complete Spine Files)

When the input path contains `.atlas` and/or `.skel` files, the program uses multi-file mode.

```bash
./target/debug/assext ./data/lixiaolong output 3
```

This will:

1. Open a GUI window displaying the `lixiaolong.png` image
2. Allow users to drag and select a rectangular region on the image
3. Create 3 subdirectories in the `output/` directory:
   - `lixiaolong_01/`
   - `lixiaolong_02/`
   - `lixiaolong_03/`
4. Each directory contains:
   - `lixiaolong.atlas` (copied original file)
   - `lixiaolong.png` (image with corresponding number drawn in the specified region)
   - `lixiaolong.skel` (copied original file)

#### Single-image Mode (PNG Files Only)

When the input path contains only `.png` files, the program uses single-image mode.

```bash
./target/debug/assext ./datasingle/lixiaolong output 3
```

This will:

1. Open a GUI window displaying the `lixiaolong.png` image
2. Allow users to drag and select a rectangular region on the image
3. Generate 3 image files directly in the `output/` directory:
   - `lixiaolong_01.png`
   - `lixiaolong_02.png`
   - `lixiaolong_03.png`

## GUI Usage Instructions

1. The program will open a window displaying the Spine image upon startup
2. Drag the mouse on the image to select a rectangular region
3. A red border will show the currently selected region
4. Click the "Confirm" button to confirm the selection
5. Click the "Cancel" button to exit the program

## Dependencies

- Rust 1.70+
- System fonts (Arial, Helvetica, etc.)

## Building

```bash
cargo build --release
```

## Changelog

### v0.2.0

- Added single-image mode support
- When input directory contains only PNG files, generate numbered image files directly in the output directory
- No longer creates subdirectories, simplifying output structure
- Automatically detect input file types and select appropriate output mode

### v0.1.0

- Initial version
- Support for complete Spine file processing
- GUI rectangular region selection
- Multi-directory output mode

## Notes

- Ensure input files exist:
  - Multi-file mode: Requires `.png` file, `.atlas` and `.skel` files are optional
  - Single-image mode: Only requires `.png` file
- GUI window needs to run in an environment with a graphical interface
- The program automatically adjusts text size to fit the selected rectangular region
- Generated numbers are centered within the rectangular region
- The program automatically selects output mode based on input file types
- Number format: 1-99 uses 2-digit format (01, 02, 03...), 100+ uses 3-digit format (001, 002, 003...)