GLG 2.5 Release New Features and Enhancements

New Objects

Bezier Cubic Spline

Added a Bezier cubic spline object. The spline object is useful to define and render curves in the drawing.

           A Spline with Gradient Shading

New Control Widgets with Gradient Shading and Cast Shadows

Added new sets of buttons, meters, dials and other such control widgets using the new gradient shading and cast shadow features. The old meters and dials were redesigned, and a new, better rotational axis with easy-to-use configuration options was added.
Samples of new Controls with Gradient Shading

New Rendering and Object Features

Java2D Support

Added explicit support for Java2D, line attributes and anti-aliasing.

Swing and Light-Weight Component Support

Added explicit Swing support by providing a light-weight version of the Glg Bean and GlgApplet, as well as a global configuration parameter that controls the type of the component the viewport object uses: "light-weight" Swing or "heavy-weight" AWT.

The light weight components save small amounts of memory and use the Swing rendering style for the native slider, button and other interface widgets. The "heavy-weight" AWT components are still recommended for complex drawings with fast update requirements, since AWT native window-based components provide better encapsulation for drawing updates by limiting the drawing repair damage to only the window of the component.  The Swing-based components (due to the nature of Swing) are windowless and damage any other intersecting components on top of them when updated. Swing's automatic double-buffering hides this artifact, but it still consumes CPU cycles to repair damage to all other windows.


Added support for transparency (both C/C++ and Java). In Java, transparency is implemented using Java2D's native alpha blending
feature. Transparency can be used for displaying layers on maps and other complex drawings without obscuring objects underneath the layer.

Linear, Spherical and Conical Gradient Shading

Added linear, spherical and conical gradients (both C/C++ and Java). Linear gradients in Java use Java2D's native gradient paint
feature. An extensive set of dynamic attributes is provided to control the angle, position and other gradient parameters.

Gradient samples

Cast shadows

Added cast shadows, which renders shadows on graphical objects as defined by the offset and shadow color parameters.

  Cast Shadow samples

Arrow heads

Added two types of arrow heads (filled and unfilled), which can be displayed at either the ends or the middle of a line segment or
polygon. The arrow's shape can be configured via global configuration parameters.
   An Arrow Head at the Middle of the line with a Cast Shadow

Arbitrary Angle Fill Dynamics

Added support for Vertical, Horizontal and Arbitrary Angle fill dynamics. This makes it easy to implement filling tanks objects, while still allowing arbitrary fill angles.

   Fill Dynamics Samples

Text Box Rendering

Added an optional Text box feature to render a filled or unfilled box around a text object. A parameter is provided to define how tight the box "sits" around the text. This feature is convenient in cases when text objects are rendered in maps or on top of a complex drawing, and need a background to make the text more readable.

Improved TrueColor Support

Improved support for TrueColor. On TrueColor machines, the color RGBs will now be used directly, without mapping them first to the color table.

Improved Support for Custom Font Tables

Improved support for custom font tables by extending the font object attributes to define both an X, Windows and Java font name. This simplifies the use of the custom font tables in a cross-platform and cross-environmental way.

New Programming Features

GlgTransformObject function

Added a new GlgTransformObject function to the Extended API. This new method allows moving, rotating, scaling and otherwise changing the geometry of an object in both world and screen coordinates, providing better support for editor-style object manipulation. The new Diagram Demo shows examples of using this method.

GlgCreatePointArray function

Added a new GlgCreatePointArray Extended API function that creates and returns an array of an object's control points. The new Diagram Demo shows examples of using the function for constraining links to the control points.

Miscellaneous Editor Interface Improvements


Added Undo support for geometry editing (for both objects and control points).

Improved Support for Editing Special Attributes of a Group of Viewports

Enabled EditAll for screen attributes of a viewport. Adding a color or font table in EditAll mode will now add a constrained copy of the table to all the viewports being edited.

Flipping Objects with the Mouse

Improved flipping objects by allowing to flip with the mouse, by dragging the object's box points on the other side of the box.

Selective Resize Points Display

Disabled resize, rotate and move points for fixed-size objects with just one control point (markers, fixed and autoscaled text, and fixed-size image objects) to improve usability.

Bug Fixes

Handling NaN Values in Java

Fixed drawing loading with NaN attribute values into Java version.

Improved Tooltip Positioning

Fixed tooltips in Java in the case of a stand-alone narrow toolbar, to prevent the tooltips from being clipped off.