Awesome
classeine
Classeine is a library designed to provide all the necessary tools for creating full-featured and portable applications built on top of SDL2 in modern C++.
Please note that it is currently in an early stage of development.
Features
- Written in modern C++
- UI control renderers pluggable with multi-theme support
- Built on top of the standard library and:
- SDL2
- SDL2_ttf
- SDL2_gfx
- https://github.com/aminosbh/sdl2-cmake-modules
- No exceptions
- No manual memory management (through extensive usage of smart pointers and RAII)
Libraries implemented
- clsn::core - Core functionality
- Event management
- Properties
- configuration by sections
entity
polymorphic base class: Adds some memory profiling toolsentity_wrapper<T>
: Wrapper for anyT
, inheriting fromentity
factory<T>
: Factory that returns an instance of a base class T when invoked.lazy<T>
: Object T is constructed the first time this instance is accessed.- Simple and tiny string builder
- Assertion errors and panic functionalities
- clsn::draw - library providing drawing primitives
color
dimension
font
point
region
- clsn::ui - library providing componentable UI controls
control
empty_control
- Control that does nothing. Useful to have a custom renderer.paintable_control
- Control with background, foreground and fontcaptionable_control
clickable_control
button
toggle_control
check_box
radio_button
toggle_button
label
tab_control
window
main_window
container
constrained_container<Constraint>
- Container that stores controls with its constraintslayout_container<Layout>
dual_layout_container
- Container that stores only two elements, one occupying only its preferred size and the other one occupying the remaining spaceflow_layout_container
- Container where controls are positioned one next to the other according to a left-right-top-bottom orderinghbox_layout_container
- Container where the controls are rendered horizontallyvbox_layout_container
- Container where the controls are rendered verticallyxy_layout_container
- Container where the controls are placed in specific coordinates in the given region.
content_pane
- Abstract class that handles layout and events for specific control containersdynamic_content_pane
- Content pane able to load and unload dynamically any controlstatic_content_pane
- Content pane with its child content already bound in compile timepadding_control
- Control with a border with variable size
graphics
- abstraction to rendering backendui_manager
ui_font_manager
ui_theme_manager
ui_theme
- Set of colors and defaults given a theme. A theme manager can have registered several themes but only one current.
Supported Platforms
- Linux
- WebAssembly through Emscripten
- Windows