Click on the image to run Online Demo
Real-Time Chart Widget Set
The major new feature of
the new 3.3 release of the GLG Toolkit is the collection of high-performance real-time strip charts
with integrated zooming and scrolling,
multiple axes, cursor feedback and tooltips
that show X/Y values of individual data points.
The new strip chart maintains a history buffer, allowing to easily scroll through large datasets of historical data, even while the new data points are being added. The new chart can resize history buffer and erase or show plot lines without losing already plotted data.
The new integrated Axis objects provides not only axis but also ruler functionality. A ruler can display various units (such as inches, centimeters, etc.) by modifying its Ruler Scale parameter.
A new rectangle object with two control points has been added, in addition to the parallelogram object with three points which was previously used to render a rectangle.
New methods to pre-allocate memory for real-time applications are provided, as well as methods to control parameters of the GLG memory allocator.
The GLG integrated scrolling and zooming now supports AutoPan mode, which can activate X and/or Y scrollbars as needed. A custom Tooltip Formatter was introduced to support context-sensitive tooltips that display information related to the object under the cursor.
Text drawing functions were optimized to speed-up rendering of rotated text as well as text rendering in the OpenGL driver.
The Java version of the Toolkit was modified to support Mozilla's IcedTea Java plugin. The demos and examples were also modified to better work with the new Java Script versions without signing the jar file.
The new selection feature of the GLG GIS Object and Map Server allows queries to determine the names and other attributes of towns or streets on the map under the cursor. The GLG Map Server was further optimized to increase performance of huge hierarchically-tiled data sets. Other performance optimizations increased performance of automatic label layout as well as the text rendering speed.
The new release
introduces a collection of high-performance
strip charts with capabilities for displaying a huge number of
data points with high update rates. Several strip charts of various
types are provided, including strip charts and XY scatter plots.
The charts use the new Chart object that provides not only the high-performance rendering, but also a number of new functionalities integrated into the chart:
displaying multiple lines with tens of thousands of data points and updating them with real-time data hundreds of times per second
displaying data points at uneven intervals using time stamps, handling of invalid data points
multiple plot lines and an ability to erase or show plots without losing the previously accumulated data, adding new or deleting existing plots at run time
unlimited data history buffer with parameters to control the time span of the buffer and/or the number of data points to keep, with capabilities to scroll through the data accumulated in the buffer as well as to change the size of the buffer without losing already accumulated data
interactive scrolling and zooming, with integrated scrollbars and ZoomTo functionality. The chart may also be scrolled by dragging the plots with the mouse.
integrated cursor feedback via tooltips and data point selection features. The tooltips display the value and time of the data point under the cursor. The selected data point is also highlighted and an integrated cross-hair follows the cursor position.
Two tooltip modes are supported: selecting the data point with the closest XY distance, or the point with the closest X distance from the mouse. API methods are also provided for selecting data points in the chart programmatically. The Tooltip Format attribute allows to define data point parameters to be displayed (plot name, time format, etc.)
parameters to control automatic labeling on the time axis, as well as an ability to supply a custom label and tooltip formatters
multiple Y axes with an ability to dynamically change the number of Y axes and an automatic axis layout
control over the X and Y axis position: on either side of the chart or in the middle
per-plot and per-axis Range Locks to selectively disable zooming for some plots
choices of plot types and time axis types (with variable of fixed slot size), including XY scatter plots
integrated grid and level lines for annotating value thresholds
legend object with automatic icon layout and several layout modes
control over scrolling modes with an ability to scroll through accumulated data while the new data are being supplied
direct or inversed plotting in both X and Y directions
configurable major and minor ticks intervals, tick/label position and appearance
an API for chart and data point selection queries
| Ruler and Axis Widgets
An integrated Axis
object is used by the new chart, but it may also be used outside of it
as either an axis or a ruler. A ruler
can be configured to use different units by setting its Ruler
Scale parameter and can also draw a ruler-like box around its
ticks. The Special Widgets set contains several ruler objects,
including inch-based and pixel-based
The Axis object provides a complete control over parameters of its major and minor ticks and labels, including an ability to provide a custom label formatter. The axis supports cursor feedback in the form of a tooltip showing a value corresponding to the cursor position on an axis or a ruler. The TooltipFormat parameter allows to define information to be displayed in the tooltip (i.e. axis label, value format, etc.).
The legend object is
used together with the new strip chart to display icons and labels to
annotate plots displayed in a chart. The legend object automatically
updates when a new plot line is add or deleted from the chart and
provides several automatic layout
modes, as well as numerous parameters for extensive
A new rectangle object
with two control points has be added for the convenience of users.
Previously, a parallelogram object with three points was used to render
| SCADA Viewer Demo demonstrates Chart
Click on the image to run Online Demo
preallocating memory and controlling the GLG memory allocator have been
added to accommodate real-time applications that require to pre-allocate memory on start-up and
allocate any additional memory outside of program's critical sections.
These methods may also be used to fine-tune the parameters of the GLG
memory allocator depending on the application memory usage profile.
A custom tooltip
formatter may be supplied by an application to provide custom tooltips that display context-sensitive information
related to the object under the cursor. A custom tooltip formatter is
invoked when the tooltip is about to be displayed to provide the
tooltip string. An application can query information related to the
tooltip object and supply a customized tooltip string to display this
A custom tooltip formatter may be used together with the new GIS selection feature to display in the tooltip a name of the town or street on the map under the cursor.
The Pan attribute of the
Viewport object now supports AutoPan
settings which activate X and/or Y scrollbars as needed. In the new
release, changing the Pan attribute of the viewport does not reset the
viewport, as it was the case in the past.
| Current Time and Date Display
Click on the image to run Online Demo
A new Time
Format transformation may be used to display date and
time of historical data in a variety of formats. A new predefined Date and Time dynamics may be used
to display current date and time in a drawing.
Additional glyph caches
were added to the binary driver to increase
performance of the text rendering in the OpenGL version of the
driver, as well as the performance of
the rotated text rendering in both GDI and OpenGL driver
The Java code was
modified to better support the IcedTea
version of the Java Plugin used in the FireFox browsers on Linux
platforms. The IcedTea plugin uses different applet sharing and
threading model compared with the other plugins. The new GLG JAR file
now be used across all Java plugin version in any browser and on any
A new UpdateImmediately() method may be used to update the display right away while the current event is being dispatched, without waiting for the paint event.
The source code for Process and Graph demos was modified to avoid security restrictions when reloading a drawing is triggered by a call from the HTML's Java Script when an HTML button was pressed. To avoid a need to sign the applet, the applet's code was changed to start a timer which will then reload a drawing on a timer event.
A new KeepEditRatio
viewport attribute was added to facilitate preserving the X/Y ratio of the
resizable viewports when entering it via the Traverse Hierarchy Down
command in the Graphics Builder. If the value of the attribute is set
to YES, the Graphics Builder will preserve the X/Y ratio when going
down into the viewport.
The new Graphics Builder displays round red marks at the corners of the default span of the viewport, which is the area that will be visible in the viewport's window in the absence of zooming or panning. The marks annotate the extent of the default visible area and provide a visual feedback when the viewport is zoomed or panned. The marks can be turned off via the Options, Show Default Span menu option.
The new GIS selection feature allows an
application to query attributes of GIS features displayed in the GIS
Object or the GLG Map Server. This feature may be used to query names and attributes of towns or
streets under the current cursor position or at the specified
When used together with the custom tooltip formatter, this feature may be used to display in the tooltip a name and attributes of the town or street on the map under the cursor.
The GLG Map Server was
further optimized to increase performance
of huge hierarchically-tiled data sets by supporting a new
format of the SLIF files that minimizes the number of disk accesses
necessary to select required tiles. The old format is transparently
supported, and a utility to convert datasets to the new format is
provided. The new format allows the map server to eliminate the
delay when a new set of tiles is initially loaded.
The automatic label layout was optimized to speed it up for maps with very large number of labels. A glyph cache for rendering true type fonts was added to the map server driver to increase performance of text rendering. Together, these two features allows the map server to render huge maps with large number of text labels.
Object's control points are now displayed in the
resource browser to facilitate editing them via resources
without the need to select the object. The text box attributes and
object rendering attributes are now also visible in the resource
New gradient type that allows to define a gradient's center in world coordinates was added for conical gradients. It may be used for arcs with a variable angle to prevent the center of the gradient from changing when arc's dimensions change.
Multi-line tooltips are
now supported in all programming environments and deployment options;
new global configuration resources (GlgTooltipLabelColor,
GlgTooltipBGColor and GlgTooltipTextAlignment) were added
to control tooltip's colors and appearance in a cross-platform way.
accelerators were added to allow dragging the drawing with the mouse in just X or Y
direction. Previously, the there was no way to drag in only one
New GLG Extended API methods were added for convenience:
GlgGetParentViewport returns the viewport an object belongs to
screen coordinates to the screen coordinates relative to the viewport's
The viewport's HandlerDisabled
attribute type was made an object, which makes it possible to constrain
it as well as to attach dynamics to it. The name of the attribute was
changed to DisableInput.
When it is set to YES, all events to the viewport are disabled
(previously, events were disabled only if the viewport had an
interaction handler attached). The old resource name is supported
for backward compatibility.
A new -close-polygons option was added to the map server's shape file converter to converts polylines to closed polygons for the shapefile GIS datasets.
The tessellation problem
for polygons with large number of points in the OpenGL driver was fixed.
The rendering problem of rotated text with a gradient was fixed.