|
Real-Time Chart 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 charts
with integrated zooming and
scrolling, multiple axes, cursor feedback and tooltips that show X/Y values
of individual data points.
The new 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
charts with capabilities for displaying a huge
number of data points with high update rates. Several 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 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.).
The legend object is used together with the new 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.
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.
SCADA Viewer Demo demonstrates Chart Zoom
Mode Click on the image to run Online Demo |
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.
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.
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 versions.
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.
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 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.
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 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:
GlgGetParentViewport returns the viewport an object belongs to
GlgRootToScreenCoord
converts root-relative screen coordinates to the screen
coordinates relative to the viewport's window.
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.