Generic Engine 2.0
gen-lib is an upcoming C++ cross platform library like Qt or wxWidgets.
But it's really small ( source ~ 1.5 MB ! ) and fast!
 
Help

Screenshots - use cases - shows some stage of development

March 2025 - Preparing File Manager'

Multi threading and synchronizing code/data is need to have user friendly
access to different servers with different protocols.
Highly interactive which means control with deeply recursion.
A cool file manager as first real world app is on the way.

February 2025 - Multi Protocol Surfin'

Prototype of multi protocol file system navigation
Open some FTP, SFPT sites within one GTree component
Control branches - by open all, or select some and open, etc...
At last we logically merge all interesting branches into a super node *
Super nodes can be shared between Multiple Windows and Tabs (future versions)

January 2025 - Fullscreen Text

Screen Resolution 3840x2400, Scaling 100%
Scroll smoothly over a lot of text

It's too small for my eyes.
Just a study showing the raw performance when the GUI is based directly on modern openGL


January 2025 - 64 bit user interface

500 trillion buttons on the fly !
500.000.000.000.000 !
BIG DATA can be mapped to Generic Scrollpanel !


January 2025 - Stackable Dialogs

Windows/Linux Icons are implemented !
Each window (can) save it's own state.
Ideal if you have different resolution Monitors!


January 2025 - SDL2 definitely
I replaced GLFW with SDL2 lib - The "costs" minimum 6 weeks

Good news for 2025 !
Generic Engine 2.0 based on SDL is now as stable as a rock!

Why ? It was stability. Heavy load tests could crash Generic Engine under GLFW.
I'm not complaining about GLFW - because it could be me.

Multi layer functionality mixing 2D with 3D. Also multi scale. Every window within same process can have it's own scaling factor.


December 2024 - SDL2
I decided to replace GLFW with SDL2 lib
Before continuing with gen20 developing the new lib in context with gen20 and openGL must be tested. Tested for speed and stability. Demo shows 5000 random rectangles created and destroyed fully if mouse-move-event occurs. (Each rect consists of {VAO, VBO, EBO})

5000RandomQuads.mov , ~20 MB shows a little action. If mouse moves fast, some mouse move events are queued. test app goes to 100% CPU. ( screen recorder software even more )


November 2024 - File Manager Demo (Windows)
This version of file manager demo shows.
  • Multi Window
  • Multi Tab
  • Split Component


October 2024 - List Panels (Linux)
List Panel with generic Data Models - for example ModelDataList<double>.
Billions of Items - depend on Data Model
Little subset of pythons's idea of string formatting easy to attach. here :{^7.2f}
Each item can have SVG Icon which automatically scale.
All items on-the-fly - so fast that there is no need to hold them within physical memory.
It means you map real Data Model very, very close to GUI.

October 2024 - True Type Font Line Editor Component (Linux)
Generic Engine make use of UTF32 internal and UTF-8 external
Internally gen make use of UTF-32 for speed and NO Character limits
cut&paste, undo,redo and clipboard methods are implemented
One editor of the example contains more than 2 million characters in one line.
Text is from famous Johann Wolfgang von Göthe - a German poet, politician and naturalist.

If we switch to mono font the editor can handle gigabytes in one line.

October 2024 - File Manager Demo (Linux)
Simple file manager (view) shows how to handle hierarchical data.
The goal is not to use a special GUI Tree Model.
This visual tree is a loose coupling of simplest components like buttons, labels, icons, custom objects.
Slicing data into logical lines makes it possible to map trillions of elements ( 2^64 ).
XScrollPanel is a C++ <generic> data frame which is bound to a structural slicer.
Each line is represented by a Panel containing Buttons, Labels, Icons or custom components.
So we do not have more than 20...50 panels per screen - created and destroyed during scrolling.
The trick is: It must be fast! :-)

SVG image/icon integration
Icons as png or better as scalable svg. SVG symbols are always sharp
Buttons only normally need 4 icons for each button state
States: Normal, Roll Over, Pressed, Disabled. So 4 svg files each button. Uh!
But if you have monochrome Buttons you load one svg file / button and define 4 colors - thats all.

gen studies (Windows 11)
One program instance - 3 different windows
Each window with it's own theme and it's own font scale!
Themes and font scaling changes directly without rebooting app.
Ideal for multi monitor environment

64 bit - Virtual Scrolling (Linux)
This little Windows shows 1.000.000.000.000.000.000 Buttons - 10^18 - one trillion
At the end of scrolling we show a little sub panel.
Generic components on the fly using C++ concept - type safe, fast
Perfect for Big Data
Sliders example (Linux)
Gui Elements are going to be developed mostly in a generic way.
C++ templates and concepts
Instead of listen to the slider to get thumb position as some number you have to calculate with...
You can make use of any C++ standard type or even some containers.
Examples: Slider<int>  Slider<double>   ...Slider<std::set<string>>
Set boundaries individual or make use of the whole container.
September 2024 - Flexible Layouts. (Linux)
In this case little Buttons follow a sinus line
The idea behind is that GUI elements could follow 3D Objects.
Control a 3D view or even modeler with contextual components.
May 2024 - start
It's about 'Generic Engine' - or just gen. (Linux)
gen is an upcoming C++ cross platform library like Qt or wxWidgets.
We can see 3 instances of a gen gui window with different font size
Appearance is mostly dependent on font size and themes.
Both are changeable during runtime.

Copyright Ⓒ 2012-2025 - Olaf Kliche
 
CONTACT
IMPRINT