# erfan-ops/videoeditorbeta architecture

> Architecture diagram of the GitHub repository erfan-ops/videoeditorbeta, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/erfan-ops/videoeditorbeta
- Repository: https://github.com/erfan-ops/videoeditorbeta

## Overview

RetroShade is a Qt image/video editor with a modular effect system and GPU-oriented processing. The documented user workflow is to open media, select an effect, process it, and view or save the result. The tree supports separate image/video and effect layers, but the main-window implementation and most call sites are absent, so several workflow connections are intentionally omitted. OpenCL support is documented; its runtime dispatch wiring is not established by the excerpts.

Main entry points: [`effectBase.h`](https://github.com/erfan-ops/videoeditorbeta/blob/master/effectBase.h) (Effect interface), [`image.cpp`](https://github.com/erfan-ops/videoeditorbeta/blob/master/image.cpp) (Image handling), [`Video.cpp`](https://github.com/erfan-ops/videoeditorbeta/blob/master/Video.cpp) (Video handling), [`imageBlur.cpp`](https://github.com/erfan-ops/videoeditorbeta/blob/master/imageBlur.cpp) (Image effects)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application UI"]
  node_entry["Qt entry point<br/>[main.cpp]"]
  node_window["Main window"]
  node_effect_ui["Effect controls<br/>[EffectButton.cpp]"]
  node_color_ui["Color controls<br/>[colorButton.cpp]"]
  node_file_dialog["File selection<br/>[fileDialog.cpp]"]
end

subgraph group_media["Media Handling"]
  node_image_io["Image handling<br/>[image.cpp]"]
  node_video_io["Video handling<br/>[Video.cpp]"]
end

subgraph group_effects["Effect Processing"]
  node_processor["Processor base<br/>[baseProcessor.cpp]"]
  node_effect_base["Effect interface<br/>[effectBase.h]"]
  node_image_base["Image effect base<br/>[imageEffectBase.h]"]
  node_effect_catalog["Effect catalog<br/>[effects.h]"]
  node_image_effects["Image effects<br/>[imageBlur.cpp]"]
  node_video_effects["Video effects<br/>[Blur.cpp]"]
end

subgraph group_accel["GPU Acceleration"]
  node_opencl_sources["OpenCL kernels<br/>[SourcesOpenCL.cpp]"]
  node_opencl_palette["OpenCL palette"]
end

node_user(("Editor user"))
node_opencv["OpenCV"]
node_media_result["Edited media"]

node_user -->|"launches"| node_entry
node_entry -->|"creates"| node_window
node_user -->|"interacts"| node_window
node_window -->|"selects media"| node_file_dialog
node_window -->|"presents controls"| node_effect_ui
node_window -->|"presents controls"| node_color_ui
node_image_io -->|"uses"| node_opencv
node_video_io -->|"uses"| node_opencv
node_effect_catalog -->|"describes effects"| node_effect_base
node_image_effects -->|"implements"| node_image_base
node_video_effects -->|"implements"| node_effect_base
node_processor -->|"supports"| node_effect_base
node_opencl_palette -->|"uses kernels"| node_opencl_sources
node_image_effects -->|"produces"| node_media_result
node_video_effects -->|"produces"| node_media_result
node_image_io -->|"handles"| node_media_result
node_video_io -->|"handles"| node_media_result

click node_entry "https://github.com/erfan-ops/videoeditorbeta/blob/master/main.cpp"
click node_effect_ui "https://github.com/erfan-ops/videoeditorbeta/blob/master/EffectButton.cpp"
click node_color_ui "https://github.com/erfan-ops/videoeditorbeta/blob/master/colorButton.cpp"
click node_file_dialog "https://github.com/erfan-ops/videoeditorbeta/blob/master/fileDialog.cpp"
click node_image_io "https://github.com/erfan-ops/videoeditorbeta/blob/master/image.cpp"
click node_video_io "https://github.com/erfan-ops/videoeditorbeta/blob/master/Video.cpp"
click node_processor "https://github.com/erfan-ops/videoeditorbeta/blob/master/baseProcessor.cpp"
click node_effect_base "https://github.com/erfan-ops/videoeditorbeta/blob/master/effectBase.h"
click node_image_base "https://github.com/erfan-ops/videoeditorbeta/blob/master/imageEffectBase.h"
click node_effect_catalog "https://github.com/erfan-ops/videoeditorbeta/blob/master/effects.h"
click node_image_effects "https://github.com/erfan-ops/videoeditorbeta/blob/master/imageBlur.cpp"
click node_video_effects "https://github.com/erfan-ops/videoeditorbeta/blob/master/Blur.cpp"
click node_opencl_sources "https://github.com/erfan-ops/videoeditorbeta/blob/master/SourcesOpenCL.cpp"
click node_opencl_palette "https://github.com/erfan-ops/videoeditorbeta/blob/master/OpenCLSoftPalette.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_entry,node_window,node_effect_ui,node_color_ui,node_file_dialog,node_user toneBlue
class node_image_io,node_video_io toneAmber
class node_processor,node_effect_base,node_image_base,node_effect_catalog,node_image_effects,node_video_effects toneMint
class node_opencl_sources,node_opencl_palette toneRose
class node_opencv,node_media_result toneIndigo
```

## Components

### Application UI

- [Qt entry point](https://github.com/erfan-ops/videoeditorbeta/blob/master/main.cpp): `main.cpp`
- **Main window**
- [Effect controls](https://github.com/erfan-ops/videoeditorbeta/blob/master/EffectButton.cpp): `EffectButton.cpp`
- [Color controls](https://github.com/erfan-ops/videoeditorbeta/blob/master/colorButton.cpp): `colorButton.cpp`
- [File selection](https://github.com/erfan-ops/videoeditorbeta/blob/master/fileDialog.cpp): `fileDialog.cpp`

### Media Handling

- [Image handling](https://github.com/erfan-ops/videoeditorbeta/blob/master/image.cpp): `image.cpp`
- [Video handling](https://github.com/erfan-ops/videoeditorbeta/blob/master/Video.cpp): `Video.cpp`

### Effect Processing

- [Processor base](https://github.com/erfan-ops/videoeditorbeta/blob/master/baseProcessor.cpp): `baseProcessor.cpp`
- [Effect interface](https://github.com/erfan-ops/videoeditorbeta/blob/master/effectBase.h): `effectBase.h`
- [Image effect base](https://github.com/erfan-ops/videoeditorbeta/blob/master/imageEffectBase.h): `imageEffectBase.h`
- [Effect catalog](https://github.com/erfan-ops/videoeditorbeta/blob/master/effects.h): `effects.h`
- [Image effects](https://github.com/erfan-ops/videoeditorbeta/blob/master/imageBlur.cpp): `imageBlur.cpp`
- [Video effects](https://github.com/erfan-ops/videoeditorbeta/blob/master/Blur.cpp): `Blur.cpp`

### GPU Acceleration

- [OpenCL kernels](https://github.com/erfan-ops/videoeditorbeta/blob/master/SourcesOpenCL.cpp): `SourcesOpenCL.cpp`
- [OpenCL palette](https://github.com/erfan-ops/videoeditorbeta/blob/master/OpenCLSoftPalette.cpp): `OpenCLSoftPalette.cpp`

### Other components

- **Editor user**
- **OpenCV**
- **Edited media**

## Connections

- Editor user → Qt entry point: launches
- Qt entry point → Main window: creates
- Editor user → Main window: interacts
- Main window → File selection: selects media
- Main window → Effect controls: presents controls
- Main window → Color controls: presents controls
- Image handling → OpenCV: uses
- Video handling → OpenCV: uses
- Effect catalog → Effect interface: describes effects
- Image effects → Image effect base: implements
- Video effects → Effect interface: implements
- Processor base → Effect interface: supports
- OpenCL palette → OpenCL kernels: uses kernels
- Image effects → Edited media: produces
- Video effects → Edited media: produces
- Image handling → Edited media: handles
- Video handling → Edited media: handles
