◀️ Super Simple GUI Library for C++ ▶️
⚠️ This library is constantly changing & incomplete until v1.00 . However, feel free to star or bookmark this project.
ssGUI is aimed to be an universal framework that can be used for both graphical intensive applications 🔥 and normal GUI applications 🎹.
Only one GUI framework for games and normal GUI application with support to OpenGL window and (WIP) native OS window.
ssGUI supports multiple platforms: Windows, Linux and (WIP) MacOS.
Nothing is restricted ⛔, you can get the underlying system handle easily if you want.
ssGUI functions are verbose and easy to understand.
HTML Documentation provides step by step tutorial for getting started, (WIP) with a number of mock up GUI examples to reference from.
API is clearly documented with (WIP) images to describe each properties.
ssGUI uses the extensions and (Optional) event callbacks model. Only add the functionalities you need and you are good to go.
It by default uses native system libraries, no need to install any external packages or download binaries libraries.
You can just build ssGUI from source using CMake.
ssGUI uses C++ 11 standard (With the exception for MSVC), which makes it compatible with many project within the last decade.
ssGUI aims to be forward compatible in terms of souce compatibility, meaning no code change when migrating to newer ssGUI version.
Easy visualization on what the GUI, no longer need to recompile everytime you make a change.
Decided to reinvent the wheel just like any other programmers
2 years later, I still haven't created the application I wanted in the first place
Joke aside, I just wanted to have a GUI framework that can be:
Which ssGUI has achieved most of them.
git submodule add -b v0.94.01.a_release https://github.com/Neko-Box-Coder/ssGUI.git <folder name>
git submodule update --init --recursive
CMakeLists.txt
by doing
add_subdirectory("${CMAKE_CURRENT_LIST_DIR}/directory/to/ssGUI")
target_link_libraries(example PUBLIC ssGUI)
(You can find this at ssGUI/Example/ReadmeExampleV7
)
#include "ssGUI/HeaderGroups/StandardGroup.hpp"
#include "ssGUI/Extensions/Layout.hpp"
//Readme example
using namespace ssGUI::Enums;
int main()
{
ssGUI::MainWindow mainWindow;
mainWindow.SetRenderSize(glm::vec2(450, 80));
mainWindow.AddExtension<ssGUI::Extensions::Layout>();
auto* text = mainWindow.AddChild<ssGUI::Text>();
text->SetText("Click on the button to show the message");
auto* button = mainWindow.AddChildWithWrapper<ssGUI::StandardButton>(AlignmentHorizontal::CENTER, AlignmentVertical::CENTER);
button->SetSize(glm::vec2(50, 30));
ssGUI::ssGUIManager guiManager;
guiManager.AddRootGUIObject(&mainWindow);
guiManager.AddPostGUIUpdateEventListener
(
[&]()
{
if(button->GetButtonState() == ssGUI::Enums::ButtonState::CLICKED)
text->SetText(L"(`oωo´)");
}
);
guiManager.StartRunning();
return 0;
}
This project is under Apache-2.0 License. Licenses for resources used by testing and examples are stored as "Credits.txt" under the same folder.
GLM:
SFML:
stb_image:
freetype:
clip: