GLG 3.3 Release: New Features and Enhancements

Overview
Real-Time Strip Chart with Interactive Scrolling, Zooming and Cursor Feedback
Axis and Ruler Objects
Legend Object
Rectangle Object
New Zoom Mode
Memory Allocator Control for Real-Time Applications
Custom Tooltip Formatter
AutoPan Mode
Time Format Dynamics, Current Time and Date Display
Rendering Performance Improvements
Java Class Library Enhancements
GLG Graphics Builder: New Interface Features
GLG Map Server: GIS Selection Feature
GLG Map Server Performance Improvements
Miscellaneous New Features
Bug Fixes

Overview

Real-Time Strip-Chart
Real-Time Strip-Chart
Click on the image to run Online Demo

Real-Time Chart Widget Set
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.

Real-Time Strip Chart with Interactive Scrolling, Zooming and Cursor Feedback

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:

  Ruler and Axis Widgets
Axis and Ruler Widgets

Axis and Ruler Objects

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 rulers.

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.).

Legend Object

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 customization.

Rectangle Object

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 a rectangle.

New Zoom Mode

The Toolkit's integrated zooming and scrolling was extended with a new Chart Zoom Mode. The previous releases supported the default Graphical Zoom Mode and the GIS Zoom Mode which zoomed and panned the map displayed in the GIS object instead of the viewport's graphics.

  SCADA Viewer Demo demonstrates Chart Zoom Mode
SCADA Viewer Demo
Click on the image to run Online Demo
The new Chart Zoom Mode zooms and scrolls data displayed in a real-time chart object. Using the new mode does not require any changes to the code that handles zooming and panning. The zooming and panning API is generic and handles zooming and panning according a viewport's zoom mode, scrolling a map in the GIS Zoom Mode or scrolling data in a chart in the Chart Zoom mode.

The SCADA Viewer Demo demonstrates this new functionality. By default, it zooms and pans the drawing displayed in its viewing area. However, when the Real-Time Strip-Chart is activated by a corresponding button, the same code zooms and scrolls the data displayed in the strip chart.

Memory Allocator Control for Real-Time Applications

Methods for 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.

Custom Tooltip Formatter

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 information.

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.

AutoPan Mode

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
Time and Date Display Example
Click on the image to run Online Demo

Time Format Dynamics, Current Time and Date Display

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.

Rendering Performance Improvements

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 versions.

Java Class Library Enhancements

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 platform.

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.

GLG Graphics Builder: New Interface Features

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.

GLG Map Server: GIS Selection Feature

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 lat/lon location.

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.

GLG Map Server Performance Improvements

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.

Miscellaneous New Features

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 browser.

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.

New keyboard 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 direction.

New GLG Extended API methods were added for convenience:

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.

Bug Fixes

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.