MetaImGUI 1.0.0
ImGui Application Template for C++20
Loading...
Searching...
No Matches
MetaImGUI API Documentation

Welcome to the MetaImGUI API documentation. MetaImGUI is a professional C++20 template for creating ImGui-based desktop applications with complete CI/CD infrastructure.

Overview

MetaImGUI provides a solid foundation for building cross-platform desktop applications using:

  • ImGui v1.92.4 - Immediate mode GUI library
  • GLFW 3.x - Cross-platform window management
  • OpenGL 4.6 - Graphics API (4.1 on macOS)
  • C++20 - Modern C++ with latest features

Key Features

Core Components

Architecture

The codebase follows SOLID principles with clear separation of concerns:

┌─────────────────┐
│ Application │ ← Main orchestration
├─────────────────┤
│ WindowManager │ ← GLFW + OpenGL
│ UIRenderer │ ← ImGui rendering
│ ConfigManager │ ← Settings persistence
│ Logger │ ← Logging system
│ DialogManager │ ← UI dialogs
│ ThemeManager │ ← Styling
│ Localization │ ← i18n support
│ UpdateChecker │ ← Update notifications
└─────────────────┘

Quick Start

Basic Usage

#include "Application.h"
int main() {
if (!app.Initialize()) {
return 1;
}
app.Run();
app.Shutdown();
return 0;
}
Main application class that orchestrates the application lifecycle.
Definition Application.h:69
void Shutdown()
Shutdown the application and cleanup resources.
bool Initialize()
Initialize the application and all subsystems.
void Run()
Run the main application loop.
int main()
Definition main.cpp:22

Logging

#include "Logger.h"
// Initialize logger
Logger::Instance().Initialize("logs/app.log", LogLevel::Info);
// Use logging macros
LOG_INFO("Application started");
LOG_ERROR("Failed to load file: {}", filename);
LOG_DEBUG("Debug value: {}", value);
#define LOG_INFO(...)
Definition Logger.h:218
#define LOG_DEBUG(...)
Definition Logger.h:217
#define LOG_ERROR(...)
Definition Logger.h:220

Configuration

#include "ConfigManager.h"
ConfigManager config;
config.Load();
// Get/set values
auto windowSize = config.GetWindowSize();
config.SetString("theme", "dark");
config.Save();

Localization

#include "Localization.h"
// Load translations
Localization::Instance().LoadTranslations("resources/translations/translations.json");
// Set language
Localization::Instance().SetLanguage("es"); // Spanish
// Get translated string
std::string greeting = Localization::Instance().Get("menu.file");

Building

Prerequisites

  • CMake 3.16+
  • C++20 compatible compiler (GCC 10+, Clang 10+, MSVC 2019 16.11+)
  • GLFW 3.x
  • OpenGL 4.6+ (or 4.1+ on macOS)
  • libcurl (for update checking)

Build Commands

# Setup dependencies
./setup_dependencies.sh
# Configure and build
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --parallel
# Run
./build/MetaImGUI

CMake Options

  • BUILD_TESTS - Build test suite (default: ON)
  • ENABLE_COVERAGE - Enable code coverage (default: OFF)
  • CMAKE_BUILD_TYPE - Build type: Debug, Release, RelWithDebInfo, MinSizeRel

Testing

# Build with tests
cmake -B build -DBUILD_TESTS=ON
cmake --build build
# Run tests
ctest --test-dir build --output-on-failure

Code Coverage

# Quick coverage report
./scripts/run_coverage.sh
# Manual
cmake -B build -DENABLE_COVERAGE=ON -DBUILD_TESTS=ON
cmake --build build
cd build && make coverage

Platform Support

  • Linux - Ubuntu 20.04+, Fedora 33+, Arch, Debian
  • Windows - Windows 10/11 with MSVC 2019+
  • macOS - macOS 11+ with Apple Clang

Additional Resources

License

GNU General Public License v3.0. See LICENSE for details.