On this page, we will list and explain what each of these core files does.

Core/Components

The Components directory has the following files:

  1. InlineComponent - Defines the abstract class for inline components. Documentation
  2. WindowComponent - Defines the abstract class for window components. Documentation
  3. TitlebarComponent - Defines the abstract class for title bar components. Documentation
  4. TitlebarBuilder - Implements the TitlebarBuilder and RadioBuilder classes for building portable titlebar menus that integrate with the macOS global menu when available. The macOS-specific code lives in TitlebarBuilder.mm. Documentation
  5. Instance - Defines the base Instance class. Documentation

Core/Interfaces

The Interfaces directory contains the following files:

  1. Input - Defines the Input interface. Documentation
  2. LayoutsInterface - Defines the UI layouts interface. Documentation
  3. PluginInterface - Defines the plugin interface. Documentation
  4. RendererInterface - Defines the Renderer interface. Documentation
  5. WindowInterface - Defines the Window. Documentation

Core/Platform

The Platform directory contains the following files:

  1. WASM - Platform-specific functions when targeting WASM

Core/

The Core directory contains the following files:

  1. Core.hpp - A bunch of header files that are widely used internally
  2. Defines.hpp - Defines and constants that are used internally. Documentation
  3. Global - Defines the global internal variable. Documentation
  4. Types.hpp - Contains many type definitions and aliases. Documentation
  5. Utilities - The Utilities interface is defined here. Documentation
  6. Allocator - The framework's custom allocator implementation. Used to allow safe sharing of allocations between framework, application and plugins (especially on Windows). Documentation
  7. CDeallocation.hpp - A header containing a struct that stores intermediate data for the C API. Documentation
  8. FrameworkMain - A bridge between the framework and the entry point application. The header declares the bridge functions while the .cpp file holds their implementation. Documentation

Modules/

The Modules folder contains the modules + Modules.hpp, which includes all modules. Documentation

Modules/Manager

The Manager folder contains the Modules interface and the ModulesManager internal classes. Documentation, Internal Documentation

Renderer

The Renderer folder contains the rendering code. The Renderer files define the internal renderer and the RendererData struct. Documentation

The Texture files define the user-facing Texture class.

Renderer/RendererUtils

The RendererUtils interface for building custom renderers. Documentation.

Renderer/GenericRenderer, Renderer/OpenGL, Renderer/Vulkan & Renderer/WebGPU

The Renderer/GenericRenderer folder contains a generic renderer interface, as well as a texturing interface, which are then inherited by the OpenGL, Vulkan and WebGPU renderers respectively.

Each folder has the following classes:

  1. <backend name>Renderer - Contains rendering code for the given backend
  2. <backend name>Texture - Contains texture code for the given backend

Documentation.

ImGui

This folder contains the following:

ImGui

This class defines internal code that sets up dear imgui. Documentation

UImGuiExtensions

This class defines some glue code that integrates dear imgui with our own custom types. They currently implement:

  1. imgui_stdlib functions for our own custom FString type

ClientSideBar

An implementation of native dear imgui client-side bar window decorations.

Window

The Window folder contains the code for GenericWindow, GenericMonitor and the default GLFW window implementation, as well as a small utility adapter Window class. The GenericWindow/macOS/ subdirectory also contains Objective-C++ helpers used by GenericWindow implementations on macOS.

Framework.hpp

Includes header files that are going to be used by all files generated under the Source directory.

C/UImGuiCAPI.h

Includes all header files that are part of the C API. Included by Framework.hpp.