A single-header C++20 library for convenient, high-performance RGB color and cursor position control in console applications.
Oof is a C++20 library that provides a convenient wrapper around Virtual Terminal sequences for controlling console output. It allows developers to set RGB colors, position the cursor, and apply text formatting like underline and bold, enabling rich, dynamic terminal interfaces. The library focuses on high performance, with optimized screen classes for real-time displays.
C++ developers building console applications that require colored output, dynamic text layouts, or real-time visualizations, such as CLI tools, terminal games, or data monitors.
Oof offers a clean, type-safe API for console control without sacrificing performance, with specialized screen classes that minimize redundant VT sequences. Its header-only design and focus on modularity make it easy to integrate and extend for custom use cases.
Convenient, high-performance RGB color and position control for console output
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
The screen and pixel_screen classes track state changes to minimize redundant VT sequences, enabling smooth real-time animations as demonstrated in the demo videos.
Supports 24-bit RGB colors through fg_color() and bg_color() functions, allowing exact color specifications for both foreground and background.
Single-file library with a simple OOF_IMPL define, making it easy to include in C++20 projects without additional build steps.
Provides a clean, compile-time checked interface for VT sequences, reducing errors compared to raw escape code strings.
pixel_screen relies on specific Unicode block elements that may not render correctly in all fonts, as noted in the font compatibility table, limiting visual consistency.
Development and testing are primarily on Windows, with acknowledged issues in Windows Terminal frame pacing, raising concerns for cross-platform reliability.
Compared to higher-level libraries like FTXUI, Oof requires manual implementation of UI components, increasing development time for complex interfaces.