/pandora_toolbox

Portable C++17 libraries for video/real-time projects and games: window/renderers/filters/input, cpu/monitor info, io/encoders/json, math/search/sort, patterns, timers...

Primary LanguageC++MIT LicenseMIT

Pandora Toolbox

latest version license - MIT project - CMake lang - C++17 tests - Gtest docs - Doxygen
Direct3D11 Vulkan OpenGL4

Pandora Toolbox is a collection of portable C++ libraries useful to create video/real-time projects: video processing, video games, emulators, simple AI, screensavers... The code is meant to be highly efficient and easy to use, while remaining lightweight and highly customizable. Libraries (video/io/hardware...) can be included separately.

Features - | - CMake options - | - Examples & tutorials - | - Changelog - | - Issue reporting & contribution

PreviewPreview2

Feature overview:

  • Window, renderer, message box, input, filters...
  • Display monitor, CPU spec reader, CPU affinity...
  • Timers, stopwatch, ordered lock, spin-lock, semaphore...
  • Fixed max size vector/string, circular queue, endianness...
  • Design patterns, search/sort algorithms, math/string utils...
  • File utils, UTF-8/UTF-16 encoders, ini/json, logger, location finder...
  • See detailed list of features and compatibility.

Build status

cmake 3.14 codecov coverage C++17 C++14

system compilers status
win Windows
supported
vs2019 clangcl
mingw7 vs2017
master appveyor-ci
develop appveyor-dev
x11 Linux/BSD (X11)
ongoing
gcc7 clang7
gcc5
master travis-ci
develop travis
mac Mac OS
planned
clang7 same ci
wln Linux (Wayland)
planned
gcc7 clang7 same ci

Development

Building project with CMake

This project can be generated with CMake for any IDE (or directly open with an IDE that can natively handle CMake files). Some scripts are also available to automatically generate the project for most IDEs ("_scripts" directory). Some options can be set to configure the solution when calling CMake (CMake-GUI, command line, or via an IDE).

Using CMake command line:
cmake -S [source_dir] -G [generator_name] -A [arch] -B [build_dir] -D[option_name]=[option_value]

Examples:

  • cmake -S . -G "Visual Studio 16 2019" -A x64 -B _build -DCWORK_TESTS=OFF
  • cmake -S . -G "Unix Makefiles" -B _build -DCWORK_DOCS=ON
  • cmake -S . -G "MinGW Makefiles" -B _build -DCMAKE_C_COMPILER=gcc.exe -DCMAKE_CXX_COMPILER=g++.exe -DCMAKE_MAKE_PROGRAM=mingw32-make.exe

More info: CMake explanations & examples - | - CMake options