GLG 2.9 Release: New Features and Enhancements

New Toolkit Features

Align and Layout Operations
Align and Layout Toolbox
Align and Layout API
Edit Toolbox for Fast Object Editing
Temporary Groups and Multiple Object Selection
Temporary Groups
Multiple Object Selection
New Object Selection Options
Multiple-Step Undo and Other Builder Interface Features
10-step Undo
Cursor Shape Feedback for Editing Modes
Select Next Object Keyboard Accelerator
Numerical Text Input
New Features of Interaction Handlers
Increase and Decrease Keyboard accelerators
Button Repeat Functionality
Wrap-around Feature
Spinner Interaction Handler
Configuration File and Miscellaneous Setup Options
New Widgets
Numerical Input Widgets
Rate of Turn and Altimeter Avionics Gauges
Spinner and Sliding Spinner Widgets
New Rendering Features
Synchronized Timer Transforms
Improved Arrow Rendering
Improved Rendering of Line Graphs
Arrow Size Attribute
X and Y Text Box Offsets
TextColor attribute
New Programming API Features
Shallow Clone
New GLG Java Bean and ActiveX Callbacks
Methods for Querying Library Version Number

New Map Server Features
FastCGI Support
Performance Improvements
Remote Execution

Layout Toolbox

New Toolkit Features

Align and Layout Operations and Toolbox

Added support for Align and Layout operations, both to the Builder and programming API. In the Builder, the Align and Layout Toolbox was added to provide icon-based access to alignment and layout operations. Options for setting the objects size and spaces between them, in both world coordinates and screen pixels, are provided in addition to other common align and layout operations. The programming API provides programmatic access to all alignment and layout features available in the Builder.

Edit Toolbox for Fast Object Editing

Edit ToolboxThe new Edit Toolbox has been added to the Graphics Builder to provide an easy icon-based access to attribute editing, which is convenient for quick editing of objects and groups of objects. For example, a user can keep the Edit Toolbox open, select different objects and edit their colors without the need for an extra mouse click to open a color palette for each object. The existing Object Properties dialog provides an interface for more advanced editing, such as constraining and assigning attribute names to object attributes.

Temporary Groups and Multiple Object Selection

The temporary groups and multiple object selection features were added to the Builder for the convenience of editing of multiple objects, without a need to create a permanent group. The Builder supports object selection keyboard accelerators familiar to the Windows users. To select multiple objects, either Ctrl-click on each object with the mouse, or click and drag the mouse to select all objects in the area. To add or delete an object from selection or temporary group, simply Ctrl-click on the object.

The new Select All, Select Multiple Objects and Select Rectangular Area selection options have been added, as well as an option to alternate the type of the currently selected group between temporary and permanent.

The mouse bindings to create a permanent group has been changed to click-drag-release to match that of the temporary group. The click-drag-click sequence is kept for the cases when two control
points are defined, such as creating a rectangle object.

Multiple-Step Undo and Other Builder Interface Features

Added 10-step undo history support, as well as undoing EditAll, Align and Layout actions.

Added cursor shape visual feedback for editing modes that require selecting objects or points in the drawing, such as constraining to points or object attributes, etc.

Added visual feedback for group zooming, showing the outline of the group when an object inside the group is selected.

Added Ctrl-Shift-click binding to select next object in the permanent group. The Set Focus binding was changed from Ctrl-click to Ctrl-Shift-click as well, to avoid an interference with the multiple
object selection bindings. The Ctrl-Shift-click is context-sensitive: it moves the editing focus into the viewport which is selected by the click (if any), or selects an object inside the group if a
permanent group is selected.

Numerical Text Input

Added numerical input validation to text input objects, with subtypes to accept only decimal or integer numbers. Added Low and High parameters to GlgNText handler that define minimum and maximum input range, MaxLength parameter for the maximum input length and
InputInvalid parameter to indicate the text input widget status. The Value parameter is used to set or query the numerical value, and the InputFormat parameter specifies the format in which the value is displayed.

New Features of Interaction Handlers

