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