Christoph K.
73ccaa3e95
feat: extend CliRunner with config file/batch mode and add comprehensive tests
...
CliRunner:
- --batch / --config <file> flags trigger batch mode with directory scanning
- collect_files() with recursive support and case-insensitive extension matching
- build_pipeline() respects AppConfig conversion flags (invert toggle)
- Progress output to stderr: "[1/42] Processing DSC09246.ARW..."
Tests (test_pipeline.cpp):
- AppConfig: load/save roundtrip, missing file error, extension parsing,
format mapping, write_default
- CropProcessor: levels adjustment, sharpening no-clip, empty image error
- ColorCorrector: AWB preserves neutral grey, skips B&W film
- Inverter: color negative changes values, B&W inversion, positive passthrough
- Preprocessor: 8-bit→16-bit conversion
test_rawloader.cpp: added missing <fstream> include
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-14 09:42:01 +01:00
Christoph K.
db39ef8c58
feat: add Windows cross-compilation build script
...
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 >
2026-03-14 09:41:50 +01:00
Christoph K.
54efb58c65
feat: add MinGW-w64 cross-compilation toolchain and CPack packaging
...
- CMakeLists.txt: adds AppConfig to converter_core sources, LibRaw fallback
find_library for MinGW, CPack config for NSIS+ZIP (Windows) and TGZ+DEB
(Linux), install rules for binary and example config
- cmake/toolchain-mingw64.cmake: x86_64-w64-mingw32 toolchain, static
libgcc/libstdc++ linking, optional vcpkg x64-mingw-static triplet
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-14 09:41:33 +01:00
Christoph K.
71d535fc50
feat: extend MainWindow with QThread worker, settings panel, and batch dialog
...
- 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 >
2026-03-14 09:41:23 +01:00
Christoph K.
fd2d97ddeb
feat: implement all core pipeline stage algorithms
...
- CropProcessor: Canny/contour auto-crop with kMinFrameAreaRatio guard,
percentile-based levels adjustment (0.5th/99.5th), unsharp mask sharpening
- Inverter: C-41 orange mask removal via border sampling + per-channel
pedestal subtraction before bitwise_not; B&W simple bitwise_not
- ColorCorrector: LAB-space C-41 cast correction (a*/b* re-centering)
followed by gray-world auto white balance; EXIF WB fallback
- Preprocessor: 8-bit→16-bit scaling already correct; deskew stub retained
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-14 09:41:18 +01:00
Christoph K.
344c22b6e3
feat: add AppConfig INI-based configuration system
...
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 >
2026-03-14 09:41:07 +01:00
Christoph K.
65b411b23d
chore: initial project scaffold from architecture design
...
- Add CLAUDE.md with project overview, tech stack, build commands,
architecture description, coding standards, and sample images section
- Add full directory structure: src/, docs/, tests/, import/
- Add CMakeLists.txt with C++20, OpenCV/LibRaw/Qt6 dependencies,
converter_core static lib, optional GUI, and GTest tests
- Add architecture documentation: ARCHITECTURE.md, PIPELINE.md, MODULES.md
- Add source skeletons for all pipeline stages:
RawLoader, Preprocessor, NegativeDetector, Inverter, ColorCorrector,
CropProcessor, OutputWriter, Pipeline, MainWindow, CliRunner, main.cpp
- Add initial test stubs for pipeline and rawloader
- Add sample ARW files in import/ for integration testing
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-14 09:28:32 +01:00