gled
gled/features
Version 1.3.1, state as of January 2010
- C++ programming framework
- object-oriented framework for composition and management of
arbitrary object graphs (objects are aggregated by usage of
smart-pointers and containers; all connections can be exported into
STL-lists thus allowing application of generic algorithms)
- auto-generated glue code for accessor methods; auto-generated
bindings for creation and execution of RPC calls (Perl-based Project7
support tool)
- object reference counting with (eventually optional)
back-references; gargabe collection
- automated generation of GUI widgets for object member variables,
methods, object-pointers (called links) and container-based
aggregation (tabular views)
- application prototyping and system extensions using dynamically
loaded library sets (libsets) allowing for a very fast application
development with immediate scripting and GUI support
- embedded C++ interpreter (ROOT CINT) with support for C++
scripting and run-time evaluation
- integration with ROOT
environment: object interospection, object streaming to network or
files, extensive computational support
- rich data visualisation suite using
ROOT
facilities: ROOT data/file browser,
1D/2D/3D histograms, n-tuples etc. (ROOT Picture
gallery) with interactive canvases and PDF export
- supported platforms: GNU/Linux and OSX.
- GUI - Graphical User Interface
- fully fledged FLTK (Fast Light
ToolKit) GUI inteface (including drag-and-drop)
- auto-generated object control widgets presenting controls for all
exported object members variables, methods and aggregation-facilites
(object-pointers and containers)
- browser for arbitrary object graphs with editing facilities and
drag-and-drop support
- integrated mechanisms for (remote) object instantiation and
- object context-menu for browsing & execution of (remote) method
invocation requests
- GUI control over server-client-viewer system and clustering
(using
Gled
introspection where server-client tree is
represented as a Gled
object graph)
- zoom control for all fonts and widgets (laptop-friendly)
- custom GUI can be build by subclassing the GUI implementation classes
and extending available FLTK widget classes
- interactive custom GUI builder where interactive application GUI
is built from a standard object collection hierarchy (MetaGUI - API
still evolving)
- Rendering
- generic rendering infrastructure: programmable scene object-graph
traversal allowing natural multi-pass rendering (with plans for scene
building interfaces for portal/BSP/surface oriented subscene
optimisations)
- decoupled rendering and triangulation API for
Gled
objects permits different behaviour in different rendering contexts
- generic rendering interface, permitting other low-level renderers
besides the current OpenGL
renderer
- OpenGL materials, light model and other advanced controls
implemented as modificator objects in the render tree
- support for OpenGL shaders (GLSL)
- support for rendering into frame-buffer objects (offscreen rendering)
- support for stereo rendering
- built-in GUI support for the interactive OpenGL renderer (with
menus, context-menus, picking, render-graph exploration, viewing frustum
control etc.)
- Interactive multithreaded multilevel clustering
- tree structured graph of servers and clients with arbitrary depth
and a common executable used at all levels (with GUI support or
not) - essencialy any Gled application is cluster-ready
- generalised synchronisation of servers and clients
- exporting, mirroring and proxying of data and object collections
- very fast & efficient broadcasting, routing, mirroring and
proxying of remote method calls (asynchronous and synchronous);
arbitrary datagrams can be delivered as return value
- authentication (using SSL) and sophisticted access control
(request filters implemented as
Gled
objects); Grid interfaces planned
- decoupled local objects for CPU-intensive computations or visualisation
- multithreaded application framework where threads can be
controlled on remote instances in the cluster
- full introspection and control: clusters are presented as
standard
Gled
objects for clients, proxies and servers
and can be manipulated with standard C++, scripting and GUI interfaces