gfx++

Gfx++ ("graphics plus plus") is a lightweight, portable and fast frontend application framework made with C++ and SDL2.

Build custom GUIs for any application. Our Cartesian coordinate-based layout system allows for simple positioning and scaling of components in a window. Experiment with our 3D environment for rendering data / objects in 3D space. Powerful and easy to use tools make gfx++ a strong foundation for any desktop application, optimized for the most CPU-intensive operations.

Note: Compatible with Linux. Untested on Windows and macOS.

Features

UI Components

Create custom application GUIs using any of these components: button, label, layout, text field, dropdown, listbox, image, checkbox, message box, progress bar, scrollbar, tabs, table, and a global color palette. Each component has a customizable border, background and padding.

Linear Graphing

Plot linear data in static and real-time graphs. Multiline / multiplot graphing is also supported and optimized for big data operations.

GUI Event Handling

Manage keyboard and mouse events with ease using GItem (GUI items) and GuiCommanders (actions). Polymorphic mini components allow for fast tracking and responding to any event.

3D (Experimental)

Render colored 3D objects (untextured). Right click to rotate camera and scroll to zoom.



Code Sample


                    // Linear Layout    
                    GLinearLayout* netNameLayout = new GLinearLayout("netNameLayout");
                    netNameLayout->setOrientation(GLinearLayout::HORIZONTAL);
                    leftSideLayout->addSubItem(netNameLayout);

                    // Load button
                    RUButton* btnLoad = new RUButton();
                    btnLoad->setWidth(200);
                    btnLoad->setHeight(30);
                    btnLoad->setText("Reload List");
                    btnLoad->setMouseDownListener(&NNCreatorPanel::GuiCommander10);
                    btnLoad->setName("btnLoad");
                    loadNetLayout->addSubItem(btnLoad);

                    ...

                    void NNCreatorPanel::GuiCommander10(const std::string& cmpName, int x, int y)
                    {
	                    loadDDNN();
                    }
                

Build Example




Performance

Minimal Footprint. Boilerplate graphics solution for any application.



Join the Community

Real-time help? Find us on Discord.

Contribute

Contribute code or report issues on GitHub.