# brisk **Repository Path**: ninedreams/brisk ## Basic Information - **Project Name**: brisk - **Description**: 跨平台 C++20 模块化 GUI 框架,提供反应式设计和可扩展的 GPU 加速渲染。 (源码), (文档) - **Primary Language**: Unknown - **License**: GPL-2.0 - **Default Branch**: beta - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-07-31 - **Last Updated**: 2025-07-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Brisk **Brisk** is a modern, cross-platform C++ GUI framework designed to build responsive, high-performance applications with flexibility and ease. Initially developed for a graphics-intensive proprietary project with a complex and dynamic GUI. > [!Note] > The Brisk library is currently under active development. Breaking changes may occur, and the documentation might not always be up to date. Contributions are always welcome! Recommended reading: ➡️ [Brisk Design and Feature Overview](https://docs.brisklib.com/about/) ⬅️ [Documentation on docs.brisklib.com](https://docs.brisklib.com)        ### Our other projects
### Modules
#### **Core**
- **Compression & Basic Cryptography**: Provides data compression and basic cryptographic functions, including hashing algorithms.
- **Dynamic Library Loading**: Loads and interacts with `.dll` or `.so` files dynamically.
- **String Manipulation**: Handles UTF-8, UTF-16, and UTF-32, with text manipulation utilities.
- **Stream I/O**: Input/output operations for handling data streams.
- **Localization Support**: Basic localization and internationalization features for multilingual applications.
- **Logging**: Built-in logging framework for application diagnostics.
- **Reflection**: Supports reflection.
- **Serialization**: Serializes/deserializes data to/from JSON.
- **App-Global Settings**: Manages global application settings.
- **Threading**: Provides task queues for multi-threaded applications.
- **Binding**: Supports value binding, capable of handling multi-threaded environments.
#### **Graphics**
- **Color & Colorspaces**: Supports working with colors, including various colorspaces.
- **Geometry**: Provides 2D geometry types like `Rect`, `Point`, `Size`, and 2D matrices for transformations.
- **Canvas & Path**: Supports drawing with paths and Bézier curves.
- **SVG Rasterization**: Renders SVG images into raster formats.
- **Image Processing**: Supports image encoding, decoding, resizing, and manipulation.
- **Font Handling**: Manages fonts, including loading, rendering, caching, and text layout. Supports advanced text shaping (using HarfBuzz) and SVG fonts (emojis).
#### **Window**
- **Clipboard**: Provides clipboard access for copy/paste functionality.
- **OS Dialogs**: Native dialogs for file open/save, folder selection, and message boxes.
- **Display Information**: Retrieves and manages display/monitor information from the OS.
- **Buffered rendering** : Brisk supports both buffered rendering, which enables partial repaints, and direct rendering to the window backbuffer.
#### **GUI**
- **Widgets**: Includes a wide variety of widgets with CSS-style flex layout.
- **Style Sheets**: Styles your widgets using a stylesheet system that supports property inheritance.
Viewport-relative units are supported (`vh`, `vw`, `vmin`, `vmax)
- **Binding Support**: Data-binding between UI elements and application data. Supports transforming values using a function on-the-fly and compound values (e.g., sums of other values).
- **Stateful and Stateless Modes**: Choose between stateful widgets for persistent state or stateless widgets for easily rebuilding widget subtrees.
- **Drag-and-Drop**: Supports drag-and-drop within the GUI, with the option to attach a C++ object to represent the dragged data.
#### **Widgets**
- **Widgets**: Includes buttons, lists, comboboxes, toggle switches, radio buttons, progress bars, sliders, scroll boxes, checkboxes, popup buttons, tabs, tables, spin boxes, dialogs, and more. All public properties are styleable and bindable.
- **Layouts**: Supports CSS flexbox-style layouts.
- **Text Editors**: Provides text editing widgets with LTR and RTL text support.
- **WebGPU**: Ability to render 3D content to the window using the WebGPU API (backed by Google's Dawn), with full support for composition with the UI.
### Requirements ⚙️
- **C++20 Compiler**: Brisk requires a C++20-compatible compiler such as MSVC 2022, Clang, XCode, or GCC.
- **Dependency Management**: Uses [vcpkg](https://github.com/microsoft/vcpkg) to manage dependencies across platforms, simplifying the build process. Alternatively, you can download prebuilt binaries.
### Platform Support
| | Windows | macOS | Linux |
|---------------------|---------|-------|-------|
| Core Functionality | Beta | Beta | Beta |
| Graphics | Beta | Beta | Beta |
| Window System | Beta | Beta | Beta |
| Widgets | Beta | Beta | Beta |
| Application Support | Alpha | Alpha | N/A |
#### OS Support
| | Minimum version |
|---------|---------------------------------|
| Windows | Windows 10, Windows Server 2016 |
| macOS | macOS 11 Big Sur |
| Linux | n/a |
#### Graphics Backend Support
| | Backends |
|---------|---------------------------------|
| Windows | D3D11 and WebGPU (D3D12/Vulkan) |
| macOS | WebGPU (Metal) |
| Linux | WebGPU (OpenGL/Vulkan) |
### Example Projects
The `examples` directory contains projects that showcase how to use the Brisk library.
For a minimal example, check out the [brisk-helloworld](https://github.com/brisklib/brisk-helloworld) repository.
Example Project Binary Size:
| OS | Static Build, Release (Full Unicode Support) |
|-------------|-----------------------------------------------|
| Windows x64 | **10.1 MB** (D3D11) |
| Linux x64 | **18.2 MB** (WebGPU: Vulkan/OpenGL), stripped |
| macOS x64 | **16.5 MB** (WebGPU: Metal), stripped |
These sizes do not include embedded resources (such as fonts).
### Development 💻
Brisk is in active development, and we welcome contributions and feedback from the community to improve and expand the toolkit.
The `main` branch contains the latest features and generally passes all built-in tests ✅. Other branches are reserved for feature development and may be force-pushed.
### License 📜
Brisk is licensed under the **GPL v2.0** or later. However, for those who wish to use Brisk in proprietary or closed-source applications, a **commercial license** is also available. For more details on commercial licensing, please contact us at [brisk@brisklib.com](mailto:brisk@brisklib.com).