Added IncreaseKeys and DecreaseKeys bindings for GlgSlider and GlgKnob interaction handlers that allow incrementing or decrementing the gauge's value using keyboard accelerators.

Added repeat functionality (RepeatTimeout and RepeatInterval parameters) to the GlgButton and GlgNButton input handlers to generate repeated button activate actions when the button widget is held down with the mouse.

Added Wrap resource to the GlgSlider and GlgKnob handlers to allow wrap-around when the value reaches the minimum or maximum value as the result of repeated pressing of the Increase or Decrease buttons or keyboard accelerators.

Added GlgSpinner handler to support a spinner widget containing a text entry with Increase and Decrease buttons, and an optional slider or knob.

Configuration File and Miscellaneous Setup Options

The configuration file support has been added to the Builder to define its initial start-up options. The configuration file may define such Builder options as ModalDialogs, GridInterval, DrawingAreaColor,
PickResolution, SaveFormat and others. The configuration file also supports syntax for setting GLG's global configuration resources.

Added functionality to define the default font table globally, without the need to edit viewport's font table in the drawing. This provides a convenient option for customizing the application by the end user, without the need to edit the drawings.

Added functionality to globally define the number of colors in the default colortable. It may be defined in the Graphics Builder's configuration file to control the number of colors in the Builder's
color palette.

Added a version-specific GLG_DIR_X_X environment variable that makes it easier to use several different versions of GLG on one system.

New Widgets

Added integer and double numerical input widgets to special widgets.

Added Rate of Turn and Altimeter avionics gauges to the avionics widget set.

Added sliding spinner to control widgets, added several flavors of spinner widgets to special widgets.

New Rendering Features

Improved drawing of arrows for polygons with tiny first and/or last segments, which is often the case when the recta-linear connectors are used in diagramming applications. If the first (or last) segment is too small to draw the arrow, the next (or previous) segment will be used.

Improved rendering of a line gap separating current and past samples of line graphs with WRAP scroll type, as well as scatter and polar line graphs.

Changed timer transformations to keep them in sync after enabling or disabling an individual timer transform. A negative period value may be used for an alternative behavior.

Added rendering attribute that allows setting an arrow size for each individual polygon. If the attribute is set to null value, the globally defined arrow size is used.

The type of the text box offset attribute has been changed from D (double) to G (geometrical: x, y and z) to allow setting x and y offsets separately.

A new TextColor attribute has been added to access the color of the text object. The EdgeColor attribute which was previously used for this purpose has been changed to control the edge color of the text box. The GlgCompatibilityMode global configuration parameter has been introduced to allow setting a backward compatibility mode, so that the old source code can operate the same way without a need to change the EdgeColor resource name for the text object.

New Programming API Features

Added GLG_SHALLOW_CLONE clone type to the GLG API, providing functionality to copy contents of arrays without copying each element. It may be used to safely iterate through elements of an array
and delete some elements without affecting the iteration sequence.

New callbacks for setting initial resource values before and after hierarchy setup has been added to both the GLG Java bean and GLG ActiveX Control.

Added GlgGetMajorVersion and GlgGetMinorVersion methods to the GLG API.

New Map Server Features

Fast CGI Support and Performance Improvements

Added Fast CGI support for the GLG Map Server. Running the Map Server in the FastCGI mode significantly increases its performance by preserving the GIS data cache between the map queries and eliminating repeated loading of the GIS data from the hard drive on every request. The Fast CGI mode makes the map server process persistent, eliminating the process start-up time. Instead of starting the map server executable and exiting after processing every GIS request, the map server is kept in memory and is reused to serve multiple GIS requests.

Remote Execution

The Map Server in FastCGI mode can run locally (on the same machine as the Web server) or remotely. The remote execution option allows distributing the load of the map generation, minimizing the web server load by forwarding the GIS request to a map server running on another machine(s).

The Fast CGI parameters of the web server may be further tuned to optimize a particular usage pattern. For example, the FastCGI process may be forced to restart after handling a certain number of map requests. The maximum number of the Fast CGI processes in the Fast CGI process pool can also be specified.