Difference between revisions of "Main Page"

From neoGFX
Jump to: navigation, search
Line 29: Line 29:
 
* no reliance on macro-based code generation used by certain other GUI libraries;
 
* no reliance on macro-based code generation used by certain other GUI libraries;
 
* to be as fast as possible (after all this is C++) with compiled binaries having as small a memory footprint as possible with no huge redistributables;
 
* to be as fast as possible (after all this is C++) with compiled binaries having as small a memory footprint as possible with no huge redistributables;
* 3rd party dependencies include: Boost, SDL, FreeType and HarfBuzz.
+
* 3rd party dependencies include: Boost, FreeType and HarfBuzz.
  
 
The plan is for v1.0 supported platforms to be Windows (desktop) and Linux (desktop) followed later with OS X, iOS and Android support.
 
The plan is for v1.0 supported platforms to be Windows (desktop) and Linux (desktop) followed later with OS X, iOS and Android support.

Revision as of 20:29, 8 April 2020

neoGFX Cross-Platform GPU-Oriented C++ Application/Game Framework -- Coming Soon

Introduction

neoGFX is a cross-platform GPU-oriented C++ application/game framework. neoGFX is open source with its public repository hosted on GitHub. As of May 2018 version 1.0 of neoGFX is about 80% complete; on release of version 1.0 the intention is that neoGFX will be dual licensed (licensable with GPLv3 or a commercial licence).

Features (when version 1.0 released):

  • clean modern C++ design including full exception safety supporting various widget allocation patterns (stack, member variable or free store);
  • use of standard non-proprietary C++ data types including using standard string classes (UTF-8 encoding) and containers from the C++ standard library;
  • simple, easy to use multi-threaded event system (an improvement over traditional signals and slots);
  • no baggage: neoGFX primarily contains only the GUI and graphics related functionality needed for creating apps and games;
  • full library of widgets and layout managers specifiable in an RJSON (Relaxed JSON) derived declarative UI description language drag/drop editable using the included design tool, neoGFX Design Studio;
  • CSS3 style sheet support with support for custom skins;
  • scripting engine, neos, that will be able to support a wide range of scripting languages (on release: neoscript, JavaScript and Lua);
  • sub-pixel text rendering;
  • simple window style for specifying that a window is "nested" rather than being a separate native desktop window;
  • "text_edit" widget supports multiple fonts, text colours (with optional gradient effects), colour emojis and rendering text in columns;
  • GPU shader rendered CSS3 compliant gradients with optional gaussian smoothing;
  • MVC (model-view-controller) related classes supporting robust and fast app design;
  • optional MDI support utilizing "nested" windows;
  • 2D (initially) game support: sprites and 2D physics;
  • flexible asset management: texture images (e.g PNGs) can be stored in .zip archives which can be optionally embedded inside the program binary accessible using simple URLs;
  • support for OpenGL, DirectX and Vulkan.

Initial design goals will be:

  • for the API to be as clean and easy to use as possible;
  • no reliance on macro-based code generation used by certain other GUI libraries;
  • to be as fast as possible (after all this is C++) with compiled binaries having as small a memory footprint as possible with no huge redistributables;
  • 3rd party dependencies include: Boost, FreeType and HarfBuzz.

The plan is for v1.0 supported platforms to be Windows (desktop) and Linux (desktop) followed later with OS X, iOS and Android support.

Roadmap:

Version ETA Features
v0.99 Spring 2020 Windows OpenGL; widget library feature complete; UI design tool
v1.00 Summer 2020 Linux OpenGL; scripting engine
v1.10 Winter 2020 Vulkan; Android support; physics engine
v1.20 Summer 2021 macOS support

Recent screenshot (May 2018):

2018.png

Documentation

Coding Guidelines

Event System

Class Reference