Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/skui-org/skui
Skia-based C++ UI framework
https://github.com/skui-org/skui
cmake cross-platform cxx cxx17 graphics gui opengl signal skia ui
Last synced: 3 months ago
JSON representation
Skia-based C++ UI framework
- Host: GitHub
- URL: https://github.com/skui-org/skui
- Owner: skui-org
- License: mit
- Created: 2017-03-17T19:37:28.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2022-01-21T15:24:51.000Z (about 3 years ago)
- Last Synced: 2024-08-04T02:10:38.224Z (6 months ago)
- Topics: cmake, cross-platform, cxx, cxx17, graphics, gui, opengl, signal, skia, ui
- Language: C++
- Size: 1.13 MB
- Stars: 394
- Watchers: 37
- Forks: 61
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- AwesomeCppGameDev - skui - based C++ UI framework (Graphics)
README
# Introduction
UI framework that uses [Skia](https://skia.org/) as a low-level drawing toolkit.
It uses the newest features of the C++ Standard library (currently targetting C++17).# Status
SkUI is in a pre-release development phase, and the API is definitely not stable.
[![Build Status](https://app.travis-ci.com/skui-org/skui.svg?branch=master)](https://app.travis-ci.com/skui-org/skui)
[![Build status](https://ci.appveyor.com/api/projects/status/s9t7o9k8u0p15e0x?svg=true)](https://ci.appveyor.com/project/RubenVanBoxem/skui)
[![codecov](https://codecov.io/gh/skui-org/skui/branch/master/graph/badge.svg)](https://codecov.io/gh/skui-org/skui)
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/e461d12770cf4234b7d5a1ffcd880c2c)](https://www.codacy.com/manual/rubenvb/skui?utm_source=github.com&utm_medium=referral&utm_content=skui-org/skui&utm_campaign=Badge_Grade)| Operating System | Compiler | Supported | Notes |
|------------------| ------------------------|--------------------| ----- |
| Windows | Visual Studio 2019 | :heavy_check_mark: | |
| Windows | VS 2019 Clang/LLVM 8.0+ | :heavy_check_mark: | |
| Windows | Visual Studio 2017 | :heavy_check_mark: | |
| Windows | VS 2017 Clang/LLVM 6.0+ | :heavy_check_mark: | |
| Windows | MinGW-w64 GCC 7.3+ | :heavy_check_mark: | Requires usable std::filesystem implementation. |
| Windows | MinGW-w64 Clang 6.0+ | :heavy_check_mark: | Requires usable std::filesystem implementation. |
| Windows | Intel C++ 19 | :x: | Lacks required C++17 features. |
| Linux | GCC 7.3+ | :heavy_check_mark: | |
| Linux | Clang 6.0+ | :heavy_check_mark: | |
| Linux | Intel C++ 19 | :x: | Lacks required C++17 features. |
| Mac OS X 10.15+ | XCode 11.6+ Clang | :soon: | Missing implementation of core window/application classes. |
| Mac OS X 10.15+ | Homebrew GCC 7.3+ | :soon: | Missing implementation of core window/application classes. |
| Mac OS X 10.15+ | Homebrew Clang 6.0+ | :soon: | Missing implementation of core window/application classes. |# Components
SkUI is subdivided in several modules which can depend on other modules but shouldn't become a dependency mess:
* Core: basic functionality, including signals, properties, strings, paths, application, os abstraction...
* CSS: CSS parser built on top of Boost.Spirit X3.
* Graphics: graphical functionality such as canvases, contexts, shapes, text, ...
* GUI: abstraction of platform-specific UI code, including event loops, windows, input, ...
* OpenGL: abstraction of platform-specific OpenGL initialization code, header differences, ...
* ...
* Examples: example programs showing SkUI features
* Tests: unit tests for various components to ensure correct and expected behaviour now and in the future.This list will grow (and change) as the library's design takes shape.
# How to get started
Clone this repository
git clone https://github.com/skui-org/skui.git
After cloning this repository, make sure the submodules are up to date
cd skui
git submodule update --init --recursiveCreate and navigate to a seperate build directory, e.g.
mkdir ../skui-build
cd ../skui-buildRun CMake (here, the [ninja](https://ninja-build.org/) build system is used, but any generator should work fine)
cmake ../skui -G Ninja
This step should inform you of any missing dependencies.
Then buildcmake --build .
And run the tests to ensure nothing is wrong
ctest
# Roadmap
## 0.0.x
* establish a logical basis for UI functionality, including:
* signals, properties, strings
* basic drawing functionality
* event handling
* basic UI controls and layout engine
* Application window and event abstraction
* Windows
* Linux
* OS X
* ...## 0.1.x
* OS Notification system implementation
* taskbar icon
* notifications
* ...
* Improve core logic and functionality.
* OS theming of all controls and windows## 0.x.x
* More application logic (model/views, ...)
* process handling
* advanced drawing
* advanced UI controls, including:
* scrollbars
* tables, lists, etc.
* File I/O systems?
* Add missing unit tests
* Add missing documentation
* ...## 1.x.x
* Stability and features of a basic UI framework
* Improve platform support
* Solve all them bugs.
* Correct all them documentation typos.## x.x.x
* Supreme world domination through superiour benevolent A.I.