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

renderer

Core OpenGL rendering logic

canvasdriver

canvasdriver wrapper, handles UI integration

MainFrame

Main UI (panel, slider, checkbox)

This clean separation enables easy testing and reusability of the rendering logic in other contexts.