Biomedical Engineering Reference
In-Depth Information
independent transparency, anti-aliasing, per-pixel lighting, and off-screen rendering
to large images.
Other Services
Cmgui includes core utilities for manipulating fields and field domains, including
optimisation and mesh generation.
The cmgui library offers other services such as timers for synchronizing anima-
tion and events for receiving input from devices. Some of these services are currently
required by the graphics layer but are potentially able to be decoupled - or can be
left unused by a client of the library. To support wider use of the cmgui library from
other applications, there is a current plan to make the library work with an external
user interface main loop.
Cmgui supports selected export and import of graphics in STL, IGES, VRML,
Wavefront OBJ and other formats.
C API
The cmgui library exposes a C API to outside clients, even for objects that are im-
plemented using C++. Although it requires casting functions to access type-specific
API, for example with specialised field types, the use of C greatly increases the sim-
plicity of linking into other software (c.f. problems with different function name
mangling produced by different C++ compilers).
The direct API is now fairly comprehensive and includes the “execute command”
function to invoke any legacy command available from the standalone cmgui appli-
cation. The API has reached a level of maturity where reasonable guarantees against
breaks can be made.
Some work has been done to wrap the C API in an inline C++ 'shim' API to
restore type polymorphism and provide an object method interface style. This has
been used as input to SWIG to automate generation of Python language bindings.
The completion of this work is a priority as use of cmgui via its API natively in script-
ing languages is demanded by many users and is one of the proposed replacements
of the stand-alone cmgui application.
The cmgui library is integrated into GIMIAS (from version 1.3) where it offers
rendering capabilities from the GIMIAS interface and access to cmgui functionality
via the API.
Cmgui related tools
Cmgui is also offered in its original stand-alone application form which presents a
basic wxWidgets user interface with generic dialogs for controlling command entry,
graphic generation, materials, spectrums and graphics windows. It has an integrated
Perl interpreter to support variables, program flow and other features with a small
number of hand-written perl bindings to API functions
Zinc is a browser plugin enabling the cmgui visualisation engine to be used with
accelerated 3D graphics in web pages with custom interfaces, and controlled via
Javascript bindings to the API. A rewritten version incorporating the new cmgui
API is at alpha release and nearing final release. It will run on standards-compliant
Search WWH ::




Custom Search