Compiles photo-converter, all test binaries, and runs ctest.
Supports --release/--debug, --clean, --no-gui, --no-tests flags.
Auto-detects available CPU cores and skips Qt if not installed.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
NegativeDetector now accepts an optional forced FilmType. When
film_type != "auto" in config.ini, auto-detection is skipped and
the configured type is applied directly. build_pipeline() in
CliRunner maps c41→ColorNegative and bw→BWNegative accordingly.
Default config changed from film_type=auto to film_type=c41 to
match the project's primary use case (C-41 color negatives).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Lower Qt6 minimum version requirement from 6.8 to 6.4
- tests/CMakeLists.txt: fall back to FetchContent for GTest if not found
- Add MIT LICENSE file (required by CPack)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
scripts/build-windows.sh configures and builds with the MinGW-w64 toolchain,
collects runtime DLLs (OpenCV, LibRaw, Qt6, MinGW runtime) into dist-windows/,
strips release binaries, and packages a ZIP archive.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- ConversionWorker runs pipeline on background QThread so the GUI stays
responsive during conversion; emits file_done, preview_ready, finished
- MainWindow adds: output-format QComboBox, film-type QComboBox, Batch button
that opens an AppConfig INI file and discovers files from batch.input_dir
- main.cpp: --batch and --config flags trigger CLI mode without Qt
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Implements a zero-dependency INI parser for application settings with
[batch], [conversion], and [quality] sections. Includes AppConfig::load(),
write_default(), output_format(), and parsed_extensions() helpers, along
with a documented config.ini example file.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>