# kikirpaprojet/kikirpa-cpp architecture

> Architecture diagram of the GitHub repository kikirpaprojet/kikirpa-cpp, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/kikirpaprojet/kikirpa-cpp
- Repository: https://github.com/kikirpaprojet/kikirpa-cpp

## Overview

KIKIRPA-CPP is a Qt/C++ application for stitching overlapping artwork photographs into a mosaic. The documented backend workflow imports tiles, matches overlaps, positions tiles, corrects intensity, computes seamlines, assembles, and exports. JSON-configured steps run through a resumable pipeline; the Qt interface includes project/grid and alignment views. The README says assembly, export, and the Qt-to-computation connection are still in progress. Several stage implementations are unsampled, so their links follow the documented workflow rather than inferred calls.

Main entry points: [`src/frontend/mainwindow.cpp`](https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/src/frontend/mainwindow.cpp) (Main window), [`src/backend/core/pipeline/pipeline.cpp`](https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/src/backend/core/pipeline/pipeline.cpp) (Pipeline runner), [`src/backend/steps/dynamic_programming_dijkstra_step.cpp`](https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/src/backend/steps/dynamic_programming_dijkstra_step.cpp) (Seamline finding), [`src/backend/steps/import_step.cpp`](https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/src/backend/steps/import_step.cpp) (Tile import)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Qt interface"]
  node_mainwindow["Main window<br/>[mainwindow.cpp]"]
  node_projectgrid["Project grid<br/>[projectgrid.cpp]"]
  node_alignmentview["Alignment view<br/>[alignment_tab.cpp]"]
end

subgraph group_orchestration["Pipeline runtime"]
  node_pipelinejson["Pipeline JSON<br/>[PipelineJson.cpp]"]
  node_builder["Pipeline builder"]
  node_pipeline["Pipeline runner<br/>[pipeline.cpp]"]
  node_stepbase["Step framework<br/>[step.h]"]
  node_checkpoints["Run checkpoints<br/>[checkpoint.cpp]"]
end

subgraph group_alignment["Matching and positioning"]
  node_matching["Overlap matching"]
  node_positioning["Tile positioning"]
end

subgraph group_mosaic["Mosaic processing"]
  node_intensity["Intensity correction"]
  node_seamlines["Seamline finding"]
  node_verification["Final verification"]
  node_assembly["Mosaic assembly<br/>[algorithm_types.h]"]
end

subgraph group_persistence["Input and output"]
  node_import["Tile import<br/>[import_step.cpp]"]
  node_export["TIFF export<br/>[export_step.cpp]"]
  node_tiffreader["Pyramidal TIFF reader"]
  node_tiffwriter["TIFF writers"]
end

node_user(("Project user"))

node_user -->|"uses"| node_mainwindow
node_mainwindow -->|"coordinates"| node_projectgrid
node_mainwindow -->|"coordinates"| node_alignmentview
node_mainwindow -.->|"configures"| node_pipelinejson
node_pipelinejson -.->|"describes steps"| node_builder
node_builder -->|"constructs"| node_pipeline
node_pipeline -->|"runs steps"| node_stepbase
node_pipeline -->|"uses checkpoints"| node_checkpoints
node_import -->|"precedes"| node_matching
node_matching -->|"precedes"| node_positioning
node_positioning -->|"precedes"| node_intensity
node_intensity -->|"precedes"| node_seamlines
node_seamlines -->|"precedes"| node_assembly
node_assembly -->|"precedes"| node_export
node_import -.->|"reads tiles"| node_tiffreader
node_export -.->|"writes TIFF"| node_tiffwriter
node_seamlines -.->|"workflow stage"| node_verification

