Split gui is a GUI library that is entirely gpu focused making it highly portable. Split gui is built on Vulkan and Glfw, but is designed to be expanded to other libraries and systems.
| Operating system | Build Status | Notes |
|---|---|---|
| Linux | ||
| Windows | not tested | |
| IOS | not implemented | |
| Mac | not implemented | |
| Android | not implemented |
All documentation is located in the Docs folder and is seperated into user and developer documentation.
cbuild build- cmake
- git
- GLFW
- glfwpp
- vulkan sdk
- vulkan headers
- vulkan hpp
- volk
- msdfgen
- freetype
- maccount
- nano svg
main.cpp
#include <splitgui/result.hpp>
#include <splitgui/window.hpp>
#include <splitgui/interface.hpp>
#include <splitgui/graphics.hpp>
#include <splitgui/structs.hpp>
#include <fstream>
#include <sstream>
#include <string>
int main(void) {
std::ifstream indexFile("index.xml");
if (!indexFile.is_open()) {
printf("ERROR: error opening index.xml\n");
return -1;
}
std::stringstream buffer;
buffer << indexFile.rdbuf();
std::string page = buffer.str();
SplitGui::EventHandler eventHandler;
SplitGui::WindowFlags flags;
flags.title = "hello split-gui";
SplitGui::Window window;
TRYRC(glfwRes, window.instanceGlfw());
TRYRC(windowRes, window.createWindow(flags));
window.attachEventHandler(eventHandler);
SplitGui::VulkanFlags vulkanFlags;
vulkanFlags.enableValidationLayers = true;
SplitGui::Graphics graphics;
TRYRC(instanceRes, graphics.instanceVulkan(vulkanFlags));
graphics.submitWindow(window);
graphics.attachEventHandler(eventHandler);
SplitGui::RectObj viewport;
viewport.size = window.getSize();
viewport.x = 0;
viewport.y = 0;
SplitGui::Interface ui;
TRYRC(parseRes, ui.parseXml(page));
ui.submitGraphics(graphics);
ui.setViewport(viewport);
ui.attachEventHandler(eventHandler);
ui.instance();
graphics.submitBuffers();
while (!window.shouldClose()) {
while (eventHandler.popEvent()) {
}
graphics.drawFrame();
window.update();
}
return 0;
}index.xml
<meta version="0.1.0"/>
<split direction="vertical" position="20px + 50%">
<rect color="ivec3(255u, 100u, 100u)"/>
<rect color="ivec3(100u, 255u, 100u)"/>
</split>- add calls to unit expression parser
- fix transparency ordering
- add transform absolute handing

