# ICRS (Interactive Color Range Analyzer)

<div align="center">
  <img src="app/assets/logo.png" alt="ICRS Logo" width="120"/>
</div>

ICRS is a small Tkinter tool for analysing colour ranges in images. You load a picture, pick or click a reference colour, adjust hue/saturation/value sliders, and the app marks matching pixels while showing quick stats.

## Features
- Two synced previews (original + overlay)
- Hue/Sat/Value sliders with presets and image colour picker
- Exclusion rectangles to ignore regions
- Theme toggle (light/dark) with rounded toolbar buttons
- Folder support with previous/next navigation
- Quick overlay export (PNG) and optional defaults via `config.toml`

## Requirements
- Python 3.11+ (3.10 works with `tomli`)
- [uv](https://github.com/astral-sh/uv) for dependency management
- Tkinter (install separately on some Linux distros)

## Setup with uv (Windows PowerShell)
```powershell
git clone https://git.lukasmahler.de/lm/ICRS.git
cd ICRS
uv venv
.\.venv\Scripts\Activate
uv pip install .
uv run icrs
```
The launcher copies Tcl/Tk resources into the virtualenv on first run, so no manual environment tweaks are needed. On macOS/Linux replace the activate step with `source .venv/bin/activate`.

## Workflow
1. Load an image (`📂`) or a folder (`📁`).
2. Pick a colour (`🎨` dialog, `🖱️` image click, or preset swatch).
3. Fine‑tune sliders; watch the overlay update on the right.
4. Move through folder images with `⬅️` / `➡️`.
5. Draw exclusions with right drag; reset or save when ready.

## Config Defaults
Optional `config.toml`:
```toml
[defaults]
hue_min = 250.0
hue_max = 310.0
sat_min = 15.0
val_min = 15.0
val_max = 100.0
alpha = 120
```

## Project Layout
```
app/
  app.py          # main app assembly
  gui/            # UI, theme, picker mixins
  logic/          # image ops, defaults, reset
config.toml       # optional defaults
main.py           # entry point
```

## Development
- Quick check: `uv run python -m compileall app main.py`
- Contributions welcome; include screenshots for UI tweaks.