click node_mainwindow "https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/src/frontend/mainwindow.cpp"
click node_projectgrid "https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/src/frontend/projectgrid.cpp"
click node_alignmentview "https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/src/frontend/alignment_tab.cpp"
click node_pipelinejson "https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/src/frontend/PipelineJson.cpp"
click node_builder "https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/src/backend/core/pipeline/pipeline_builder.cpp"
click node_pipeline "https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/src/backend/core/pipeline/pipeline.cpp"
click node_stepbase "https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/include/backend/core/step/step.h"
click node_checkpoints "https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/src/backend/core/checkpoint/checkpoint.cpp"
click node_import "https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/src/backend/steps/import_step.cpp"
click node_matching "https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/src/backend/steps/phase_correlation_step.cpp"
click node_positioning "https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/src/backend/algorithms/stitching/positioning/tile_positioner.cpp"
click node_intensity "https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/src/backend/steps/intensity_correction_step.cpp"
click node_seamlines "https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/src/backend/steps/dynamic_programming_dijkstra_step.cpp"
click node_verification "https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/src/backend/steps/final_verification_step.cpp"
click node_assembly "https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/include/backend/core/data/algorithm_types.h"
click node_export "https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/src/backend/steps/export_step.cpp"
click node_tiffreader "https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/src/backend/core/io/pyramidal_tiff_reader.cpp"
click node_tiffwriter "https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/src/backend/core/io/tiled_tiff_writer.cpp"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_mainwindow,node_projectgrid,node_alignmentview,node_user toneBlue
class node_pipelinejson,node_builder,node_pipeline,node_stepbase,node_checkpoints toneAmber
class node_matching,node_positioning toneMint
class node_intensity,node_seamlines,node_verification,node_assembly toneRose
class node_import,node_export,node_tiffreader,node_tiffwriter toneIndigo
```

## Components

### Qt interface

- [Main window](https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/src/frontend/mainwindow.cpp): `src/frontend/mainwindow.cpp`
- [Project grid](https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/src/frontend/projectgrid.cpp): `src/frontend/projectgrid.cpp`
- [Alignment view](https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/src/frontend/alignment_tab.cpp): `src/frontend/alignment_tab.cpp`

### Pipeline runtime

- [Pipeline JSON](https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/src/frontend/PipelineJson.cpp): `src/frontend/PipelineJson.cpp`
- [Pipeline builder](https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/src/backend/core/pipeline/pipeline_builder.cpp): `src/backend/core/pipeline/pipeline_builder.cpp`
- [Pipeline runner](https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/src/backend/core/pipeline/pipeline.cpp): `src/backend/core/pipeline/pipeline.cpp`
- [Step framework](https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/include/backend/core/step/step.h): `include/backend/core/step/step.h`
- [Run checkpoints](https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/src/backend/core/checkpoint/checkpoint.cpp): `src/backend/core/checkpoint/checkpoint.cpp`

### Matching and positioning

- [Overlap matching](https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/src/backend/steps/phase_correlation_step.cpp): `src/backend/steps/phase_correlation_step.cpp`
- [Tile positioning](https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/src/backend/algorithms/stitching/positioning/tile_positioner.cpp): `src/backend/algorithms/stitching/positioning/tile_positioner.cpp`

### Mosaic processing

- [Intensity correction](https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/src/backend/steps/intensity_correction_step.cpp): `src/backend/steps/intensity_correction_step.cpp`
- [Seamline finding](https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/src/backend/steps/dynamic_programming_dijkstra_step.cpp): `src/backend/steps/dynamic_programming_dijkstra_step.cpp`
- [Final verification](https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/src/backend/steps/final_verification_step.cpp): `src/backend/steps/final_verification_step.cpp`
- [Mosaic assembly](https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/include/backend/core/data/algorithm_types.h): `include/backend/core/data/algorithm_types.h`

### Input and output

- [Tile import](https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/src/backend/steps/import_step.cpp): `src/backend/steps/import_step.cpp`
- [TIFF export](https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/src/backend/steps/export_step.cpp): `src/backend/steps/export_step.cpp`
- [Pyramidal TIFF reader](https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/src/backend/core/io/pyramidal_tiff_reader.cpp): `src/backend/core/io/pyramidal_tiff_reader.cpp`
- [TIFF writers](https://github.com/kikirpaprojet/kikirpa-cpp/blob/main/src/backend/core/io/tiled_tiff_writer.cpp): `src/backend/core/io/tiled_tiff_writer.cpp`

### Other components

- **Project user**

## Connections

- Project user → Main window: uses (evidence: `README.md`)
- Main window → Project grid: coordinates (evidence: `src/frontend/mainwindow.cpp`)
- Main window → Alignment view: coordinates (evidence: `src/frontend/mainwindow.cpp`)
- Main window → Pipeline JSON: configures
- Pipeline JSON → Pipeline builder: describes steps
- Pipeline builder → Pipeline runner: constructs (evidence: `src/backend/core/pipeline/pipeline_builder.cpp`)
- Pipeline runner → Step framework: runs steps
- Pipeline runner → Run checkpoints: uses checkpoints (evidence: `src/backend/core/pipeline/pipeline.cpp`)
- Tile import → Overlap matching: precedes (evidence: `README.md`)
- Overlap matching → Tile positioning: precedes (evidence: `README.md`)
- Tile positioning → Intensity correction: precedes (evidence: `README.md`)
- Intensity correction → Seamline finding: precedes (evidence: `README.md`)
- Seamline finding → Mosaic assembly: precedes (evidence: `README.md`)
- Mosaic assembly → TIFF export: precedes (evidence: `README.md`)
- Tile import → Pyramidal TIFF reader: reads tiles
- TIFF export → TIFF writers: writes TIFF
- Seamline finding → Final verification: workflow stage
