Project Overview
Project Structure
The project is organized with a clear separation of concerns between rendering, UI integration, and documentation. This structure is designed to ensure maintainability, reusability, and a smooth build process across platforms.
At a glance, the layout highlights: - A dedicated source and include tree for C++ logic. - UI-agnostic rendering code separated from wxWidgets integration. - Assets and documentation bundled in their respective folders. - CMake configuration at the root for consistent builds.
The following tree shows the high-level organization:
GLOverlayUI/
├── assets/ # Assets resources
│ └── logo/ # Logo Emplacement folder
│ └── <images> # Images
├── src/ # C++ source files
│ ├── renderer.C # OpenGL rendering logic (source) (UI-agnostic)
│ ├── mainframe.C # wxWidget wrapper (source)
│ ├── canvasdriver.C # wxGLCanvas wrapper (source)
├── include/ # C++ header files
│ ├── renderer.H # OpenGL rendering logic (header) (UI-agnostic)
│ ├── canvasdriver.H # wxGLCanvas wrapper (header)
│ ├── mainframe.H # wxWidget wrapper (header)
│ ├── GLOverlayUI_config.in.H # Generated Configuration (header)
├── CMakeLists.txt # Build configuration
├── config/ # Folder configuration
│ └── GLOverlayUI_config.in # Basic Config of GLOverlayUI application
├── docs/ # Documentation folder
│ ├── conf.py # Sphinx configuration
│ ├── index.rst # This file (Sphinx entry point)
│ ├── doc.cmake # Doxygen + Sphinx integration
│ ├── autodocs.cmake # cmake file to automate the documentation build
│ ├── make.bat # Generated by sphinx-quickstart
│ ├── Doxyfile # Doxyfile Generated by Doxygen
│ ├── Makefile # Generated by sphinx-quickstart
├── GLOverlayUI_app.C # Main application window and UI logic
├── requirements.txt # Python dependencies for documentation
└── README.md # Project overview
Architecture Overview
The application is organized into three decoupled components:
Component |
Description |
Depends on wxWidgets |
|---|---|---|
|
Core OpenGL rendering logic |
❌ |
|
|
✅ |
|
Main UI (panel, slider, checkbox) |
✅ |
This clean separation enables easy testing and reusability of the rendering logic in other contexts.