SL-GMS® Release Notes

SL Corporation®

OBJECT-ORIENTED GRAPHICAL MODELING SYSTEM

Version 6.2 - 26 May 2006

Part Number RN62-360526 The information in this document is subject to change without notice and should not be construed as a commitment by the Sherrill-Lubinski Corporation. The Sherrill-Lubinski Corporation assumes no responsibility for any errors that may appear in this document. The software described in this document is furnished under a license and may be used or copied only in accordance with the terms of such license. This software is based in part on the work of the Independent JPEG Group. SL-GMS Release Notes This manual is for use only in connection with the described software and may not be used for any commercial purpose or copied, distributed, sold, displayed, modified, published, or posted in whole or in part without the prior written permission of Sherrill-Lubinski Corporation. SL-GMS, SL Corporation, the SL Logo, and all Sherrill-Lubinski product names referenced in this manual are trademarks or registered trademarks of the Sherrill-Lubinski Corporation; any unauthorized use of these marks is strictly prohibited. All trademarks and registered trademarks referenced in this document are property of their respective companies.

SL-GMS (6.2x) 26 May 2006 Configuration: C62a1_360526

Copyright (c) 1987-2006 Sherrill-Lubinski Corporation. All Rights Reserved.

LIMITATIONS ON USE

Use, duplication, or disclosure by the U.S. Government is subject to restrictions as set forth in the Technical Data - Commercial Items clause at DFARS 252.227-7015, the Rights in Data - General clause at FAR 52.227-14, and any other applicable provisions of the DFARS, FAR, or the NASA FAR supplement.

SL Corporation 240 Tamal Vista Blvd., Suite 110 Corte Madera, CA 94925

TECHNICAL SUPPORT Phone 800.548.6881 (inside U.S.) 415.927.8400 Fax 415.927.8401 E-mail [email protected]

5/31/06 v6.2x Table of Contents

SL-GMS (v6.2a) SL-GMS (v6.1e) SL-GMSDraw GMSDRAW_MFC (WINDOWS)...... 3 Top-Level Editor States...... 3 Editor Top State ...... 3 Core Functionality Basic Functionality...... 12 Color Handling...... 12 On-line Examples ecpdemo ...... 12 INTERNATIONALIZATION ...... 13 INSTALLATION UTILITIES ...... 13 Registration Utility...... 13 SL-GMS (v6.1d) SL-GMSDraw GMSDRAW_MFC (WINDOWS)...... 14 Core Functionality Basic Functionality...... 21 Filer Functions...... 21 All Workstations...... 21 Windows Workstations...... 22 Window Handling...... 22 SL-GMS (v6.1c) SL-GMSDraw Top-Level Editor States...... 24 GMSDRAW_MFC (WINDOWS)...... 24 GMSDRAW_MFC (WINDOWS) Japanese ...... 24 Core Functionality Basic Functionality...... 25 CONVERSION UTILITIES ...... 25 SL-GMS (v6.1b) SL-GMSDraw View Manager State ...... 26 Zoom/Pan Interaction State...... 26 Top-Level Editor States...... 26 Run Manager State...... 26 GMSDRAW Library ...... 27

Version 6.2 - 26 May 2006 SL-GMS Release Notes page i Common GMSDRAW Dialog Models...... 27 GMSDRAW_MFC (WINDOWS)...... 27 Core Functionality Basic Functionality...... 28 Filer Functions...... 28 SL-KEY LICENSE PROTECTION...... 29 SL-GMS (v6.1a) SL-GMSDraw GMSDRAW_MFC (WINDOWS)...... 31 gmsdraw_xm (MOTIF) ...... 32 Edit Manager — Edit Property States ...... 32 All Workstations...... 33 Primitive Functions ...... 33 Standard Control Objects INDIVIDUAL CONTROLS...... 36 Popup Menu Controls...... 36 Text Edit Box Controls ...... 36 Core Functionality Basic Functionality...... 38 Color Handling...... 38 Linking / Shared Libraries ...... 38 SL-KEY LICENSE PROTECTION...... 38 LANGUAGE INTERFACES ...... 39 Java ...... 39 C++ ...... 39 CONVERSION UTILITIES ...... 40 On-line Examples SL-ATMS ...... 41 Basic Functionality...... 41 SL-GMS (v6.0q) SL-GMSDraw GMSDRAW_MFC (WINDOWS)...... 43 MFC Framework — File Operations...... 43 Standard Control Objects ALL CONTROLS ...... 43 Control Resizing Behavior ...... 44 CONVERSION UTILITIES ...... 44 SL-GMS (v6.0p) SL-GMSDraw Edit Manager — Object Create States...... 45

page ii SL-GMS Release Notes Version 6.2 - 26 May 2006 Bitmap Create State...... 45 Edit Manager — Special Interface States...... 45 Palette List Select State...... 45 Standard Control Objects GMSDEMO...... 47 ATMS ...... 47 Core Functionality Basic Functionality...... 49 Date & Time Functions...... 49 GML...... 49 Bitmap Handling...... 49 CONVERSION UTILITIES ...... 50 SL-GMS (v6.0n) SL-GMSDraw GMSDRAW_MFC (WINDOWS)...... 54 MINIDRAW_MFC (WINDOWS) ...... 55 SMSNEW — GMSDRAW: Top-Level Editor States ...... 55 Edit Manager — Object Create States...... 55 Bitmap Create State...... 56 Edit Manager — Edit Property States ...... 56 Renamed Str Edit State...... 56 Standard Control Objects INDIVIDUAL CONTROLS...... 57 Option Menu Controls...... 57 Scale Controls...... 57 Active-X Component Examples ...... 57 GMSRUN ActiveX (gmsrun_ax)...... 57 SL-ATMS ...... 58 Basic Functionality...... 58 Basic Functionality...... 60 Filer Functions...... 61 Low-Level Functions ...... 61 Bitmaps/Rasterfiles...... 61 All Workstations...... 62 Color Handling...... 62 INTERNATIONALIZATION ...... 63 X Workstations...... 63 PORTS — OS DEPENDENCIES...... 63 Compaq Tru64 ...... 63 CONVERSION UTILITIES ...... 63 On-line Examples

Version 6.2 - 26 May 2006 SL-GMS Release Notes page iii SL-GMS (v6.0m) SL-GMSDraw Top-Level Editor States...... 66 Import State...... 66 GMSDRAW_MFC (WINDOWS)...... 66 MFC Framework — File Operations...... 67 View Manager State ...... 67 SMSNEW — GMSDRAW: Top-Level Editor States ...... 68 Export Java State ...... 68 Import State...... 68 SMSNEW — GMSDRAW: Edit Plane State...... 68 Window Resize Functionality...... 68 View Manager State ...... 69 GMSDRAW: Edit Manager/Control States Edit Manager — Object Create States...... 70 Bitmap Create State...... 70 Sector Create State ...... 70 Edit Selection State (Interaction State)...... 70 Standard Control Objects INDIVIDUAL CONTROLS...... 71 Popup Menu Controls...... 71 Basic Functionality...... 72 Bitmaps/Rasterfiles...... 72 All Workstations...... 73 PostScript Workstations...... 74 INTERNATIONALIZATION ...... 74 PORTS — OS DEPENDENCIES...... 75 Compaq Tru64 v5.1 ...... 75 IBM RS/6000 AIX v4.3 ...... 75 Solaris 7/Solaris 8...... 75 SL-KEY LICENSE PROTECTION...... 75 INSTALLATION UTILITIES ...... 76 InstallShield Utility ...... 76 Registration Utility...... 76 SL-GMS (v6.0k) Standard Control Objects INDIVIDUAL CONTROLS...... 77 Text Edit Box Controls ...... 77 Option Menu Controls...... 77 On-line Examples SL-ATMS ...... 78 Basic Functionality...... 78

page iv SL-GMS Release Notes Version 6.2 - 26 May 2006 Zoom/Pan Controls...... 78 Model Layer State ...... 78 Layer Handling...... 78 Memory Leakage...... 80 Basic Functionality...... 80 Filer Functions...... 80 All Workstations...... 81 Window Handling...... 81 SL-GMS (v6.0j) SL-GMSDraw GMSDRAW_MFC (WINDOWS)...... 82 View Operations ...... 82 Font Handling ...... 82 GMSDRAW_MFC (WINDOWS) Japanese ...... 82 gmsdraw_xm (MOTIF) ...... 83 Standard Control Objects INDIVIDUAL CONTROLS...... 83 Check Button Controls ...... 83 Text Edit Box Controls ...... 83 Text List Box Controls ...... 83 All Workstations...... 83 Primitive Drawing Functions...... 83 Event Handling ...... 88 X Workstations...... 89 Primitive Drawing Functions...... 89 HP-UX XIM Workstations...... 89 Solaris XIM Platforms...... 89 PORTS — OS DEPENDENCIES...... 90 DEC-ALPHA OSF...... 90 INSTALLATION UTILITIES ...... 90 InstallShield Utility ...... 90 LANGUAGE INTERFACES ...... 90 C++ ...... 90 SL-GMS (v6.0i) Standard Control Objects INDIVIDUAL CONTROLS...... 91 Text Edit Box Controls ...... 91 Option Menu Controls...... 91 SL-GMS (v6.0h) SL-GMSDraw

Version 6.2 - 26 May 2006 SL-GMS Release Notes page v GMSDRAW_MFC (WINDOWS)...... 92 MFC Framework — File Operations...... 92 GMSDRAW_MFC (WINDOWS) Japanese ...... 92 MINIDRAW_MFC (WINDOWS) ...... 94 gmsdraw_xm (MOTIF) ...... 94 gmsdraw_xm (MOTIF) Japanese...... 94 Edit Manager — Edit Property States ...... 95 Object Property State ...... 95 Run Manager State (Preview)...... 95 Model State (ModelState) ...... 95 General Model Handling ...... 95 Enhanced SMS Model State (ModelState) ...... 96 WinModState — Resizing Functionality ...... 96 Standard Control Objects ALL CONTROLS ...... 97 INDIVIDUAL CONTROLS...... 98 Text Edit Box Controls ...... 98 Text List Box Controls ...... 98 WINDOWS-SPECIFIC VERSION...... 99 MOTIF-SPECIFIC VERSION...... 100 Scroll Bar Controls ...... 100 On-line Examples MFC Integration Examples ...... 101 myproject_mfc_mdi / myproject_mfc_sdi ...... 101 Active-X Component Examples ...... 101 GMSRUN ActiveX (gmsrun_ax)...... 101 SL-ATMS ...... 102 Basic Functionality...... 102 Network Management Example...... 103 Map Top State...... 103 Model Layer State ...... 103 Layer Handling...... 103 Icon Handling ...... 103 Core Functionality SL-DRAW2...... 104 Text Entry ...... 104 Basic Functionality...... 104 Filer Functions...... 104 Text...... 106 All Workstations...... 110 Window Handling...... 110 Windows Workstations...... 110

page vi SL-GMS Release Notes Version 6.2 - 26 May 2006 Font Handling ...... 110 SL-KEY LICENSE PROTECTION...... 111 PORTS — OS DEPENDENCIES...... 112 Windows 95 ...... 112 INSTALLATION UTILITIES ...... 112 Registration Utility...... 112 SL-GMS (v6.0g1) SL-GMSDraw Window Model State (WinModState) ...... 113 View Manager State ...... 113 Zoom/Pan Interaction State...... 113 GMSDRAW Library ...... 114 Common GMSDRAW Dialog Models...... 114 GMSDRAW_MFC (WINDOWS)...... 115 GMSDRAW_MFC (WINDOWS) Japanese ...... 115 Top-Level Editor States...... 115 Editor Top State ...... 115 Standard PALETTE Models ...... 116 Edit Manager — Object Create States...... 117 Marker Create State...... 117 Edit Manager — Edit Property States ...... 117 Object Property State ...... 117 Default Object Property State...... 117 Dyn Str Edit State ...... 117 Standard Control Objects ALL CONTROLS ...... 118 Common Attributes...... 118 INDIVIDUAL CONTROLS...... 119 Scroll Bar Controls ...... 119 Option Menu Controls...... 119 On-line Examples Active-X Component Examples ...... 120 GMSRUN ActiveX (gmsrun_ax)...... 120 GMSTUTOR...... 121 Basic 1 Example...... 121 SL-ATMS ...... 121 Network Management Example...... 122 Mapping Library Functionality ...... 122 BASEMAP PREPARATION ...... 122 Map Window Management ...... 122 Core Functionality SL-DRAW2...... 123

Version 6.2 - 26 May 2006 SL-GMS Release Notes page vii Basic Functionality...... 124 Bitmaps/Rasterfiles...... 124 All Workstations...... 124 Event Handling ...... 124 SL-GMS (v6.0f2) SL-GMSDraw Common SL-GMSDraw Dialog Models...... 129 GMSDRAW_MFC (WINDOWS)...... 129 GMSDRAW_MFC (WINDOWS) Japanese...... 129 Top-Level Editor States...... 130 Run Manager State (Preview)...... 130 SL-GMS (v6.0f1) SL-GMSDraw GMSDRAW_MFC (WINDOWS)...... 131 MFC Framework Classes/Resources...... 131 gmsdraw_xm (MOTIF) ...... 131 gmsdraw_xm — Menus and ToolBars...... 131 Top-Level Editor States...... 131 Editor Top State Resource File Handling...... 131 Edit Manager — Special Interface States...... 132 Bitmap Name List State...... 132 Palette List Select State...... 132 Enhanced SMS Top-Level States...... 133 Standard Top State...... 133 Standard Control Objects INDIVIDUAL CONTROLS...... 133 Text List Box Controls ...... 133 On-line Examples GMSTUTOR...... 133 Basic 4 Example...... 133 SL-DRAW...... 134 Core Functionality DYNAMICS...... 134 INSTALLATION UTILITIES ...... 134 Registration Utility...... 134 SL-GMS (v6.0e1) SL-GMSDraw GMSDRAW_MFC (WINDOWS)...... 137 Menus and ToolBars...... 137

page viii SL-GMS Release Notes Version 6.2 - 26 May 2006 File Operations...... 138 Window Handling...... 138 Classes/Resources ...... 138 ActiveX Support ...... 139 OLE and Compound Files ...... 140 gmsdraw_xm (MOTIF) ...... 140 Menus and ToolBars...... 140 Top-Level Editor States...... 140 Editor Top State ...... 140 Export GML File State ...... 141 Standard PALETTE Models ...... 141 Edit Plane State ...... 143 Window Edit Mode (Size Window, Replace Model) ..... 143 Cursor Handling Mechanism...... 143 Model Manager Functionality...... 143 Edit Manager — Object Create States...... 144 Group Create State...... 144 Object Change States (Immediate) ...... 145 Order State ...... 145 Apply Transform ...... 145 Special Interface States ...... 145 SubModel Name List State ...... 145 Edit Property States...... 145 Object Property State ...... 145 Default Object Property State...... 146 Default Object Property MFC Dialog Windows ...... 146 Dyn Str Edit State ...... 146 Renamed Str Edit State...... 147 Dat File Edit State ...... 147 Enhanced SMS MFC GMS Common Classes (WINDOWS) ...... 148 View Manager State ...... 148 GMSRUN: Dialog States...... 148 System-Independent Dialog State ...... 148 WINDOWS-SPECIFIC VERSION...... 149 Standard State Framework ...... 149 Standard State API...... 149 Standard Control Objects INDIVIDUAL CONTROLS...... 149 Text Edit Box Controls ...... 149 WINDOWS-SPECIFIC VERSION...... 150 Scale Controls...... 150 On-line Examples

Version 6.2 - 26 May 2006 SL-GMS Release Notes page ix MFC Integration Examples ...... 151 myproject_mfc_sdi ...... 151 Active-X Component Examples ...... 151 GMSRUN ActiveX (gmsrun_ax)...... 151 Network Management Example...... 152 Mapping Library Functionality ...... 152 Core Functionality GML...... 152 Basic Functionality...... 153 Filer Functions...... 153 Primitive Functions ...... 153 Object Extents ...... 155 X Workstations...... 155 Event Handling ...... 155 INTERNATIONALIZATION ...... 155 GMS-XIM ...... 156 PORTS — OS DEPENDENCIES...... 156 Windows NT Port ...... 156 HP-UX Ports ...... 157 Digital UNIX Port ...... 157 INSTALLATION UTILITIES ...... 157 InstallShield Utility ...... 157 Registration Utility...... 158 LANGUAGE INTERFACES ...... 158 CONVERSION UTILITIES ...... 158 DXF Conversion...... 158 SL-GMS (v6.0d1) SL-GMSDraw GMSDRAW_MFC (WINDOWS)...... 161 Edit Manager — Edit Property States ...... 161 Dyn Str Edit State ...... 161 Standard Control Objects INDIVIDUAL CONTROLS...... 162 Option Menu Controls...... 162 On-line Examples MYPROJECT COMPONENT/FRAMEWORK EXAMPLES...... 162 Base Example — Simple (myproject_common) ...... 162 MFC Integration Examples ...... 162 myproject_mfc_mdi ...... 162 Windows Workstations...... 163 Primitive Drawing Functions...... 163 LANGUAGE INTERFACES ...... 163

page x SL-GMS Release Notes Version 6.2 - 26 May 2006 C++ ...... 163 SL-GMS (v6.0c1) On-line Examples MOTIF Framework Examples ...... 165 myproject_motif ...... 165 SL-GMS (v6.0b1) SL-GMSDraw gmsdraw_xm (MOTIF) ...... 166 Standard Control Objects WINDOWS-SPECIFIC VERSION...... 167 SL-GMS (v6.0a1) SL-GMSDraw GMSDRAW_MFC (WINDOWS)...... 168 Menus and Toolbars ...... 168 Font Handling ...... 168 Window Handling...... 169 Other Functions ...... 170 MINIDRAW_MFC (WINDOWS) ...... 170 Classes/Resources ...... 170 gmsdraw_xm (MOTIF) ...... 170 File Operations...... 170 Top-Level Editor States...... 171 Common Menus and ToolBars...... 171 Editor Top State ...... 171 Editor User Preferences State ...... 171 Clipboard State...... 172 Export Bitmap State ...... 172 Edit Plane State ...... 172 Background Object Handling...... 172 Edit Manager — Control States...... 173 Edit Manager State ...... 173 Edit Selection State (Interaction State)...... 173 Select By Property State...... 174 Enter Point State...... 174 History State ...... 175 Edit Manager — Object Create States...... 175 Bitmap Create State...... 175 Text/TextRect State ...... 175 Move State...... 175 Scale State...... 176

Version 6.2 - 26 May 2006 SL-GMS Release Notes page xi Rotate State...... 176 Reference Point State ...... 176 Special Interface States ...... 177 Import Bitmap Interface State ...... 177 SubModel Interface State ...... 177 Edit Property States...... 178 Model Property State ...... 178 Object Property MFC Dialog Windows ...... 178 Default (GISMO) Property State...... 179 Default Object Property MFC Dialog Windows ...... 179 Renamed Str Edit State...... 179 Construction Tools States ...... 180 Grid Manager ...... 180 Grid Manager Dialog Model...... 181 Grid MFC Dialog Window...... 181 Run Manager State (Preview)...... 181 Dat File Edit State ...... 182 Enhanced SMS MFC GMS Common Classes (WINDOWS) ...... 182 Top-Level States...... 182 Standard Top State...... 182 Model State (ModelState) ...... 183 Model Extent Handling...... 183 View Manager State ...... 183 Zoom/Pan Behavior...... 183 Run Manager State...... 183 Variable Handling ...... 184 PostScript Print Manager (PsPrintMgrState)...... 184 GMSRUN: File/Directory Name Browser States ...... 184 File / Directory Name Browser State ...... 184 WINDOWS-SPECIFIC VERSION...... 185 Display State...... 185 Standard Control Objects SL-GMSDraw Edit Functionality...... 185 Basic Editing Operations ...... 185 SL-GMSRUN / APP Run-Time Functionality...... 186 Control Resizing Behavior ...... 186 View Manager — Zoom/Pan Behavior...... 187 Controls as Primitive Objects ...... 187 INDIVIDUAL CONTROLS...... 187 Text Display Controls ...... 187 Scroll Bar Controls ...... 187 WINDOWS-SPECIFIC VERSION...... 188

page xii SL-GMS Release Notes Version 6.2 - 26 May 2006 ALL CONTROLS ...... 188 Button Controls ...... 188 Mode Button Controls ...... 188 Text List Box Controls ...... 188 Scale Controls...... 189 MOTIF-SPECIFIC VERSION...... 189 Text List Box Controls ...... 189 On-line Examples myproject ...... 189 MFC Integration Examples ...... 190 myproject_mfc_mdi ...... 190 Windows Framework Examples ...... 190 myproject_win — Win32 Example ...... 190 Active-X Component Examples ...... 191 myproject_ax_vb — ActiveX Visual Basic Example ...... 191 Java / Java Bean Integration Examples ...... 191 myproject_jb...... 191 GMSDEMO...... 191 Dynamic Actions...... 191 ATMS ...... 192 SL-DRAW2...... 192 Bitmaps...... 192 Dyn Edit / Dyn Enter...... 192 Core Functionality Basic Functionality...... 193 Filer Functions...... 193 Filer Utility Programs ...... 193 Low-Level Functions ...... 193 Views/Zoom/Pan/Redraw ...... 195 Groups...... 196 Bitmaps/Rasterfiles...... 196 Update/Display Pass...... 199 Date & Time Functions...... 199 Linking / Shared Libraries ...... 199 DYNAMICS...... 200 Dynamic Actions...... 200 GRAPHS ...... 201 Date/Time Graph Components...... 201 All Workstations...... 202 Primitive Drawing Functions...... 202 Event Handling ...... 202 Color Handling...... 209 Font Handling ...... 209

Version 6.2 - 26 May 2006 SL-GMS Release Notes page xiii Bitmap Handling...... 210 Double Buffering ...... 210 X Workstations...... 211 Event Handling ...... 211 Color Handling...... 212 Bitmap Handling...... 214 Windows Workstations...... 214 Primitive Drawing Functions...... 214 Window Handling...... 215 Color Handling...... 216 PostScript Workstations...... 216 GMS-XIM ...... 218 SL-KEY LICENSE PROTECTION...... 218 INSTALLATION UTILITIES ...... 218 InstallShield Utility ...... 218 LANGUAGE INTERFACES ...... 220 ADA/Fortran...... 220 C++ ...... 220 MOTIF INTEGRATION EXAMPLES...... 221 demo/gms_motif...... 221 CONVERSION UTILITIES ...... 221 DXF Conversion...... 221

page xiv SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMS (v6.x) Release Notes

Introduction The SL Object-Oriented Graphical Modeling System is steadily acquiring new functionality, along with improvements to internal architectural coherence and performance. These notes explain the new features, improvements, and bug fixes as they are added to each released version of SL-GMS. Release notes for SL-GMS v6.2a1 and later are provided in HTML format only. A link the html file is provided in this document, along with the release notes for previous verisons of SL-GMS in PDF format. The release notes are intended to serve two primary functions: they provide upgrade information to customers porting applications from older versions of SL-GMS to new releases; and they supplement other SL-GMS documentation that may not include the most recent information about new changes. Release notes are cumulative, that is, features added in one version of SL-GMS pertain to subsequent 6.x releases. Release notes for earlier versions are available upon request.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 1 SL-GMS (v6.2a)

SL-GMS (v6.2a)

(BXXXX) SL-GMS Release Notes for version 6.2a and later are provided in HTML format only. The file rn_62.html contains HTML format release notes for the 6.2a release. All future 6.2 release note information will be added to the HTML file. rn_62.html

2 SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMSDraw

SL-GMS (v6.1e)

SL-GMSDraw

GMSDRAW_MFC (WINDOWS)

Top-Level Editor States Editor Top State

(B9448) Entrypoint and intercept functions can now be "unregistered" In the SL-GMS Enhanced SMS Library, entrypoint functions, usually named "_ep", are used with the SDDialogState to invoke system-dependent dialogs, or used to provide entry points that may be used by custom editors. There are also intercept functions, usually named "_fctn", used to specify callbacks into the user application. Both types of functions are "registered" by a State method of the same name. These State methods were written to reject a null argument, so there was no way to "unregister" a function. This problem has been fixed so that the entrypoint and intercept registration methods now accept a null argument, which will remove the registration of the entrypoint or intercept function. A list of entrypoint and intercept functions and the States that provide them follows.

State Class Function Name

CreateState created_object_fctn

CreateState cloned_objects_fctn

EditorTopState post_modelsave_fctn

EditorTopState post_modelgsave_fctn

EditPlaneState pre_modelget_fctn

EditPlaneState post_modelget_fctn

Version 6.2 - 26 May 2006 SL-GMS Release Notes 3 SL-GMS (v6.1e)

State Class Function Name

EditPlaneState pre_modelsave_fctn

EditPlaneState pre_modelgsave_fctn

MergeState pre_modelmerge_fctn

MergeState post_modelmerge_fctn

ObjectPropertyState pre_validate_dynprop_fctn

ObjectPropertyState post_validate_dynprop_fctn

ObjectPropertyState pre_display_renstr_fctn

(B9449) gmsdraw_mfc no longer crashes when Object Dynamic Properties dialog resized Previously in SL-GMSDraw on Windows, a crash occurred if the Object Dynamic Properties dialog was resized. This problem has been fixed.

(B9405) Submodels now display in Editor after preview Previously in SL-GMSDraw on Windows, if a submodel was previewed in a palette (through the Available Palettes browser) it would be impossible to subsequently open the same submodel in the Editor. This problem has been fixed.

(E9566) gdiplus.dll library updated with Microsoft security patch Microsoft Corporation has announced a security vulnerability in their GDI+ library, gdiplus.dll. This vulnerability allows specifically-designed JPEG files opened with GDI+ to exploit and possibly take control of a user’s machine. (See "Microsoft Security Bulletin MS04-028" for full details of the vulnerability.) The GDI+ software is not used is SL-GMS applications to open JPEG files, hence this vulnerability poses no risk to users opening JPEG files in SL-GMS applications. However, Microsoft suggests updating all copies of GDIPLUS.dll in order to avoid exploitation. The library GMS_HOME\lib\gdiplus.dll has been updated. No functional difference should be seen in any SL-GMS application.

4 SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMSDraw

(B9496) Model appearance no longer changes after preview with source file Previously in SL-GMS, models visually changed after they were previewed if the .dat file called a source file. This problem has been fixed.

(B9436) Memory leak no longer occurs when zooming in/out of model with text Previously in SL-GMSDraw on Windows, a memory leak occurred when zooming in and out on a model containing text, once maximum levels had been reached. This problem has been fixed.

(E9280) Anti-aliasing and renderers now supported on Windows SL-GMS now supports graphic renderers and anti-aliasing on Windows. Five new API functions provide this functionality, as described below. SUMMARY Set and query the workstation anti-aliasing mode NAME gmsQWsAllAntiAliasModes( ), gmsQWsAntiAliasMode( ), gmsWsAntiAliasMode( ) SYNTAX

int gmsQWsAllAntiAliasModes (workst) id workst; int gmsQWsAntiAliasMode (workst) id workst;

int gmsWsAntiAliasMode (workst, mode) id workst; int mode;

DESCRIPTION The gmsWsAntiAliasMode( ) function will set the anti-aliasing mode on the specified workstation. The mode value is a bit mask and may be any combination of the macros G_ANTIALIAS_LINE, G_ANTIALIAS_PATLINE, G_ANTIALIAS_FILL,

Version 6.2 - 26 May 2006 SL-GMS Release Notes 5 SL-GMS (v6.1e)

G_ANTIALIAS_PATFILL, G_ANTIALIAS_HERSHEYTEXT, and G_ANTIALIAS_MARKER or'd together. G_ANTIALIAS_NONE indicates that no anti-aliasing should be done. Three other macros are defined to simplify code. G_ANTIALIAS_LINES combines G_ANTIALIAS_LINE and G_ANTIALIAS_PATLINE. G_ANTIALIAS_FILLS combines G_ANTIALIAS_FILL and G_ANTIALIAS_PATFILL. G_ANTIALIAS_ALL combines all the possible values. The gmsWsAntiAliasMode( ) function will return the actual mode set on the workstation. The bits for any modes that are not supported by the workstation will be zero in the return value. When a bad value for workstation or mode is given, the return value will be G_ANTIALIAS_INVALID. The workstation can be NULL to set the default mode on the workstation exemplar. The gmsQWsAntiAliasMode( ) function will return the anti-aliasing mode currently set on the specified workstation. A return value of G_ANTIALIAS_INVALID indicates a bad workstation. The workstation can be NULL to query the default mode from the workstation exemplar. The gmsQWsAllAntiAliasModes( ) function will return all anti- aliasing modes available for the specified workstation. This information is not available from the workstation exemplar. The value returned is a bit mask as described for the other anti- aliasing functions. The anti-aliasing modes available are dependent on the workstation's renderer. See gmsWsRenderer( ) for more information. Note that anti-aliasing can cause artifacts when objects are animated. This may be solved for double buffered applications by using the workstation option G_WS_DBUFF_CLEAR. In some cases a model might be designed where objects are grouped together with a background object to clear the artifacts. Anti-aliasing is available only on Windows. All anti-aliasing calls for other workstation types (except the exemplar) will return a value of G_ANTIALIAS_NONE. Anti-aliasing is not implemented in the GDI renderer. The GDI+ renderer currently supports G_ANTIALIAS_LINE, G_ANTIALIAS_PATLINE, G_ANTIALIAS_FILL, and G_ANTIALIAS_HERSHEYTEXT. Anti-aliasing for TrueType fonts may be enabled through Windows’ desktop properties.

6 SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMSDraw

EXAMPLES This line of code sets the default anti-aliasing mode to anti-alias patterned lines/edges. This will affect workstations created after this line is executed. mode = gmsWsAntiAliasMode(NULL, G_ANTIALIAS_PATLINE); The following lines of code check to see if anti-aliasing is available for patterned fills (opaque and transparent). mode = gmsQWsAllAntiAliasModes(workst); if (mode & G_ANTIALIAS_PATFILL) printf("Anti-aliasing available for patterned fills\n");

SEE ALSO gmsQWsRenderer( ), gmsWsRenderer( ), gmsWsDefaultOpts( ), gmsWorkst( )

SUMMARY Set and query the workstation graphic renderer NAME gmsQWsRenderer( ), gmsWsRenderer( )

SYNTAX

int gmsQWsRenderer(workst) id workst;

int gmsWsRenderer(renderer_type) int renderer_type;

DESCRIPTION The gmsWsRenderer( ) function will set the renderer on the workstation exemplar. Workstations created after the renderer is set will use that renderer if possible. The value returned from gmsWsRenderer( ) is the actual renderer that was set on the exemplar. To determine the actual renderer used by a specific workstation, gmsQWsRenderer( ) must be used. If a renderer is not available on the current platform, or it failed to initialize correctly, the default renderer is used instead of the exemplar's

Version 6.2 - 26 May 2006 SL-GMS Release Notes 7 SL-GMS (v6.1e)

renderer. The gmsWsRenderer( ) function will return G_RENDERER_INVALID to indicate a bad renderer type or G_RENDERER_NOTIMPLEMENTED if renderers are not implemented. G_RENDERER_DEFAULT is the default renderer. This is equivalent to G_RENDERER_GDI On Windows. The gmsQWsRenderer( ) function will query the renderer from a workstation or workstation exemplar. Use a NULL workstation value to query the exemplar. A return value of G_RENDERER_INVALID indicates a bad workstation. Platforms that do not implement renderers will return G_RENDERER_DEFAULT. Renderers are available only on Windows platforms. The renderer types currently implemented are G_RENDERER_GDI and G_RENDERER_GDIPLUS. The GDI+ renderer is provided to support anti-aliasing. It is not recommended to use 256 color mode with it, as the GDI+ renderer does not perform well in this mode. EXAMPLES This code segment sets the renderer to GDI+, creates a workstation, and checks to see if the desired renderer was used. gmsWsRenderer(G_RENDERER_GDIPLUS); workst = gmsWorkst(gmsQDefaultWsClass(), "ws", "", "default", "", 0); if (!workst) { printf("Couldn't create workstation.\n"); gmsExit(); } type_used = gmsQWsRenderer(workst); if (G_RENDERER_GDIPLUS != type_used) { printf("GDI+ renderer unavailable.\n"); printf("Using renderer %d.\n", type_used); }

The anti-aliasing and renderer settings may be set and queried via State messages sent to a WinMod State, as described below. To set the anti-aliasing mode, send the message "anti_alias_mode" with a value which is a bit mask of G_ANTIALIAS values, as described above. For example, to set the mode to perform anti-aliasing on lines:

8 SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMSDraw

STMSG_V( "my_winmod_state", "anti_alias_mode", G_ANTIALIAS_LINE );

To return the current anti-aliasing mode send the message "get_anti_alias_mode" with a value which is the address of an integer. On return this integer will be filled in with a bit mask value indicating the current anti-aliasing modes in effect. For example: int mode; STMSG_P( "my_winmod_state", "get_anti_alias_mode", &mode );

To return all anti-aliasing modes available send the message "get_all_anti_alias_modes" with a value which is the address of an integer, On return this integer will be filled in with a bit mask value indicating the available anti-aliasing modes. For example: int all_modes; STMSG_P( "my_winmod_state", "get_all_anti_alias_modes", &all_modes );

To set the renderer send the message "renderer" with a value which is one of the G_RENDERER values as described above. Since the renderer must be set before the WinMod State is activated, this message should be sent as part of a STCREATE or STINVOKE call. For example: STINVOKE_LV( "my_winmod_state", G_WINMODSTATE_CLASSNAME, parent,

"model_name", ..., ..., "renderer", G_RENDERER_GDIPLUS, ..., NULL );

The SL-GMS State Class Library Reference provides more information about using the STCREATE and STINVOKE calls.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 9 SL-GMS (v6.1e)

To return the current renderer, send the message "get_renderer" with a value which is the address of an integer. On return this integer will be filled in with the value of the current renderer. For example: int renderer; STMSG_P( "my_winmod_state", "get_renderer", &renderer );

The following table lists the currently supported anti-aliasing options.

Option Description

renderer 1

anti_alias_mode 1 solid edges should be anti-aliased

anti_alias_mode 2 patterned edges

anti_alias_mode 3 solid edges, patterned edges

anti_alias_mode 4 solid fills

anti_alias_mode 5 solid edges, solid fills

anti_alias_mode 6 patterned edges, solid fills

anti_alias_mode 7 solid edges, patterned edges, solid fills

anti_alias_mode 16 hershey text

anti_alias_mode 17 solid edges, hershey text

anti_alias_mode 18 patterned edges, hershey text

anti_alias_mode 19 solid edges, patterned edges, hershey text

anti_alias_mode 20 solid fills, hershey text

anti_alias_mode 21 solid edges, solid fills, hershey text

anti_alias_mode 22 patterned edges, solid fills, hershey text

anti_alias_mode 23 solid edges, patterned edges, solid fills, hershey text

SEE ALSO gmsQWsAllAntiAliasModes( ), gmsQWsAntiAliasMode( ), gmsWsAntiAliasMode( )

10 SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMSDraw

(B9497) WM_CONTEXTMENU no longer called twice by ActiveX control Previously, the gmsrun_ax control erroneously generated two WM_CONTEXTMENU window messages when the right mouse button on the gsmrun ActiveX control (WM_RBUTTONUP) was released. This problem has been fixed. It now generates only one WM_CONTEXTMENU windows message per WM_RBUTTONUP windows message.

(B9454) SL-GMS now supports Microsoft Visual Studio 7.1 SL-GMS is now available for use with Microsoft Visual Studio 7.1. In order to support applications compiled with VC++ 7.1, the mfc71.dll and msvcr71.dll libraries from Microsoft are included in the InstallShield distribution and will be automatically installed in users’ system directory if needed.

(B9426) Palettes now display in same window regardless of flag setting Previously in SL-GMSDraw on Windows, if the draw2_flag was set to 1 (i.e., ObjectPaletteState draw2_flag 1), the palette browser (Available Palettes) displayed the palette model in a different window. The correct behavior is for it to display in the same window, regardless of whether the flag is set to 0 or 1. This problem has been fixed.

(B9281) Overflow clipping enhanced to include text and marker objects Previously in SL-GMS, the gmsClipViewOverflow( ) function did not include text and marker objects in its list of object types checked for overflow conditions. This function has been enhanced to include these object types in the clipping algorithms.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 11 SL-GMS (v6.1e)

Core Functionality

Basic Functionality Color Handling

(B6930) Inconsistent fpercent erase behavior fixed Previously in SL-GMS, if a model did not have its background color defined and it contained objects with fpercent dynamics, the objects did not erase in the same color. This problem has been fixed.

On-line Examples ecpdemo

(B9478) Double click now supported in ecpdemo functionality Previously in ecpdemo, it was not possible to recognize a double click event when selecting an item in the ecp tree control. It is now possible to get this event and determine if it was a double click.

(B9479) ecp tree control no longer collapses when tree updated Previously in ecpdemo, the ecp tree control collapsed whenever gmsVarChanged( ) was called to update the tree with new information. This problem has been fixed so that the tree will remain in its current state whenever it is updated.

(B9458) State messages now properly routed from ecp tree control Previously in ecpdemo, state messages were not properly routed from a popup menu invoked from the ecp tree control to the associated state message handler. This problem has been fixed.

NOTE: The ecpdemo example is not included in the standard SL-GMS package.

12 SL-GMS Release Notes Version 6.2 - 26 May 2006 On-line Examples

INTERNATIONALIZATION

(B9389) "emf2g" utility now converts Japanese text correctly Previously in SL-GMS, the conversion tool emf2g would correctly convert only the first character in windows metafiles (emf/wmf) that contained Japanese text. This problem has been fixed so that all text is properly converted.

INSTALLATION UTILITIES Registration Utility

(B9431) SL-GMS registration program now includes email option In order to facilitate the SL key process, the SL-GMS registration program has been updated to include the email option "[email protected]."

Version 6.2 - 26 May 2006 SL-GMS Release Notes 13 SL-GMS (v6.1d)

SL-GMS (v6.1d)

SL-GMSDraw

GMSDRAW_MFC (WINDOWS)

(B9019) Gradient fill enhanced to use hardware mode on (B8997) Windows platforms Gradient filled objects which use the gradient hardware mode will not lose their fill color when zoomed by a large factor. They also will not use up GDI resources. The gradient hardware mode includes other enhancements which are listed below. On Windows, each gradient filled object which uses the software mode gradient (all gradient filled objects in SL-GMS version 6.1c or earlier) has a DIB (Device Independent Bitmap) section associated with it. Views that are zoomed by a large factor will cause gradient DIB sections to be large. When these become so large that memory cannot be allocated for them, gradient filled objects will not display their fill (they lose their fill color). DIB sections also use GDI resources. Since software mode gradient filled objects use DIB sections, when thousands of these objects are created, the maximum process or system GDI resources can be used up. This, in turn, can cause a crash. These problems have been fixed by implementing a gradient hardware mode (which is the default mode). Gradient filled objects using gradient styles for which the hardware mode is active no longer use up GDI resources or large amounts of memory. Four other enhancements for gradient styles use the gradient hardware mode. These enhancements are as follows: • Percent fill now supported.

• Zoom operations are faster on large objects.

• Greys in 16-bit color mode are grey instead of pink.

• The elliptic gradient behavior has been improved.

Note that the hardware mode is currently available on Windows only.

14 SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMSDraw

The behavior of the elliptic gradient in the new gradient hardware mode is visually apparent in two ways. First, the gradient has one "highlight" point in the center of the ellipse. Second, the edges of the gradient stay the same relative distance from the edges of the object when the object is transformed (scaled, rotated, etc.). An example of this change would be a circle with a circular gradient fill. When the circle is scaled so that it becomes an ellipse, the gradient becomes elliptic also. The hardware elliptic gradient's behavior is governed by the following items. The gradient is shaded beginning with the start color (fcolor) at the ellipse's center and graduates to the end color at the boundary of the ellipse (with the intermediate color intervals between). The gradient's shape is defined by the major and minor axes of the ellipse (calculated from the foci and height [the height is half the length of the minor axis] that are specified in SL-GMSDraw or GML). Transformations on the object are applied to the points that define these axes. If a transformation skews these axes so that they are not orthogonal, SL-GMS will re- orthogonalize them using the transformed major axis (the original major axis after it is transformed) as the reference. The visual behavior of the software elliptic gradient is somewhat difficult to explain. The item that is the easiest to spot is the "highlight" at each focus point of the ellipse. Everything else is easier to understand by looking at the technical details. The software elliptic gradient is shaded beginning with the start color (fcolor) at the ellipse's two foci and graduates to the end color at the boundary of the ellipse (with the intermediate color intervals between). The gradient's shape is defined by the foci and height that are specified in SL-GMSDraw or GML. Transformations are then applied to the two focus points, but only the y (vertical) component of a transform is applied to the height. Because of this, a circular gradient will always remain circular (both foci are equal) and will scale only if the object it fills is scaled in the y direction. However, in an object filled by a non-circular elliptic gradient, the gradient will scale in both the x and y directions when the object is scaled in only the y direction (since the foci do not change, changing the minor axis also changes the major axis by the definition of an ellipse). An ellipse is defined as the set of all points (x, y) such that the sum of the distances from (x, y) to a pair of distinct fixed points (foci) is a fixed constant.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 15 SL-GMS (v6.1d)

The following table summarizes the differences between the hardware and software gradient modes.

Hardware Software

Gradient loses color no yes (B8997)

Uses up GDI resources no yes

Incorrect grey (16-bit no yes color)

Percent fill yes no

Fast zoom yes no

Elliptic fcolor starts at center foci

major & minor foci & minor Elliptic shape defined by axes axis

Elliptic minor axis scales x & y direction y direction only in

The hardware gradient can be enabled or disabled for specific gradient styles through the new API, gmsGradientHwMode( ). The following code segment shows how to disable the gradient hardware mode for the elliptic style. This code keeps the hardware mode on for the cyclic and acyclic linear gradient styles. int mode =3D G_FGRADIENT_HW_MODE_BIT_LINEAR_CYCLIC; mode |=3D G_FGRADIENT_HW_MODE_BIT_LINEAR_ACYCLIC; gmsGradientHwMode(mode);

To disable the gradient hardware mode for the elliptic style in gmsdraw_mfc, add the following line to the ".gmsdrawrc" file: gmsdraw_standard_top_state gradient_hardware_mode 3

The standard top state message, gradient_hardware_mode message, takes the same mode value as that of gmsGradientHwMode( ). There is a corresponding message in the standard top state, get_gradient_hardware_mode, that gets the hardware mode value. Note that objects using the software mode gradient styles still exhibit the problems solved by the hardware mode.

16 SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMSDraw

Following are tips for using the gradient fill (software and hardware modes). 1. Avoid transforming a gradient filled object in such a way that it will skew. The may produce unexpected results. 2. Avoid creating a gradient with the start and end point (or foci) at an angle. The results after scaling the object non- proportionally may be unexpected. Tips for using hardware mode gradients. 1. To create an ellipse or rectangle with an elliptic gradient that the object, start with a gradient filled circle or square, use the Presets button in the Gradient Dialog window to create a circular gradient, then stretch the object to become an ellipse or rectangle. 2. Avoid executing an apply transform until editing is complete. Possible unexpected behavior with gradient fills include the following: 1. If an apply transform operation is done to an elliptic gradient filled object using the hardware mode, whichever axis is longer after the operation will become the new major axis. This new major axis then becomes the new reference for the orthogonalization mentioned in the description of the hardware elliptic gradient. SL-GMS must do this since the foci are the points saved for the gradient fill and the foci are on the major axis. 2. Gradient fills will not be affected by some dynamics (e.g., startangle). In general, a dynamic which changes an object without changing its transformation matrix will not affect the object's gradient fill. Using rotate instead of startangle will affect the gradient fill. 3. Apply transform does not work properly with gradient filled splines. The new hardware gradient uses GDI+ for rendering, so SL-GMS installs gdiplus.dll in the bin directory under GMS_HOME. This dll must be in the PATH when applications are executed. The libraries libgwswin.lib, gmssrc.dll, and gmsnew.dll are already linked to gdiplus.lib, so that programs using SL-GMS's static or dynamic libraries need not link with gdiplus.lib.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 17 SL-GMS (v6.1d)

SUMMARY set and query the gradient hardware mode NAME gmsGradientHwMode( ), gmsQGradientHwMode( )

SYNTAX

int gmsGradientHwMode(mode) int mode;

int gmsQGradientHwMode()

DESCRIPTION The function gmsGradientHwMode( ) will set the gradient hardware mode. The mode value is composed of three bits, one bit for each gradient style. An ON bit indicates that the hardware mode should be enabled for the corresponding gradient style. The hardware mode can be enabled for multiple gradient styles by OR’ing the bits together. There are five macros to make setting the mode value easy. G_FGRADIENT_HW_MODE_BIT_LINEAR_CYCLIC -linear cyclic style bit on G_FGRADIENT_HW_MODE_BIT_LINEAR_ACYCLIC - linear acyclic style bit on G_FGRADIENT_HW_MODE_BIT_ELLIPTIC - elliptic style bit on styles G_FGRADIENT_HW_MODE_BIT(style) - turn the bit on corresponding to the gradient style passed to the macro. For example, G_FGRADIENT_HW_MODE_BIT(G_FGRADIENT_STYLE_ELLIP TIC). The function gmsGradientHwMode( ) returns 1 for success and 0 for failure. It can fail for any of the following reasons: the mode value is out of range, there are no SL-GMS workstations, or the platform is not supported for the gradient hardware mode. If gmsGradientHwMode( ) fails, it will keep the current mode unless it knows that the platform does not support the gradient hardware mode.

18 SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMSDraw

The function gmsQGradientHwMode( ) will query the gradient hardware mode. It returns the mode value as described for the gmsGradientHwMode( ) function. Separate mode bits may be checked by AND’ing the mode value with mode bit macro combinations. The function gmsQGradientHwMode( ) will return zero if there are no SL-GMS workstations or the platform does not support the gradient hardware mode. EXAMPLE This code enables the gradient hardware mode for just the linear cyclic and acyclic styles and prints out messages if it fails. int mode =3D G_FGRADIENT_HW_MODE_BIT_LINEAR_CYCLIC; mode |=3D G_FGRADIENT_HW_MODE_BIT_LINEAR_ACYCLIC; if (0 =3D=3D gmsGradientHwMode(mode)) { printf("Couldn't enable gradient hardware mode\n"); mode =3D gmsQGradientHwMode(); printf("Gradient hardware mode =3D %x\n", mode); } SEE ALSO gmsFGradient( ), gmsLFGradient( ), gmsQFGradient( )

(B9383) Transformations no longer lost on inactive gradient filled objects Previously in SL-GMSDraw on Windows, an object with a gradient fill that was changed to non-gradient fill, transformed (scaled, moved, rotated, etc.), had an apply transform done, and then was switched back to gradient fill, would lose the transformations on the gradient fill. This problem has been fixed.

(B9382) GDI brushes no longer leak when back buffers are created Previously in SL-GMS, a GDI brush would leak each time a back buffer was created for objects or workstations. This problem has been fixed.

(E8269) Behavior in "Default Graphic Properties" dialog Text tab on Windows corrected and improved The behavior within the Text tab of the Default Graphic Properties dialog on Windows has been corrected and improved as follows. Previously in SL-GMSDraw in the Default Graphic Properties dialog, the Fonts drop-down list displayed a set of TrueType

Version 6.2 - 26 May 2006 SL-GMS Release Notes 19 SL-GMS (v6.1d)

fonts that did not accurately reflect the fonts actually installed by default and did not display fonts that were installed by a custom "fontdef.dat" file. For example, the list displayed the fonts Courier, Helvetica, and Times although the actual TrueType fonts installed by default were Courier New, Arial, and Times New Roman. This behavior has been changed in two ways: • the list will now display the fonts actually installed.

• if a custom "fontdef.dat" file specifies a font number in the default font range (1 - 13) that font will replace the font installed by default.

If you are installing custom TrueType fonts, please note the following: Font styles (bold, italic, etc.) must be specifically indicated. For example, the minimum set of styles for Lucida Console would be the following: Lucida Console=20 Lucida Console-Bold Lucida Console-Italic Lucida Console-Bold-Italic If a partial set is installed for a given font and you select a style that has not been installed, the Editor will substitute an available style and inform you of this action. For example, if you had installed only the following fonts: Lucida Console-Bold Lucida Console-Bold-Italic and you selected "Lucida Console" in the list without any style selector buttons depressed, you would get a message dialog reading, Font Lucida Console not available, substituting font Lucida Console-Bold and the Bold button would be automatically set.

20 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

(B9381) "Adjust for Scale" checkbox in "Default Graphic Properties" dialog working correctly Previously, the "Adjust for Scale" checkbox within the Text tab in SL-GMSDraw’s Default Graphic Properties dialog had no effect. The checkbox would be deselected by default, but the feature would remain ON. This has been fixed so that now the checkbox is selected by default, and unchecking it correctly turns off the adjustment. Further information about the "Adjust for Scale" option is provided in the "font size" section of the "Setting Object Properties" chapter in the SL-GMSDraw User's Guide Manual.

Core Functionality

Basic Functionality Filer Functions

(B9370) Some older model files, previously unreadable in SL-GMS versions 6.1a through 6.1c, can now be read Previously in SL-GMS versions 6.1a through 6.1c, some older .m1 model files created by version 6.0d or earlier could not be read. This problem has been fixed. All Workstations

(B9380) "modopt" utility enhanced to allow nested models or models on standard LibPath The modopt utility has been enhanced to allow processing of nested models and models that are on the standard LibPath. The "-i" option has been added to allow users to specify additional directories for the LibPath. modopt will now process models that contain instances of bitmaps or submodels found in the following directories: #.\ # .\SUBMODS # .\MODELS # .\GRAPHS

Version 6.2 - 26 May 2006 SL-GMS Release Notes 21 SL-GMS (v6.1d)

# .\GISMOS # .\BITMAPS

(B9378) "modopt" utility no longer fails to convert models containing submodel instances In SL-GMS version 6.1a1 and later, the modopt utility sometimes failed to convert models that contained instances of submodels. This problem has been fixed.

Windows Workstations

(B9367) "Menus" page of "Control Objects" demo on Windows enhanced to control checked state of menu item or popup menu The Menus page of the Control Objects demo has been enhanced to demonstrate the capability of controlling the checked state of a menu item in a pull-down or popup menu. The checked state of a menu item may be controlled by associating it with an SL-GMS variable specified in an entry in a custom "menudef.dat" file. This feature is implemented on Windows only.

(B9386) "Insert ActiveX Control" option removed from SL-GMSDraw menu The Insert ActiveX Control menu option has been removed from SL-GMSDraw on Windows. Window Handling

(B9376) Function gmsQWsView( ) now working correctly Previously in SL-GMS, the function gmsQWsView( ) produced unreliable results when the View was zoomed in or out because of a change made to gsWsPointDCToIC( ). This problem has been fixed. This fix should affect only programs which were modified with a code fragment provided by SL technical support. This code fragment would resemble the following (note that the value for point "pt" would have been set by gmsWsPointDCToIC( )). if (vu) { /* apply inverse of vtm */

22 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

if (vu->vtm) { invMat = matDupe(vu->vtm); matInvert(invMat); pntXfBy(pt, invMat); matFree(invMat); } /* apply inverse of itm */ if (vu->itm) { invMat = matDupe(vu->itm); matInvert(invMat); pntXfBy(pt, invMat); matFree(invMat); } }

This fragment accounted for transformations on the View but is now handled internally by gmsWsPointDCToIC( ) and gmsQWsView( ). Any code that used this fragment should be modified to remove the fragment. All other code should not be affected.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 23 SL-GMS (v6.1c)

SL-GMS (v6.1c)

SL-GMSDraw

Top-Level Editor States

(B9345) Problem with Cut/Paste working across multiple models has been fixed Previously in SL-GMSDraw, users were unable to cut/paste instances of submodels across multiple models. If a submodel was instanced, then selected and copied, the paste operation would work only within the same model. Utilizing the New option or the Open option of the File Pull-Down menu to access subsequent models would cause the paste operation to fail with the following errors: ERROR: no archive file available: my_submod ERROR: external model "my_submod" cannot be found in this directory... ERROR: all ModInsts referencing "my_submod" will be freed! This problem has been fixed. Additional information about this topic is provided in (B9308) Problem with Cut/Paste working for first model only has been fixed on page 26.

GMSDRAW_MFC (WINDOWS) GMSDRAW_MFC (WINDOWS) Japanese

(B9356) Labels no longer missing on some Japanese dialogs on Windows In the Japanese version of gmsdraw_mfc for NT Visual Studio 7.0, labels on some MFC dialog box buttons were blank. The resource file for gmsdraw_mfc, "gmsdraw_mfc.rc," has been updated to specify Japanese fonts for MFC dialogs.

24 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

Core Functionality

Basic Functionality

(B9237) UserData for ObjectPropertyState expanded to 16k In previous versions of SL-GMS, UserData for the ObjectPropertyState was limited to 6k. This limit has been expanded to 16k.

CONVERSION UTILITIES

(B9357) "modopt" utility no longer fails when using "sections" option Previously, under some circumstances, the modopt utility failed when using the "sections" option, "-s[n]". This problem has been fixed.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 25 SL-GMS (v6.1b)

SL-GMS (v6.1b)

SL-GMSDraw

View Manager State Zoom/Pan Interaction State

(B9298) Continuous zooming now automatically terminates when limit is reached Continuous zooming is now automatically terminated when a zoom limit is reached.

Top-Level Editor States

(B9308) Problem with Cut/Paste working for first model only has been fixed Previously in SL-GMSDraw, cut/paste operations worked only for the first model opened— after utilizing the New option or the Open option of the File Pull-Down menu to access subsequent models, cut/paste would not work. This problem has been fixed. Additional information about this topic is provided in (B9345) Problem with Cut/Paste working across multiple models has been fixed on page 24.

Run Manager State

(B9277) Expose event handling problem fixed Previously in SL-GMS, it was possible to generate G_WIN_EXPOSE events which were not handled correctly. If an obscuring window was slowly dragged horizontally across an SL-GMS window, a vertical strip might not be redrawn. This problem has been fixed.

26 SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMSDraw

GMSDRAW Library Common GMSDRAW Dialog Models

(B9337) PostScript printing no longer fails when > 256 colors in "pscolordef.dat" Previously in SL-GMSDraw, if the "pscolordef.dat" file was expanded to contain more than 256 colors, a crash would occur when PostScript files were saved. This problem has been fixed.

(B9309) SL-GMSDraw "Print to Disk" option of "Print Dialog" no longer fails for PostScript printing In previous versions of SL-GMSDraw in 6.1, the Print to Disk option of the Print Dialog failed to create PostScript files. This problem has been fixed.

GMSDRAW_MFC (WINDOWS)

(B9236) "Free Memory Error" no longer occurs on Windows when copying/pasting former gradient filled objects Previously in SL-GMSDraw on Windows, models that contained objects that were formerly gradient filled could cause memory leaks or possible crashes. If an object had gradient fill applied, then was changed to a different fill type, cutting and pasting the object could cause SL-GMS to crash.

NOTE: To correct this error, users must run m1g then gm1 to repair objects that were formerly gradient filled.

(B9310) Closing Object Renamed Variables dialog no longer causes crash on Windows Previously in v6.1 on Windows, closing an empty Object Renamed Variables dialog could cause gmsdraw_mfc to crash. This problem has been fixed.

(B9303) Memory problem in colorDlgMgrState fixed In previous versions of 6.1x, repeated opening of the color dialog in gmsdraw_mfc could cause memory corruption. Additionally, use of the colorDlgMgrState in custom editors

Version 6.2 - 26 May 2006 SL-GMS Release Notes 27 SL-GMS (v6.1b)

could cause a crash in some situations. These problems have been fixed.

(B9311) Opening model files with long names/paths now works in Windows Explorer Previously in gmsdraw_mfc, if the path to %GMS_HOME% contained spaces and the model’s file name contained more than 8.3 characters, users would be unable to open the model via Windows Explorer. This problem has been fixed.

(B9314) Model Dynamic Properties dialog now displays current model's dynamics Previously in gmsdraw_mfc on Windows, if one model (with model dynamics) was invoked, then a second model with dynamics was invoked, the dynamics in the Model Dynamic Properties dialog would reflect the first model’s dynamics and not the second model’s. This problem has been fixed.

Core Functionality

Basic Functionality Filer Functions

(B9284) Query functions provided for filer callbacks The following functions have been added to the GMS API: int gmsQFilerFctn (filer, callback, callback_arg) int filer; int (**callback)(); void **callback_arg;

"filer" is one of the defined values G_FILER_M1, G_FILER_M2, and G_FILER_LOCFILE that determines which callback is being queried. "callback" is a pointer to a pointer to a function which, upon successful return, will contain the address of the callback function that was set, or NULL if none was set.

28 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

"callback_arg" is a pointer to a pointer which, upon successful return, will contain the address of the callback argument that was set when the callback function was set, or NULL if no argument was set. gmsQFilerFctn( ) returns 1 for success and 0 for failure. int gmsQFindFileFctn (funct, base_filter, extension_filter) char *(**funct)(); char **base_filter, **extension_filter;

"funct" is a pointer to a pointer to a function which, upon successful return, will contain the address of the callback function that was set, or NULL if none was set. "base_filter" and "extension_filter" are pointers to character strings which, upon successful return, will contain the base and extension filter strings that were set when the callback function was set. gmsQFindFileFctn( ) returns 1 for success and 0 for failure.

SL-KEY LICENSE PROTECTION

(B9340) Rainbow Sentinel drivers updated to version 5.41 The Rainbow Sentinel drivers for dongle installation have been updated from version 5.38 to version 5.41. Rainbow drivers are installed only for customers using the "Dongle" licensing option.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 29 SL-GMS (v6.1a)

SL-GMS (v6.1a)

SL-GMSDraw

(B9239) "Keep Aspect Ratio" now turned off by default in "View GML File" dialog Previously in SL-GMSDraw on Windows, the View GML File dialog had "Keep Aspect Ratio" turned on by default. This has been changed so that the dialog can be freely resized to any dimensions. Users wishing to restore the previous setting may add the following line to their .gmsdrawrc resource file: g_file_window keep_aspect_flag 1

(B9220) "Ungroup" of multiple groups on select list now allowed Previously in SL-GMSDraw, the Object.Ungroup option was available only if one group was selected. This has been changed so that "Ungroup" can be applied to one or more selected groups. When this is done, all groups on the select list will be ungrouped.

(B9185) Loading profiles for "m1javagui" no longer changes directory Previously in SL-GMS, if a profile for m1javagui was loaded from a different directory from the working directory, it changed directories (and loaded the profile in the new directory.) The profile can now be loaded from any directory without changing the current working directory.

NOTE: The m1javagui interface is available only with the SL-GMS J/Developer and SL-GMS J/Net products. For information about SL-GMS solutions for Java, refer to www.sl.com or contact SL Sales.

(E6244) Submodel name displays in "Object Renamed Variables" dialog In previous versions of SL-GMS, the Object Renamed Variables dialog did not display the name of the SubModel that contained the renamed variables being edited. This has been changed so that now the SubModel name displays in the Object Renamed Variables dialog.

30 SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMSDraw

(E9149) Index for fill pattern added to Default Graphic Properties (E9150) dialog The Default Graphic Properties dialog has been modified to allow users to specify an index value for fill patterns.

(E9197) Default Graphic Properties Dialog enhanced (E9198) (E9199) The Default Graphic Properties dialog has been enhanced to display more than 256 colors. At runtime, SL-GMSDraw queries the "colordef.dat" file and dynamically adjusts to display all color entries listed. Color indices that are skipped in the "colordef.dat" file are not displayed in the Default Graphic Properties dialog. For example, the expanded colordef.dat ("colordef.symb") file provided with SL-GMS lists color indices from 0 - 31 and 1000 - 2216. The color grid skips entries 32 through 999.

GMSDRAW_MFC (WINDOWS)

(B8518) Import image dialog changed from Listbox dialog to file selector dialog In SL-GMSDraw, the import image dialog has changed from a Listbox dialog to a file selector dialog.

(B9241) Files no longer saved in wrong directory using "Save As" operation Previously in SL-GMSDraw on Windows, when a "save-as" (File.Save As) option was called on a file that had not yet been given a name, no directory path was explicitly passed to the . This led to a difference in behavior between Windows NT and later versions of Windows. Windows NT would default to using the process current directory, whereas Windows XP and Windows 2000 would use one of several possibilities: • the current directory if .m1 files already exist in that directory,

• directories previously used by SL-GMSDraw to open or save,

• the user's "personal files" directory,

Version 6.2 - 26 May 2006 SL-GMS Release Notes 31 SL-GMS (v6.1a)

• the Desktop.

In order to achieve consistent behavior, SL-GMSDraw now explicitly specifies the process current directory when saving files that have not yet been named. Note that if the user browses in a different directory with the Save As dialog, or changes directory with any other tool within SL-GMS (such as theFile.Change Directory option), that directory will become the process current directory, and will be the default for further open or save operations.

(B9219) MFC dialogs now minimize to taskbar Previously in SL-GMS, some MFC dialogs in SL-GMSDraw either could not be iconized, or when iconized, would be placed in the work area rather than on the Windows task bar. All MFC dialogs now minimize to the task bar. gmsdraw_xm (MOTIF)

(B9201) Memory leakage when moving/scaling gradient objects on UNIX no longer occurs Previously in SL-GMSDraw on UNIX, when gradient filled objects were moved, a memory leak could occur. This problem has been fixed.

Edit Manager — Edit Property States

(E7352) Object Dynamic Properties on Windows enhanced The Object Dynamic Properties dialog on Windows has been enhanced as follows: Syntax Coloring If Coloring is checked, the dynamic expression being edited will be displayed with dynamic verbs colored green and variable names colored blue. Templates If Templates is checked, displays a tabbed dialog of "template" models. This means that dynamic properties may be copied from

32 SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMSDraw

example objects in those models and used in editing the current dynamic expression. If "Advanced" on the Templates panel is unchecked, the example object supplies an "unconditional" property (which executes when any variable changes); otherwise it supplies a partial expression that can be used in building more complex expressions. The edited expression can be Apply'ed or Reset as previously. Also the functions Hold, Release, and Clear function as previously. User Templates Users of gmsdraw_mfc may supply their own models to be used as templates in the dialog, and may specify the label to be used on the dialog tab. To add a model to the tabs in the dialog, place it in a directory named TEMPLATES under the application's current directory, under %GMS_HOME%\lib, etc. To specify the label of a template tab, edit the file %GMS_HOME%\lib\gmsl10n.txt and add an entry of the form: STRING_RESOURCE GMS_TEMPLATE_TAB_filename "label" where filename is the file name of the template model, and label is the text to appear in the label.

All Workstations Primitive Functions

(E1650) User-defined fill patterns now provided SL-GMS now allows users to define custom fill styles using "fstyle" entries in a platform-independent "gmsprefs.dat" file which is read by SL-GMS during runtime initialization. The syntax of an "fstyle" entry is as follows: fstyle.: { "-characters>", ... -lines> }

Version 6.2 - 26 May 2006 SL-GMS Release Notes 33 SL-GMS (v6.1a)

All elements of the first line must be on a single line: must be a positive integer which identifies the style being defined. SL-GMS predefines indices 1-11, which may be over-ridden or supplemented via "gmsprefs.dat". The largest specified (or 11) determines the range of fill styles available. Undefined or out-of-range indices result in the usage of "fstyle 1". specifies the width of the fill style's bitmap. If this value is not a multiple of 8, it will be "padded" to the next multiple of 8 with "background bits", since all current underlying systems use byte-alignment. Some systems may limit useful values, for example, Windows 95/98 use only the upper-left 8x8 portion of larger bitmaps. specifies the height of the fill style's bitmap. The "fstyle" keyword must precede which must in turn be followed by a colon (':'). Following the and fields there must be an opening brace ('{'). The body of the fill style's definition mimics the XPM format: one quoted string per line in which the space (' ') character denotes "background" and any other [printable, single-byte] character denotes "foreground". Truncated quoted strings are effectively space-padded. A closing brace ('}') ends the definition. If rows have not been defined, they are effectively space-padded. EXAMPLES The following entry duplicates SL-GMS fstyle #5 at index 12: fstyle.12: 16 16 { " X X ", " X X X X ", " X X X X ", " X X X X", " X X ", " X X X X ",

34 SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMSDraw

" X X X X ", " X X X X", " X X ", " X X X X ", " X X X X ", " X X X X", " X X ", " X X X X ", " X X X X ", " X X X X"} The following entry demonstrates some of the parser's flexibilities: fstyle.13: 38 18 { " ooo", " o o", " o o", " o o", " o o", " o o", " o o", "o o", "o o ", " o o ", " o o ", " o o ", " o o ", " o o ", " o o ", " ooo ",

Version 6.2 - 26 May 2006 SL-GMS Release Notes 35 SL-GMS (v6.1a)

"" }

Standard Control Objects

INDIVIDUAL CONTROLS Popup Menu Controls

(B9059) Applications no longer crash when invoking popup menu Previously in SL-GMS, some applications crashed when invoking a popup menu while pressing . This problem has been fixed. Text Edit Box Controls

(B9104) Users can now tab between Text Edit Box NCOs when model displayed in ActiveX control Previously in SL-GMS, the user was unable to tab between Text Edit Box NCOs when the model was being displayed in a GMS ActiveX control. This problem has been fixed.

(E9160) Symbol Factory Graphics from Software Toolbox, Inc. now included in C++/Developer SL Corporation has licensed the Symbol Factory process automation graphics from Software Toolbox, Inc. These graphics are now included in the standard deliverable for the C++/Developer product. They are distributed as SL-GMS .m1 models and are located under GMS_HOME in the "symbols\symbolfactory" subdirectory. These symbols may be accessed through the Available Palettes list in SL-GMSDraw. An enhancement has been added to SL-GMS which improves the performance of the Symbol Factory palettes. The path for an external submodel can be saved with a model's reference to the submodel instance. This path is automatically saved only for Symbol Factory submodels. The submodel instance path eliminates a search through the SL-GMS library search path to find each Symbol Factory model on the palette. Because of this,

36 SL-GMS Release Notes Version 6.2 - 26 May 2006 Standard Control Objects

an SL-GMS .g model which has an instance of a Symbol Factory submodel will contain a line which might look like this. inst Bulldozer 0 0 "gms_file:$(GMS_HOME)/symbols/symbolfactory/ Vehicles/" If the Bulldozer submodel .m1 file is moved to a directory in the SL-GMS library search path it will be found. However, if it is moved to a directory that is not on the SL-GMS search path, the submodel will not be found. Currently there is no access to the submodel instance path through any of the SL-GMS editors. This is planned as a future enhancement. An extended colordef.dat file has been created to support the additional colors used by the Symbol Factory models. On Windows platforms, if the Symbol Factory library is installed (default), the standard 32 color colordef.dat file is replaced with an extended colordef.dat file. On UNIX systems, the extended colordef.dat file is shipped with the product, but does not automatically replace the 32 color "colordef.dat" file. To properly display the Symbol Factory models, SL-GMS applications utilizing these models should use TrueColor or HighColor modes. PseudoColor modes (256 color mode on Windows) usually don't support as many colors as are used by the extended colordef.dat. To display all of the colors used in the Symbol Factory models on UNIX, the "colordef.symb" file must be renamed. For example: cd $GMS_HOME/lib mv colordef.dat colordef.dat32 cp colordef.sym colordef.dat In order to avoid conflict with customer-created colordef.dat entries, the extended colordef.dat file skips all color entries between 32 and 999. Further information is provided in (E9197) Default Graphic Properties Dialog enhanced on page 31.

(B9203) GMSDraw now includes the symbols/symbolfactory directory as standard PALETTES location The Object Palette List for SL-GMSDraw has been expanded to include the GMS_HOME/symbols/symbolfactory/PALETTES directory by default. Palette models in that directory are now

Version 6.2 - 26 May 2006 SL-GMS Release Notes 37 SL-GMS (v6.1a)

automatically available in the Available Palettes list in SL-GMSDraw.

Core Functionality

Basic Functionality Color Handling

(B9159) SL-GMS now supports additional colors on UNIX In previous versions of SL-GMS, UNIX systems were limited to 256 color entries in the "colordef.dat" table. This limit has been expanded to 32,767 colors. An enhanced colordef.dat file containing 1200+ colors is now shipped on UNIX systems, named lib/colordef.symb. Users may utilize the colordef.dat system by renaming it "lib/colordef.dat".

NOTE: Some UNIX systems do not support more than 256 colors. SL recommends that customers without truecolor visual support use the standard 32-color colordef.dat provided as default on UNIX.

Linking / Shared Libraries

(B9218) DLL library gmssrc.dll now complete In some previous versions of SL-GMS, the DLL library gmssrc.dll was incomplete. Functions included in the libgmswin.lib library were missing from the DLL. This problem has been fixed.

SL-KEY LICENSE PROTECTION

(B9121) NIC licensing no longer returns invalid 01000001 PIN In previous versions of SL-GMS, the PIN used for licensing was sometimes incorrectly reported at 010000001 if SL-GMS failed to read the NIC address. In addition, networking protocols for NetBEUI and/or IPX/SPX were required. NIC licensing has now been expanded on Windows platforms to no longer require

38 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

either protocol and to more directly query network cards installed on users’ computers. Under certain conditions, if customers have multiple network interface cards installed, their SL-GMS PIN may change if the Windows operating system changes the hardware ordering of the NICs. Customers with multiple network cards working in a mission-critical environment should contact SL Technical Support to discuss alternate licensing options.

LANGUAGE INTERFACES Java

(B6898) "myproject_jb" has been obsoleted The demo application myproject_jb has been removed from the standard distribution. Customers who are interested in SL's development tools for Java can find information about SL-GMS J/Developer and SL-GMS J/Net for Java Products on our web site at www.sl.com, or by contacting SL Corporation. C++

(B9128) SL-GMS supports Microsoft Visual Studio 7.0 on Windows Customers who wish to build applications using Visual C++ 7.0 should request the VS7 distribution. It is necessary to set an environment variable APPVER=4.0 when compiling on Windows NT with VC7. Further information is provided in (B9243) Changes required to support Microsoft Visual C++ 7.0 on MFC applications on page 39.

(B9243) Changes required to support Microsoft Visual C++ 7.0 on MFC applications In order to support Visual Studio 7.0 on all Windows platforms, including Windows NT, the include file "stdafx.h" used in each MFC application had to be modified to define _WIN32_WINNT as follows: #define _WIN32_WINNT 0x0400

Version 6.2 - 26 May 2006 SL-GMS Release Notes 39 SL-GMS (v6.1a)

This forces applications to use the NT style MFC dialogs at runtime. Users who do not need to support Windows NT, and who wish to use the MFC dialogs native to Windows XP or Windows 2000, can remove this definition from the stdafx.h file in their own MFC applications.

NOTE: Customers compiling applications on Windows NT using Visual Studio 7.0 need to define the system variable APPVER prior to compiling. This can be done in a DOS command prompt by typing

set APPVER=4.0

or may be set as a system variable in the Control Panel.

(B9234) SL-GMS provides separate deliverables for Microsoft Visual C++ 6.0 and Visual Studio 7.0 SL-GMS now offers separate deliverables for supporting Microsoft Visual C++ 6.0 and Visual Studio 7.0. In order to support applications compiled with VC++ 7.0, the mfc70.dll and msvcr70.dll libraries from Microsoft are included in the InstallShield distribution and may be installed in users’ system directory if needed.

CONVERSION UTILITIES

(B9242) "modopt" utility enhanced to dynamically allocate space for model names In previous versions of SL-GMS, the modopt utility statically allocated memory for model names. Increasing the MAX_MODELNAME_LEN field to accommodate large model names caused the executable to grow in size on some platforms. The modopt utility has been enhanced to dynamically allocate space for model names. This reduces the executable size and the memory demands for running modopt. Further information is provided in (E9151) "modopt" utility can now handle model names up to 1024 characters on page 44.

40 SL-GMS Release Notes Version 6.2 - 26 May 2006 On-line Examples

On-line Examples

SL-ATMS Basic Functionality

(B8696) SL-GMS Mapping Library function enhanced to allow dynamic shape points for connectors With the added enhancement of copy_con_template, SL-GMS Mapping applications can now safely change the shape points of connectors at run-time. Further information about this function is provided in Appendix A of the SL-GMS Mapping Application Users Guide.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 41 SL-GMS (v6.1a)

42 SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMSDraw

SL-GMS (v6.0q)

SL-GMSDraw

GMSDRAW_MFC (WINDOWS) MFC Framework — File Operations

(B9173) The "-i" option now correctly handles spaces in path name In previous versions of SL-GMS, the -i command line option (to add directories to the library path) failed for directory names containing spaces, even when those names were enclosed in double quotes. This problem has been fixed. Path name elements containing spaces are now handled correctly, provided the path is enclosed by double quotes, as shown below. draw2 -i "C:\Program Files\SL Corp\work\basic1"

(B9172) SL-GMS models can now be opened in gmsdraw_mfc by selecting the models in Windows Explorer In version 6.0p of SL-GMS, users were unable to open models in gmsdraw_mfc by double-clicking the model in Windows Explorer. This problem has been fixed.

Standard Control Objects

ALL CONTROLS

(B9171) X resize clipping problem introduced in v6.0p fixed In version 6.0p of SL-GMS on X platforms only, a clipping problem occurred wherein if a double-buffered window displaying a model containing Controls was resized to be larger, the model would scale to full window size but would clip to the extent of the earlier window size. This problem has been fixed.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 43 SL-GMS (v6.0q)

Control Resizing Behavior

(B9133) SL-GMS demo models adjusted for Control Object resize issue SL-GMS demo models have been adjusted for the Controls resize issue. Several models in the SL-GMS example suite were affected by the change in Controls resize behavior (see (B9081) Changes to Control Object resize behavior improves model creation but may affect existing models on page 46). Models in various demos have been adjusted to increase the size of "Close" buttons for cosmetic purposes.

CONVERSION UTILITIES

(E9151) "modopt" utility can now handle model names up to 1024 characters In previous versions of SL-GMS, the modopt utility could handle filenames (including path) of up to 64 characters. This limit has been increased to 1024 characters.

44 SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMSDraw

SL-GMS (v6.0p)

SL-GMSDraw

(B9099) State message no longer updates SL-GMSDraw View In a custom editor application based on SL-GMSDraw, it is possible to have a second GMS View besides the work area View. Previously in SL-GMS, however, if the State message "view_wc_extent" was sent to the second View, it updated the work area View. This problem has been fixed.

Edit Manager — Object Create States Bitmap Create State

(B9098) SL_GMSDraw now accepts ".jpe" as JPEG image import extension Previously in SL-GMSDraw, the extension ".jpe" as a JPEG image import extension was not accepted. This problem has been fixed.

(B9085) SL-GMSDraw Exported images no longer include overlapping windows when view saved Previously in SL-GMSDraw, when images were exported, windows that overlapped the model were included in the image. This can be avoided by not checking the Capture Select List option in the Export Bitmap File/Export JPEG File dialog.

Edit Manager — Special Interface States Palette List Select State

(B9068) gmsdraw_mfc accommodates Palette names longer than 26 characters Previously in gmsdraw_mfc, Palettes having names longer than 26 characters caused the Editor to crash. This problem has been fixed.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 45 SL-GMS (v6.0p)

Standard Control Objects

(B9081) Changes to Control Object resize behavior improves model creation but may affect existing models Changes to SL-GMS versions 6.0m, 6.0n, and 6.0p have resulted in more predictable behavior for Controls, but will cause differences in appearance for some customers with models created in version 6.0k or earlier. Affected Models If models were created with versions 6.0k1 or earlier and use Controls, these models may need to be modified for use in 6.0p or later. If Controls are used in models and are not resized, there should be no difference in appearance between 6.0k and 6.0p. If the Controls are resized— either because the model extent is greater than 100 x 5 WC, or by using win_size( ) methods in either the model or the application code— the Control objects may be drawn differently in 6.0p. Customers who notice a visible difference in their models containing Controls should contact SL Technical Support for analysis and assistance. A utility is available to convert models where the model size is greater than 100 x 75. Other models may need to be adjusted manually. To help simplify the creation of models containing Controls, the Gms Control Resize Flag option has been removed from the User Preferences dialog in the SL-GMSDraw Editor. By default, this flag has always been ON, but users were able to change this setting. Further information is provided in (B9086) Resize flag option removed from "User Preferences" dialog on page 47. For further information about the use of Controls, contact SL Technical Support.

(B9111) Setting NCO visibility to OFF no longer fails if window unmapped Previously in SL-GMS on Motif platforms, setting an NCO’s visibility to OFF failed if it was currently invisible because an ancestor was being unmapped. This problem has been fixed.

46 SL-GMS Release Notes Version 6.2 - 26 May 2006 Standard Control Objects

(B9086) Resize flag option removed from "User Preferences" dialog Previously in SL-GMSDraw, it was possible to set the Editor so that Controls resized in a constrained manner, according to type. This behavior was intended for application windows, particularly those displaying dialog models, but can cause problems when used during an Editor session. Accordingly, the GMS Control Resize Flag option has been removed from the User Preferences dialog.

GMSDEMO ATMS

(B9014) Map selection modes have been enhanced The map selection modes MAP_RECT_PRESS_DRAG_RELEASE_MODE and MAP_RECT_PRESS_PRESS_MODE have been enhanced to have the following behaviors. The behavior should be the same whether the mode is changed programmatically or by mode button interaction. MAP_RECT_PRESS_DRAG_RELEASE_MODE This is the preferred mode. In this mode the scroll bars will be enabled and reflect the panned position of the view. Condition: No zoom rectangle point has been selected yet. Operator action and result: 1. A mode button is clicked (other than a mode button). The current selection mode will be cancelled and the new mode will be activated. 2. Anything else is clicked (except a mode button). The current selection mode will continue. Condition: The first zoom rectangle point has been selected in the view by clicking and holding the mouse button. Operator action and result: The mouse is dragged toward the edge of the view. When the cursor gets close to the edge of the view, the view will start to automatically pan. The automatic pan speed is related to the

Version 6.2 - 26 May 2006 SL-GMS Release Notes 47 SL-GMS (v6.0p)

distance of the cursor from the edge of the view. The further the cursor is outside the view, the faster it will pan. The first zoom rectangle point will be retained even if it pans off the view. The current selection mode will continue. 3. The mouse is dragged outside the view and released while outside the view. The two edges of the extent rectangle that connect to the release point will be constrained (clipped) to the view to determine the second zoom rectangle point. The view will be zoomed to the zoom rectangle and the current selection mode will continue. 4. The mouse is released within the view. The second point will be set to the release point, the view will be zoomed to the zoom rectangle and the current selection mode will continue. MAP_RECT_PRESS_PRESS_MODE In this mode the scroll bars will be enabled. Condition: No zoom rectangle point has been selected yet. Operator action and result: 1. A mode button is clicked (other than a mode button). The current selection mode will be cancelled and the new mode will be activated. 2. Anything outside of the view is clicked (except a mode button). The current selection mode will continue. 3. A scroll bar is used to pan the view. The view will pan and the current selection mode will continue. Condition: The first zoom rectangle point has been selected in the view by clicking and releasing the mouse button. Operator action and result: 1. A mode button is clicked (other than a selection mode). The current selection mode will be cancelled and the new mode will be activated. 2. Anything outside of the view is clicked (except a mode button or scroll bar). The first point will be retained and the current selection mode will continue. While the cursor is outside the view, the zoom rectangle will not update.

48 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

3. A scroll bar is used to pan the view. The first point will be retained, the view will be panned, the zoom rectangle will update (but to the panned last cursor position, not the current cursor position) and the current selection mode will continue. 4. A point in the view is clicked (and released). The second zoom rectangle point is set, the view will zoom to the zoom rectangle and the current selection mode will continue.

Core Functionality

Basic Functionality Date & Time Functions

(B9105) SL-GMS applications no longer crash when date is out of range Previously in SL-GMS, applications crashed if system dates were set outside the range recognized by C time( ). (Prior to 01 January 1970 or later than 18 January 2038.) This problem has been fixed.

GML

(B9094) "gm1" utility no longer fails under certain circumstances Previously in SL-GMS, under certain circumstances, running the gm1 utility failed to convert .g files into .m1 files. This problem has been fixed. Bitmap Handling

(B9101) Loading time reduced for models with numerous files An enhancement has been made to the way in which GMS locates files at runtime that can improve performance in some applications. When an SL-GMS model needs a file such as a submodel or image, and the file is not found in the current directory, it looks in a list of directories called the Library Path (libpath). If there are many files (such as a model that includes

Version 6.2 - 26 May 2006 SL-GMS Release Notes 49 SL-GMS (v6.0p)

many image files) and/or there are numerous directories in the libpath, this process can result in long model loading times. An application can now specify that the files and directories on the libpath be cached in memory. This requires some additional time at startup (on the order of 1-3 seconds) but can result in much shorter overall model loading time if the model requires many files. libpath caching is off by default and is enabled by a new API:

int gmsLibPathCacheEnable (int flag) Flag =3D 1: enable caching Flag =3D 0: disable caching

Returns previous value of flag.

CONVERSION UTILITIES

(E9083) Significant improvement when zooming into transparent fill objects on Windows Previously in SL-GMS on Windows, performance slowed down dramatically when windows with transparent fill was zoomed into. Fill transparency has been reimplemented so that performance has been significantly improved.

(B9100) Function added that disables all SL-GMS image import/export plugins A new function, gmsImageDisableDefaultPlugins( ), has been added that will disable all of SL-GMS’s image import/export plugins. gmsImageDisableDefaultPlugins() void gmsImageDisableDefaultPlugins()

DESCRIPTION SL-GMS registers its own image import/export "plugins" during initialization (via gmsSetup( ) or gmsInitialize( )). By executing gmsImageDisableDefaultPlugins( ) before this initialization is done, a program can prevent SL-GMS from loading its plugins.

50 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

The program may then register other plugin(s) via gmsImageAddType( ). Note that this does not disable the . or .bmp image types on UNIX and Windows, respectively. SL-GMS does not handle these image types using plugins.

(B9071) Memory leakage using Option Menu Controls no longer occurs Previously in SL-GMS, if an SL-GMS Option Menu Control dynamically changed the menu it displayed, a memory leak occurred. This problem has been fixed.

(B9090) Non-resizable dialog window size in SL-GMSDraw no longer saved in resource file SL-GMSDraw saves the position and size of windows opened during execution, including its own main window. This is intended for dialog windows, so that when they are reopened they have the same size and position they had in the previous session. If "Save Resources" is implemented, this saved information is written to the GMSDraw resource file (.gmsdrawrc) and used when the Editor is next invoked; this is intended to allow the user to save the "workspace" or window arrangement that was in the last editing session. However, this saved information can cause problems with non-resizable dialogs. If the dialog model is modified between executions of the Editor in a way that adds some new objects and increases the dialog’s size, but there is a saved size in the resource file, the new objects in the dialog will not be visible and the user will be unable to resize the dialog in order to see them. Accordingly, SL-GMSDraw has been modified so that the size of non-resizable dialog windows will not be saved in resources (although the position will be), and if such information is present in a resource file, it will be ignored.

(E9070) Quadrant mask in ".tiles" files no longer used The quadrant mask, which was appended to the end of the extent data in .tiles files, is no longer used. The mask is ignored, if present in the file, and is always computed at run-time. The quadrant mask is not written to the .tiles file by the mapping library.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 51 SL-GMS (v6.0p)

(E9082) Use of extent_rectangle submodel for icon sizing The use of an extent object for controlling icon sizing has been enhanced. Now, any top-level part may be identified as the extent object for an icon, either by naming the part "extent_rectangle" or by including a submodel instance of the submodel "extent_rectangle.m1." The extent object is made invisible before the icon is displayed.

(E9084) New method added to MapTopState (B9069) A new method has been added to the MapTopState. This method, "move_connector," allows the application to modify one or both endpoints of an existing connector. Previously in SL-GMS, the only way to do this was to delete the connector and create a new one. The "move_connector" method takes a pointer to a DataCon structure. This is the same structure that is used for the method "add_connector." The DataCon structure should be completely filled-in before calling the method. For example: // add a connector that connects a node to a // point on the map DataCon connector; connector.class_id = 100; connector.obj_id = 1; connector.node1_type = DP_NODE; connector.node1_dp.class_id = 200; connector.node1_dp.obj_id = 25; connector.node2_type = POINT_NODE; connector.node2_point.d1 = 75.0; connector.node2_point.d2 = 44.0; STMSG_P("my_map_top_state", "add_connector", &connector); // move the second endpoint of the connector to a // different point on the map

52 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

connector.class_id = 100; connector.obj_id = 1; connector.node1_type = DP_NODE; connector.node1_dp.class_id = 200; connector.node1_dp.obj_id = 25; connector.node2_type = POINT_NODE; connector.node2_point.d1 = 82.001; connector.node2_point.d2 = 49.4253; STMSG_P("my_map_top_state", "move_connector", &connector);

Version 6.2 - 26 May 2006 SL-GMS Release Notes 53 SL-GMS (v6.0n)

SL-GMS (v6.0n)

SL-GMSDraw

(B8928) SL-GMSDraw no longer crashes when gradient fill applied to certain objects Previously in SL-GMSDraw, a crash occurred when a user attempted to apply gradient fill to an object that cannot be filled (submodel, text, or marker). This problem has been fixed.

(B8925) "User Preferences" dialog modified to avoid text clipping Previously in SL-GMS on some platforms, the text in the User Preferences dialog was clipped. This problem has been fixed.

NOTE: Because the dialog’s size has changed, users who have stored dialog size and position information in the Editor resource file ".gmsdrawrc" must update this file. To update the file, the following lines must be removed:

user_preferences_window_si_wm1 win_size user_preferences_window_si_wm1 view_wc_extent

After removing these lines, users may restart SL-GMSDraw, then resave their resources by selecting the Save Resources option of the Options Pull-Down Menu.

GMSDRAW_MFC (WINDOWS)

(B9060) Rectangles with 0 radius can no longer be created Previously in gmsdraw_mfc, it was possible, under certain conditions, for a user to create rectangles of height or width 0 that were not resizable. If the user created a rectangle with snap-to-grid enabled, and the height or width specified was less than one grid division, the second point would snap to the same position as that of the first point, and a rectangle with 0 radius would be created. Subsequently, the rectangle could not be resized. This problem has been eliminated by disallowing the creation of such an object.

54 SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMSDraw

MINIDRAW_MFC (WINDOWS)

(B8856) Compile warnings in minidraw_mfc no longer occur Previously in SL-GMS on some compilers, when the work/minidraw example was built, the following messages resulted: warning C4715: 'post_modelget_fctn' warning C4715: 'post_modelmerge_fctn'

This problem has been fixed.

(B8947) Popup menu error no longer occurs Previously in SL-GMS, if a popup menu was displayed in SL-GMSDraw's editplane (using a custom editor application) with an empty model, the following error message occurred: Control Manage: can't find GMS_WDESC

This problem has been fixed.

SMSNEW — GMSDRAW: Top-Level Editor States

Edit Manager — Object Create States

(B9052) Values returned by API functions now reflect changes Previously in SL-GMSDraw, if the endpoints of a Pie or Sector object were modified, and subsequently a call was made to the API functions gmsQStartAngle( ) or gmsQArcLength( ) (e.g., in a user-written callback function), the values returned by the function did not reflect the change(s) made to the object in the Editor. This problem has been fixed.

(B9012) Duplicate text in Text/Text object no longer occurs In SL-GMSDraw when Text or a Text object is created, the Editor uses a temporary text object to hold the entered text. Previously in SL-GMS, under some circumstances, the creation process could be improperly terminated, and this temporary object could be left in the model, giving the appearance of a duplicate text object. This problem has been fixed.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 55 SL-GMS (v6.0n)

Bitmap Create State

(E8718) Plugin functions for image import/export provided Plugin functions for JPEG import and export are now available. Further information is provided in (E8719) and (E8536) JPEG support in SL-GMSDraw provided on page 68. Please contact SL Technical Support for details.

Edit Manager — Edit Property States Renamed Str Edit State

(E8998) Intercept function added to allow viewing and editing of renamed variables in custom editor applications An intercept function has been added to the SL-GMS Enhanced SMS library that allows a custom editor developer to inspect and modify the renamed variables on a submodel instance before they are displayed in the Object Renamed Variables dialog. The intercept is described below: PRE_DISPLAY_RENSTR static char *pre_display_renstr_fctn (id object, char *renstr) The PRE_DISPLAY_RENSTR intercept function is called in the ObjectPropertyState after an object is queried for its renamed string, but before that string is saved for display. The "object" input parameter is a pointer to the object and the "renstr" input parameter is a pointer to the renamed string. The intercept function can modify the string as it wishes; the modified string will be used if and when the Object Renamed Variables dialog is invoked for the object. Note that the function must return the original pointer. This function will be called whenever the user changes the currently-selected object (since all object properties are collected at that time), rather than when the Object Renamed Variables dialog is invoked. The format of the renamed string is as follows: variable1renamed1variable2renamed2

56 SL-GMS Release Notes Version 6.2 - 26 May 2006 Standard Control Objects

This would display as: variable1 :: renamed1 variable2 :: renamed2

Standard Control Objects

INDIVIDUAL CONTROLS Option Menu Controls (B9058) X_QueryTree error no longer occurs in invoking modal dialog Previously in SL-GMS on X platforms, the changes made for B8413 (see page 81) introduced the possibility of modal dialog invocation failure and BadWindow X errors. This problem has been fixed. Scale Controls

(B8827) Resize problem with Scale Controls on Motif fixed Previously in SL-GMS running on Motif, Scale Controls did not resize correctly if the window containing them was resized. This problem has been fixed.

Active-X Component Examples GMSRUN ActiveX (gmsrun_ax)

(B8994) Controls in double-buffered models in ActiveX controls redraw correctly Previously in SL-GMS, double-buffered models in ActiveX controls did not redraw correctly if they contained Controls. This problem has been fixed.

(B8955) Map Controls on Motif no longer generate spurious win-leave events Previously in SL-GMS, certain Controls used in mapping applications exhibited "flashing" behavior. If a Control Object was used in a node object within a mapping application, a spurious win-leave event was generated whenever the mouse

Version 6.2 - 26 May 2006 SL-GMS Release Notes 57 SL-GMS (v6.0n)

cursor moved over the control, causing the control to be redrawn. This problem has been fixed.

(B8939) Controls in map nodes display correctly when highlighting Previously in SL-GMS, if an icon in a mapping application contained Controls, and the icon changed highlighting states, the controls sometimes displayed in an incorrect size and/or location. If the controls resize flag was on, they were immediately redrawn correctly but there was a visible flash. This problem has been fixed.

(B8940) Controls in map nodes set variables correctly Previously in SL-GMS, when an icon in a mapping application contained Controls with a set_variable renamed variable, the controls failed to set the variable when it was activated. This problem has been fixed.

SL-ATMS Basic Functionality

(B8965) Mapping library enhanced to better handle DataObjects The SL-GMS Mapping Library has been enhanced in two ways: the smsmap function get_dataobjects_by_extent( ) has been modified; and the get_dataobjects_instances_by_extent( ) function has been added. The get_dataobjects_by_extent( ) function has been enhanced to allow DataCon DataObjects, in addition to DataPoints, as valid objects. The list returned by this function may contain DataPoint or DataCon DataObjects. A DataPoint is considered to be within the extent if its x,y values are within the extent provided. A DataCon is considered to be within the extent if, and only if, both of its DataPoints are within the extent. The get_dataobjects_instances_by_extent( ) function has been added. get_dataobject_instances_by_extent pointer to MapQuery NULL

This function gets all DataObjects of a given DataObject class id that have graphical instances on the map indicated and are

58 SL-GMS Release Notes Version 6.2 - 26 May 2006 Standard Control Objects

within the requested extent. The MapQuery data structure is used to input the map name, extent and DataObject class id (using a MapExtentQuery data structure), and to return the list of DataObjects within the extent for the given map. The list returned may contain DataPoint or DataCon DataObjects. A DataPoint is considered to be within the extent if its x,y values are within the extent provided. A DataCon is considered to be within the extent if, and only if, both of its DataPoints are within the extent and all of its shape points are within the extent. Possible values • A pointer to any valid MapQuery data structure

• Required fields in the MapExtentQuery structure - class_id - map_name - extent Restrictions The mqInputData( ) function must be used to set up the map name, extent, and DataObject class id, to pass with the "get_dataobject_instances_by_extent" message. The input data is a MapExtentQuery data structure. The mqGetResultCount( ) function must be used to retrieve the number of DataObjects returned. The mqGetResult( ) function must be used to retrieve the DataObjects from the result of the "get_dataobject_instances_by_extent" query. The mqFreeResults( ) function must be used to free the results of the "get_dataobject_instances_by_extent" query.

(B8963) Redraw problem caused by multiple MapPlaneState invocations fixed Previously in SL-GMS, a redraw problem occurred when users invoked separate MapPlaneStates for each MapState. The redraw problem exhibited itself on all but the first mapplane. This problem has been fixed. Invoking multiple mapplanes allows each mapplane to use a different BASEMAPCONFIG file and share it among its map states.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 59 SL-GMS (v6.0n)

(B8985) Problem with restoring focus after popup menu action fixed Previously in SL-GMS in the atms on-line example, restoring focus after popup menu actions required two mouse clicks. This problem has been fixed. Further information is provided in (B8305) Workaround provided for Motif popup menu G_LOC_RELEASE problem on page 71.

(B8966) Problem with ZOOMRECT "rubber band" effect fixed A user can activate the MapPickRectState by choosing an interaction mode such as ZOOMRECT. The "rubber band" effect becomes visible when the user picks the first point on the map. Previously in SL-GMS mapping applications, the "rubber band" effect remained visible when the user did not click the second point on the map and instead decided to change the interaction mode. This could be done, for instance, by selecting the ZOOMIN_CONT mode or MOVENODE mode. Changing the interaction mode terminates the ZOOMRECT mode, which in turn should have turned off the "rubber band" effect. This problem has been fixed.

(B9015) New option added to modopt deletes duplicate lines A new option, -l (alpha "L"), has been added to the modopt utility. This option deletes all duplicate lines from a model.

(B8960) Use of Controls enabled in SMS mapping applications Previously in SL-GMS, it was not possible to use Controls with SMS mapping applications. This problem has been fixed.

Basic Functionality

(E8941) Default library path enhanced to include lib/SUBMODS The directory "$GMS_HOME/lib/SUBMODS" (%GMS_HOME%\lib\SUBMODS) has been added to the default SL-GMS Library Path. GMS will now look for model files in the directory when it loads a submodel.

60 SL-GMS Release Notes Version 6.2 - 26 May 2006 Standard Control Objects

Filer Functions

(B1531) "gmsMSave( )" enables saving of files on different drives Previously in SL-GMS, utilizing gmsMSave( ) failed to save files on a different drive. This problem has been fixed. Low-Level Functions Bitmaps/Rasterfiles

(B9000) New API query function provided A new workstation query function, gmsQObjClassName( ), which returns an SL-GMS object’s ClassName, is now available. The returned string should be treated as "read only" by the application. Sample usage is as follows:

int are_objects_same_class (gms_obj1, gms_obj2, verbose_flag) id gms_obj1; id gms_obj2; int verbose_flag; { char *gms_class_str1 =

gmsQObjClassName(gms_obj1), *gms_class_str2 =

gmsQObjClassName(gms_obj2); int ret = 0;

if (gms_class_str1 == gms_class_str2) { ret=1; /*pointer comparison is sufficient for this usage, since gmsObjClassName() returns a pointer into the Class */ } if (verbose_flag) {

printf("are_objects_same_class() returning %d for:\n", ret);

Version 6.2 - 26 May 2006 SL-GMS Release Notes 61 SL-GMS (v6.0n)

printf("gms_obj1=%#x of class %s\n", gms_obj1, gms_class_str1 ? gms_class_str1 : "NULL"); printf("gms_obj2=%#x of class %s\n", gms_obj2, gms_class_str2 ? gms_class_str2 : "NULL"); } return ret; }

All Workstations Color Handling

(B8419) New API function provided A new workstation query function, gmsQWaVisualType( ), which returns a platform-independent characterization of the workstation’s color mode, is now available. The integer return value will be one of the following four constants that have been added to "gmscodes.h": G_VISUAL_MONO G_VISUAL_TABLE G_VISUAL_TRUECOLOR G_VISUAL_CGA Sample usage has been added to $GMS_HOME/demo/colordef/colordef_top.c, which formerly set the model’s double-buffer flag and forced frequent redraws for Windows platforms only. The new version also double-buffers and redraws on X Window platforms when the query function returns G_VISUAL_TRUECOLOR: if (gmsQWsVisualType(g_workst) == G_VISUAL_TRUECOLOR) { gmsVis(model, 3); }

62 SL-GMS Release Notes Version 6.2 - 26 May 2006 Standard Control Objects

INTERNATIONALIZATION

(B9057) Item in gmsdraw_xm Japanese Point Pull-Down Menu no longer in English Previously in SL-GMSDraw on UNIX Japanese platforms, the Show Reference Point option of the Point Pull-Down Menu displayed in English and not Japanese. This problem has been fixed.

X Workstations

(B8891) Resize problem with Controls in mapping applications fixed Previously in SL-GMS, if a Control Object was used in an icon in a mapping application, it did not always resize correctly after zooming. This problem has been fixed.

PORTS — OS DEPENDENCIES

(B9042) Directories display correctly in dialog Previously in SL-DRAW2 on Linux, directories did not display correctly in the DIRECTORIES window. This problem has been fixed. Compaq Tru64 UNIX

(B8920) SL-GMSDraw no longer core dumps when "View Options" applied Previously in SL-GMSDraw on Compaq Tru64 UNIX, a core dump occurred when the View Options option of the View Pull- Down Menu was applied. This problem has been fixed.

CONVERSION UTILITIES

(E8981) wmf/emf conversion utility "emf2g" added to SL-GMS C++ Developer package The emf2g conversion utility is now provided as part of the standard distribution on Windows platforms. This utility allows users to convert Windows-format metafiles (wmf) and enhanced-format metafiles (emf) images to SL-GMS models.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 63 SL-GMS (v6.0n)

Models are converted into ".g" format while preserving the integrity and attributes of the images. emf2g can be called with any of the following command-line options: emf2g filename [-p] [-f] [-c] [-d] [-w] -p Set the model positioning option, where N can be one of the following: t, T => Top model mode => (0, 0) at lower left corner (default) s, S => Submodel mode => (0, 0) at center Example: emf2g myfile.emf -ps -f Fit the image to the size of the SL-GMS Model with the following options: x, X => Fit the width of the image to the width of the model. y, Y => Fit the height of the image to the height of the model. b, B => Best fit. Fit whichever dimension of the image has the closest ratio to the x or y dimensions of the model. This is the default. Example: emf2g myfile.emf -fx -c Set the color mode for conversion, with the following option: a, A => if color does not exist, add it. b, B => Find best match (default) Example: emf2g myfile.emf -ca

NOTE: If no colordef.dat file exists, the -cb (default) option will use the 16 default SL-GMS colors for matching.

-d Define the "Model World Coordinates Dimensions" into which image should be drawn. The default dimension is 72 x 54. Example: emf2g myfile.emf -d 100 75

64 SL-GMS Release Notes Version 6.2 - 26 May 2006 On-line Examples

-w Specify the screen's horizontal resolution in pixels. The default resolution is 1024. Example: emf2g myfile.emf -w 2048

NOTE: This option is necessary because SL-GMS needs ewidth in pixels. The "Reference Device Context" for the metafile is usually a screen DC, but it may also be a printer DC. If a printer DC is used, it is possible to map to device coordinates, assuming that 100 WC maps to the width of the screen. The width of the screen defaults to 1024, but it can be set by the user with the -w option if necessary.

On-line Examples

(B9041) "colordef" on-line example no longer flashes on Motif Previously in SL-GMS in the colordef on-line example, the background color "flashed" if a TrueColor Visual was used. The behavior occurred on Motif platforms only. This problem has been fixed by changes made to "colordef_top.c," using the gmsQWsVisualType( ) API to check for G_VISUAL_TRUECOLOR and conditionally force a redraw of the model.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 65 SL-GMS (v6.0m)

SL-GMS (v6.0m)

SL-GMSDraw

Top-Level Editor States Import State

(B8046) "Available Images" dialog expanded to show filename extensions The Available Images dialog (File.Import.Image) now shows the filename extension when listing bitmap images for import. In previous versions of SL-GMS, if image files existed with the same basename but different extensions, it was impossible to tell which image was selected. Now, the full filename is displayed in the list. For example, the following images can be listed in the Available Images dialog: my_image.bmp my_image.jpg my_image. Further information is provided in (E8536) JPEG support in SL-GMSDraw provided on page 68 and (E5828) JPEG images support by SL-GMS provided on page 72.

GMSDRAW_MFC (WINDOWS)

(B8840) Objects with 0 radius can no longer be created Previously in gmsdraw_mfc, it was possible, under certain conditions, for a user to create certain objects of radius 0 that were not resizable. If the user created a Circle, Sector, or Pie object with snap-to-grid enabled, and the radius specified was less than one grid division, the second point would snap to the same position as that of the first, and an object with 0 radius would be created. Subsequently, this object could not be resized. This problem has been eliminated by disallowing the creation of such objects if the second point is not different from the first.

66 SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMSDraw

Further information about this topic is provided in the SL-GMS PAL document under B6748.

(E8842) Align State enhanced to allow greater control over spacing The Align State has been enhanced to recognize two new arguments that allow greater control over the "space evenly" operation. These arguments are "space_evenly_hor" and "space_evenly_ver," and they constrain the operation to either the horizontal or vertical direction. For example, to invoke the "space evenly horizontal" operation, the user would send the message "change" to the EditManager state with the argument "align 0 space_evenly_hor," that is, STMSG("editmgr", "change", "align 0 space_evenly_hor"); MFC Framework — File Operations

(E1739) gmsdraw_mfc allows import of files from Windows Explorer using "drag and drop" SL-GMSDraw on Windows now has the ability to drag files of certain types from Explorer and drop them onto a running instance of the Editor, or onto a shortcut icon. The supported file types include .m1 and .m2 (model) files, .bmp, and .jpg (image) files. Dropping a model file is the equivalent of a File Open operation: if there is already a model open and it has been modified, the user will be prompted to save it and then the new model will be opened. Dropping an image file is the equivalent of Import Bitmap. If a model file is dragged from the Explorer window using the right mouse button, a menu will pop up when it is dropped, giving the user the choice of opening or merging the model.

View Manager State

(B8777) Zoom reset no longer resets view incorrectly Previously in SL-GMSDraw, if the initial view was something other than 100 x 75, the View Reset function reset the view to this value, rather than to that of the initial view. This problem has been fixed.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 67 SL-GMS (v6.0m)

SMSNEW — GMSDRAW: Top-Level Editor States Export Java State

(E8537) Option to export Java added to SL-GMSDraw SL-GMSDraw has been enhanced to enable users to directly export Java by selecting the Export.Java option of the File Pull-Down Menu. This option is available only to users who have purchased the J/Developer or J/Network packages. Use of this new feature is documented in the manuals for these products. Further information about J/Developer and J/Network is provided on SL’s website at www.sl.com. Import State

(E8536) JPEG support in SL-GMSDraw provided (E8719) SL-GMSDraw has been enhanced to enable import and export of JPEG images. The Export option of the File Pull-Down Menu contains the new item JPEG Image, that will invoke a browser dialog that allows selection of the output file and folder. It also provides a slider for setting JPEG quality. The Import option of the File Pull-Down Menu has been renamed Image and the dialog it invokes is now titled Available Images. This dialog will list both bitmap and JPEG files found in the library path directories. Finally, the Windows version of SL-GMSDraw has been enhanced to allow drag-and-drop operations on bitmap and JPEG files.

SMSNEW — GMSDRAW: Edit Plane State Window Resize Functionality

(B8132) Resizing model while in crop mode no longer a problem on Windows Previously in SL-GMSDraw running in crop mode, a problem occurred when a new model window was created after the previous window had been resized. The view of the new window would have an incorrect size, and thus the grid in the

68 SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMSDraw

new window appeared to have incorrect spacing. This problem has been fixed. View Manager State

(E8741) View Presets toolbar in gmsdraw_mfc provided on Windows A View Presets toolbar has been provided in gmsdraw_mfc on Windows. This toolbar presents the same functionality as the View Presets contained in the View Options dialog, but with easier accessibility.

(E8533) Pixel registration support in SL-GMSDraw provided An additional option, Initial W.C. to Pixel Scale (located in the User Preferences dialog), has been provided in SL-GMSDraw. When this option is set to a positive non-zero value, that value will be used as the scaling factor between World Coordinates and pixels for the initial size of subsequently-created Editor windows (i.e., 1 World Coordinate in the editing window will be the given number of pixels on the screen). When used in conjunction with the Size Window to Model option, it will allow users to map exactly between World Coordinates and pixels. Example Suppose the value 8 is entered as the Initial W.C. to Pixel Scale and applied. Subsequently-created Editor windows with the default editing area of 72 x 54 SL-GMS World Coordinates will have an initial screen area of 576 (72 * 8) by 432 (54 * 8) pixels. Suppose, with the Size Window to Mode option enabled, a 40 x 30 SL-GMS Model is loaded. The resultant editing window will have a displayed area of 320 (40 * 8) by 240 (30 * 8) pixels on the screen. Note that the Initial W.C. to Pixel Scale applies only to the initial size of subsequently-created windows. If the window is resized, or the view zoomed in or out, this initial condition no longer holds true. Note that for gmsdraw_mfc, having a maximized Editor window frame takes precedence over this option.

NOTE: For m1java users: if the -K option is used with m1java in conjunction with this option, an exact match can be achieved between the screen size in pixels and the original

Version 6.2 - 26 May 2006 SL-GMS Release Notes 69 SL-GMS (v6.0m)

SL-GMS model and the resultant display from generated Java code. The -K option is equivalent to the Initial W.C. to Pixel Scale multiplied by 10. Thus, for m1java using -K80, you would use an Initial W.C. to Pixel Scale of 8 to get the same size displays on the screen for a given model. This is useful when dealing with bitmaps or other pixel-based features.

GMSDRAW: Edit Manager/Control States

Edit Manager — Object Create States Bitmap Create State

(E8548) Name of bitmap in model displays The Object Information dialog in SL-GMSDraw now displays the name of the file from which a particular bitmap was loaded. Sector Create State

(B8900) Problem with line erasure in sectors fixed When a sector object is created in SL-GMSDraw, the Editor draws a temporary dotted line between the first and second points, in order to assist the user in placing the third point. Previously, under certain circumstances, the Editor failed to erase this line when the object was created. This problem has been fixed. Edit Selection State (Interaction State)

(B8887) Line on top of filled object pickable Previously in SL-GMSDraw, when a line on top of a filled object extended outside that object, it was not pickable over the object’s filled portion. This has been fixed so that now objects that are on top of a filled object are given pick priority over the filled area when they are within the pick aperture.

70 SL-GMS Release Notes Version 6.2 - 26 May 2006 Standard Control Objects

Standard Control Objects

INDIVIDUAL CONTROLS Popup Menu Controls

(B8861) New G_QUICK_RELEASE modifier added to G_LOC_RELEASE event A new modifier, G_QUICK_RELEASE, has been added to G_LOC_RELEASE events. It is set if the G_LOC_RELEASE occurs within the same [system-dependent] interval used to set the G_DOUBLE_CLICK modifier on G_LOC_PRESS events. Sample usage is demonstrated in $GMS_HOME/demo/smstest/customstate.c. On Windows, the time limit for a double-click is controlled by the user via the Control Panel. On X systems, the time limit defaults to 500 milliseconds but can be changed before application startup via the X Resource "multiClickTime" (used by many environments by default but that users can add to their environment using "xrdb -merge").

(B8305) Workaround provided for Motif popup menu G_LOC_RELEASE problem This Motif-only problem occurs because popup menus are posted in response to a G_LOC_PRESS occurring in the SL-GMS X window, but the user releases the mouse in the X window of a menu button. A workaround has been provided by "synthesizing" MotionNotify and ButtonRelease X events for the SL-GMS X window from the menu button’s callback. Further information is provided in (B8985) Problem with restoring focus after popup menu action fixed on page 60.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 71 SL-GMS (v6.0m)

Basic Functionality Bitmaps/Rasterfiles

(B8828) Raster text disappears when its pixel height is 0 Previously in SL-GMS, raster text size increased when its pixel height became 0. This behavior occurred because of zooming out or scaling down. This problem has been fixed.

(E5828) JPEG images support by SL-GMS provided JPEG images can now be used inside SL-GMS Models. The extensions ".jpg," ".jpeg," and ".jpe" are recognized for JPEG image files. SL-GMS will search for the image file with a bitmap or JPEG extension from which to load a bitmap object. The extension search order in each directory of the SL-GMS lib paths is ".xwd" of ".bmp" (depending on the platform), ".jpg," ".jpeg," ".jpe," and then the obsolete ".i." A view may also be saved to a JPEG file. gmsVuRasterImageSave()

int gmsVuRasterImageSave (view, workst, pimage_info) idG_VIEW view; id workst; t_pimage_params pimage_info;

DESCRIPTION The gmsVuRasterImageSave( ) function is used to write the pixels in a view to an image file. The type of file is specified by pimage_info. The filename and image_type members of pimage_info must contain valid data. The filename member is a pointer to a string containing the image’s filename, including the extension. The image_type member should be one of G_IMAGE_TYPE_XWD, G_IMAGE_TYPE_BMP, or G_IMAGE_TYPE_JPEG. Currently, the quality member is used only for G_IMAGE_TYPE_JPEG images. This value ranges from 0 to 100, where 100 is the best quality and the least compression. A quality value of 100 is recommended for G_IMAGE_TYPE_BMP or G_IMAGE_TYPE_XWD images.

72 SL-GMS Release Notes Version 6.2 - 26 May 2006 Standard Control Objects

LIMITATIONS Currently G_IMAGE_TYPE_XWD is supported only on the X Window platform, and G_IMAGE_TYPE_BMP is supported only on the Microsoft Windows platform. Further information about JPEG support in SL-GMSDraw is provided in (E8536) JPEG support in SL-GMSDraw provided on page 68.

(B8829) Bitmaps visible at certain zoom levels and window sizes on 64-bit platforms Previously in SL-GMS on 64-bit platforms, bitmap images did not display correctly at some zoom levels or window sizes. This problem has been fixed.

All Workstations

(E8535) Grid elements in SL-GMSDraw no longer drawn too closely together Previously in SL-GMSDraw, at certain zoom factors or View settings, grid elements would draw very closely together. This took excessive time to draw and resulted in a grid whose appearance was not useful. This problem has been fixed. The grid is now drawn in such a way that the density of the grid elements does not exceed a maximum value, regardless of the grid specification or the actual view. This feature, called "grid decluttering," may be adjusted or disabled via the following new SL-GMS API:

int gmsGridDeclutterFlag(flag) int flag;

int gmsQGridDeclutterFlag()

The default value of this flag is 1. To turn off grid decluttering, use the first function set the flag to 0. Use the second function to query the current value of the flag.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 73 SL-GMS (v6.0m)

int gmsGridPixelThreshold(threshold) int threshold;

int gmsQGridPixelThreshold()

The default value of the threshold is 2, that is also the minimum allowed value. Use the first function to set a new value. Use the second function to query the current value.

int gmsGridDeclutterFactor(factor) double factor;

double gmsQGridDeclutterFactor()

The default value of the factor is 2.0. and the value must be greater than 1.0. Use the first function to set a new value. Use the second function to query the current value. These values may also be set via State Messages sent to the GridManager state, as follows:

Message Argument Type

gmsgridDeclutterFlag G_INTEGER

gmsGridPixelThreshold G_INTEGER

gmsGridDeclutterFactor G_DOUBLE

PostScript Workstations

(B8848) Multiple users able to print directly to PostScript printer Previously in SL-GMS, multiple users were unable to print directly to a PostScript printer. This problem has been fixed.

INTERNATIONALIZATION

(B5659) Changes made to SL-GMS "setlocale( )" usage Previously, SL-GMS used the locale meta-category LC_ALL when setting the program’s locale. Now only the LC_CTYPE category is

74 SL-GMS Release Notes Version 6.2 - 26 May 2006 Standard Control Objects

set from the environment, providing improved behavior for locales in which the environment’s LC_NUMERIC category would set the decimal separator to ",". To support comma-separated floating point representations, applications should use their own setlocale(LC_NUMERIC, "") calls after SL-GMS initialization and, on X platforms, display the first SL-GMS window on each screen. The locale can be "pushed and popped" if subsequent SL-GMS processing of period-separated text files (e.g., unmodified ".dat" files) is required.

PORTS — OS DEPENDENCIES Compaq Tru64 v5.1

(B8849) Compaq Tru64 v5.1 supported Compaq Tru64 v5.1 is now supported. IBM RS/6000 AIX v4.3

(E8703) IBM RS/6000 AIX v4.3 supported IBM RS/6000 AIX v4.3 now supported. Solaris 7/Solaris 8

(B8716) Solaris 7 and Solaris 8 supported Solaris7 and Solaris 8 are now supported.

SL-KEY LICENSE PROTECTION

(B8291) Dongle drivers can be installed from InstallShield when %GMS_HOME% contains spaces For customers using the Rainbow Sentinel Dongles, SL-GMS will now correctly run the "dongle_setup" program even when there are spaces in the path name of %GMS_HOME%.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 75 SL-GMS (v6.0m)

INSTALLATION UTILITIES InstallShield Utility

(B8774) "gmsrun_ax.ocx" and "gmsrun_ax_setup.bat" in run-time installation The SL-GMS ActiveX components necessary for run-time ActiveX applications have been moved from the Demo Installation to the Run-time Installation. Windows users choosing the "Run-time" installation option will now get the bin/gmsrun_ax.ocx, bin/gmsrun_ax_setup.bat and the bin/gmsrun_ax_cache.exe files. Registration Utility

(B8819) Command line option for "getpin.exe" added for Windows The "getpin.exe" program now takes a command-line argument to determine how the program will query the system. The possible arguments are "nic" and "dongle" (not case sensitive). By default, "getpin.exe" looks in the Windows registry for the definition of the SL-GMS licensing option. This modification enables users to distribute the "getpin.exe" program in advance of the complete SL-GMS package, thus allowing them to call SL Corporation for license KEYS prior to installation.

(B8820) OEM customization of "gmsreg.exe" program possible On Windows platforms, the "gmsreg.exe" program can now be customized for OEM use if special registration procedures are required. By default, the "gmsreg.exe" program prompts users to call SL Corporation to obtain a KEY. OEM customers can now customize this message by creating a text file named "gmsreg.dat" in the %GMS_HOME%/bin directory. Registration messages can be approximately four lines of 37 characters each.

76 SL-GMS Release Notes Version 6.2 - 26 May 2006 Standard Control Objects

SL-GMS (v6.0k)

Standard Control Objects

INDIVIDUAL CONTROLS Text Edit Box Controls

(B8701) Text Edit Boxes no longer execute whenever mouse pointer moves out of control Previously on Motif systems running SL-GMS versions 6.0g1 and later, a Text Edit Box Control executed its actions whenever the mouse pointer was moved out of it. This problem has been fixed. The Control will now execute its actions (conditionally) only when the pointer is moved outside the containing workstation window. This is consistent regardless of the window manager focus policy ("focus" or "explicit"). Option Menu Controls

(B8554) Option Menu font_size and font_index appear in cascading menus and drop-down lists Previously in SL-GMS on Motif systems, if an Option Menu Control had its font_size or font_index variable assigned to a constant, the specified font appeared only in the Control's label, not in its drop-down list. Also, if an Option Menu Control was configured to include cascading menus, the specified font did not appear in the cascading menus. These problems have been fixed.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 77 SL-GMS (v6.0k)

On-line Examples

SL-ATMS Basic Functionality

(B8579) Transparent fill works correctly on double-buffered objects on Windows 95/98 platforms Previously in SL-GMS on Windows 95/98 platforms, when workstation or transparent filled objects were double buffered, transparent fill did not work. This problem has been fixed. Zoom/Pan Controls

(B8561) MapZoomfactorLimit an absolute limit Previously in SL-GMS, when a mapping application window was zoomed in and then closed, the MapZoomFactorLimit was reset, but the previous zoom operation was maintained. This meant that upon reopening the same window, it was possible to continue zooming past the zoom factor limit. This problem has been fixed.

Model Layer State Layer Handling

(B8555) New option available in mapping applications to optimize the loading of tiles and layers A new option is available for mapping applications to optimize the loading of tiles and layers. By default, when a mapping application loads a map, it goes through a step of validating the tile and layer names. As an optimization to speed up map loading, this step can now be disabled, either by adding an entry to the BASEMAPCONFIG file or by sending a State message to the Map Plane State before the map is loaded. Note that it is not possible to validate tiles or layers without the other; they must either both be validated or both not validated.

78 SL-GMS Release Notes Version 6.2 - 26 May 2006 On-line Examples

The BASEMAPCONFIG entry that controls tile name and layer name validation is "ValidateNames." To disable validation, use this entry: ValidateNames=0 To enable it (the default) use: ValidateNames=1

In applications with a Map Plane State (which is the usual case in mapping applications), tile and layer name validation can also be controlled by sending the message "validate_names" with a value of 0 or 1 to the Map Plane State when it is invoked. Following is an example of invoking a Map Plane state with validation disabled: STINVOKE(MAPPLANE_STATENAME, "MapPlaneState", backplane_statename, "map_directory", mvpath.map_path, "basemapconfig_flag", "0", "base_map_wc_extent", "-100 -100 100 100", "base_map_width_miles", "1000", "xy_factors", "0.01 0.01", "validate_names", "0", NULL);

Validation can also be disabled after the State is invoked by sending it the "validate_names" message, but if the application wants to set the value before any maps are loaded, it should be done when the state is invoked. Applications with no Map Plane State can send the "validate_names" message to the Map State. However, it is preferable to set the value in the Map Plane State if it is present. Note that if the value is set in the Map Plane State, each Map State will inherit it. The current value of the validate_names flag can be retrieved by sending the message "get_validate_names" to the Map Plane State (or Map State).

(B8582) map_top_initialize( ) function prototyped in "smsmap.h" The function map_top_initialize( ) is now prototyped in "smsmap.h." It is no longer necessary to prototype this function in individual applications.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 79 SL-GMS (v6.0k)

(B8580) Problem with resizing cropped workstations containing maps and toolbars fixed Previously in SL-GMS, when a cropped workstation containing a map and a toolbar was enlarged, the map was redrawn incorrectly on the first resize. This problem has been fixed.

Memory Leakage

(B8556) Memory leakage problem in SMSMAP library fixed (B8645) Memory leakage in the SMSMAP library has been fixed. (B8559) (B8557)

(B8558) Memory leakage problem in smsnew code fixed (B8575) Previously in SL-GMS, memory leakage in smsnew code caused by extent lists were not freed. This problem has been fixed.

(B8560) Memory leakage problem in SMSXM library fixed (B8585) Memory leakage in the SMSXM library has been fixed.

(B8707) Memory leakage problem in SMS library fixed Memory leakage in the SMS library has been fixed.

Basic Functionality

(B8586) StructDef renamed gmsStructDef to avoid naming conflicts The SL-GMS data structure defined in gms_smsnew.h named StructDef has been renamed to gmsStructDef to avoid naming conflicts. Filer Functions

(B8574) Crash no longer occurs when saving model name with more than 87 characters Previously in SL-GMS, when a model name was more than 87 bytes long, a crash sometimes occurred when saving that model over an existing model. This problem has been fixed.

80 SL-GMS Release Notes Version 6.2 - 26 May 2006 On-line Examples

All Workstations Window Handling

(B8651) Changing keep_aspect_mode to 0 in active window no longer a problem Previously in SL-GMS, it was not possible to change the keep_aspect_mode to 0 for a window that was already active. This problem has been fixed.

(B8413) Modality no longer disabled while option menus pulled down Previously in SL-GMS, modality was disabled while option menus were pulled down. This problem has been fixed.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 81 SL-GMS (v6.0j)

SL-GMS (v6.0j)

SL-GMSDraw

GMSDRAW_MFC (WINDOWS)

MFC Framework View Operations

(B8486) Double buffering in gmsdraw_mfc on Windows no longer causes redraw problems Previously in gmsdraw_mfc, redraw problems associated with the select extent occurred when double buffering was utilized. When an object was selected, the view would clear and only the selected area would redraw. This problem has been fixed. Font Handling

(E8114) Bitmap and vector fonts supported for Windows Previously in SL-GMS, Windows bitmap and vector fonts were not allowed. Windows bitmap and vector fonts available through font enumeration may now be used by SL-GMS programs by adding them as entries in the "fontdef.dat" file. GMSDRAW_MFC (WINDOWS) Japanese

(B8409) Label on Japanese TRect tab no longer clipped on Windows In a previous version of SL-GMS in gmsdraw_mfc, the TRect tab in the Default Graphic Properties dialog had its Japanese label clipped. This problem has been fixed.

82 SL-GMS Release Notes Version 6.2 - 26 May 2006 Standard Control Objects gmsdraw_xm (MOTIF)

Standard Control Objects

INDIVIDUAL CONTROLS Check Button Controls

(B8428) Internal error for "c1btn_chk3" no longer occurs Previously in SL-GMS, when the Control Object "c1btn_chk3," was instanced, the following error message occurred: (ERROR: Internal error K1BTN_CHECK3(20)). This problem has been fixed. Text Edit Box Controls

(B8411) Single-line Text Edit Box Control problem fixed Previously in SL-GMS running on UNIX platforms, the behavior of the single-line Text Edit Box Control was incorrect. The Control will now execute unconditionally when it has focus and the Return key is pressed. Text List Box Controls

(B8405) Width of Text List Box Control no longer changes Previously in SL-GMS running on UNIX platforms, if an application removed items from a Text List Box Control (by changing the display variable associated with the Control), under certain circumstances the width of the list box changed. This problem has been fixed.

All Workstations Primitive Drawing Functions

(E8425) Gradient fill attribute added for filled objects A gradient fill attribute has been added for filled objects. Using this new attribute, a filled object will be shaded from the start

Version 6.2 - 26 May 2006 SL-GMS Release Notes 83 SL-GMS (v6.0j)

color to the end color. The finter attribute must be set to G_FINTER_GRADIENT (4) before the gradient fill attribute will be used. The fcolor attribute is used as the start color for the gradient. The gradient fill attribute is non-modal (cannot be set on the exemplar). The new gradient fill API documentation below provides additional details. A GML change command (for .g models) has been added to set the gradient fill attribute. name fgradient int real x y x y real int [real int [real int [real int]]] An example model using the fgradient attribute follows. mtran0 vis 1 detect 1 gradcircle: model fcolor 4 fstyle 1 finter 4 fdir 0 fpercent 100 ecolor 7 estyle 1 ewidth 1 fcir2 31.7394 29.3478 36.7427 26.5304 . fgradient 2 5.742 31.7394 29.3478 31.7394 29.3478 66 19 34 1 endm This model sets an elliptic gradient (the two foci are equal so it is circular) with two color intervals. For an acyclic linear gradient, change the fgradient command as follows: . fgradient 1 0 25.9974 29.3478 37.4814 29.3478 66 19 34 1 For a cyclic linear gradient, change the fgradient command as follows:

84 SL-GMS Release Notes Version 6.2 - 26 May 2006 Standard Control Objects

. fgradient 0 0 25.9974 29.3478 31.7394 29.3478 66 19 34 1 Three API functions have been added to give an application access to the gradient fill attribute. There are two set functions and one query function.

int gmsFGradient(obj, points) id obj; id LinkRefpoints;

int gmsLFGradient(objlist, points) id LinkRefobjlist; id LinkRefpoints;

These functions will set the gradient attribute for filled objects. gmsFGradient( ) sets the gradient attribute on a single object while gmsLFGradient( ) works on a list of objects. The gradient attribute passed to these functions is a list of points. This list must contain a minimum of four points (or be NULL) and can contain up to seven points. A NULL list is used to remove the gradient attribute from an object. The first point in the gradient attribute point list contains the gradient style and height. The height information is used only for the elliptic style of gradient. The second and third points are explained under each gradient style below. The fourth through seventh points define gradient color intervals.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 85 SL-GMS (v6.0j)

The table below summarizes the information contained in the point list.

Point Description Contains

style and point 1 gradient style height

start point or focus point 2 x and y 1

point 3 end point or focus 2 x and y

percent and point 4 color interval 1 color

percent and [point 5] color interval 2 color

percent and [point 6] color interval 3 color

percent and [point 7] color interval 4 color

NOTE: The height, x and y values are in internal coordinates. The percent values are percentages multiplied by 100. Therefore, 90.4 percent would be 9040.

The gradient color intervals allow more than one color change to occur in the gradient. There can be up to four color intervals. Each interval takes up a percentage of the total gradient distance (the distance from the start to the end point or the elliptic height). The gradient shades from fcolor to color 1 then from color 1 to color 2 and so on up to color 4 in the distances defined by each percent. All of the interval percents should add up to 10000 (100 percent). The fcolor attribute defines the start color and the color in the last interval is the end color. Three styles of gradient fill are available, as described below. G_FGRADIENT_STYLE_LINEAR_CYCLIC This style is defined by a start and end point. The start and end points are in the second and third points of the gradient attribute List. The object is filled starting with the fcolor at the start point and shades to the end

86 SL-GMS Release Notes Version 6.2 - 26 May 2006 Standard Control Objects

color at the end point. Past the start and end points the color shading will cycle back and forth between the start and end colors. G_FGRADIENT_STYLE_LINEAR_ACYCLIC This style, like the linear cyclic style, is defined by a start and end point. The start and end points are in the second and third points of the gradient attribute List. This style also fills the object starting with the fcolor at the start point and shades to the end color at the end point. However, the colors past the start and end points will be the start and end colors, respectively (the color shading does not cycle). G_FGRADIENT_STYLE_ELLIPTIC This style is defined by a height and two foci points. The second and third points in the gradient attribute list are the two foci (focus 1 and focus 2) of an ellipse. The object will be filled starting with the fcolor at the line that connects the two foci and shade to the end color at the perpendicular distance, height, away from the line. This forms a shaded ellipse around the foci. This style does not cycle the colors (the area past the ellipse defined by the height will be filled with the end color). If the two foci points are equal, the gradient will be circular and the height parameter is equivalent to the circle's radius. idLinkRef gmsQFGradient(obj) id obj;

The gmsQFGradient( ) function returns the gradient attribute point list from a filled object. A NULL pointer will be returned if there is no gradient attribute set on the object. The returned LinkRef should be freed with refKilAll( ). CURRENT LIMITATIONS • Percent fill does not work with the gradient fill.

• Gradient fill is not available for dynamics.

• Gradient attribute is not a modal attribute.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 87 SL-GMS (v6.0j)

(B8431) Gradient fill support for filled objects in gmsdraw_mfc provided Gradient fill support has been added for filled objects in gmsdraw_mfc. The Fill Interior attribute on the Fill tab of the Default Graphic Properties dialog has a new Gradient option. A Gradient Dialog button has also been added. This dialog allows the gradient fill attribute to be set on a filled object. Even though this new dialog is opened from the Default Graphic Properties dialog, the gradient attribute is not a modal attribute. It affects only the currently selected object(s) (similar to the Object Text dialog opened by the Replace text button). The new Gradient Fill Properties dialog has four sections that will be briefly described here in order from left to right, top to bottom. The first section contains buttons to set the gradient style. The second section contains preset buttons. The third section contains advanced information with a check box to hide or show this section. This advanced information is the start and end point for linear style gradients. For an elliptic style gradient, this information is the foci and height for the ellipse. The last section allows the user to set up to four color intervals for the gradient. The preset buttons are a quick way of setting the most common gradient configurations. Clicking on one of these buttons will use the current color intervals in the dialog and set the advanced information. This will then be applied to the currently selected object(s) (i.e., a preset button will cause an apply without clicking the Apply button). The object's gradient will then look similar to the picture on the button that was clicked. Note that the elliptic presets all create circular gradients. Also the height (in the advanced information) will be set to be equal to or half of the length of the smallest edge of the extent. This produces a gradient circle with a radius that does not go outside the extent of the object. Event Handling

(B8127) Problem with gmsEvent( ) initialization for pooled events fixed The gmsEvent( ) function returns an event id that was either calloc()ed (if the user specifies a destroyCB) or retrieved from the memory pool SL-GMS uses for events. The initial

88 SL-GMS Release Notes Version 6.2 - 26 May 2006 Standard Control Objects

implementation failed to "zero out" memory retrieved from the pool. This problem has been fixed. Further information is provided in (E2403) Functions added to generate simulated events on page 202.

X Workstations Primitive Drawing Functions

(B8422) bcolor on XIM platforms now works correctly Previously in SL-GMS, the bcolor button did not function correctly. Regardless of color index entered, it displayed as white. This problem has been fixed. HP-UX XIM Workstations

(B8412) SL-DRAW and SL-DRAW2 accept Kanji input without a window manager Previously in SL-DRAW and SL-DRAW2, users were unable to input Kanji if there was no window manager. This problem has been fixed. Solaris XIM Platforms

(B8194) Window width problem on Solaris XIM platforms fixed in some cases When SL-GMS creates a window for a model with text entry control and keep_aspect_mode set to 1 or 2, the window manager is informed of the desired aspect ratio for the top-level window. A problem in the Solaris operating system has been identified wherein Sun resizes the window to accommodate an XIM status area without generating a ConfigureNotify event, sometimes resulting in additional window width required by the aspect ratio. This causes a white area to be displayed on the right-hand edge of the window. If the user manually resizes the window, SL-GMS receives a ConfigureNotify event and the additional width will disappear. SL-GMS has been modified (for Solaris XIM only) to defer as long as possible to the initial aspect ratio setting, which succeeds in

Version 6.2 - 26 May 2006 SL-GMS Release Notes 89 SL-GMS (v6.0j)

avoiding the problem in most situations. However, in some cases this problem may still occur. Further information about B8194 is provided in the SL-GMS PAL document.

PORTS — OS DEPENDENCIES DEC-ALPHA OSF

(B7672) Shared SL-GMS libraries on Digital UNIX provided SL-GMS libraries for Digital Unix platforms formerly were provided as ".a" archives. They are now provided as ".so" shared libraries, and the "gms_init" script adjusts the user's LD_LIBRARY_PATH to include $GMS_HOME/lib.

INSTALLATION UTILITIES InstallShield Utility

(B8499) gms_install and test/keytest handle 16 digits The SL-GMS UNIX installation script, "gms_install" now accepts both 8 and 16 character KEYS. Sixteen character KEYS are necessary to run SL's Java products, J/Developer and J/Network.

LANGUAGE INTERFACES C++

(B8424) Prototype of gmsQWorkst( ) in gms_cpp.h In the previous version of gms_cpp.h for C++ users, the prototype of gmsQWorkst( ) was missing. It was defined only in gms.h, which caused a compile time error. Now, gms_cpp.h contains this prototype.

90 SL-GMS Release Notes Version 6.2 - 26 May 2006 Standard Control Objects

SL-GMS (v6.0i)

Standard Control Objects

INDIVIDUAL CONTROLS Text Edit Box Controls

(B8393) Grey bar below Text List Boxes no longer appears Previously in SL-GMS on Sun5 and Sun5 XIM, a horizontal grey bar sometimes appeared below Text List Box Controls not having a horizontal scroll bar. This problem has been fixed. Option Menu Controls

(B8394) Memory leakage in Option Menu Controls no longer occurs In SL-GMS version 6.0h, a memory leak was introduced in Option Menu Controls. This problem has been fixed.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 91 SL-GMS (v6.0h)

SL-GMS (v6.0h)

SL-GMSDraw

(B8382) Prompt string no longer truncated at 40 characters Previously in SL-GMSDraw, if prompts were greater than 40 characters, the string truncated at 40 characters. This problem has been fixed.

GMSDRAW_MFC (WINDOWS) MFC Framework — File Operations

(B8273) Error dialog no longer appears if pre_modelsave_fctn returns 0 Previously in SL-GMS, an error dialog appeared when pre_modelsave_fctn returned 0. This problem has been fixed so that the meaning of the return value from the pre_modelsave intercept function now allows the user application to cancel the model save operation without raising an error. The new behavior is as follows: If the return value from the intercept function is 1, the EditPlane State will attempt to save the Model; if the save fails, it will raise an error. If the return value is 0 or -1, the EditPlane State will not attempt to save the model. If the return value is 0, it will raise an error; if the value is -1, it will not. GMSDRAW_MFC (WINDOWS) Japanese

(B8092) Output from SL-GMSDraw localized using user-defined mapping Previously in SL-GMSDraw, output was not localized. Output from SL-GMSDraw is now localized using user-defined mapping. Output from SL-GMSDraw now goes through a localization (l10n) function. This function looks for a string in the localization file, using a key. If the key is found, the localized string is used, otherwise the original default string is used. The localization file is named "gmsl10n.txt" and is found in the GMS_HOME/lib directory.

92 SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMSDraw

The format of the file is a set of STRING_RESOURCE key, string pairs grouped together by SECTION names, as defined in the "Internationalization — localization files" section of the SL-GMS Function Reference Manual. SL-GMSDraw uses the SECTION named "Default" (except on Japanese Windows NT, where it uses the SECTION Japanese). A user can thus change the SECTION to be used for localization by editing the localization file, renaming the SECTION they wish to use to "Default," and changing the previous Default section to some other name. Application developers can use the same mechanism used in SL-GMSDraw to localize the output of their own applications. This is done by first initializing the localization mechanism, then using it to localize any output in their applications. Initialization is achieved by calling the gmsL10nInit( ) function, using the file_name and section_name, after initializing SL-GMS. Following is an example of this in the userfctns_initialize( ) function of gmsdraw:

int userfctns_initialize() { extern int gmsL10nInit();

#ifdef WINNT_JAPANESE #define SECTION_NAME "Japanese" #else #define SECTION_NAME "Default" #endif /* init localization (l10n) mapping */ gmsL10nInit("gmsl10n.txt", SECTION_NAME);

return 1; }

Localization of strings is performed by calling the gmsL10nStr( ) function.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 93 SL-GMS (v6.0h)

t_addr gmsL10nStr (key_str, default_str) char *key_str; char *default_str;

This will return the localization (l10n) string associated with the key_str, in the SECTION defined by calling gmsL10nInit( ). If this cannot be found, the default string is returned. For example: Before printf("This is a message string"); After printf(gmsL10nStr ("MyApp_L10N_STR_00001","This is a message string")); Further information is provided in (B8098) Behavior of PALETTES and PALETTES_japanese directories clarified on page 129.

MINIDRAW_MFC (WINDOWS)

(E8296) Secondary resource file support for custom editors provided Support for secondary resource files for custom editors has been added to SL-GMS. The minidraw_mfc example has been updated to demonstrate the use of minidraw_mfc.rc2. Users creating custom editors should refer to the SL-GMSDraw Customization Guide for further information. gmsdraw_xm (MOTIF) gmsdraw_xm (MOTIF) Japanese

(B8346) Properties listed correctly in Default Fill Properties dialog on UNIX Japanese platforms Previously in gmsdraw_xm on HP-UX and Sun Solaris Japanese platforms, the fill property names in the Default Graphic Properties dialog were listed incorrectly. This problem has been fixed.

94 SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMSDraw

Edit Manager — Edit Property States Object Property State

(E6615) New text constraint attribute in SL-GMSDraw provided Support for the text rectangle text constraint attribute has been added to SL-GMSDraw. The text constraint default value can be set for text rectangles from the new TRect tab in the Default Graphic Properties dialog. The text constraint attribute is also displayed in the Object Information dialog. Further information is provided in (E1830) Text constraint attribute added to text rectangles on page 106.

NOTE: The text constraint "Fit Width" option is not implemented on UNIX platforms. Because of this, the "Fit Width" radio button in the Default Graphic Properties TRect tab is disabled for all SL-GMSDraw Editors, except the MFC version.

Run Manager State (Preview)

(B7534) View no longer resets when dynamic preview stopped Previously in SL-GMSDraw, the view reset to 100 x 75 when Stop was clicked in the Preview Options dialog. This problem has been fixed.

Model State (ModelState) General Model Handling

(B8345) Menu resource files can be loaded from any directory in SL-GMS library path Menu resource files (".mnu") can now be loaded from any directory in the SL-GMS library path. The search order for menu resource files is as follows: 1. Current directory 2. SL-GMS library path

Version 6.2 - 26 May 2006 SL-GMS Release Notes 95 SL-GMS (v6.0h)

3. GMS_HOME/lib 4. User's home directory Previously in SL-GMS, directories were searched for menu resource files in the following order: 1. Current directory 2. User's home directory 3. GMS_HOME/lib As a result of changes made to the search path for menu resource files, the instructions for invoking SL-GMSDraw in Japanese on UNIX XIM versions should be amended. Further information is provided in (B8346) Properties listed correctly in Default Fill Properties dialog on UNIX Japanese platforms on page 94.

Enhanced SMS

Model State (ModelState)

(B8368) Method added to ModelState The ModelState has a new method, get_name_to_widget, that is available through the WinModState. The ModelState documentation in the SL-GMS State Class Library Reference Manual provides a complete description of this method.

(E8358) Applications exit when quit message is posted Previously in SL-GMS, applications did not exit when users posted a quit message. This problem has been fixed.

WinModState — Resizing Functionality

(B8210) Problems with keep aspect mode for X Windows with menubars SMS-XM applications that contain menubars and also set the winmodstate's "keep_aspect_flag" to 1 do not properly restore to original size following a user request (via a window manager) to maximize the window.

96 SL-GMS Release Notes Version 6.2 - 26 May 2006 Standard Control Objects

To support such applications, a new winmodstate attribute has been introduced — "keep_aspect_mode" — that needs to be set to 2 to enable correct maximize/restore behavior for windows with menubars. Setting "keep_aspect_mode" to 0 or 1 will have the same effect as setting "keep_aspect_flag", which remains supported for backward compatibility. The need for a new "mode" of keep_aspect handling is due to the fact that the desired SL-GMS behavior for maintaining a given aspect ratio is to maintain that ratio for the SL-GMS drawing area, whereas the aspect ratio the window manager needs to be told to maintain is for the top-level window that includes the menubar. With "keep_aspect_mode" or "keep_aspect_flag" set to 1, the aspect ratio given to the window manager is based on the window's current size, so moves and manual resizes work but maximize will not restore. With "keep_aspect_mode" set to 2, the aspect ratio given to the window manager is based on the aspect ratio the window should have when maximized, so maximize/restore works correctly. However, using this mode introduces some unavoidable side effects in response to user moves and slight resizes.

Standard Control Objects

ALL CONTROLS

(B8272) Function added for use with SL-GMS Controls A new function, gmsQControlInfo( ), is available for use with SL-GMS Controls. This function can provide information about a Control Object, as well as data that can be used to directly manipulate a Control Object. The SL-GMS Control Objects Reference Manual provides a complete description of this function.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 97 SL-GMS (v6.0h)

INDIVIDUAL CONTROLS Text Edit Box Controls

(B8390) Multi-line Text Edit Boxes activated each time cursor leaves window In 6.0g versions of SL-GMS, the behavior of Text Edit boxes was modified to activate (on Motif systems) when the mouse cursor is moved off that object. However, this was only occurring the first time the mouse was moved. This problem has been fixed. Further information is provided in (B8184) Objects with unapplied properties can no longer be de-selected on page 114. Text List Box Controls

(E8311) Clicking on Listbox no longer causes callback to be called three times Previously in SL-GMS on Windows platforms, double clicking on a Listbox caused its callback to be called three times. This problem has been fixed so that now double clicking on a Listbox will call the callback twice.

(B8376) Variable-driven popup menu buttons display correctly In the initial implementation of popup menus, buttons having labels controlled by a variable were "empty." This problem has been fixed.

(B8340) Popup menus with mode set to loc press work correctly Previously in SL-GMS, popup menus set to appear on loc press failed after the first time. This problem has been fixed.

(E8306) Workaround added to simulate loc_release event after popup menu displayed A workaround was added to the object selection state in the mapping library to simulate a loc_release event after a popup menu is displayed in a map window.

98 SL-GMS Release Notes Version 6.2 - 26 May 2006 Standard Control Objects

(B8307) Popup menus in applications not containing Controls work correctly Previously in SL-GMS, popup menus did not work correctly in applications not containing a Control Object. This problem has been fixed.

WINDOWS-SPECIFIC VERSION

(E8303) ActiveX application printing capability now supports SL-GMS bitmaps Previously in SL-GMS, the only available printing option was through the PostScript workstation. New SL-GMS pixmap API functions have been added to allow an SL-GMS pixmap to be created for SL-GMS to draw into. That pixmap can then be used for printing ActiveX controls and other purposes. Workstation/Window — pixmaps Create a new pixmap pseudo-object; free a pixmap pseudo-object; query the workstation dependent pixmap data; redraw the workstation in the specified pixmap.

psid gmsWsNewPixmap (workst, width, height) id workst; int width; int height;

int gmsWsFreePixmap (workst, pixmap) id workst; psid pixmap;

t_addr gmsQWsPixmapData (workst, pixmap) id workst; psid pixmap;

int gmsWsRedrawToPixmap (workst, view, pixmap) idWorkst workst; idG_VIEW view; psid pixmap;

Version 6.2 - 26 May 2006 SL-GMS Release Notes 99 SL-GMS (v6.0h)

This set of functions creates, frees, and allows manipulation of SL-GMS pixmaps. The gmsWsNewPixmap( ) function creates a new SL-GMS pixmap pseudo-object with the specified width and height. The width and height parameters allow a pixmap to be created that is larger or smaller than the specified workstation. By creating a pixmap larger than the workstation, the pixmap has a higher resolution than the screen resolution. This is useful for printing. Currently the aspect ratio of the width and height parameters must match the aspect ratio of the workstation. The gmsWsNewPixmap( ) function clears the new SL-GMS pixmap in the workstation's current background color. An SL-GMS pixmap pseudo-object is freed by calling gmsWsFreePixmap( ). The gmsQWsPixmapData( ) function returns the workstation specific data pointer. For X this is a Pixmap; for Windows it is an HBITMAP. This allows the application to print and manipulate the data directly. The gmsWsRedrawToPixmap( ) function behaves the same as gmsWsRedrawNoErase( ), except that it redraws into an SL- GMS pixmap instead of the workstation window. It takes an additional parameter that specifies the pixmap to draw into. Currently the view parameter is ignored.

(B8350) Word wrap capability added to Text Edit Controls Text Edit Controls have been enhanced so that text will wrap at the right margin of the control as it is being entered. This capability is controlled by a new renamed variable: "wrap." Wrapping will occur if this variable is given a non-zero value. The default value is 0 (no wrapping). Note that this capability applies to multi-line Text Edit Box Controls only.

MOTIF-SPECIFIC VERSION Scroll Bar Controls

(B8297) Jump values for UNIX scroll bars no longer incorrect if "trough" area clicked Previously in SL-GMS, the SL-GMS Scroll bar Control behaved incorrectly if the trough area (the area on either side of the slider,

100 SL-GMS Release Notes Version 6.2 - 26 May 2006 On-line Examples

not including the arrows) was clicked. This problem has been fixed so that this action now moves the slider the same amount as if the arrows were clicked (an amount equal to the Control’s jump_value variable).

On-line Examples

MFC Integration Examples myproject_mfc_mdi / myproject_mfc_sdi

(B7072) Help provided in "myproject_mfc_mdi" and "myproject_mfc_sdi" examples Previously in SL-GMS, although the Help Pull-Down Menu in myproject_mfc_mdi and myproject_mfc_sdi applications contained the Help Topics option, the help file was not included on the distribution. Help is now included in these applications.

Active-X Component Examples GMSRUN ActiveX (gmsrun_ax)

(B8349) Changing renamed variables of Controls has effect when viewed in SL-GMSRun ActiveX In previous versions of SL-GMS, changing the renamed variables of Controls to have constant values had no effect on the controls when the Controls were viewed within the SL-GMS ActiveX Control. This was true for all Controls except for Mode Buttons. Changing the renamed variables of Controls now has an effect on the model when it is viewed in SL-GMSRun ActiveX.

(B8304) SL-GMSRUN ActiveX support provided Four new functions are now supported in gmsrun_ax ActiveX: GmsFindObject( ) GmsQUserData( ) GmsQName( )

Version 6.2 - 26 May 2006 SL-GMS Release Notes 101 SL-GMS (v6.0h)

GmsQUserWord( ) GmsFindObject(double aperture, long depth) (the same as the old gmsFindObject) takes an aperture and depth for arguments and returns the object id. The remaining functions take an object id as an argument and return information about the object. The four functions are typically used in a mouse event handler or an object selected handler in the container. The functions query information about objects that were clicked or scrolled over.

(E8280) GmsDatFlag property provided The GmsDatFlag property has been added. The property is set to FALSE by default. When set to TRUE, a .dat file is looked for and if found, the model will begin to update using the data file. The .dat file name that is searched is the name of the model plus the .dat extension. There is no way, as of yet, to set the .dat file name to be different from that of the model.

SL-ATMS Basic Functionality

(B8326) gen_random_int utility works correctly Previously in SL-GMS, the Windows code for the utility function gen_random_int was implemented incorrectly; it could generate a number that was one greater than that of the maximum value it was given. This problem has been fixed.

(E8332) User control of "selection_aperture" for map objects provided The selection_aperture for the OBJSEL, RECTPAN, and OBJDETECT map interaction modes can now be set by the application. This allows the application to control how close the mouse must be moved to an icon or connector before the object is recognized.

102 SL-GMS Release Notes Version 6.2 - 26 May 2006 On-line Examples

Network Management Example

(E8322) "add_map_layer" method enhanced The method "add_map_layer" in the MapState has been enhanced so that it may now be used to add any type of map layer, including static or dynamic layers that are part of the basemap. The method "add_basemap_layer" is still available for backward compatibility, however SL recommends that applications use the method "add_map_layer" for the addition of all map layers.

Map Top State

(E8310) Methods added to MapTopState The methods "get_dataobject" and "free_dataobject" have been added to the MapTopState. To acquire information about a dataobject, the class_id and object_id fields in a DataObj structure must be filled in and sent the "get_dataobject" message to the MapTopState. The method will fill in the "type" and "userptr" fields for the object. When finished, the message "free_dataobject" is sent to free any memory allocated during the call to "get_dataobject."

Model Layer State Layer Handling

(B8321) Mapping library no longer ignores values of MinZoomFactor and MinScalefactor if corresponding attribute is 0 Previously in SL-GMS, the mapping library ignored the values of the layer attributes MinZoomfactor and MinScalefactor if the corresponding maximum attribute (MaxZoomfactor and MaxScalefactor, respectively) was 0. This problem has been fixed. Icon Handling

(E8309) Number of icontypes increased for each icon layer The number of icontypes that may be defined for an icon layer has been increased. Previously, the icontype_id was required to

Version 6.2 - 26 May 2006 SL-GMS Release Notes 103 SL-GMS (v6.0h)

be a value between 1 and 255, inclusive. This limited a single icon layer to using a maximum of 255 different icons (SL-GMS SubModels) at any one time. This restriction has been eased so that the icontype_id may now be any value from 1 to 16,777,215, inclusive, allowing a maximum of 16.7 million different icons to be available for display in a single layer.

(B8320) "View Presets" in atms demo no longer exhibits anomalous behavior Selecting the View Presets button in the atms demo from the View Control window brings up the View Presets dialog. This dialog contains a list box of preset Views. Two buttons allow the user to "Remove" or "Recall" a preset View. Selecting the "Add" button brings up the Add View Preset dialog. Previously in SL-GMS, if the "Done" button was clicked, the "Remove" and "Recall" buttons remained highlighted. This behavior was incorrect. The buttons are now blanketed and unpickable until the user selects a string from the list box.

Core Functionality

SL-DRAW2 Text Entry

(B8301) Using arrow key to backspace over Hershey text in SL-DRAW2 no longer a problem Previously in SL-DRAW2, anomalous behavior occurred when the user attempted to backspace over Hershey text using the arrow key. This problem has been fixed. Basic Functionality Filer Functions

(B7682) Errors no longer appear when multiple inclusions performed on .h files Previously in SL-GMS, compile errors appeared when trying to include SL header (.h) files multiple times. Header files have now been edited to safely allow multiple inclusion.

104 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

(E8116) Functions added to provide read/write access to model headers A new set of functions has been added to provide read and write access to the model header. These functions accept and return a model header string that is in a format similar to the RenamedVar strings, that is, each item in the header string is in the following format. label_1 :: "data_1" label_2 :: "data_2" ... label_n :: "data_n"

int gmsMUserHeaderStr (model, user_str) id model; char *user_str;

gmsMUserHeaderStr( ) sets the model header to the string in user_str for a model in memory. For example: sprintf(header, "extent :: \"10, 10, 280, 280\" format :: \"%%d A\" "); result = gmsMUserHeaderStr(obj, header);

The format of user_str is the same as renamed var strings, except only string data is allowed with each label. This function automatically prefixes the label for each item in user_str with "user_." This may be seen in models saved to a .g file. When directly editing the model header in a .g file, the "user_" prefix must be included as part of the label name for user defined items. Items defined by SL-GMS will not have this prefix.

char * gmsQMUserHeaderStr(model) id model;

gmsQMUserHeaderStr( ) returns a model header string from the model specified in memory. The "user_" prefix that gmsMUserHeaderStr( ) adds to item labels is removed by gmsQMUserHeaderStr( ). The string returned by this function must be freed by using g_strfree( ) when the program is finished with the string.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 105 SL-GMS (v6.0h)

char * gmsMGetUserHeaderStr(modelfile) char *modelfile;

gmsMGetUserHeaderStr( ) reads the model header from a model file without loading the model in memory and returns a model header string. g_strfree( ) is used to free the string when done. The "user_" label prefix is removed by this function also. SL-GML Commands name modelheader string An example model using the model header command is as follows: mtran0 vis 1 detect 1 test: model . modelheader \ user_format :: "%d A" \ user_label :: "\t Amps " \ user_highlimit :: " 200 " \ user_highdanger :: "19\b" \ user_extent :: "20 20 100 100 " \ user_lowlimit :: "0" \ user_m :: "b1" fcolor 4 fstyle 1 finter 1 fdir 0 fpercent 100 ecolor 7 estyle 1 ewidth 1 _circ: cir2 10 10 20 10 endm Text

(E1830) Text constraint attribute added to text rectangles (E6921) A text constraint attribute has been added to text rectangle objects. This attribute controls how text behaves when it overflows the bounds of the text rectangle. The following

106 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

documentation provides an explanation of the different text constraint modes and the new SL-GML tconstraint commands.

NOTE: Text model files (.g files) that are generated with the new SL-GMS version will include at least one tconstraint command. This must be handled by any program that parses .g files.

The following .g file shows the use of the text constraint attribute: mtran0 vis 1 detect 1 fittest: model fcolor 4 fstyle 1 finter 1 fdir 0 fpercent 100 ecolor 2 estyle 0 ewidth 1 tcolor 7 height 1.5 path 1 font 1 prec 0 align 2 3 size 0 0 tconstraint 2 hello: ftrect 42.5707 41.873 55.9316 32.927 "HELLO MOLLY" . filled 0 fcolor 1 ecolor 1 estyle 1 line 42.5149 44.4126 42.5149 27.8306 line 55.8916 45.2853 55.8916 28.1215 endm

This model sets the modal text constraint to G_TCONSTRAINT_FIT_WIDTH (value 2). All ftrects created after the modal tconstraint command will use this mode unless

Version 6.2 - 26 May 2006 SL-GMS Release Notes 107 SL-GMS (v6.0h)

another tconstraint command changes the attribute. This model can be modified to set a text constraint on just the ftrect named "hello", as follows. CHANGE tconstraint 2 hello: ftrect 42.5707 41.873 55.9316 32.927 "HELLO MOLLY" . filled 0 TO hello: ftrect 42.5707 41.873 55.9316 32.927 "HELLO MOLLY" . filled 0 . tconstraint 2 Text Constraint Sets the text constraint for text rectangle objects; sets modal text constraint for all text rectangle objects; queries a text rectangle object's text constraint.

int gmsTRectTextConstraint(trect, constraint) id trect; unsigned int constraint;

int gmsLTRectTextConstraint(objlist, constraint) idLinkRef objlist; unsigned int constraint;

int gmsMTRectTextConstraint(constraint) unsigned int constraint;

unsigned int gmsQTRectTextConstraint(trect) id trect;

This set of functions sets or queries the text constraint attribute for text rectangle objects. The text constraint attribute may be any one of the values described below. G_TCONSTRAINT_NONE This value is the default and allows a text

108 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

rectangle's text to display outside (overflow) the text rectangle. G_TCONSTRAINT_CLIP This value causes a text rectangle's text to be clipped to the text rectangle boundary. G_TCONSTRAINT_FIT_WIDTH This value causes a text rectangle's text to fit inside the width of the text rectangle boundary. This is done by changing the positions of individual characters in the text. The characters may overlap each other to stay inside the boundary. If the width of a single character overflows the boundary, the characters will overlap each other and the text will overflow the text rectangle (it will not be clipped). This mode does not modify font size, only character positioning. The G_TCONSTRAINT_FIT_WIDTH mode is supported only for precision 0 fonts and is currently implemented only on Windows platforms. This mode is used to compensate for the non-linear scaling of Windows TrueType fonts. To do this, create an unfilled text rectangle that just encloses the text and set the edge style to 0 (invisible). Whenever the model is scaled, the text length will stay inside of the text rectangle. Note that the direction of the width/length of the text changes if the text is rotated. For example, if the text is rotated 90 degrees, the direction of the text width/length will be vertical. None of the constraint modes use edge width to make the text rectangle boundary smaller for fitting or clipping the text. The text rectangle boundary is equivalent to the text rectangle's edge if the edge width is set to 1. The gmsTRectTextConstraint( ) function sets the text constraint attribute on a single text rectangle object. The gmsLTRectTextConstraint( ) function sets the text constraint attribute for all text rectangle objects in a list. The gmsMTRectTextConstraint( ) function sets the modal text constraint attribute (it sets the text constraint on the exemplar object). The gmsQTRectTextConstraint( ) function returns the text constraint attribute of a text rectangle object.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 109 SL-GMS (v6.0h)

SL-GML COMMANDS tconstraint index [name] tconstraint index All Workstations Window Handling

(B8377) Functions added to enable users to select SL-GMS objects using MFC select mechanism Three functions have been added to enable users to select SL-GMS objects using MFC select mechanism: gmsQWorkst( ) gmsQWsView( ) gmsWsPointDCToIC( ) The SL-GMS Function Reference Manual provides details about each function.

Windows Workstations Font Handling

(E8086) Rotation of TrueType fonts enabled on Windows Previously in SL-GMS on Windows workstations, it was not possible to display rotated TrueType fonts. This problem has been fixed so that now rotated TrueType fonts display. To accomplish this, two functions have been added: gmsTPrec0RotFlag( ), which enables the rotation capability, and gmsQTPrec0RotFlag( ), which queries the status of this capability. These functions are described below.

int gmsTPrec0RotFlag(flag) int flag; /* new rotation status for Precision 0 Text */

The gmsTPrec0RotFlag( ) function allows the user to enable or disable rotation for precision 0 (TrueType) text by the use of the

110 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

flag argument. The values G_ON and G_OFF can be used for the flag to enable and disable text rotation.

NOTE: Turning the flag ON enables text rotation only; it does not cause currently displayed text to redisplay. Text Rotation is OFF by default.

int gmsQTPrec0RotFlag()

The gmsQTPrec0RotFlag( ) function allows the user to query the status of the text rotation flag. In addition to these two functions, a state string message has been added to the standard top state class that allows SMSNEW applications to change the text rotation flag by sending a state string message. The state string message is called "tprec0_rot_flag" and takes an integer argument. tprec0_rot_flag calls gmsTPrec0RotFlag( ). The user can see the return value of gmsQTPrec0RotFlag( ) displayed as the tprec0_rot_flag attribute in the standard top state class, state (debug) details window. The tprec0_rot_flag attribute is saved as part of the resources saved for the standard top state, and can be set by when resources are loaded for an application.

NOTE: Rotation of TrueType fonts is not implemented on UNIX platforms.

SL-KEY LICENSE PROTECTION

(B8198) Support for USB dongles provided In previous version of SL-GMS, if the computer had no parallel port, applications could crash if the licensing option was set for "DONGLE." This problem has been fixed. SL-GMS now supports USB dongles, as well as the standard parallel port dongles. Rainbow drivers have been updated to version 5.38.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 111 SL-GMS (v6.0h)

PORTS — OS DEPENDENCIES Windows 95

(B6144) Transparent fill style no longer fails on Windows 95/98/2000 platforms Previously in SL-GMS, setting the fill style to "transparent" in gmsdraw_mfc or to finter 3 in SL-DRAW2 failed on Windows 95/98/2000. This problem has been fixed.

NOTE: The implementation has some limitations when displaying multiple filled polygons with transparent fill. An example of this can be seen in the atms on-line example where the i_accident_fire.m1 icon displays with an orange border.

INSTALLATION UTILITIES Registration Utility

(B8263) getpin no longer returns different number each time it is executed on Windows 95/98/2000 Previous versions of SL-GMS, on some Windows 95/98/2000 platforms using the NIC license option, caused getpin.exe to return a different number each time it was executed. This problem has been fixed. Customers having NIC licenses on Windows 95/98/2000 may need to obtain new keys for SL-GMS.

112 SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMSDraw

SL-GMS (v6.0g1)

SL-GMSDraw

Window Model State (WinModState)

(E7560) New messages added to WinModState to support specification and invocation of popup menus Popup menus may be included in an SL-GMS menu file, which specifies a named menu, its menu items, and their associated actions. Menus in a menu file may subsequently be referenced by their name. Invoking a popup menu that has been specified in a menu file involves the following steps: 1. Select a menu name from one of the menus defined in the current menu file and change it to be the current popup menu. 2. Invoke the current popup menu at a given origin point. The messages used are shown below.

Message Name Argument Type

popup_menu_name char *

invoke_popup_menu idPoint

View Manager State Zoom/Pan Interaction State

(B8190) gmsdraw_mfc no longer crashes when grabber pan tool utilized Previously in gmsdraw_mfc, a crash sometimes occurred when the grabber pan tool was utilized. This problem has been fixed.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 113 SL-GMS (v6.0g1)

GMSDRAW Library Common GMSDRAW Dialog Models

(B8202) "Special Ungroup" option no longer active when more than one object selected Previously in SL-GMSDraw, the Special Ungroup option of the Object Pull-Down Menu became active if any number of objects was selected, and at least one object was a group. This problem has been fixed so that now it becomes active when only one object is selected and that object is a group.

(B8184) Objects with unapplied properties can no longer be de-selected Previously in SL-GMSDraw on Motif systems, it was possible to create a situation in which an object had unapplied properties but was not currently selected. In this event, there was no way either to proceed or exit the Editor. This situation arose only if the user's window manager focus policy was set to "explicit." This problem has been fixed. The behavior of Text Edit Boxes has changed as a result of this fix. Previously in SL-GMS, Text Edit objects (with focus_lost_flag set to 0) on Motif systems were activated only after focus was transferred to another window (note that Controls are considered windows). Now, Text Edit Boxes are activated when the mouse is moved out of that object, even if focus is not lost.

(B8136) SL-GMSDraw PostScript Print Dialog works correctly Previously in SL-GMSDraw, some options in the Print Dialog, including Copies, Scale %, Move X, and Move Y did not work correctly. These problems have been fixed.

(B8120) SL-GMSDraw PostScript Print Dialog no longer behaves as if PostScript file exists Previously in SL-GMSDraw, if a model was created and the user attempted to save the file as a PostScript file, the PostScript dialog behaved as if that file already existed and queried the user whether it should overwrite it. This problem has been fixed.

114 SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMSDraw

GMSDRAW_MFC (WINDOWS) GMSDRAW_MFC (WINDOWS) Japanese

(B8094) gmsdraw_mfc Japanese "Refresh" option functional Previously in gmsdraw_mfc running on Japanese Windows NT, the Refresh option of the View Pull-Down Menu was greyed out. This option is now functional.

Top-Level Editor States Editor Top State

(B8209) Registration intercept functions of Editor top state provided The SL-GMS Enhancement Package editing States allow applications to specify that user-written functions be called at specific points (sometimes called "intercepts") during certain editing operations. The application must register these "intercept functions" by sending a State message containing a pointer to the intercept function. Previously, the method of registration was to send a message containing a numerical constant and a function pointer to the EditorTopState. This method has been changed, as described below. The currently-defined set of intercepts may still be registered with the old method for compatibility, but as new intercepts are added to the editing States, they will be registered with the new method. The new method of registering an intercept function involves sending a State message to the State that implements the intercept. Usually this message will be sent to the exemplar of the State before its first instance is activated, but the message can be sent to a specific State instance as well. The table below lists the intercept function names and the State Class names that implement them. For each function there is a message to register the function, whose name is the name of the function, and a corresponding message to return the intercept function pointer, whose name is the name of the function prefixed by "get_".

Version 6.2 - 26 May 2006 SL-GMS Release Notes 115 SL-GMS (v6.0g1)

For example, to register the function "my_pre_mget_fctn" for the pre_modelget intercept, the State message would be: char *my_pre_mget_fctn(); STMSG_P("EditPlaneState", "pre_modelget_fctn", my_pre_mget_fctn);

To retrieve a pointer to the function currently registered for the pre_modelget intercept, the State message would be: t_pfuncp pre_mget_fctn; STMSG_P("EditPlaneState", "get_pre_modelget_fctn", &pre_mget_fctn);

State Class Function Name

CreateState created_object_fctn

CreateState cloned_objects_fctn

ObjectPropertyState post_validate_dynprop_fctn

ObjectPropertyState pre_validate_dynprop_fctn

EditMgrState double_click_object_fctn

EditorTopState post_modelgsave_fctn

EditorTopState post_modelsave_fctn

EditPlaneState post_modelget_fctn

EditPlaneState pre_modelget_fctn

EditPlaneState pre_modelgsave_fctn

EditPlaneState pre_modelsave_fctn

MergeState post_modelmerge_fctn

MergeState pre_modelmerge_fctn

Standard PALETTE Models

(B8179) SubModels within directories sort correctly Previously in SL-GMSDraw, files within directories sometimes sorted incorrectly. This problem has been fixed.

116 SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMSDraw

Edit Manager — Object Create States Marker Create State

(E6732) Markers in SL-GMSDraw implemented Previously in SL-GMSDraw, marker capability was not implemented. This feature is now implemented.

Edit Manager — Edit Property States Object Property State

(B8187) Repair flag no longer lost on group using "Special Ungroup" option Previously in SL-GMSDraw, a problem occurred when the Special Ungroup option of the Object Pull-Down Menu was applied to a group that had the Repair flag set: the Repair flag for that group would be lost. This problem has been fixed. Default Object Property State

(B8178) gmsdraw_mfc no longer crashes if font changed from Hershey to Raster Previously in gmsdraw_mfc, a crash occurred if the user changed the font from Hershey to Raster then clicked undo. This problem has been fixed. Dyn Str Edit State

(E8073) "Model Dynamic Properties" dialog in gmsdraw_mfc has scroll bars Previously in gmsdraw_mfc, the Model Dynamic Properties dialog did not have scroll bars. This feature is now implemented.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 117 SL-GMS (v6.0g1)

Standard Control Objects

ALL CONTROLS Common Attributes

(E6763) SL-GMS controls objects enhanced to specify text font (E6765) definition (E6288) The following SL-GMS controls objects have been enhanced with the ability to specify the text font they will use: • CheckButton

• Container

• ListBox

• ModeButton

• OptionMenu

• PushButton

• RadioButton

• TextDisplay

• TextDisplayBox

• TextEditBox

Fonts are specified by renaming the variables "font_index" and "font_size" to integer constants, dynamic variables, or expressions. The value of "font_index" corresponds to the number of an entry in the application's font list (default or specified via a "fontdef.dat" file). The value of "font_size" is in points unless the application specifies that "font_size" values be in pixels (see below). Note that not all point sizes may be available on a given system, in which case SL-GMS will pick the closest available size. A value of 0 for "font_index" will select the default font set up in the DisplayState. A value of 0 for "font_size" will select a default size.

118 SL-GMS Release Notes Version 6.2 - 26 May 2006 Standard Control Objects

The application may specify that values of the "font_size" variable will be interpreted as pixels by sending the message "font_size_units" to the StandardTopState with the value G_FONT_SIZE_PIXELS. The default value is G_FONT_SIZE_POINTS.

INDIVIDUAL CONTROLS Scroll Bar Controls

(E8164) Scroll bars in "telecom" function correctly Previously in the telecom on-line example, the scroll bars did not size correctly. This problem has been fixed.

(B8166) Scroll bar controls on Windows update when slider dragged Previously, scroll bar controls on Windows sent update messages only when the mouse button was released after dragging. This behavior has been changed to be consistent with UNIX/Motif behavior. Update messages are now sent while the scroll bar slider is being dragged. Option Menu Controls

(B8180) Applications using ".mnu" file to define a menu bar no longer crash when ".mnu" file not found Previously, applications using a menu (".mnu") file to define a menu bar had the potential to crash if the menu file was not found. This problem has been fixed.

(E6486) Dynamic change enhancements made to "menu_name" variable The SL-GMS "Option Menu" control has been enhanced so that its "menu_name" variable may be assigned to a dynamic variable. This enables the control to display different menus during the execution of an application. Note that any menu the control might use must be defined in a menu file associated with the application.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 119 SL-GMS (v6.0g1)

On-line Examples

Active-X Component Examples GMSRUN ActiveX (gmsrun_ax)

(E8110) SL-GMSRun ActiveX Control supports three new methods The SL-GMSRun ActiveX Control supports three new methods: GmsGetVarTableNames( ), GmsGetVarTableTypes( ), and GetVarTableIndices( ). GmsGetVarTableNames( ) returns a list of variable names defined on the model. GmsGetVarTableTypes( ) returns a list of variable types. GmsGetVarTableIndices( ) returns a list of indices of these variables. These methods can be used instead of the GmsGetVarTable( ) method, which returns the three lists together in a two-dimensional array. Further information is provided in (E8126) GmsGetVarTable( ) returns variable types on page 120.

(E8122) SL-GMSRun ActiveX Control supports new property The SL-GMSRun ActiveX Control supports a new property: GmsCreateMode( ). When set to FALSE, the model loaded into the ActiveX instance will fit the best it can into the given control's window. When set to TRUE, the control's window will resize to fit around the model. The default is TRUE.

(E8126) GmsGetVarTable( ) returns variable types GmsGetVarTable( ) returns an additional list, a list of variable types. GmsGetVarTable( ) returns a two-dimensional array. The array contains three lists: a list of variable names defined on the model, a list of these variables' indices into the ActiveX variable table, and a list of variable types. GmsGetVarTableTypes( ), which returns a list of variable types, is also supported by ActiveX.

(B8141) Crop mode enabled in SL-GMSRun ActiveX Control Crop mode is now enabled in SL-GMSRun ActiveX Control. When set to TRUE, crop mode is enabled; when set to FALSE, scale mode is enabled. The default is FALSE.

120 SL-GMS Release Notes Version 6.2 - 26 May 2006 On-line Examples

(B8146) SL-GMSRun ActiveX Control instance no longer blank when model not found When a new instance of the SL-GMSRun ActiveX Control is created, the instance of the control loads the "empty model" that displays the string "SL-GMSRUN ActiveX Control." The "empty model" is also displayed when the model name is not assigned or when the model is not found. In addition, an error message is reported if the model name is assigned but not found. No error message is reported if GmsModelName( ) property is empty: no model name was assigned.

GMSTUTOR Basic 1 Example

(B8134) Stacked models with Controls in "Basic 1" resize correctly Previously in the Basic1 on-line example, resizing a stacked model did not function properly. When the model on the top of the stack was redrawn, all of the controls in the stack were redrawn, instead of just the controls in the top model. This problem has been fixed.

(B7891) "Basic1" Stack function works correctly Previously in the Basic1 on-line example, the stack function did not function properly on systems running HP-UX 11.0 or HP-UX 11.0 XIM. This problem has been fixed.

SL-ATMS

(E8165) New map windows in "atms" upgraded to use scroll bars Scroll bars have been added to the new map windows in the atms on-line example to allow panning across the full width and height of the map.

(B8171) Error messages no longer occur at startup of "atms" Previously in the atms on-line example, the following error message occurred at startup: ERROR: gmsStNameStrMsgP: cannot find state 'ATL_atms_top_0' This problem has been fixed.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 121 SL-GMS (v6.0g1)

Network Management Example

(B8211) Error messages at startup of "telecom" no longer occur Previously when the telecom on-line example was launched, various error messages displayed. This problem has been fixed.

Mapping Library Functionality BASEMAP PREPARATION

(E8299) Mapping applications can run without a BASEMAPCONFIG file The chapter "BASEMAPCONFIG Bypass API" in the SL-GMS Mapping Application User’s Guide provides information about allowing mapping applications to run without a BASEMAPCONFIG file.

(B8161) get_dataobject_class_by_id copies all attributes Previously in SL-GMS, the get_dataobject_class_by_id( ) method did not fill the fields xx, yy, or zz into the structure provided. This problem has been fixed.

(B8163) Map windows in "atms" resized in crop mode no longer distort Previously in the atms demo, the map windows became distorted when resized using crop mode. This problem has been fixed. Map Window Management

(E8201) Crop mode for external map windows provided Previously in SL-GMS, the attributes "crop_mode" and "keep_aspect_flag" were not available for externally-created map windows. These attributes are now available.

(E8243) Map interaction modes allow selection of rectangles in map windows with press, drag, and release The map interaction modes RECTSEL, ZOOMRECT, and NEWMAP allow the user to select a rectangle in a map window. Previously in SL-GMS, the only way in which to select the

122 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

rectangle was to press and release the mouse to define the first corner of the rectangle, move the mouse, then press and release the mouse a second time to define the rectangle’s opposing corner. This remains the default behavior, but a new selection mode is now supported. The MAP_RECT_PRESS_DRAG_RELEASE_MODE mode allows the user to press the mouse at the first corner of the rectangle, drag the mouse, then release it in the second corner of the rectangle. To use this selection mode, send a message to the MapPickRectState class exemplar from your application top state, at any time after initializing the MapTopState. For example: map_top_initialize(); /* initialize the map top state */ STMSG_V("MapPickRectState", "selection_mode", MAP_RECT_PRESS_DRAG_RELEASE_MODE); /* use press-drag-release mode for rectangle selections */ The selection mode applies to all rectangle selections in the map window. The symbolic constants MAP_RECT_PRESS_PRESS_MODE and MAP_RECT_PRESS_DRAG_RELEASE_MODE are defined in the file "smsmap.h."

Core Functionality

SL-DRAW2

(B8147) Deleting an object during paste operation in SL-DRAW2 no longer changes object's visibility Previously in SL-DRAW2, if the user deleted an object during a paste operation, instead of deleting the object, that object's visibility changed. This problem has been fixed.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 123 SL-GMS (v6.0g1)

Basic Functionality Bitmaps/Rasterfiles

(B8188) Bitmaps read in "telecom_xm" on SGI platforms Previously in SL-GMS on SGI platforms, bitmaps were not read in the telecom_xm on-line example because the ".xpm" files were not recognized. This problem has been fixed.

All Workstations Event Handling

(E4839) Mouse double click event handling enhanced (E8318) SL-GMS now supports reporting of mouse "double-click" events on both Windows and UNIX (X Window System) platforms. The report takes the form of an additional "modifier" flag for G_LOC_PRESS and G_LOC_RELEASE events: G_DOUBLE_CLICK, defined in "gmscodes.h". This cross-platform support is implemented using a "best of both worlds" (as opposed to "lowest common denominator") approach. For example, both Windows and X support programmatic query of the user's current "double click time". Only Windows provides a "double click proximity" filter, so SL-GMS mimics that behavior on X. Windows programs using the traditional win32 API for double-click only receive those events for the left (or "select") button, so SL-GMS avoids that API in order to report double- clicks on any mouse button. (This means that Windows applications that create their own windows for SL-GMS must not include the "CS_DBLCLKS" identifier when initializing the style field of the window class structure.) Neither system directly supports any kind of notification that a mouse release event is associated with a double-click; SL-GMS adds the G_DOUBLE_CLICK flag to G_LOC_RELEASE events if the previous G_LOC_PRESS was a double-click and if the release occurs within a radius twice as large as that used to identify the double-click G_LOC_PRESS.

124 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

Assuming that an application has enabled both G_LOC_PRESS and G_LOC_RELEASE events, it will see the double-click reported as a sequence of four locator events:

G_LOC_PRESS

G_LOC_RELEASE

G_LOC_PRESS modifier will include G_DOUBLE_CLICK

G_LOC_RELEASE modifier will include G_DOUBLE_CLICK

On Windows, the time limit for a double-click is controlled by the user via the Control Panel. On X systems, the time limit defaults to 500 milliseconds but can be changed before application startup via the X Resource "multiClickTime" (used by many environments by default but that users can add to their environment using "xrdb -merge"). G_LOC_PRESS and G_LOC_RELEASE events are SL-GMS "highlevel workstation" events, and as such do not apply to those events that occur inside NCOs (Native Control Objects). Proper double-click handling for those objects is NCO-specific.

NOTE: Initial support for "double-click" events was introduced in SL-GMS version 6.0g1, but support was withdrawn until 6.0h1. The original implementation exhibited behavior differences between UNIX and Windows. In an effort to offer similar behavior across both UNIX and Windows versions, double-click event functionality was redone and rereleased in 6.0h1. Customers utilizing the double-click events in versions prior to 6.0h1 should contact SL Technical Support for upgrade assistance.

(E7878) Standard method of changing mouse cursor in SL-GMS window provided A new set of functions are now provided that allow applications to change the mouse cursor in SL-GMS windows. Since mouse cursors are inherently platform dependent, the approach taken by SL-GMS is to register and access cursors by name. This allows applications to perform platform-dependent initialization followed by platform-independent usage.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 125 SL-GMS (v6.0g1)

Even without explicit initialization, SL-GMS supports 13 predefined cursors under Windows and 77 font cursors under X. These are pre-registered using names formed by removing the system-dependent prefix (e.g., "IDC_" or "XC_") from the system #defines (and in the Windows case lower-casing the result). For instance, the default SL-GMS cursor on Windows is "arrow", derived from IDC_ARROW; on X it is "top_left_arrow", derived from XC_top_left_arrow. Any of the predefined cursors can simply be used at any time by calling the set cursor function, gmsWsCursor( ).

int gmsWsCursor (workst, cursor_name) id workst; char *cursor_name;

If a cursor matching "cursor_name" exists in the current SL-GMS list of cursors, the function returns non-zero and that cursor immediately becomes active. If "workst" is the workstation class exemplar (gmsQDefaultWsClass( )) then SL-GMS will attempt to use that cursor as the default for subsequently created workstations. Platform and other dependencies determine the likely success of this "attempt"; please contact Customer Support for further details. To query the current list of registered cursor names, use gmsQWsCursorNames( ).

char ** gmsQWsCursorNames (workst) id workst;

This function returns a NULL-terminated array of pointers to strings containing the names of currently registered cursors. The application must not modify the strings but should free the array of pointers. To query a workstation's currently active cursor, use gmsQWsCursor( ).

char * gmsQWsCursor (workst) id workst;

126 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

This returns a read-only "cursor_name" for the cursor that is active on "workst". To add a cursor to the SL-GMS list of cursors, use gmsWsAddCursor( ).

int gmsWsAddCursor (workst, cursor_name, cursor_type, cursor_data) id workst; char *cursor_name; int cursor_type; t_addr cursor_data;

If a cursor matching "cursor_name" already exists, it is replaced. The "cursor_type" and "cursor_data" parameters are platform dependent and interdependent. The valid values for "cursor_type", as well as required data structures for pixmap/image cursors, are defined in either "gmsWin.h" or "gmsX.h". The only commonly-defined type is G_WS_PLATFORM_CURSOR for which "cursor_data" must be a pointer-to-"Cursor" on X or a pointer-to-"HCURSOR" on Windows. The additional "cursor_type"s supported on X are G_WS_FONT_CURSOR and G_WS_PIXMAP_CURSOR. If "cursor_type" is G_WS_FONT_CURSOR then "cursor_data" must be a pointer to an integer containing a valid value from , for example, XC_top_left_arrow. If "cursor_type" is G_WS_PIXMAP_CURSOR then "cursor_data" must be a pointer to a gmsXcursorStruct, defined in "gmsX.h":

typedef struct { Pixmap source, mask; XColor *foreground, *background; unsigned int hotspot_x, hotspot_y; } gmsXcursorStruct;

Version 6.2 - 26 May 2006 SL-GMS Release Notes 127 SL-GMS (v6.0g1)

On Windows, the additional "cursor_type"s are: G_WS_PREDEF_CURSOR G_WS_FILE_CURSOR G_WS_IMAGE_CURSOR

If "cursor_type" is G_WS_PREDEF_CURSOR, then "cursor_data" must be a pointer to an integer containing a predefined cursor value, for example, IDC_ARROW. If "cursor_type" is G_WS_FILE_CURSOR, then "cursor_data" must be a "LPCTSTR" containing the name of the ".cur" or "." file to be loaded. If "cursor_type" is G_WS_IMAGE_CURSOR then "cursor_data" must be a pointer to a gmsW32cursorStruct, defined in "gmsWin.h":

typedef struct { HINSTANCE hinst; LPCTSTR res_name; int mono_flag; } gmsW32cursorStruct;

Finally, to obtain information about a named cursor, use gmsQWsCursorInfo( ).

int gmsQWsCursorInfo (workst, cursor_name, cursor_type, cursor_data) id workst; char *cursor_name;/* in */ int *cursor_type;/* out */ t_addr *cursor_data;/* out */

This function is provided primarily for debugging. It returns the device-dependent "cursor_type" and "cursor_data" information, as described above in the section on gmsWsAddCursor( ).

128 SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMSDraw

SL-GMS (v6.0f2)

SL-GMSDraw

Common SL-GMSDraw Dialog Models

(B8135) Edge of background rectangle no longer detectable in c1_cntrls Palette In SL-GMSDraw version 6.0f1, parts of the c1_cntrls Palette background window were detectable. Users were able to select and instance parts of the background boxes instead of the Controls themselves. Now only the Controls are selectable.

GMSDRAW_MFC (WINDOWS)

(E8103) Ability to customize toolbars added to custom editor capabilities OEM customers intending to create custom editor applications can now customize the appearance of toolbars. Further information is provided in (B6119) gmsdraw_mfc provides more options and additional functionality for editor customization on page 138.

GMSDRAW_MFC (WINDOWS) Japanese

(B8098) Behavior of PALETTES and PALETTES_japanese directories clarified In SL-GMS version 6.0f1 on Japanese 32 bit Windows, gmsdraw_mfc recognized the PALETTES directory only if it was named PALETTES_japanese. This problem has been fixed. On Japanese 32 bit Windows, the list of available palettes is now generated using PALETTES directories, except for the SL-GMS supplied palettes directory, work/gmsrun/PALETTES_japanese. Further information is provided in (B8092) Output from SL-GMSDraw localized using user-defined mapping on page 92.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 129 SL-GMS (v6.0f2)

Top-Level Editor States

(B7901) Cut and Copy operations in gmsdraw_mfc no longer cause a crash or system hang Previously in SL-GMS on some PCs, performing a cut or copy operation caused a crash or hang in gmsdraw_mfc. This occurred only if the color depth was set to more than 8 bits (256 colors). The exact problem color depth varied on different machines. This problem has been fixed.

Run Manager State (Preview)

(B8097) Right mouse button options no longer display during preview In version 6.0f1 of SL-GMSDraw, users were able to access the right-button context menus while previewing model, even though the menus were not operational. This problem has been fixed.

130 SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMSDraw

SL-GMS (v6.0f1)

SL-GMSDraw

GMSDRAW_MFC (WINDOWS) MFC Framework Classes/Resources

(B7994) SL-GMSDraw print dialog no longer displays incorrect message Previously in SL-GMSDraw, the print dialog printed an erroneous message. This problem has been fixed. gmsdraw_xm (MOTIF) gmsdraw_xm — Menus and ToolBars

(B8017) "New with Background" option added to Japanese "File" Pull-Down Menu Previously in SL-GMSDraw on XIM platforms, the Japanese File Pull-Down Menu did not include the New with Background option. This option has been added.

Top-Level Editor States Editor Top State Resource File Handling

(B7982) User-settable function pointer provided to set SL-GMSDraw resource filename Previously in SL-GMS, the resource filename for SL-GMSDraw was ".gmsdrawrc." It is now possible, through a user-settable function pointer, to provide an alternative resource filename for SL-GMSDraw. This function pointer would typically be set in the linkable "userfctns.c."

Version 6.2 - 26 May 2006 SL-GMS Release Notes 131 SL-GMS (v6.0f1)

Edit Manager — Special Interface States Bitmap Name List State

(B7997) gmsdraw_mfc correctly outputs full path for bitmaps Previously in SL-GMSDraw, bitmaps were incorrectly stored in models using the full path names of their files. This prevented these models from being converted to GML form. This problem has been fixed in SL-GMSDraw. Note that a bitmap file must be in the current directory or in the SL-GMS library path in order to be found when the model is subsequently opened. Palette List Select State

(B8015) User-settable flag added to Palettes state exemplar A user settable flag, "draw2_flag," has been added to the palettes state exemplar in SL-GMSDraw. When this flag is set, subsequently-created palette windows will exhibit behavior similar to that of SL-DRAW2, specifically, palette windows: • will have a wc extent of (0,0) (100,75)

• will not be sized to fit the model

• will be resizable

• will have kept aspect turned on

The message ObjectPaletteState draw2_flag 1 can be sent from the State Tools debug window or from a command file. This message can be made persistent by saving resources.

132 SL-GMS Release Notes Version 6.2 - 26 May 2006 Enhanced SMS

Enhanced SMS

Top-Level States Standard Top State

(B8021) slgms_ident history models no longer update unnecessarily Previously in SL-GMS, the slgms_indent history model (__HS__) may have been updated unnecessarily. This problem has been fixed.

Standard Control Objects

INDIVIDUAL CONTROLS Text List Box Controls

(B7948) Text List Boxes display correctly Previously in gmsdraw_xm, when a Text List Box control was displayed, the extent of the list box was larger than that of the corresponding SL-GMS object. This problem has been fixed.

On-line Examples

GMSTUTOR Basic 4 Example

(E8070) "Basic 4" example code enhanced The Basic4 example code in basic_top has been enhanced so that it does not perform a state invoke on a state that is already active, but instead to raise the window.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 133 SL-GMS (v6.0f1)

SL-DRAW

(B8052) SL-DRAW no longer crashes when invoked with "-x" option Previously in SL-DRAW, the information area at the top of the SL-DRAW window was blank and that sometimes caused SL-DRAW to crash when invoked with the -x option. This problem has been fixed.

Core Functionality

DYNAMICS

(B8068) Setting text in Text Rectangle to invalid multibyte character no longer causes crash Previously in SL-GMS, when the text in a Text Rectangle object was set to an invalid or unprintable multibyte character, then set to some other text, the application crashed. This problem has been fixed.

INSTALLATION UTILITIES Registration Utility

(B8009) SL-GMS licensing finds network card on Windows 95/98 Previously in SL-GMS, in some cases the SL-GMS licensing was unable to locate the network card under Windows 95/98. This problem has been fixed. Users should be aware that this change requires modification to the list of included libraries when relinking applications. The library "netapi32.lib" is no longer needed, and is replaced with the library "rpcrt4.lib." Makefiles provided in the demo and work directories reflect this change and can be used as examples.

134 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

(B8010) SL-GMS DOS window gives warning when Visual C++ 5.0 environment not initialized on Windows When a DOS window is opened via the SL-GMS DOS icon, the following message now displays in the DOS window if it does not find the Visual C++ 5.0 environment defined: Warning: Visual C++ environment does not seem to be initialized. In a typical development environment, the Visual Studio script "vcvars32.bat" is run to set the Visual C++ environment. A custom DOS prompt and script may be created to run both "vcvars32.bat" and the SL-GMS script "gms_init.bat." The script "gms_init.bat" can also be modified to run "vcvars32.bat." SL has not done this because the path to this script will vary from machine to machine.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 135 SL-GMS (v6.0f1)

136 SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMSDraw

SL-GMS (v6.0e1)

SL-GMSDraw

GMSDRAW_MFC (WINDOWS)

(E7931) Ability for users to relink gmsdraw_mfc with custom functions provided The functionality of SL-GMSDraw can now be extended with custom user functions. To add user functions to SL-GMSDraw, edit the file "userfctns.c" in the gmsdraw_mfc directory and enter the user function code, and one or more calls to gmsAddUserFctn( ) to register the user function. Relink SL-GMSDraw using the Makefile provided.

MFC Framework Menus and ToolBars

(E7548) Right-button context menus enhanced in gmsdraw_mfc The right-button context menus in gmsdraw_mfc have been enhanced to provide access to more commonly-used operations. The following table lists the operations currently provided, as a function of which object (or objects) is selected:

Selected Operation(s)

Model Properties No object View Options

Cut Copy Object, group, or modinst Paste Delete Select Point

Dynamic Properties Object or group Object Information Graphic Properties

Group Ungroup

Version 6.2 - 26 May 2006 SL-GMS Release Notes 137 SL-GMS (v6.0e1)

Selected Operation(s)

Modinst Renamed Variables

Group More than one object Previous Next

File Operations

(B7530) Objects can be edited in newly-created models if previous model is closed during Preview Previously in SL-GMSDraw, if a model was closed while Preview mode was running, objects could not be edited in any subsequent model brought up using the New or the New with Background option of the File Pull-Down Menu. This problem has been fixed. Preview mode is now terminated when the New or New with Background option is selected. Window Handling

(B6721) Icons correctly placed when SL-GMS dialogs minimized Previously in gmsdraw_mfc, some dialogs, when minimized, appeared as icons floating above the Windows taskbar rather than on the taskbar. This problem has been fixed. Classes/Resources

(B6119) gmsdraw_mfc provides more options and additional functionality for editor customization gmsdraw_mfc has been reorganized so as to provide more options to users wishing to customize the appearance of the Editor or add functionality to it. The majority of the Editor's functionality is now distributed as a library of MFC classes that can be used by inheritance in a custom editor application. OEM customers who intend to create a custom editor application can receive the: • C++ header files for the gmsdraw_mfc classes

• SL-GMS Windows resource definition files

138 SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMSDraw

• Microsoft Visual Studio workspace and project, and makefiles

For example, consider the addition of a menu item and associated command handler. This would require the following general steps: 1. Edit the resource file to create the desired menu item. 2. Create a subclass of the appropriate SL-GMS MFC class (application, mainframe, document, view, etc.). 3. Add the menu item's command ID and handler method to the message map of the new class. 4. Write the code for the handler method. 5. Add the new class to the project files and makefile and rebuild the application. Users wishing to add custom State classes to their custom editor application may do so by editing the file userstates.c, included in the OEM distribution. This file contains two functions that are called from the standard Editor Top State: usertop_initialize( ), and usertop_activate( ). usertop_initialize( ) is called when the Editor Top State initializes, and should be used to initialize any custom states in the application. usertop_activate( ) is called when the Editor Top State activates, and should be used to activate any custom states in the application. ActiveX Support

(E7639) ActiveX controls in gmsdraw_mfc implemented ActiveX Controls can now be included in SL-GMS Models. In gmsdraw_mfc, this is done by selecting the Insert ActiveX Control option of the Edit Pull-Down Menu and clicking on an object. The inserted control can be moved, resized, and rotated, as with other model objects.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 139 SL-GMS (v6.0e1)

OLE and Compound Files

(E7594) gmsdraw_mfc no longer supports OLE embedding or linking OLE objects in models gmsdraw_mfc no longer supports OLE embedding or linking OLE objects in models. An example of embedding an OLE object would be adding an Excel spreadsheet (and its data) to a model. gmsdraw_mfc continues to support adding ActiveX objects to models. gmsdraw_xm (MOTIF)

(E7932) Ability for users to relink gmsdraw_xm with custom functions provided The functionality of SL-GMSDraw can now be extended with custom user functions. To add user functions to SL-GMSDraw, edit the file "userfctns.c" in the gmsdraw directory and enter the user function code, and one or more calls to gmsAddUserFctn( ) to register the user function. Relink SL-GMSDraw using the Makefile provided. Menus and ToolBars

(B7604) Motif keyboard accelerators work correctly Previously in gmsdraw_xm, the keyboard accelerators for Edit Pull-Down Menu items Undo, Cut, Copy, and Paste (Ctrl-Z, Ctrl- X, Ctrl-C, and Ctrl-V, respectively) did not work when focus was on the edit window. This problem has been fixed.

Top-Level Editor States Editor Top State

(B7619) Model merge operation no longer fails if spaces exist in directory name Previously in gmsdraw_mfc, if the user attempted to merge a model from a directory whose name contained spaces, the merge operation failed. This problem has been fixed.

140 SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMSDraw

Export GML File State

(B7903) "Export .GML Script" option disabled until model named Previously in SL-GMSDraw, the Export.GML Script option of the File Pull-Down Menu was always enabled when a model was being edited but gave an error dialog if it was used while the model was still unnamed. This problem has been fixed. The menu option is now disabled (greyed out) until the model has been named by saving it at least once. Standard PALETTE Models

(B7981) User-selectable mapping factor for palette windows in SL-GMSDraw provided Previously in SL-GMS, if the user wished to change the mapping factor for palette windows (e.g., to display palette windows of 100x75) the only way would be to set the mapping_factor on the editmgr state. This had the side effect of setting the mapping factor on all subsequently created winmodstates in the Editor. It is now possible, through a user settable function pointer, to provide a mapping factor solely for palette windows. This function pointer would typically be set in the linkable "userfctns.c." Following is an example "userfctns.c". indicating how this is done: /************************************************* *Customized SL-GMSDRAW - SL-GMS Model Editor Program *userfctns.c *************************************************/ /************************************************/ /* USER-DEFINED FUNCTIONS */

/* Here put user-defined function definitions */

/* overrideable function pointers for palette mapping factors */ /* g_palette_model_name_fctn has 1 arg, char *. */ /* g_get_palette_mapping_factor_fctn has 1 arg, double *. */

extern int (*g_palette_model_name_fctn)(); extern int (*g_get_palette_mapping_factor_fctn)();

Version 6.2 - 26 May 2006 SL-GMS Release Notes 141 SL-GMS (v6.0e1)

static char saved_model_name[1024];

static int my_palette_model_name_fctn ( model_name ) char * model_name; {

printf("about to create palette for [%s] \n", model_name);

strcpy(saved_model_name, model_name); return 1; }

static int my_get_palette_mapping_factor_fctn ( mapping_factor ) double * mapping_factor; { double my_mapping_factor ;

my_mapping_factor = (100.0 / 72.0) * 100;

/* could make it conditional based on saved modelname */

printf("setting mapping factor for [%s] to %g\n", saved_model_name, my_mapping_factor);

*mapping_factor = my_mapping_factor;

return 1; }

/***************************************************/ /* USERFCTNS INITIALIZE */

int userfctns_initialize () { /* assign function pointers */

g_palette_model_name_fctn = my_palette_model_name_fctn; g_get_palette_mapping_factor_fctn = my_get_palette_mapping_factor_fctn;

/* Here put gmsAddUserFctn calls */ return 1;

142 SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMSDraw

}

Edit Plane State Window Edit Mode (Size Window, Replace Model)

(B7975) User-selectable default view size in SL-GMSDraw provided Previously in SL-GMSDraw, the default view size of the edit window was (0.0, 0.0) -> (72.0, 54.0). It is now possible to set the default view size to a usable selectable value by sending a state message to the editplane state. Any subsequently-created edit windows will have this as their default extent in world coordinates, only if the Size Window to Model flag is not set (in the User Preferences dialog). An example of this state message is as follows: editplane set_default_view_size 0.0 0.0 100.0 75.0 • This message could be sent by the debug window or from a command file.

• The effect of this message can be made persistent by saving resources.

• The effect of this message can be cleared by sending the clear_default_view_size message to the editplane, for example:

editplane clear_default_view_size Cursor Handling Mechanism

(B7921) Erroneous cursor behavior no longer occurs (B7937) Previously in gmsdraw_mfc, the cursor sometimes failed to change to the correct function indicator, or erroneously changed back to the standard cursor. These problems have been fixed. Model Manager Functionality

(B7445) Modified external SubModels updated in SL-GMSDraw Previously in SL-GMSDraw, the Editor cached and continued to use versions of SubModels as they were originally loaded,

Version 6.2 - 26 May 2006 SL-GMS Release Notes 143 SL-GMS (v6.0e1)

disregarding whether or not they had been modified. This problem has been fixed.

(B7670) Model previously cut/pasted as SubModel in top-level model can be loaded Previously in SL-GMS, it was not possible to load a model that had been previously cut/pasted as a SubModel instance in a top level model. The message: Error: model 'xxx' is in View 'yyy' instead of View 'zzz' of state 'xyz' displayed if this was attempted. This problem has been fixed.

Edit Manager — Object Create States

(B7939) Cursor echoing clears correctly when changing create states Previously in SL-GMS, cursor echoing did not clear correctly when changing between different create operations or restarting the same create operation. This problem has been fixed. Group Create State

(B7527) Erroneous behavior with "Special UnGroup/Regroup" no longer occurs Previously in SL-GMSDraw, if an object with dynamic properties was included in a Group, that Group then ungrouped using the Special Ungroup option of the Object Pull-Down Menu, and the objects then regrouped using Special Regroup, the object with dynamic properties changed position. This problem has been fixed.

(B6637) Flags no longer lost when using "Special UnGroup/Regroup" Previously in SL-GMSDraw, flags were sometimes lost when the Special UnGroup/ReGroup options of the Object Pull-Down Menu was selected. This problem has been fixed.

144 SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMSDraw

Object Change States (Immediate) Order State

(B7656) Coordinates using "Back of All" option now update correctly Previously in SL-GMSDraw, the coordinates in the Model Properties dialog did not update correctly when the "Back of All" operation was undone or re-done. This problem has been fixed. Apply Transform

(B7870) "Apply Transform" on certain objects no longer causes redraw Previously in SL-GMSDraw, when the Apply Transform option of the Object Pull-Down Menu was applied to several objects, the objects were redrawn in the incorrect order. This problem has been fixed.

Special Interface States SubModel Name List State

(B7585) Model order in "Available Submodels" window correct Previously in SL-GMSDraw, the order in which model names displayed in the Available Submodels window was incorrect. This problem has been fixed.

Edit Property States Object Property State

(B7662) Bringing up "Object Information" dialog for Model with large renamed variables no longer causes crash Previously in SL-GMSDraw, bringing up the Object Information dialog (using the Object Pull-Down Menu) on a model instance with large renamed variables caused SL-GMSDraw to crash. This problem has been fixed.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 145 SL-GMS (v6.0e1)

(B7539) Object with flags draws correctly during Preview Previously in SL-GMSDraw, when an object had flag settings, it sometimes did not redraw correctly during Preview. This problem has been fixed.

(E6607) Flag that ensures correct group redraw behavior provided (E3394) A new flag, Repair, has been added to the Object Flags dialog in SL-GMSDraw. This flag may be applied to groups of objects (not single objects) and ensures that if any object in the group is redrawn, the entire group will be automatically redrawn. Default Object Property State

(B7487) "Adjust for Scale" checkbox in "Default Graphic Properties" dialog provided The Text tab in the gmsdraw_mfc Default Graphic Properties dialog has been enhanced to include the "Adjust for Scale" checkbox. If this box is checked, SL-GMS text objects (e.g., text rectangles) will scale in proportion to the size of the rectangle when scalable fonts are used. Default Object Property MFC Dialog Windows

(E7586) "Font Index" selector in "Default Graphic Properties" dialog provided The Text tab in the gmsdraw_mfc Default Graphic Properties dialog has been enhanced to include a "Font Index" selector that accepts a numeric font index and a Hershey/Raster choice, and sets the properties with the corresponding font face and attributes. Dyn Str Edit State

(B7587) "Object Dynamic Properties" and "Model Dynamic Properties" editors share same hold buffer In SL-GMSDraw, both the Object Dynamic Properties and Model Dynamic Properties editors have a "hold buffer" that can be used to copy and paste the current contents of the text edit area. In previous versions, these two buffers were independent of each other; now both editors share the same buffer.

146 SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMSDraw

(E7219) Vertical scroll bar in "Edit Data File" dialog provided In SL-GMSDraw, the Edit Data File dialog has been enhanced to include a vertical scroll bar in the text edit area.

(B7636) Edits on text released from Hold buffer no longer lost when applied Previously in SL-GMSDraw, if a dynprop was placed in the Hold buffer, released onto another object, then edited before Apply was clicked, the editing changes would be lost. This problem has been fixed.

(B7519) SL-GMSDraw no longer crashes when model containing object with a dynprop is opened Previously in SL-GMS, if a model containing an object with a dynamic property was opened, a dynamic property put on the object, and the model previewed, SL-GMSDraw sometimes crashed. This problem has been fixed. Renamed Str Edit State

(B6237) "Clear" button now clears renamed strings of all variables in work area In SL-GMSDraw in the Object Renamed Variables dialog, the function of the Clear button has been changed. In previous versions, it cleared the contents of the hold buffer; now it clears the renamed strings of all the variables in the work area.

Dat File Edit State

(B7866) Text editing in "Edit Data File" dialog using Cut/Paste operations works correctly Previously in gmsdraw_mfc, the Cut and Copy options of the Edit Pull-Down Menu sometimes did not work for editing text within the Edit Data File dialog. It depended upon the existence of a selected object in order to work. This problem has been fixed.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 147 SL-GMS (v6.0e1)

(E7622) Vertical scroll bar in "Object Dynamic Properties" dialog provided In SL-GMSDraw, the Object Dynamic Properties dialog has been enhanced to include a vertical scroll bar in the text edit area.

Enhanced SMS

MFC GMS Common Classes (WINDOWS)

(E7631) "hook" function no longer available in mfc_common The hook function is no longer available in mfc_common.

(E6630) New command line option causes command prompt window to open when program begins A new command-line option has been added to SL-GMS MFC-based applications that allows text that the programs write to standard output or standard error to be seen. The option, -o, causes a command prompt window to be opened when the program begins.

View Manager State

(E7598) Default zoom range increased from 0.3 to 0.8 In SL-GMSDraw, the default zoom range (boundary percent) has been increased from 0.3 to 0.8.

GMSRUN: Dialog States System-Independent Dialog State

(E7625) Keyboard focus given to any control named "focus_control" When an SL-GMS model containing SL-GMS Controls is used as a dialog box, one Control may be identified as the one to which keyboard focus is given when the model is invoked. The Control can be identified as the "focus control" by naming it "focus_control" through use of the Properties.Name option of the Object Pull-Down Menu in SL-GMSDraw.

148 SL-GMS Release Notes Version 6.2 - 26 May 2006 Standard Control Objects

X Workstations

(E7620) Non-Motif SMSX library in lib directory provided A simple, non-Motif SMSX library is now provided in the lib directory.

WINDOWS-SPECIFIC VERSION

(B7966) Message "icon_name" to winmod state works only first time it is used On Windows NT, a message "icon_name" to the winmod state works only the first time it is used. This message sets the icon on all SL-GMS windows.

Standard State Framework Standard State API

(B7912) G_MAX_MODELNAME constant in "gms_smsnew.h" provided; MAX_MODELNAME is obsolete Previously, SL-GMS documentation made reference to the limit G_MAX_MODELNAME for model names, but no such constant was available. This constant is now available in "gms_smsnew.h." Some users may have mistakenly used the MAX_MODELNAME constant instead. MAX_MODELNAME is now an alias for G_MAX_MODELNAME. Users should now use G_MAX_MODELNAME instead of MAX_MODELNAME in their code.

Standard Control Objects

INDIVIDUAL CONTROLS Text Edit Box Controls

(E7220) New renamed variable enables scroll bars The SL-GMS Text Display Box and Text Edit Box controls have been enhanced with a new renamed variable,"scrollbars," that

Version 6.2 - 26 May 2006 SL-GMS Release Notes 149 SL-GMS (v6.0e1)

can be used to enable scroll bars within the editing area. A value of 1 enables scroll bars and a value of 0 disables them.

(E6518) New renamed variables control line and character position within editing area The SL-GMS Text Display Box and Text Edit Box controls have been enhanced with two new renamed variables,"line_index" and "char_index," that can be used to control the line and character position within the editing area. For both variables, a value of 0 indicates the first line or character position and a value of -1 disables the feature.

(B7638) Multi-string display in Text Edit Box provided The SL-GMS multi-line Text controls, Text Edit Box and Text Display Box, can now have their display expression renamed to a constant string. In order to have this string display on multiple lines, a literal "\n" ("\" followed by "n") must be included in the string.

WINDOWS-SPECIFIC VERSION Scale Controls

(B0945) Changing visibility of Scale controls via dynamic variable no longer causes entire model to be redrawn Previously in SL-GMS, the Scale control had a problem whereby changing its visibility via a dynamic variable caused the entire model of which it was a part to be redrawn. This problem has been fixed.

150 SL-GMS Release Notes Version 6.2 - 26 May 2006 On-line Examples

On-line Examples

MFC Integration Examples myproject_mfc_sdi

(B7653) myproject_mfc applications correctly save and restore size and position of main windows Previous versions of SL-GMS MFC-based applications, myproject_mfc_sdi and myproject_mfc_mdi, did not correctly save and restore the size and position of their main windows between invocations. This problem has been fixed.

(B7472) "myproject_mfc_sdi" main window resize correctly Previously in myproject_mfc_sdi, if the Open option of the File Pull-Down Menu was selected, the main window sized correctly the first time only. This problem has been fixed so that it now reshapes to match the size of the new model each time it is opened.

(B7635) Resource leak no longer occurs in "myproject_mfc_sdi" Previously in myproject_mfc_sdi, a resource leak occurred. This problem has been fixed.

Active-X Component Examples GMSRUN ActiveX (gmsrun_ax)

(E7582) SL-GMSRun ActiveX Control example provided An SL-GMS ActiveX Control has been implemented and several example programs are now provided. The work/gmsrun_ax_vbdemo1/*demo2/*demo3 directories contain example programs. Further information about ActiveX Controls is provided in the SL-GMSRun ActiveX Control User's Guide.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 151 SL-GMS (v6.0e1)

Network Management Example

(E7930) Network application using Mapping Library provided A network application example using the SL-GMS Mapping Library has been added to the distribution. The "SL-Telecom Application" chapter of the SL-GMS Mapping Application User's Guide provides further information.

Mapping Library Functionality

(E5949) Nodes and connectors supported by SL-GMS SL-GMS now supports nodes and connectors. The following chapters in the SL-GMS Mapping Application User's Guide provide further information: "Overview of Icon Layers and Custom Data Structures," "Creating an Icon," "Adding Connectors to an Application," "Advanced Icon Handling," "Data Structures," and "Callbacks."

Core Functionality

GML

(B7654) Models produced using modopt with "-J" correctly convert to ".g" files Previously in SL-GMS, using modopt with -J could produce models that would not be correctly converted to ".g" files using gm1, or contained lines that would not display correctly. This problem has been fixed.

(B5105) "gm1" no longer fails when converting ".g" files containing Polylines with large numbers of points Previously in SL-GMS, converting ".g" files containing Polylines with a large number of points ( > 3000 ) caused gm1 to fail. This problem has been fixed.

152 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

Basic Functionality Filer Functions

(B5156) gm1/gm2 in Windows report line number of syntax errors Previously in SL-GMS, the Windows version of gm1 and gm2 did not report the line number of syntax errors. This problem has been fixed.

(B7448) USERWORD value in ".g" files can be negative Previously in SL-GMS, if the USERWORD value was negative (such as . userword -47), then SL-GML (or gm1/gm2) printed an error message such as: ERROR: "file.g", line 5: incorrect syntax Now SL-GML will accept a negative userword value. Note, however, that in a dump output, the negative value (-47) is represented as a hexadecimal value (e.g., 0xffffffd1), which can be taken as a different value. Primitive Functions

(B7583) Double-buffered objects contained by another double buffered object display correctly Previously in SL-GMS, when a double-buffered object was part of another double buffered object, it displayed incorrectly. For example, if a model was double-buffered and contained a circle that was also double-buffered, the circle would be in the wrong location. And because it was in the wrong location, the circle would be clipped by the model’s extent and might not be visible. This problem has been fixed.

(E3394) Flag provided that ensures correct redraw behavior of (E6607) Group objects A repair flag has been added to Group objects which, when set, will cause the entire group to be redrawn if one object in the group changes. Note that this flag does not eliminate the need for the batcherase flag. If erasing and redrawing an object in the group will cause an erasure hole, the batcherase flag must still be set to prevent this. A GML command (for ".g" models) has been added to set the repair flag.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 153 SL-GMS (v6.0e1)

[name] repairflag int An example model using the repair flag follows. mtran0 vis 1 detect 1 ballstr: model group . repairflag 1 . batcherase 1 fcolor 4 fstyle 1 finter 1 fdir 0 fpercent 100 ecolor 7 estyle 1 ewidth 1 string: line 22.5625 36.5973 73.4501 36.5973 ball: fcir2 23.9567 36.5973 22.5625 36.5973 . dynprop \ (x_position \ (= * \ (movex x_position))) endg endm

An API function has been added that allows an application program to set the repair flag.

int gmsRepairFlag(group, flag) idgroup; /* GMS group */

This function will set the repair flag for a group. The constants G_ON or G_OFF may be used to set the state of the flag. Note that this flag does not eliminate the need for the batcherase flag. If erasing and redrawing an object in the group will cause an erasure hole, the batcherase flag must still be set to prevent this.

154 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

Object Extents

(B7669) The right side of an object that has been mirrored and rotated is pickable Previously in SL-GMS, an object that had been mirrored and rotated could not always be selected by clicking its right side. This problem has been fixed.

X Workstations Event Handling

(E6592) Input from numeric keypad on UNIX supported (E3342) (E2248) Previously in SL-GMS, SL-GMS text objects ignored most keystrokes originating from the numeric keypad, since X reports such events using special Keysyms such as "XK_KP_4," "XK_KP_Multiply," "XK_KP_Enter," or "XK_KP_Left." Support for such keystrokes has now been added to X versions of SL-GMS by mapping such keystrokes to the equivalent character (e.g., "4" or "*") or Keysym (e.g., "XK_Return" or "XK_Left").

INTERNATIONALIZATION

(E7609) Non-western European language strings can be entered into SL-GMS text areas Strings of non-western European languages may now be entered into SL-GMS text areas. Limitations Because there is no language modifier for fonts in the "fontdef.dat" file, each font entered in "fontdef.dat" will be loaded for the highest priority condition it matches below. These conditions are listed from highest to lowest priority. 1. The font's character set is SYMBOL_CHARSET (a Symbol font). 2. The font's code page is equal to the startup input locale's default code page. (The startup input locale is the default

Version 6.2 - 26 May 2006 SL-GMS Release Notes 155 SL-GMS (v6.0e1)

input locale that is in effect when SL-GMS starts. The default input locale is set through Control Panel, Regional Settings, Input Locales.) 3. The font's character set is ANSI_CHARSET. Because of this, text may display differently if an SL-GMS application is run at different times with different default input locales defined.

GMS-XIM

(E7884) "fontdef.hpxim" added as example of multiple fixed-size fonts in HP-UX XIM The file demo/fonts/fontdef.hpxim has been added as an example of using multiple fixed-sized fonts in the HP-UX XIM environment. The default 13 fonts provided in the lib/fontdef.dat file are not scalable under HP-UX XIM, and the example fontdef.hpxim demonstrates a method of accessing multiple font sizes. More details are provided in the demo/fonts/README file, as well as in the "Text" chapter of the SL-GMS Reference Manual.

(E7558) "Over the spot" input method cursor positioning (E3795) implemented for SL-GMS R5XIM platforms Previously, the input method's cursor position always appeared in the upper left corner of the SL-GMS X window. This has been changed so that the input method cursor positioning now follows the "over the spot" style. The input method's cursor (where the pre-edit window appears) is now located at or near the position where the text is to be input into SL-GMS, that is, the location of the SL-GMS text cursor. Note that the default SL-GMS text cursor style has also been changed for R5XIM platforms from an "I-beam" to a caret pointer.

PORTS — OS DEPENDENCIES Windows NT Port

(B7610) Circles and sectors draw in correct position on Windows Previously in SL-GMS on Windows, the bottom and right sides of circles and sectors were off by one pixel. This problem has been fixed.

156 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

HP-UX Ports

(E7968) Hewlett-Packard MD.*xim CCOPTS macro expanded The demo directory Makefiles on internationalized HP platforms have been modified to include the ANSI-C -Ae flag. This enables compilation of code using wide characters. Digital UNIX Port

(B7964) Digital UNIX MD.* CCOPTS macro expanded An obsolete CC_XMOPTS option -Wf, -XNh2000 has been removed from the demo Makefiles on Digital UNIX platforms.

INSTALLATION UTILITIES InstallShield Utility

(E7941) File association names in Windows Registry improved Previously in SL-GMS, entries were added to the Windows Registry under: HKEY_CLASSES_ROOT\

for ".m1," ".m2," and ".g" files, associating them with key entries. Key values were previously created named: HKEY_CLASSES_ROOT\GMS.ASCII.Model HKEY_CLASSES_ROOT\GMS.M1.Model HKEY_CLASSES_ROOT\GMS.M2.Model

These entries have been changed to: HKEY_CLASSES_ROOT\GMS.Model.ASCII HKEY_CLASSES_ROOT\GMS.Model.M1 HKEY_CLASSES_ROOT\GMS.Model.M2

(B7649) The "GMS Command Prompt" shortcut works on Windows 95/98 Previously in SL-GMS, the PATH environment variable could exceed the environment space in the "GMS Command Prompt" shortcut DOS box. This occurred when there was a long PATH.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 157 SL-GMS (v6.0e1)

This problem has been fixed. The "GMS Command Prompt" shortcut now sets the initial environment space to 2048K. Registration Utility

(B7629) SL-GMS applications run under any version of SL-GMS SL-GMS applications running on Windows systems expect to find the same version of SL-GMS under which they were built. Previously in SL-GMS, an application exited if it could not find the version it expected. Now, the application will run under whichever version it finds (the latest one if more than one version is installed) and will issue an informational message to that effect.

LANGUAGE INTERFACES

(E7574) ADA interfaces updated for SL-GMS v6.0 Ada interfaces have been updated for SL-GMS v6.0.

CONVERSION UTILITIES DXF Conversion

(B3375) Conversion of AutoCAD ".dxf" files with multi-byte text supported The dxf2g conversion program now has the capability to handle multibyte character Japanese text strings. If the preprocessor definition R5XIM or WINNT_INT is set, the text string called out by the AutoCAD text entity is converted to a string composed of wide characters. Subsequent text manipulations are performed on the wide character version text string. Following the text manipulations, the text string is converted back to the multibyte version. No wide character string library functions are used because earlier versions of the Sun Solaris OS did not implement these functions. The method of encoding Japanese characters varies with the operating system. Windows NT uses the SJIS (Shift JIS Character Set) while some UNIX systems use a encoding scheme referred to as the EUC (Extended unicode) character set. The user therefore needs to be aware of which system was used to

158 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

encode the Japanese text in the ".dxf" file and use a system that recognizes the encoding scheme while converting the ".dxf" file.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 159 SL-GMS (v6.0e1)

160 SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMSDraw

SL-GMS (v6.0d1)

SL-GMSDraw

GMSDRAW_MFC (WINDOWS)

(B7518) Paste mode no longer causes gmsdraw_mfc to crash Previously in SL-GMS, moving an object with the arrow keys while pasting the object sometimes caused gmsdraw_mfc to crash. This problem has been fixed.

(B7458) Double redraw no longer occurs in Models with Controls Previously in SL-GMS, Models containing Controls were drawn twice when loaded into gmsdraw_mfc. This problem has been fixed.

(B7524) Model name in top-level banner displays correct Model name Previously in gmsdraw_mfc, the top-level banner did not always display the correct Model name. This problem has been fixed.

(B7477) SL logo icon persistent on title bar Previously in gmsdraw_mfc, the SL logo on the title bar of the document window was replaced with the default Microsoft logo after subsequent Models were loaded. This problem has been fixed. Further information is provided in (B6550) Windows and MFC applications display SL-GMS icon on page 169.

Edit Manager — Edit Property States Dyn Str Edit State

(B7520) Editing dynamic properties no longer causes changes in text strings to be lost Previously in SL-GMSDraw, if an object's dynamic properties were edited after a text string had been changed, the text string incorrectly reverted to its original value. This problem has been fixed.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 161 SL-GMS (v6.0d1)

Standard Control Objects

INDIVIDUAL CONTROLS Option Menu Controls

(B7553) Option Menu Controls no longer activate if arrow keys used In previous version of SL-GMS in the Controls Overview/Menus on-line example, entries in the Option Menu could be incorrectly activated when traversed with the keyboard arrow keys. This problem has been fixed. Users may now select menu items by using the arrow keys to traverse the entries, then pressing to activate the highlighted option.

On-line Examples

MYPROJECT COMPONENT/FRAMEWORK EXAMPLES Base Example — Simple (myproject_common)

(B7504) "myproject_common" on-line example available on UNIX The on-line example myproject_common has been added to the distribution for UNIX platforms. MFC Integration Examples myproject_mfc_mdi

(B7566) Tabbing between Controls no longer a problem Previously, moving from Control Object to Control Object using the Tab key did not work correctly in SL-GMS applications built using the Microsoft Foundation Classes (MFC). This problem has been fixed.

162 SL-GMS Release Notes Version 6.2 - 26 May 2006 On-line Examples

Windows Workstations Primitive Drawing Functions

(B7567) Pie sides no longer off by one pixel Previously in SL-GMS on Windows, the sides of a pie were off by one pixel. This problem has been fixed.

(B7544) Sectors with arcangle 0 no longer draw Previously in SL-GMS using the Windows native circle algorithm, the hardware implementation drew a full circle when given an arclength of 0. This problem has been fixed; now sectors with arcangle 0 do not draw.

(B7545) Sectors with 0 arclength no longer draw as full circles Previously in SL-GMS on Windows, sectors with an arclength of 0 (zero) drew as full circles. This problem has been fixed so that nothing is drawn for an arclength of 0.

(B7541) Pie sides no longer draw incorrectly on Windows 95 Previously in SL-GMS on Windows 95, the center of a Pie was off by one pixel, causing the Pie sides to draw incorrectly. This was most obvious with 90 degree sides, which should draw as straight lines. This problem has been fixed.

LANGUAGE INTERFACES C++

(B7543) include files modified for use with Solaris C++ The include files "smsmap.h" and "gms_smsnew.h" have been modified to avoid compilation errors when using C++ on Solaris. The prototypes for gmsStNameInvokeLS( ), gmsStNameStrMsgV( ), and gmsSTNameCreateLS( ) have been changed.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 163 SL-GMS (v6.0d1)

164 SL-GMS Release Notes Version 6.2 - 26 May 2006 On-line Examples

SL-GMS (v6.0c1)

On-line Examples

MOTIF Framework Examples myproject_motif

(E6296) "myproject_motif" on-line example added (E6576) A new on-line example, myproject_motif, has been added that shows how to construct a Motif application that incorporates SL-GMS Models into windows created by the Motif application. The example also shows how to use an external event loop. The SL-GMS Examples Manual provides further information. The myproject_motif application example has been structured to make use of the myproject_common example, as with all other component and framework examples.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 165 SL-GMS (v6.0b1)

SL-GMS (v6.0b1)

SL-GMSDraw gmsdraw_xm (MOTIF)

(E7422) Japanese and English Model files available for SL-GMSDraw on UNIX XIM version By default, SL-GMSDraw uses English menu options and Model files; however, Japanese Models are also distributed that allow for conversion of English Model files and menu options into Japanese. The steps for doing this are outlined below. 1. Rename files so that Japanese models/palettes are the default: cd work/gmsrun mv MODELS to MODELS_english mv MODELS_japanese to MODELS mv PALETTES to PALETTES_english mv PALETTES_japanese to PALETTES 2. Rename SL-GMSDraw menu file so that Japanese is the default: cd work/gmsdraw mv drawmenus.mnu to drawmenus_eng.mnu mv drawmenus_jap.mnu to drawmenus.mnu 3. Rename text string file so that Japanese is the default: cd lib mv strings_jap.loc to strings.loc 4. Edit text file so that Japanese is the default: vi gmsl10n.txt change "SECTION: Default" to "SECTION: English" change "SECTION: Japanese" to "SECTION: Default"

166 SL-GMS Release Notes Version 6.2 - 26 May 2006 Standard Control Objects

NOTE: The files "strings.loc" and "drawmenu.mnu" are distributed in both the lib and work/gmsdraw directories. The above instructions are based on standard operating procedures. Users having other copies of these files may need to rename them if they modify their LIBPATH, or launch gmsdraw_xm directly from either the lib or work/gmsdraw directory.

Standard Control Objects

WINDOWS-SPECIFIC VERSION

(B7475) Bitmap labels for Push Button Controls provided Previously in SL-GMS, only Mode Buttons could have bitmap labels (type G_PIXMAP) on Windows platforms. Bitmap labels may now be used for Push Button Controls as well. Note that bitmap labels for Push Buttons are not supported by gmsdraw_mfc; they may be used in gmsrun_nt and other run-time applications.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 167 SL-GMS (v6.0a1)

SL-GMS (v6.0a1)

SL-GMSDraw

GMSDRAW_MFC (WINDOWS)

(B6916) "PrintScrn" key in gmsdraw_mfc no longer affects Paste operations Previously in gmsdraw_mfc, if the PrintScrn key on the keyboard was selected, the Paste button on the Edit Pull-Down Menu became enabled even though there was nothing on the clipboard that gmsdraw_mfc could paste. This problem has been fixed.

MFC Framework Menus and Toolbars

(E6889) "Model" Pull-Down Menu added to Main Menu bar in gmsdraw_mfc A pull-down menu for Model properties has been added to the Main Menu bar in SL-GMSDraw. This menu allows users to modify Model attributes. The Model Pull-Down Menu options are documented in the SL-GMSDraw User’s Guide. Font Handling

(E7097) gmsdraw_mfc handles predefined fonts Three kinds of fonts are available in gmsdraw_mfc. • TrueType fonts are marked "TT" in the Default Text Properties dialog. The available styles are Bold, Italic, Underline, and Strikeout.

• SL-GMS predefined fonts can be safely used in cross platform Models. The available styles are Bold and Italic.

• Hershey fonts are marked as "Hs." No styles can be chosen for these fonts.

168 SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMSDraw

The work/fonts directory has been added to provide tools for creating machine-specific "fontdef.dat" files. The README file in that directory provides further information

(B6962) Maximum value for font size set for Windows The value of font height entered by the user in the Default Text Properties dialog is limited to the height of the Model. Despite this limitation, text objects can be scaled. Window Handling

(B6550) Windows and MFC applications display SL-GMS icon SL-GMS applications now display a distinctive "SL" icon by default, and application developers can display icons of choice in their applications. All SL-GMS applications now search for an icon file of a particular name in the current directory and in the SL-GMS library path. If the file is found, it is used to create the icon displayed when the application's windows are minimized. By default, the name used is "SL-GMS"; this behavior can be changed in your application by sending the message "icon_name" to an instance of the WinMod State. The SL-GMS Enhanced SMS User’s Guide provides further information. On Windows platforms, icon files are expected to be of type "." or ".bmp," and icon files will be searched for in that order. On Motif platforms, icon files are expected to be of type ".xpm" or ".xbm." and files will be searched for in that order. Further information is provided in (B7477) SL logo icon persistent on title bar on page 161.

(B5122) Scroll bars in gmsdraw_mfc enabled in crop mode Previously in gmsdraw_mfc, windows shrank and flashed out of control if scroll bars were used in crop mode. This problem has been fixed.

(B7203) Slider thumbs at high magnification levels in gmsdraw_mfc work correctly Previously in gmsdraw_mfc, scroll bar arrows sometimes did not function properly at high magnification levels. This problem has been fixed.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 169 SL-GMS (v6.0a1)

Other Functions

(B5737) Running "gmsdraw_mfc -" no longer a problem Previously, entering the command line options - or -f after invoking gmsdraw_mfc caused inconsistent behavior. As a result, these options have been disabled. However, the -f option does work if it is immediately followed by a filename (-f).

MINIDRAW_MFC (WINDOWS)

MFC Framework Classes/Resources

(B7010) "minidraw_message" has been obsoleted SL-GMS no longer supports the obsolete variable "minidraw_message." The "prompt_string" variable should be used instead. gmsdraw_xm (MOTIF) File Operations

(B6774) Name of new Model consistent across platforms Previously in gmsdraw_xm, the name used when a Model was first created (before the Model was named) was "unnamed_" followed by a number. The name now used is "unnamed" followed by a sequential number (e.g., "unnamed1," "unnamed2").

170 SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMSDraw

Top-Level Editor States Common Menus and ToolBars

(E7088) Ability to view ".g" file added to SL-GMSDraw In SL-GMSDraw, the View GML File option has been added to the File Pull-Down Menu. This option brings up a browser that enables users to select a ".g" file for viewing. Editor Top State

(E7017) "Merge into current model" button "sticky" The model_merge_sticky_flag variable has been added to the editor_top state to retain the current value of the model_merge_flag. In SL-GMSDraw, the model_merge_sticky_flag is set by default. This enables users to merge multiple Models in succession without having to click the Merge into current model check box after every merge. For custom editor developers, the model_merge_sticky_flag can be used to control this behavior. The variable model_merge_sticky_flag can be set by sending a model_merge_sticky_flag message to the editor_top state.

(B1737) Path name in file "Save As" operation provided In SL-GMSDraw, full path names can now be used when saving files by name. Editor User Preferences State

(B7018) System-independent dialog used in gmsdraw_mfc In gmsdraw_mfc, the User Preferences dialog is now implemented using a system independent dialog model, rather than the system-dependent dialog window.

(E7392) Option in "User Preferences" dialog renamed The New Model Window option of the User Preferences dialog (Options Pull-Down Menu) has been renamed Size Window to Model and, by default, is now set to OFF. By default, Models opened will display in the existing window.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 171 SL-GMS (v6.0a1)

(E7393) Behavior of "Size Window to Model" mode changed The behavior when the Size Window to Model option in the User Preferences dialog is OFF has been modified so that it always creates a window of the maximum window dimensions and sets the "view_wc_extent" to 72 x 54. If the Model being viewed falls outside that range, then the "view_wc_extent" is set to 100 x 75 (for compatibility with Models built using SL-DRAW2). Clipboard State

(B3270) Device-dependent bitmaps no longer copied to Clipboard Because device-dependent bitmaps rely upon the SL-GMS color palette, they are no longer supported. Only device-independent bitmaps (DIBs) will be copied to the Clipboard. Export Bitmap State

(E6281) Standard file browser for bitmap exportation provided A standard file browser is now provided for the export of bitmap images from SL-GMSDraw. Users may now specify the directory in which bitmaps are saved, as well as specify file names. For custom editor developers, the "export_bitmap_browser" method is now available.

(B7386) "Export Bitmap" option restricted to onscreen windows Previously in SL-GMSDraw, exported bitmaps contained garbage characters if the window were offscreen. Now, the Export Bitmap option does not operate if the window is offscreen.

Edit Plane State Background Object Handling

(E7396) "New with Background" menu option added to SL-GMSDraw An additional menu option has been provided in SL-GMSDraw to make explicit the creation of a background rectangle in a new Model. The existing New option of the File Pull-Down Menu creates a completely empty Model; the New with Background option creates a Model containing one filled "background"

172 SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMSDraw

rectangle, using the default dimensions and attributes set in the Model Properties dialog.

(E7381) Handling of background object as Model property improved In SL-GMSDraw, the "Background Flag" is no longer used to control the existence of a "background rectangle"; rather, its function is restricted solely to controlling the erasure of dynamic objects in the "background" color, that is, the color of the first object in the Model.

(E7020) background_color message in editplane state provided The background color of the edit window in SL-GMSDraw can be configured by using the background_color_message in a start-up file. The background_color message sets the background_color of the current edit Model window via the edit WinModState. It also sets this color in the editplane_winmodstate_exemplar so that future edit winmodstates will use this color as the background color for the edit window. Negative colors will set the background color to the system default color. On X windows systems, this will take effect only when the next edit window is created. The background_color message can also be sent to any particular winmodstate to change the background color of its workstation. The default value is color 0 for upward compatibility.

Edit Manager — Control States Edit Manager State

(B4071) Default point mode changed from center mode to point mode Previously in SL-GMSDraw, the default point mode was center mode. The default point mode has been changed to point mode. Edit Selection State (Interaction State)

(B6873) Default pick_aperture setting enlarged The default pick_aperture setting in SL-GMSDraw has been enlarged to be 1.5 percent of the screen.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 173 SL-GMS (v6.0a1)

Select By Property State

(E6124) Select by Name / Select by Properties functionality enhanced Two separate dialogs, Select by Name and Select by Properties, are now available in SL-GMSDraw. They both accept wild card characters. The Select by Properties dialog also presents other options: color, type, text color, SubModel, dynamics, user word, user data, and renamed variables. The "select_by_name" and "add_flag" methods remain for upward compatibility, but are considered obsolete and do not support full wild card functionality.

(B6516) "Select by Name" dialog no longer selects Model Previously in SL-GMSDraw, users were able to select Models through the Select by Name dialog. This is no longer possible. Model properties can be modified by using the Model Properties dialog.

(E6973) "Select by Name" dialog in MFC and Motif have same functionality In gmsdraw_mfc, the Select by Name dialog now has the same functionality as that of the Motif Select by Name dialog.

(E6974) "Select by Properties" dialog added for SL-GMSDraw on Windows The Select by Properties option has been added to the Edit Pull-Down Menu in gmsdraw_mfc. The functionality is the same as that of the Motif Select by Properties option.

(E7201) "Select by Properties" dialog uses focus object The Select By Properties dialog now uses the "focus" object, instead of the first object on the select list, when it searches for objects that match by specified attributes. Enter Point State

(E6122) "Enter Point" dialog for point selection provided In gmsdraw_mfc, the Enter Point dialog is now provided in the Point Pull-Down Menu to enable users to select a point. The default dialog accepts a valid double pair as entry.

174 SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMSDraw

(E6975) "Enter Point" MFC dialog implemented as system-independent dialog In gmsdraw_mfc, the Enter Point dialog is now implemented as a system-independent dialog, rather than an MFC-dependent dialog. History State

(B7445) Changes in modified external SubModels reflected in SL-GMSDraw Previously in SL-GMSDraw, the Editor continued to use versions of SubModels as they were originally loaded, disregarding whether or not the SubModels had been modified. This problem has been fixed.

Edit Manager — Object Create States Bitmap Create State

(B3290) SL-GMSDraw creates bitmaps with ".xwd" extension (Motif) and ".bmp" extension (Windows) SL-GMSDraw now creates bitmaps with ".xwd" extensions on Motif and ".bmp" extensions on Windows. The appropriate extension is appended to the filename. Bitmaps with the previously used ".i" extension must be renamed to ".bmp" or ".xwd" before they can be imported. Models with instances of bitmaps with the ".i" extension will load correctly without renaming the bitmap. Text/TextRect State

(B3179) Western European characters supported Previously in SL-GMSDraw, extended ASCII European characters were incorrectly displayed. This problem has been fixed. Move State

(E5943) "Move" dialog in SL-GMSDraw provided The Move dialog is now provided in the Object Pull-Down Menu to enable users to move selected objects in an absolute (move to

Version 6.2 - 26 May 2006 SL-GMS Release Notes 175 SL-GMS (v6.0a1)

point) or relative (move by amount) form. The default dialog accepts a valid double pair as entry. Scale State

(E5944) "Scale" dialog in SL-GMSDraw provided (E7015) The Scale dialog is now provided in the Object Pull-Down Menu to enable users to scale the selected object or Group of objects by entering a double pair, two doubles, or strings for horizontal or vertical values. A check box is also provided in the dialog for proportional scaling. Previous versions of SL-GMSDraw on Windows had a system-dependent MFC scale dialog. This has been replaced by a system-independent scale dialog. Rotate State

(E5945) "Rotate" dialog in SL-GMSDraw provided (E7015) The Rotate dialog is now provided in the Object Pull-Down Menu. This dialog enables users to rotate selected objects to a desired angle by either moving the scale bar (provided in the dialog) or entering a double or a string value. Previous versions of SL-GMSDraw on Windows had a system-dependent MFC rotate dialog. This has been replaced by a system-independent rotate dialog. Reference Point State

(E7288) Option added to allow Reference Points to display or be hidden In SL-GMSDraw, the Show Reference Points option of the Point Pull-Down Menu has been added. This option can either display or hide reference points on currently-selected objects.

176 SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMSDraw

Special Interface States Import Bitmap Interface State

(E1616) SL-GMSDraw uses "Available Bitmaps" window to select bitmap name for import In SL-GMSDraw, the list of available bitmaps for selection is now provided in the Available Bitmaps window. For custom editor developers, the "import_bitmap_list_window" method is used to invoke the bitmap name list dialog.

(E6784) "Available Bitmaps" window lists all bitmaps found in library paths In SL-GMSDraw, the Available Bitmaps window has been enhanced so that it lists all bitmaps found in any library paths currently active. SubModel Interface State

(E6495) "Available Submodels" window lists local Models first Previously in SL-GMSDraw, local Models appeared at the end of the list in the Available Submodels window. Local Models now display at the beginning of the list.

(B6111) Changes to working directory reflected in "Available Submodels" window Previously in gmsdraw_xm, changes to the working directory were not reflected in the Available Submodels window. This problem has been fixed.

(B7344) "Available Submodels" window changed to remove current Model name from SubModel list The Available SubModels window has been changed to remove the name of the current edit Model from the list of SubModels. This is to prevent the possibility that a user could recursively instance the Model being edited.

(E4088) SubModel file name browser modified SubModel selection is now done through the fdnbrowser state and SubModel Name List state. For custom editor developers, the

Version 6.2 - 26 May 2006 SL-GMS Release Notes 177 SL-GMS (v6.0a1)

"open_submodel_browser" method may be used to invoke the SubModel file name browser.

Edit Property States Model Property State

(B6109) New options added to enable editing Model’s Userdata, Userword, DynProp, Flags Several new menu options have been added to the Model Pull-Down Menu that permit users to edit the Model's Userdata, Userword, DynProp, and Flags. The SL-GMSDraw Reference Manual provides further information about these options.

(E0159) Turning Background Flag ON will not remove first object In SL-GMSDraw, the "Background Flag" checkbox in the Model Properties dialog has been changed to read "Erase in Background Color." This check box has no effect on the background object (first object in the Model); it affects only the color in which dynamic objects are erased.

(E6743) Model Property State modified to edit first object in Model In SL-GMSDraw, the Model Properties dialog has been changed so that users can conveniently set the fill color, detectability, size, and anchor point for the first object in the Model (the background object).

(B7149) Double-buffered SubModel instances no longer redraw incorrectly when moved Previously in SL-GMSDraw, instances of double-buffered SubModels did not redraw correctly when moved. This problem has been fixed. Object Property MFC Dialog Windows

(B6012) Multi-line text displays correctly in "Object Text" dialog Previously in SL-GMSDraw, multi-line text displayed incorrectly in the Object Text dialog. This problem has been fixed.

178 SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMSDraw

Default (GISMO) Property State

(B6625) Undo/redo stack reflects current operation Previously in SL-GMSDraw, when unfilling an object or opening a polygon, the names of the operations on the undo/redo stack did not properly reflect the operation being performed. This problem has been fixed. Default Object Property MFC Dialog Windows

(B6719) Default Text Properties dialog fixed to show default properties Previously in gmsdraw_mfc, text properties in the Default Graphic Properties dialog were taken from the selected text objects. This dialog now uses the default properties. User interface has been simplified in that only one list box is used for raster and Hershey fonts. Font Selection and Hershey Font Size dialogs have been deleted, and their controls included in the Default Graphic Properties dialog.

(E6958) Default Edge Properties dialog provides more line widths The Default Edge Properties dialog has been enhanced to provide more line widths.

(E7150) "Default Graphic Properties" dialog enhanced In gmsdraw_mfc, an edit box has been added to the Default Graphic Properties dialog to enable users to edit the default color index. In addition, the size of the entries in the palette has changed. If the system has only 32 colors installed, the palette will be shown in an 8 x 4 grid. If there are more than 32 colors, the palette will contain a scroll bar, and will show the color entries in a six-column format. Renamed Str Edit State

(E6500) SL-GMSDraw "Object Renamed Variables" dialog allows certain renamed variables to be "hidden" from users The SL-GMSDraw Editor allows certain renamed variables to be "hidden" from the user when using the Object Renamed Variables dialog to edit a submodel. Variables are hidden

Version 6.2 - 26 May 2006 SL-GMS Release Notes 179 SL-GMS (v6.0a1)

because they are used internally by the submodel or by SL-GMS and the user should not be allowed to change them. SL-GMSDraw will hide renamed variables if their name begins with a special prefix. By default this prefix is "__" (double underscore). This prefix may be changed by sending the message "hidden_var_prefix" and the new prefix string to the RenamedVariablesState. This could be done on a per-invocation basis by specifying an initialization file on the SL-GMSDraw command line. For example, to set the hidden-variable prefix to "++", put the message "renvarst hidden_var_prefix ++" in a file (e.g., "hiddenvar") and invoke gmsdraw_mfc or gmsdraw_xm with the parameter "-fhiddenvar."

(E7268) "Object Renamed Variables" dialog improved The user interface in the Object Renamed Variables dialog has been improved. When a particular renamed variable has been selected and has been edited in the Text Edit Box, hitting NEWLINE will cause validation of the line, placing it back into the list box and returning keyboard focus to the list box. This allows users to select another line using the arrow keys or the mouse. Hitting NEWLINE while focus is in the list box causes selection of the currently highlighted line, permitting it to be edited. This means that several renamed variables can be edited using only the keyboard for traversal and selection.

Construction Tools States Grid Manager

(B6497) Grid attributes save correctly in resource file In previous version of SL-GMSDraw, the grid attributes were not saved correctly in the resource file. This problem has been fixed.

(E7390) Grid draws on top of all SL-GMS graphics objects In SL-GMSDraw, the grid now always draws on top of all SL-GMS graphics objects. However, it does not draw on top of Controls.

180 SL-GMS Release Notes Version 6.2 - 26 May 2006 SL-GMSDraw

Grid Manager Dialog Model

(E7079) "Grid Options" dialog modified In gmsdraw_mfc, all the push buttons in the Grid Options dialog have been changed to mode buttons and re-ordered in the ".g" file. Grid MFC Dialog Window

(E6794) "Grid Options" MFC dialog modeless In gmsdraw_mfc, the Grid Options dialog is now modeless.

Run Manager State (Preview)

(B6057) Resized Model window no longer reverts to original size when previewing Previously in gmsdraw_mfc, if the Model window being edited was resized and Preview then activated using the Start button, the window did not remain in its resized state. This problem has been fixed.

(E6243) Model is not reloaded when previewing When starting Preview mode, the Model is not loaded again. Preview assumes the Model is saved and uses the Model as is.

(B6250) Preview can be performed on "new" Model Previously in gmsdraw_mfc, a crash occurred if Preview was performed on a "new" Model. This problem has been fixed.

(B7292) Save operation in "Edit Data File" no longer causes working Model to preview if Preview mode is off Previously in SL-GMSDraw, the "Save" operation in the Edit Data File dialog caused the working Model to preview even if Preview mode was off. Now, after a ".dat" file is edited in SL-GMSDraw, the "Save" operation does not affect the Model unless the user is in Preview mode. In Preview mode, it will terminate preview and then restart it, essentially reloading the ".dat" file from scratch.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 181 SL-GMS (v6.0a1)

Dat File Edit State

(B6249) "Edit Data File" dialog updates when Model is changed Previously in SL-GMSDraw, when the Edit Data File dialog was opened and the Model was changed, the Edit Data File dialog did not update to reflect the associated ".dat" file. This problem has been fixed.

(B6538) SL-GMSDraw ".dat" files can be saved to disk using file directory browser In SL-GMSDraw, ".dat" files can now be saved to disk using a file directory browser.

Enhanced SMS

MFC GMS Common Classes (WINDOWS)

(E6507) SL-GMS MFC applications store window geometry gmsdraw_mfc now remembers the placement and size of its main window across invocations. This information is stored in the Windows Registry under: HKEY_CURRENT_USER\Software \SL Corporation\SL-GMS\gmsdraw_mfc It also stores information about whether or not the document window is maximized.

Top-Level States Standard Top State

(E6997) "change_directory_browser" method provided for all applications The "change_directory_browser" method has been added to the Standard Top State. This method brings up a browser window from which users can change directories.

182 SL-GMS Release Notes Version 6.2 - 26 May 2006 Enhanced SMS

Model State (ModelState) Model Extent Handling

(B6323) Empty Groups, FillGroups, and ModInsts freed when Model is loaded Whenever a Model is loaded into SL-GMSDraw or any SL-GMS application using the standard WinModState or a ModelState, the Model is searched to determine the presence of any empty Groups, FillGroups, or Model Instances. If present, these objects are freed. If empty Groups are utilized, the "empty_group_free_flag," a new attribute of the ModelState, can be set to override this automatic behavior. The "empty_group_free_flag" attribute normally defaults to "1," meaning that empty Groups, FillGroups, and Model Instances are freed. If the attribute is turned off, these objects are not be freed.

View Manager State Zoom/Pan Behavior

(B7444) Runaway zoom for continuous zoom/pan operations no longer occurs Previously in SL-GMS, a problem occurred in which continuous zoom operations did not terminate if the mouse was released outside of the window. This problem has been fixed. Continuous zooming will remain active as long as the mouse button is held down and will be terminated as soon as the mouse is released, regardless of mouse position on the screen.

Run Manager State

(E6245) Text edit box added to "Preview Options" dialog The Preview Options dialog in SL-GMSDraw and SL-GMSRUN now contains a text edit box, in which timer values can be changed.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 183 SL-GMS (v6.0a1)

(E6886) SL-GMSRUN / SL-GMSDraw "Run Options" dialog updated The Preview window in SL-GMSDraw and the Run Options window in SL-GMSRUN have been changed to read "Update Period" instead of "Timer Period." In addition, the Run Options dialog, by inclusion of a Pause button, has been made identical to the Preview window.

(B7461) Expose events no longer cause disappearance of objects in a Group Previously in SL-GMS, double-buffered objects in a Group sometimes disappeared when another window exposed or clipped the double-buffered Group. This problem has been fixed. Variable Handling

(E6896) ".dat" file selection window added to SL-GMSDraw In the Edit Data File dialog in SL-GMSDraw, the Open File button now invokes a file selection window. When a new ".dat" file is selected, the current ".dat" file is deactivated, and the new one becomes active.

PostScript Print Manager (PsPrintMgrState)

(E6010) File Name Browser added for selecting PostScript output file directory When outputting PostScript files to disk, users can now change directories through use of a file browser.

GMSRUN: File/Directory Name Browser States File / Directory Name Browser State

(E6640) System-independent filename and directory browser provided A filename and directory browser have been provided for use in SMSNEW libraries. The "change_directory_browser" method has been added to StandardTop so that any SL-GMS application can bring up a directory browser. The "open_model_browser"

184 SL-GMS Release Notes Version 6.2 - 26 May 2006 Standard Control Objects

method has been added to StandardTop so that any SL-GMS application can bring up a Model file name browser.

(B5958) SL-GMSDraw invokes system-independent file name and directory browsers SL-GMSDraw now uses the system-independent directory browser and the system-independent Model file name browser.

WINDOWS-SPECIFIC VERSION

(B6878) Leakage of text font handle when font size reaches maximum no longer occurs Previously in gmsdraw_mfc, zooming or panning Models containing extremely large text sometimes caused memory leakage. This problem has been fixed. Display State

(E6769) "default_font_name" method added for Controls Users can now specify a default font to be used by SL-GMS Controls in their applications. Note that this font may be overridden by particular Controls that allow font specification. To specify a default font, send the message "default_font_name" to an instance of the Display State. The SL-GMS Control Objects Reference Manual provides further information about default font specification.

Standard Control Objects

SL-GMSDraw Edit Functionality Basic Editing Operations

(B6887) Orphan Controls no longer created in SL-GMSDraw when changing renamed variables of SubModels containing Controls Previously in SL-GMSDraw, improper widget cleanup occurred when changing renamed strings of SubModels that contained

Version 6.2 - 26 May 2006 SL-GMS Release Notes 185 SL-GMS (v6.0a1)

Controls. This problem has been fixed. SubModels containing controls will now behave properly using the renamed variables operation.

(B6761) Stacking order of overlapping Controls can be changed using Front / Back functions When editing a Model containing SL-GMS Controls, users may now change the stacking order (Z-order) of overlapping Controls using the Front/Back functions and the Order by Selection option of the Edit Pull-Down Menu.

(B6762) Changing renamed variables on Controls no longer changes order Previously in SL-GMSDraw, when renamed variables were changed on a Control Object, the stacking order (Z-order) was changed so that it was placed in front of all other Controls in the Model. This problem has been fixed.

(B7384) Cloning Groups containing Controls no longer a problem Previously in SL-GMSDraw, if a Group containing a Control Object was cloned, the Control would be invisible in the new Group. This problem has been fixed.

SL-GMSRUN / APP Run-Time Functionality

(B7096) Native Control Object font sized based on display size Previously in SL-GMS, the font size used with Controls was a constant (fixed) size on Windows platforms. This could lead to some problems when used on low resolution (e.g., laptop) or very high resolution displays. Font size is now determined automatically by default based upon the resolution of the display. Control Resizing Behavior

(B6263) Resizing windows with Controls no longer a problem Previously in SL-GMSDraw, if a Model containing Controls was displayed with the "resize_flag" OFF (0) and then the window was resized, closed, and brought up again, some of the Controls appeared to be a different size. This problem has been fixed.

186 SL-GMS Release Notes Version 6.2 - 26 May 2006 Standard Control Objects

View Manager — Zoom/Pan Behavior

(B6264) Zooming over Controls no longer a problem Previously in SL-GMS, zooming over Controls sometimes failed. This problem has been fixed. Controls as Primitive Objects

(B7123) Visibility of Controls can be set The visibility of an SL-GMS Control Object cannot be controlled with the function gmsVis( ), as can an ordinary SL-GMS objects. Instead, the function g_reprocess_controls_in_obj_or_list( id obj_or_list, int vis ) should be used.

(E6287) "font_index" attribute for all Text Controls provided Users may now specify the font to be used by an instance of the following controls: Text List Box, Text Display, Text Display Box, and Text Edit Box. To specify a font, use the new Renamed Variable "font_index." The SL-GMS Control Objects Reference Manual provides further information about font specification.

INDIVIDUAL CONTROLS Text Display Controls

(B6271) Vertical resizing on multi-line Text Display Controls permitted Text Display and Text Display Box Controls will now vertically resize if they are multi-line and the "Control Resize Flag" is OFF for the Model containing them. A Text Display (Box) Control Object is considered multi-line if the initial text has an embedded NEWLINE. Scroll Bar Controls

(E6767) "c1scrollbar" Control implemented The SL-GMS Control Object "Scrollbar" has been added. The Controls on-line example and the SL-GMS Control Objects Reference Manual provide details on its use.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 187 SL-GMS (v6.0a1)

(E7202) Scroll bar slider / thumb size change dynamically The renamed variable "slider_size" has been added to the standard Scroll bar control ("c1scrollbar.m1"). Users may use this variable to control the size of the scroll bar's slider. The variable takes integer values in the range 1 to (max_value - min_value).

WINDOWS-SPECIFIC VERSION ALL CONTROLS

(B6509) Controls no longer display text in different font from that (B6287) of MFC dialogs (B6769) All SL-GMS Controls on Windows platforms having text labels now use the standard Windows menu and dialog font, SM Sans Serif, by default. This default can be overridden in individual Controls by using the "font_index" attribute. Button Controls

(B6861) Pixmap labels for Push buttons work correctly on Windows Previously in SL-GMS on Windows platforms, Push Button Controls were documented as supporting labels of type PIXMAP, but this did not work on Windows platforms. This problem has been fixed. Mode Button Controls

(B6891) Foreground text color for mode buttons updates Previously in SL-GMS, Mode Button Controls, when given a Foreground Color attribute, did not display this attribute in Preview mode. This problem has been fixed. Text List Box Controls

(B7039) Double-clicking event on Text List Box no longer a problem Previously in SL-GMS, double-clicking an event on a Text List Box processed incorrectly. This problem has been fixed. The

188 SL-GMS Release Notes Version 6.2 - 26 May 2006 On-line Examples

double-click event will now behave as if it were two single clicks: two messages will be sent.

(B7327) Clicking NEWLINE in Text List Box forces line selection Previously in SL-GMS, clicking NEWLINE in a Text List Box did not force line selection. This problem has been fixed. Scale Controls

(E6766) "c1scale" Control uses Windows Trackbar The SL-GMS Scale Control on Windows platforms has been modified to use the Windows Trackbar control instead of the scroll bar. This modifies the behavior somewhat, making it behave more in line with the Motif Scale Control Object.

(B7085) Minimum height set for "c1scale" Control On Windows and Motif, the Scale Control Object cannot be resized vertically below a minimum height that accommodates the size of the scale slider.

MOTIF-SPECIFIC VERSION Text List Box Controls

(B6278) "selected_index" recognizes -1 Previously in SL-GMS, in a Text List Box Control on Motif platforms, the current selection was not cleared when the "selected_index" value was set to -1. This problem has been fixed.

On-line Examples myproject

(E7013) "-g" option eliminated and "-u" option added for all myproject (E7011) on-line examples The -g option has been eliminated from all myproject on-line examples. The -u option has been added to set the update period in milliseconds.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 189 SL-GMS (v6.0a1)

MFC Integration Examples

(E7012) "myproject_mfc_sdi" and "myproject_mfc_mdi" improved Initialization of an MFC-based SL-GMS application has been simplified. The mfc_common classes have been modified so that there is no need for a "gmsmain.c" module or a "hook" function. The SL-GMS Examples Manual provides further information.

(E6577) "myproject_mfc_sdi" and "myproject_mfc_mdi" restructured (E6578) to use myproject_common The myproject_mfc_sdi and myproject_mfc_mdi on-line examples have been modified so that they reference the Top State and the User Datasource modules from the "myproject_common" directory. myproject_mfc_mdi

(B6979) "close" buttons function properly in "myproject_mfc_mdi" The myproject_mfc_mdi on-line example now supports "close" buttons in Models and the message "close_window" is sent to the WinModState.

Windows Framework Examples myproject_win — Win32 Example

(E7329) "myproject_win" on-line example added The on-line example program myproject_win demonstrates how a simple Windows application (using only Win32 calls) can create a window and display SL-GMS graphics in that window. This program is similar to the example program myproject_motif, that demonstrates how a simple X-Windows Motif application can create a window and display SL-GMS graphics in that window. In addition to demonstrating the use of SL-GMS with user-created windows, both programs demonstrate the use of event-handling loops in SL-GMS applications, and include examples of simple and complex event loops in the program source. The SL-GMS Examples Manual provides further information.

190 SL-GMS Release Notes Version 6.2 - 26 May 2006 On-line Examples

Active-X Component Examples myproject_ax_vb — ActiveX Visual Basic Example

(E6554) "myproject_ax_vb" example enhanced The myproject_ax_vb application example has been significantly enhanced to include more Models and zoomin/zoomout buttons.

Java / Java Bean Integration Examples myproject_jb

(E6065) "myproject_jb" example added for Windows platforms A Java Bean example has been added to demonstrate the use of a native SL-GMS Java Bean in a browser or Java Application. The example in work/myproject_jb, the corresponding README, and the detailed description in the SL-GMS Examples Manual provide further information.

GMSDEMO

(B6299) Closing application windows in SL-GMSDemo no longer a problem In gmsdemo_nt, it is no longer possible to close individual application windows and prevent the subsequent opening of another application window by use of the window menu. Dynamic Actions

(B6438) Models in dynactions on-line example improved The dynactions on-line example now makes use of the "stack_model" method that allows the Models to be run from SL_GMSRUN or SL-GMSDraw using Preview mode.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 191 SL-GMS (v6.0a1)

ATMS

(E6983) Improved SMSMAP library provided An updated version of the SMSMAP library is included in SL-GMS v6.0. The SL-GMS Mapping Application User’s Guide provides a description of the new library.

SL-DRAW2 Bitmaps

(E5218) Bitmaps having ".bmp" extensions (Windows) and ".xwd" extensions (Motif) can be created and read by SL-DRAW2 and SL-DRAW SL-DRAW2 and SL-DRAW have been modified to use the ".bmp" extension on Windows and ".xwd" extension on Motif for the creation and loading of bitmaps. Bitmaps with the previously used ".i" extension must be renamed to ".bmp" or ".xwd" before they can be loaded. Dyn Edit / Dyn Enter

(B6074) Unconditional action batcherase added to Enter Dyn in SL-DRAW2 Previously in SL-GMS, entering an unconditional batcherase action in the Dyn Enter dialog resulted in an error. This problem has been fixed. An unconditional batcherase action can now be entered in the dialog accessed through the Dyn Enter option of the Dyn Pull-Down Menu in SL-DRAW2.

(B4777) 16K (16384) bytes of user data can be stored on SL-GMS (B7108) objects Previously in SL-GMS, there was a 4K (4096 byte) limit to the amount of user data that could be stored on an SL-GMS object. This limit has been increased to 16K (16,384 bytes).

192 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

Core Functionality

Basic Functionality Filer Functions

(B6147) ".m2" files can be read and written on SGI platforms In SL-GMS version 5.4, the m2filer failed on SGI platforms. This problem has been fixed.

(E5044) ".m1" files on Sun and Windows platforms compatible ".m1" files containing no text are now portable across Sun and Windows platforms. Models containing ASCII text and models containing text conforming to the Windows ANSI/ISO 8859-1 character sets are portable to environments with equivalent character sets. Models containing text with other character encoding (such as models created using Asian versions of SL-GMS) are not portable.

(B3118) ".m2" files can be read and written on Digital UNIX platforms ".m2" files are now supported on Dec-Alpha Digital UNIX platforms. Filer Utility Programs

(B7225) "gm1" no longer exits if it cannot convert a model Previously in SL-GMS on Windows platforms, "gm1.exe" exited when processing a list of Models if it encountered a Model that it could not convert. Now, "gm1.exe" prints an error message when it encounters a ".g" file that it cannot process and then continues to process the remaining files in the list. Low-Level Functions

(B6865) Macros for gmsObjIsClassName( ) in gmscodes.h provided Macros for all strings used by gmsObjIsClassName( ) (e.g., "G_Line_30") are now defined in "gmscodes.h."In previous versions, users had to specify the literal string for the class: if (gmsObjIsClassName(object, "G_Circ_30")){

Version 6.2 - 26 May 2006 SL-GMS Release Notes 193 SL-GMS (v6.0a1)

... }

The following macros can be used instead.

if (gmsObjIsClassName(object, G_CIRC_NAME)){ ... } Since literal class names may be subject to change, it is recommended that the macros be used instead to ensure upward compatibility. The list of macros for the classes are as follows: #define G_SYS_NAME "G_Sys_31" #define G_WORKST_NAME "Workst" #define G_COLDEF_NAME "ColDef" #define G_PRIM_NAME "Prim" #define G_MODEL_NAME "Model" #define G_PARTPRIM_NAME "PartPrim" #define G_GROUP_NAME "Group" #define G_FACE_NAME "Face" #define G_COMPEDGE_NAME "CompEdge" #define G_POINTPRIM_NAME "PointPrim" #define G_MARKER_NAME "Marker" #define G_FILLEDGE_NAME "G_FillEdge_30" #define G_RECT_NAME "G_Rect_30" #define G_CIRC_NAME "G_Circ_30" #define G_SECT_NAME "G_Sect_30" #define G_LINE_NAME "G_Line_30" #define G_SPLINE_NAME "G_Spline_30" #define G_PIE_NAME "G_Pie_30" #define G_TRECT_NAME "G_TRect_30" #define G_TEXT_NAME "Text" #define G_MODINST_NAME "ModInst" #define G_BITMAP_NAME "Bitmap" #define G_MASKEDOBJ_NAME "MaskedObj" #define G_GRID_NAME "Grid" #define G_GRAPHPRIM_NAME "G_GraphPrim_30" #define G_GRAPHAXIS_NAME "G_GraphAxis_30" #define G_GRAPHTRACE_NAME "G_GraphTrace_30" #define G_VIEW_NAME "G_View_31" #define G_FILLGROUP_NAME "FillGroup" #define G_ALOOP_NAME "G_ActionLoop_30"

194 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

#define G_TEXTE_NAME "TextE" #define G_TRECTE_NAME "G_TRectE" #define G_KEYBIND_NAME "G_KeyBind" #define G_STRINGOBJ_NAME "G_StringObj" Views/Zoom/Pan/Redraw

(E7447) Functions added to SL-GMS Function Library Two functions have been added to the SL- GMS Function Library. They are documented below.

int /*+*/ gmsVuLocCaptureMode (view, mode) /*+* set/clear locator capture mode */ idG_VIEW view; /*+* for the view */ int mode; /***/

The gmsVuLocCaptureMode( ) function sets or clears the locator capture mode for a View. When the argument "mode" is set to 1, locator capture is enabled on the View. When the argument "mode" is set to 0, locator capture is disabled on the View. By default, locator capture is disabled on View objects. Locator capture mode causes locator press-drag-release interactions to be grouped together and delivered to a single View, even if the locator is moved outside of the window before the button is released. When locator capture mode is set and a locator press event occurs in the View, all subsequent locator events are delivered to the View until a locator release event occurs. The loc_motion and loc_release events are delivered to the View even if the locator is outside of the window in which the loc_press event occurred.

int /*+*/ gmsQVuLocCaptureMode (view) /*+* query loc capture mode for view */ idG_VIEW view; /***/

The gmsQVuLocCaptureMode( ) function returns the locator capture mode for a View.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 195 SL-GMS (v6.0a1)

(B6871) Objects in background view can be selected if foreground view is non-detectable In applications with multiple overlapping views, objects in a background view can now be selected if foreground views are set to be non-detectable. Groups

(B6706) Fill color errors in Model conversion of circles no longer occur Previously in SL-GMS, when converting a Model from ASCII *.g representation to the binary *.m1 format and then back to ASCII, errors occurred in the fill color value of a circle if contained in a Group. This problem has been fixed. Bitmaps/Rasterfiles

(E7101) Intercept function for bitmaps and other files provided A program that uses SL-GMS can now explicitly provide SL-GMS with the location of color definition, font definition, bitmap, and Model files.

int gmsSetFindFileFctn (funct, base_filter, extension_filter) char *(*funct)(); char *base_filter; char *extension_filter;

The gmsSetFindFileFctn( ) installs a user-defined find file function. A find file function is used to enhance, or override, the path and file name used by SL-GMS when reading color definition, font definition, Model, and bitmap data. This capability allows SL-GMS to read information from directories that are not in the library search path, or to read data from a temporary file that contains information retrieved from a database or network connection. funct specifies the address of the user-defined find file function. base_filter specifies a list of base file names separated by the pipe character (|). The user-defined find file function is called when SL-GMS needs data from a file with a base name that matches

196 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

one in the list. If a matching file is found from the contents of base_filter, the extension_filter is ignored. extension_filter specifies a list of file extensions separated by periods. The user-defined find file function is called when SL-GMS needs data from a file with an extension that matches one in the list. The user-defined find file function is deactivated by calling gmsSetFindFileFctn( ) with all three arguments set to NULL. The user-defined find file function must accept three character pointer arguments and return a character pointer, as shown below.

char * myfunct (base_name, ext, pathname) char *base_name; char *ext; char *pathname; { }

Where base_name is the base file name of the file from which SL-GMS needs data, ext is the file extension of the desired file, and pathname is the complete path and name of the file. The pathname argument will contain information only when SL-GMS has already found the file. A NULL return value tells SL-GMS to continue file operations using the existing file path and name. A non-NULL return value supplies SL-GMS with a replacement path and name. To override color and font definition files, several additional conditions must be met. The first condition is that the user-defined find file function must be installed before the first Workstation/Window is created. The second condition is that the user-defined find file function should expect to be called twice for the color and font definition files. Note that if a find file function is installed for".m2" files, it will also be called for".m1" files. Limitations Only one find file function is allowed. Multiple functions cannot be installed for different base and extension filters. Find file functions do not currently work with the PostScript Workstation. The SL-GMS Function Reference Manual provides further information.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 197 SL-GMS (v6.0a1)

(B7109) SL-GMSDraw no longer crashes when bitmap not found Previously in SL-GMSDraw, a crash occurred if a SubModel was displayed that contained a bitmap that could not be found. This problem has been fixed.

(E5907) Hardware bitmap scaling supported on Windows Hardware bitmap scaling, that increases performance on Windows platforms, is now supported.

(B5826) Default extension for bitmap files changed to ".bmp" and ".xwd" SL-GMSDraw, SL-DRAW2, and SL-DRAW have been modified to use the ".bmp" or ".xwd" extensions when saving bitmap files. Only bitmaps with these extensions are listed in the Available Bitmaps window (displayed by selecting the Import.Bitmap option of the File Pull-Down Menu). For backward compatibility, Models with instances of bitmaps will still load bitmaps with the previously used ".i" extension. If two files exist with the same name but different extensions, the file with the extension ".bmp" or ".xwd" will be opened before the ".i."

(E5218) Bitmaps having ".bmp" extensions (Windows) and ".xwd" extensions (Motif) can be created and read by SL-GMSDraw, SL-DRAW2, and SL-DRAW SL-GMSDraw, SL-DRAW2, and SL-DRAW have been modified to use the ".bmp" extension on Windows and ".xwd" extension on Motif for the creation and loading of bitmaps. Bitmaps with the previously used ".i" extension must be renamed to ".bmp" or ".xwd" before they will be included in the Available Bitmaps window. Models with instances of bitmaps with the ".i" extension will load correctly without renaming the bitmap.

(E3116) Scaled bitmaps clipped to eliminate crashes and increase performance Previously in SL-GMS, scaling a bitmap calculated the entire destination bitmap even though only a portion displayed. This caused slow performance and out of memory crashes. This problem has been fixed by clipping the destination bitmap.

198 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

(B1519) Making bitmap undetectable no longer makes it invisible Previously in SL-GMS, if a bitmap was made undetectable, it sometimes did not display properly. This problem has been fixed.

(B3352) Scalable bitmaps display when gmsExtentMode(0) is set Previously in SL-GMS, if a bitmap was set to be scalable and the gmsExtentMode( ) function used to disable extent calculations on objects not detectable, the bitmaps did not display. This problem has been fixed. Update/Display Pass

(B4865) Double-buffered workstations no longer have excessive SetClipRectangle X protocol requests Previously in SL-GMS, a large number of SetClipRectangle X protocol requests had occurred on double buffered workstations. This problem has been fixed. Date & Time Functions

(B3206) Bad value from gms_utime_add( ) no longer causes time graphs to display incorrectly Previously in SL-GMS, when the values passed to gms_utime_add( ) had opposite signs, gms_utime_add( ) could calculate an invalid time. This problem has been fixed. Linking / Shared Libraries

(E6197) Shared libraries standard on selected UNIX platforms Shared libraries are now shipped as standard, instead of the static versions, on the following platforms:

Version 6.2 - 26 May 2006 SL-GMS Release Notes 199 SL-GMS (v6.0a1)

HP-9000/700 HP-UX 11.0 HP-9000/700 HP-UX 10.2 SGI-INDIGO IRIX 6.5 SGI-INDIGO IRIX 6.2 Sun Solaris 2.6 Sun Solaris 2.4 Users should be aware that upgraded applications need to take this into consideration when re-linking. See the example Makefiles in the provided demo directories for examples. Since the applications will no longer be statically linked, the SL-GMS shared libraries will need to be accessible from platforms executing the SL-GMS applications.

DYNAMICS Dynamic Actions

(B7053) gms_move_path_*( ) functions no longer incorrectly modify "current Model" Previously in SL-GMS, the gms_move_path_percent( ) and gms_move_path_index( ) functions were incorrectly modifying the SL-GMS "current Model," which, in some cases, resulted in a crash. This problem has been fixed.

(E6470) Performance of gmsUnlinkVarDef( ) improved Enhancements have been made to increase performance while unlinking vardef objects using gmsUnlinkVarDef( ). This is often done when Models are being freed and need to be unlinked from their variable definitions.

200 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

GRAPHS Date/Time Graph Components

(B5652) "Time Axis Trend" graph displays correctly when crossing over midnight Previously in SL-GMS, the Time Axis Trend graph on-line example displayed garbage characters when the time crossed midnight. This problem was caused by subtracting of the start time from the end time and obtaining a negative result (i.e., 0:00 a.m. - 11:59 p.m. = -11:59). This problem has been fixed.

(B5465) Graph times axes no longer display 11:59:60 before 12:00:00 Previously in SL-GMS, the number "60" sometimes appeared in the seconds field when using the ~second format description string in a graph axis. This was due to rounding of the seconds time value, which is a double, to an integer value for display. This problem has been corrected by instead rounding down to the nearest integral value (floor). The "60" no longer appears in the seconds field.

(B5433) gms_udate_add_days( ), gms_udate_add_wdays( ), and date graph labels work correctly The following date function/graph problems have been fixed: 1. The functions gms_udate_add_days( ) and gms_udate_add_wdays( ) returned a four digit year instead of a two digit year if the result landed outside the window of 1951 to 2049 (inclusive). 2. Some dates before 1965 and after 2003 displayed an incorrect day number label of 0. 3. If the last day of a month is a weekend day and the starting date given for a weekday graph landed in that weekend, the first day number label displayed an incorrect day number. 4. The first quarter number label displayed an incorrect quarter number if the starting date was one month before a new quarter started.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 201 SL-GMS (v6.0a1)

All Workstations Primitive Drawing Functions

(E7080) Ability to define custom marker objects provided A new function, gmsUserMarkerFctn( ) has been added to allow users to define a callback function that will be called when SL-GMS is drawing a marker. Users can then render their own marker objects from this callback function. The SL-GMS Function Reference Manual provides further information. Event Handling

(E2403) Functions added to generate simulated events Several functions have been added to the SL-GMS API to support user creation, modification, query, and addition of SL-GMS events to the "high level workstation" event queue.

202 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

To create an event, use gmsEvent( ):

id gmsEvent (event_type, workst, destroyCB) int event_type; id workst; int (*destroyCB)();

The first argument is an integer code for the desired event type, defined in $GMS_HOME/lib/gmscodes.h. Currently, supported event types fall into four groups and include the following: G_LOC_PRESS /* locator events */ G_LOC_RELEASE G_LOC_MOTION

G_KEY_PRESS /* keyboard events */ G_KEY_RELEASE

G_WIN_EXPOSE /* window events */ G_WIN_EXPOSE_RECT G_WIN_RESIZE G_WIN_FOCUS_IN G_WIN_FOCUS_OUT G_WIN_ENTER G_WIN_LEAVE G_WIN_MAP G_WIN_UNMAP G_WIN_DESTROY

G_MSG_CLIENT /* message events */ G_USER_EVENT

The second argument is an SL-GMS workstation object. The third argument is a pointer to an optional "destroy callback" function for SL-GMS to call when it has finished processing the event. If the application provides NULL for this argument or if the registered callback returns 0, SL-GMS will deallocate the event. If successful, gmsEvent( ) returns a typed event object; otherwise it returns NULL.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 203 SL-GMS (v6.0a1)

When an event is ready to be added to the workstation queue, use gmsWsAddEvent( ):

int gmsWsAddEvent (workst, event) id workst; id event;

To prepare an event for processing by gmsWsAddEvent( ), type-specific data usually needs to be attached to the event. For example, locator events need a point object, keyboard events need a key, window events need an extent, and message events should have data. The API for setting these attributes, in alphabetical order, is as follows. /* set action for message events */

int gmsEvAction (event, action) id event; int action;

/* set data for message events */

int gmsEvData (event, data) id event; long data;

/* set extent for window events */

int gmsEvExtent (event, extent) id event; id LinkRefext_list;

/* set keysym for keyboard events */

int gmsEvKeysym (event, keysym) id event; unsigned long keysym;

204 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

/* set modifier keys for keyboard or locator events */

int gmsEvModifiers (event, modifiers) id event; unsigned int modifiers;

/* set object for keyboard or locator events */

int gmsEvObject (event, object) id event; id object;

/* set point for locator events */

int gmsEvPoint (event, point) id event; id point;

/* set "char *" string for keyboard events */

int gmsEvStringC (event, char_str) id event; char *char_str;

/* set "string object" for keyboard events */

int gmsEvStringSO (event, str_obj) id event; id str_obj;

/* set timestamp for any event */

int gmsEvTime (event, sec, usec) id event; unsigned long sec, usec;

/* set trigger button for locator events */

Version 6.2 - 26 May 2006 SL-GMS Release Notes 205 SL-GMS (v6.0a1)

int gmsEvTrigger (event, trigger) id event; int trigger;

/* set event type for any event */

int gmsEvType (event, type) id event; int type;

/* set view for keyboard or locator events */

int gmsEvView (event, view) id event; id view;

/* set workst for any event */

int gmsEvWorkst (event, workst) id event; id workst;

In addition to the foregoing "set" functions, query functions are provided as follows: /* query action for message events */

int gmsQEvAction (event) id event;

/* query buttons for locator events */

int gmsQEvButtons (event) id event;

206 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

/* query data for message events */

int gmsQEvData (event) id event;

/* query extent for window events */

idLinkRef gmsQEvExtent (event) id event;

/* query keysym for keyboard events */

unsigned long gmsQEvKeysym (event) id event;

/* query modifier keys for keyboard or locator events */

int gmsQEvModifiers (event) id event;

/* query object for keyboard or locator events */

id gmsQEvObject (event) id event;

/* query point for locator events */

id gmsQEvPoint (event) id event;

/* query "char *" string for keyboard events */

int gmsQEvStringC (event, buffer, buffer_size, needed_size) id event; char *buffer; int buffer_size; /* byte size including '\0' */

Version 6.2 - 26 May 2006 SL-GMS Release Notes 207 SL-GMS (v6.0a1)

int *needed_size; /* byte size including '\0' */

/* query "string object" for keyboard events */

int gmsQEvStringSO (event, buffer) id event; id buffer;

/* query timestamp for any event */

int gmsQEvTime (event, sec, usec) id event; unsigned long *sec, *usec;

/* query trigger button for locator events */

int gmsQEvTrigger (event) id event;

/* query event type for any event */

int gmsQEvType (event) id event;

/* query view for keyboard or locator events */

id gmsQEvView (event) id event;

/* query view index for keyboard or locator events */

int gmsQEvViewIndex (event) id event;

208 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

/* query workst for any event */

id gmsQEvWorkst (event) id event; Color Handling

(E5543) Function added to query system-dependent colormap An SL-GMS API function gmsQWsColormapId( ), which returns the system-dependent colormap identifier, has been added.

t_addr gmsQWsColormapId (workst) id workst;/* Workstation/Window */

The gmsQWsColormapId( ) function returns a Workstation/Window's system-dependent colormap identifier: under X, the Workstation/Window's X colormap id; all other workstation types, such as Windows NT, currently return 0.

(E7307) Function added to query number of SL-GMS-defined colors The function gmsQWsNumColors( ) has been added to query the number of SL-GMS-defined colors.

int gmsQWsNumColors (workst) id workst; /* Workstation/Window */

The gmsQWsNumColors( ) function returns the number of colors defined for a given Workstation/Window. The number of colors returned does not include colors allocated for bitmaps. If the workst argument is NULL, the number of colors returned is the maximum number of colors defined by any single Workstation/Window at that point in time. Font Handling

(B7267) "fontdef.dat" can accommodate 1024 fonts Previously in SL-GMS, the "fontdef.dat" file could contain no more than 512 fonts. It can now accommodate 1024 fonts.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 209 SL-GMS (v6.0a1)

Bitmap Handling

(E2420) SL-GMS uses ".xwd" as file name extension for bitmaps on UNIX X Windows platforms SL-GMS saves and opens bitmaps with the file name extension ".xwd" on UNIX X Windows platforms. Files with an extension of ".i" may still be opened. If two files of the same name exist with different extensions, one ".xwd" and the other ".i," the file with the extension of ".xwd" will be opened. Double Buffering

(E5666) Efficiency of double buffered workstations improved (E6907) Double buffered workstations previously had 100% CPU usage. This task has improved the efficiency of displaying double buffered workstations so this is no longer the case. A double buffered workstation will no longer redraw during every update pass, instead the workstation will redraw only if a change occurs. These improvements also fixed two other problems: there are no longer unreasonable numbers of X Windows protocol SetClipRectangle requests (see (B4865) Double-buffered workstations no longer have excessive SetClipRectangle X protocol requests on page 211) and multiple views now work with double buffering. An API function has been added that allows the program to set a delayed redraw on a view. This function tells a view to redraw all of its Models during the next update. This function needs to be called only in special cases (see below). It need not be called in order to take advantage of the improved efficiency.

int gmsVuRedrawOnNextUpdate(view) id view;/* GMS view */

The gmsVuRedrawOnNextUpdate( ) function will notify a view that all of its Models need to be redrawn during the next update (i.e., gmsUpdate( )). Only one update is affected per gmsVuRedrawOnNextUpdate( ) call (subsequent updates will behave normally). This allows a delayed redraw to be forced. One example where this function might be used is if gmsWindXY( ) is called and extra processing is done after the

210 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

gmsWindXY( ) call. After the extra processing, gmsUpdate( ) is called. The function gmsWindXY( ) requires a redraw, but this isn't guaranteed to be done unless gmsRedraw( ) is called because calling gmsUpdate( ) doesn't guarantee a redraw. However, calling gmsRedraw( ) could cause two redraws instead of one because the gmsUpdate( ) call could redraw. This type of situation is solved by calling gmsVuRedrawOnNextUpdate( ) instead of gmsRedraw( ). In this case the next gmsUpdate( ) call is guaranteed to do a redraw. (B1934) G_WS_DBUFF_CLEAR workstation option works on workstations with multiple Views Previously in SL-GMS, workstations with the G_WS_DBUFF_CLEAR option set and with multiple Views had clipping problems. This problem has been fixed.

(B4865) Double-buffered workstations no longer have excessive SetClipRectangle X protocol requests Previously in SL-GMS, a large number of SetClipRectangle X protocol requests had occurred on double buffered workstations. This problem has been fixed.

X Workstations Event Handling

(E6603) UNIX select( ) method replaces "gmstimer" on some platforms On SGI 6.2/6.5, all supported HP-UX, and Sun Solaris platforms, gmstimer is no longer used to generate SL-GMS update events. The UNIX select( ) method is used instead.

(B5094) "gmstimer" no longer freezes up under busy network conditions Previously in SL-GMS under certain busy network conditions, gmstimer quit sending timer events. Some modifications were made to gmstimer to reduce the chances of this happening.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 211 SL-GMS (v6.0a1)

Color Handling

(E1523) X colormap creation and color allocation improved (B1997) (B1971) (B4800) (B2139) (B1876) (B5511) (B6051) (B4947) A "color server" has been added to the GWSX workstation layer. The purpose of this color server is to act as a mediator between the color demands of the GWSX layer and what the X server can provide. The addition of this color server has the following implications for the SL-GMS user. When no more colorcells are available from the X colortable to fulfill a color request, SL-GMS will look in the list of colors that it has previously allocated for the closest RGB match of the same allocation type (read-write or read-only). This allows SL-GMS to avoid automatically creating a new colormap when SL-GMS displays to 4-bitplane displays. This colormap creation was done in an attempt to satisfy startup color requests with a new, completely empty colormap. The colormap creation is usually no longer needed since SL-GMS will, within 16 color requests, begin looking at its previously-allocated colors. Users had thought that the G_WS_LOOKUP_COLORS was broken because of the automatic colormap creation. In addition, the xwd rasterfile-loading sequence no longer attempts, upon X-colorcell-allocation failure, to copy the SL-GMS colorcells to a newly-created colormap. This copy action frequently corrupted the SL-GMS colors. This is no longer a problem, since the SL-GMS color server will now look for the closest read-only previously allocated SL-GMS colorcell. (Note that the xwd rasterfile-loading sequence always allocates colorcells read-only.) The color server also allows X colorcells referenced by an xwd rasterfile to be freed when the rasterfile (or bitmap, as it is frequently called in SL-GMS) is freed. If no other SL-GMS objects reference that particular X colorcell, the color server will make a call to the X server to free the colorcell.

212 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

Note that there are still at least two situations where SL-GMS will fail during color allocation: • If the X colormap that SL-GMS uses (almost always the default colormap of the screen) has had the colors allocated out of it by other X client applications, such that SL-GMS cannot even allocate one X colorcell. This is a rather unlikely event, but certainly possible.

• When an xwd rasterfile is loaded into SL-GMS, if no colorcells can be allocated from the X colormap, then the SL-GMS color server will search for the closest colorcell of the correct read-write type amongst those colorcells previously allocated. Since, in this case, the color server is looking for a read-only colorcell, if all colorcells prior to the loading of the rasterfile are allocated read-write (the default if G_WS_LOOKUP_COLORS is not turned on), the search will fail. This situation is somewhat more likely to occur than the one above. If a problem occurs that appears to be color related while loading a rasterfile, it is suggested that the G_WS_LOOKUP_COLORS flag be turned ON. This can usually be done programmatically through the SL-GMS API or with -o16 on the command line. G_WS_LOOKUP_COLORS may in fact become the default in the future. Anomalies that occur The fewer X colorcells that are available from the X colormap, the more the color server will have to look to the colors already allocated by SL-GMS. This has at least three effects that may be noticed by the user: 1. Color aliasing can occur. For instance, if the color server tries to allocate an X colorcell for SL-GMS color index 22 and fails, then it will search for the closest color already allocated by SL-GMS. If this turns out to be that assigned to SL-GMS color index 7, then 22 and 7 will appear identical in terms of RGB. 2. If G_WS_LOOKUP_COLORS is turned OFF (the default), the colors are allocated read-write. If the situation in effect 1 occurs, then a change of RGB values for one SL-GMS color index will also affect the RGB values for the other SL-GMS color index, since both SL-GMS color indices point to the same X pixel value. This can occur, for instance, at SL-GMS startup time, when the "colordef.dat" file is read in, with later

Version 6.2 - 26 May 2006 SL-GMS Release Notes 213 SL-GMS (v6.0a1)

SL-GMS color definitions in the file changing those for earlier, if aliasing occurs. 3. The more the color server must look for the closest color to satisfy a color request, the more performance will be impacted. This means that SL-GMS startup and rasterfile load times will be lengthened. Currently the color server is bypassed during planemasking. In general, if color allocation appears to be a problem, then try turning on G_WS_LOOKUP_COLORS. In summary, the new SL-GMS X workstation layer color server will solve many of the current SL-GMS X color issues. It operates automatically and internally to SL-GMS. Bitmap Handling

(E5440) SL-GMS DDIF option has been obsoleted The SL-GMS VAX DDIF option, which allowed for the reading of certain types of DDIF files, has been obsoleted.

Windows Workstations Primitive Drawing Functions

(B6877) Memory leakage while zooming/panning with large fonts no longer occurs Previously in SL-GMS, zooming and panning Models containing text that was extremely large sometimes caused memory leakage. This problem has been fixed.

(B6851) Native circle algorithm for Windows implemented Previously in SL-GMS, polylines were used to draw circles on Windows platforms, giving small-sized circles an unsatisfactory, "bumpy" appearance. This problem has been fixed.

214 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

Window Handling

(B6705) Memory leakage when external windows are destroyed no longer occurs gmsWindowDestructionFctn( ) is now implemented for Windows NT so SL-GMS can properly handle external window destruction. SL-GMS does not "destroy" external windows that are passed in to gmsWorkst( ). Instead, the application is notified via a window destruction callback that "if this was an SL-GMS-created window, it would now be destroyed." This fixes the problem with external window redraws when one window is closed under NT 4.0. An application with externally created windows attached to an SL-GMS workstation should implement this callback. If the callback is implemented and the state callback function, win_destroy( ), is not used to destroy the window, then no extra code is needed to fix this problem (i.e., no call to g_save_nt_window_id( ) is needed). Using the window destruction callback also insures that the Windows screen DC is properly released. The window destruction callback function is registered by calling gmsWindowDestructionFctn( ), as documented below.

int gmsWindowDestructionFctn (cb_fctn) int (*cb_fctn)();

This function will register a window destruction callback function, cb_fctn( ), with SL-GMS. The callback function will be called for externally created windows at the point where SL-GMS normally destroys its own window associated with a workstation. The application is free to destroy or not destroy the window/widget, perhaps reusing it for another call to gmsWorkst( ). However, the workstation parameter passed to cb_fctn( ) should not be referenced again. For Windows NT applications, cb_fctn( ) would be declared as follows:

int cb_fctn (workst, window) id workst; HWND window;

Version 6.2 - 26 May 2006 SL-GMS Release Notes 215 SL-GMS (v6.0a1)

{ /* function body */ }

For X Windows applications, cb_fctn( ) would be declared as follows:

int cb_fctn (workst, display, window) id workst; Display *display; Window window; { /* function body */ }

Xt applications may need to use the macro XtWidget(window) to find the widget associated with "workst". Color Handling

(E6757) SL-GMS allows up to 32,767 colors SL-GMS has been modified to allow up to 32,767 colors on Windows platforms. The previous limit was 1024 colors.

PostScript Workstations

(B7178) Crash in PostScript output if polylines contain more than 4096 points Previously in SL-GMS, a crash occurred when outputting polylines containing more than 4096 points. This problem has been fixed.

(B5137) PostScript output limited to 1500 points for polylines PostScript output is now limited to 1500 points for polylines. Most printers will fail if this value is larger. Users may change the default limit by using the function gmsPsPolyMaxPoints( ) to change the default.

int gmsPsPolyMaxPoints(int points)

216 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

Where points is an integer defining the maximum points that will be output for a PostScript polyline.

(B4791) PostScript output on VMS Alpha no longer crashes Previously in SL-GMS, a crash occurred for some Models when PostScript output was attempted on Alpha VMS, particularly noted when the button-3 mouse click occurred in SL-DRAW2. This problem has already been fixed in a different task, B4988, that was concerned with fixing a floating point exception crash that occurred on output of text objects with no text to a PostScript file.

GMS-WIN Internationalization

(B7309) Raster fonts display correctly Previously, in SL-DRAW, SL-DRAW2, and gmsdraw_mfc on Windows Japanese, some raster fonts did not display as specified. Since this behavior has been with SL-GMS Editors for some time, the old behavior is available using the following functions: gmsWinSjisCharsetFlag(sjis_charset_flag) int sjis_charset_flag; • This function mimics the old raster font behavior on Windows Japanese.

• "sjis_charset_flag" can be set to 0 (default) or 1.

• 0: to see the fixed correct behavior

• 1: to see the old behavior

• returns 1 if successful, 0 if unsuccessful

gmsQWinSjisCharsetFlag( ) • This function is to query what sjis_charset_flag is set to, and returns 0 or 1 as the value of the flag.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 217 SL-GMS (v6.0a1)

GMS-XIM

(B7312) Proper base font set in Chinese locale implemented Previous XIM versions of SL-GMS were unable to create the proper base font set in the Chinese locale. This problem has been fixed.

SL-KEY LICENSE PROTECTION

(E6904) Dongleless licensing on Windows provided Users now have the option of licensing Windows NT platforms by keying from either their network cards or by a hardware key (dongle). This option is presented during installation.

(E4880) KEYS file can contain comments Comments beginning with the "#" character are now permitted in KEYS file.

INSTALLATION UTILITIES InstallShield Utility

(E4550) Installation procedure on Windows provided A new installation procedure has been utilized on Windows platforms. This new process was designed based upon Microsoft guidelines. All the steps should be straightforward and easily understood from the installation dialogs. The installation procedure provides many new features, including setting up program folders and new icons, access from the Start menu, license registration, automatic model conversions (*.g, *.m1, *.m2) with a right mouse click in Windows Explorer, options for run-time, development, or custom installations, multi-version support, and uninstall. Current users should read the following notes to determine how this new installation may affect their use of SL-GMS. 1. GMS_HOME — Previously in SL-GMS, the environment variable GMS_HOME had to be set before any SL-GMS applications could be run. The new 6.0 version still

218 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

recognizes GMS_HOME as an environment variable, but users can now run applications without GMS_HOME being defined. After SL-GMS is installed, GMS_HOME will be automatically stored in the Windows' registry. Users can immediately run any SL-GMS applications from the Start menu without setting GMS_HOME. The new SL-GMS v6.0 can co-exist with older versions of SL-GMS. It should be noted that if GMS_HOME was defined globally as an environment variable, this definition must be removed, either from "autoexec.bat" or the NT's Environment dialog because it will interfere with the new 6.0 version of SL-GMS. The environment variable GMS_HOME will override the definition set in the registry, so this can be used to switch to older versions of SL-GMS. While installing or running SL-GMS v6.0, it is recommended that the GMS_HOME environment variable be removed. If it exists and is pointing to an older version of SL-GMS, it can cause failures in installation and v6.0 applications. Users are warned during installation if this environment variable is found. Users wishing to run SL-GMS applications from a DOS prompt must still run "gms_init.bat" first, as before. This is because "gms_init.bat" not only sets GMS_HOME but also sets the PATH. As a convenience, the installation creates a shortcut called "GMS Command Prompt" in the Start menu. "gms_init.bat" need not be run manually after bringing up the GMS Command Prompt, since it is automatically executed first. 2. Uninstallation — Users may uninstall SL-GMS by simply clicking on "Uninstall SL-GMS" in the Start menu. All the files created by the previous installation will be erased. (If you happen to have any personal files in the GMS directory, they will remain.) 3. Registration — The registration program "gmsreg.exe" is automatically executed after the installation. If you do not wish to license the software at installation, it may be invoked at a later time from the Start menu. SL-GMS v6.0 will not function until the registration program is completed. Two types of licensing schemes are now available. One is Network Interface Card (NIC), and the other is Dongle. What the licensing scheme means is that if you choose the NIC option, the NIC in the computer is going to be the identification

Version 6.2 - 26 May 2006 SL-GMS Release Notes 219 SL-GMS (v6.0a1)

of your computer. The same goes for the dongle. So you could replace your hard drive or the motherboard and still be able to run SL-GMS with the same license, as long as you do not replace the network card. Win32 does not provide a protocol-independent way to access the NIC address, so you must have the NetBEUI protocol bound to your NIC before you can choose it as your licensing scheme. Contact your account manager if you need to change an older license, which used a dongle, to the network card license. Keys generated for dongle licenses will not be valid for network card licenses.

LANGUAGE INTERFACES ADA/Fortran

(B7141) G_ID, G_NUMERIC, G_WCOORD reinstated in "forgmscodes.h" The previously-deleted constants G_ID, G_NUMERIC and G_WCOORD have been reinstated in "forgmscodes.h" for Fortran users. C++

(B7278) SL-GMS supports Microsoft Visual C++ 5.0 on Windows SL-GMS for Windows NT now ships with Microsoft Visual C++ 5.0 compatible makefiles. Users with version VC++ 4.0 or earlier will be unable to use these makefiles. Users with VC++ 6.0 will be able to easily convert these makefiles from within VC++.

(B7449) include file added for SL-GMS applications A new include file, "gms_include.h," has been added, that is compatible with C++, ANSI-C, or standard C applications. It includes all the prototypes necessary for SL-GMS core functions as well as the functions contained in the Enhanced State Management system. Typically, only the inclusion of "gms_include.h" is now necessary to compile and link SL-GMS applications. Older include files are maintained for upward compatibility.

220 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

NOTE: "gms_include.h" was shipped in earlier releases but generally not used. For those using this particular include file in their applications, it has been renamed to "gms_include_core.h" and will continue to be distributed in the lib directory. Users need to modify their code to point to this new include file name.

MOTIF INTEGRATION EXAMPLES demo/gms_motif

(B6903) Redraw when gms_motifrun displayed to VAX VMS DECwindows Motif no longer occurs Previously in SL-GMS, it was reported that in some XT applications strange redraw behavior occurred when displayed to an OpenVMS VAX 6.2 or 7.1 DECwindows Motif server. Specifically, it would show under these conditions (VMS v7.1 DECwindows Motif v1.2-3 reproduced at SL) in the on-line example gms_motifrun, displaying arc_attrs and other Models. When the window was enlarged, the redraw occurred only around the arcs, leaving the rest of the Model incompletely redrawn. This problem has been fixed.

CONVERSION UTILITIES DXF Conversion

(B6954) dxf conversion for Autocad 14 files provided Previous versions of dxf2g occasionally output the wrong color or line type and did not handle the new features of AutoCAD Releases 13 and 14. The current release overcomes the color/linetype problems and handles some of the new features while bypassing others. It also provides other improvements, as described in the next paragraph. New Features and Improvements • Lightweight Polylines, introduced in AutoCAD Release 14, are implemented.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 221 SL-GMS (v6.0a1)

• Variable width Polylines (including Lightweight) are supported.

• The Polyface Mesh feature has been implemented.

• Complete Ellipses are now handled.

• Color and linetype anomalies have been eliminated.

• BLOCKs that insert BLOCKs are now handled correctly at all nesting levels.

• A BLOCK attempting to insert itself is detected and the attempt bypassed, thereby avoiding an error.

• The new SL-GMSDraw Release 6.0 display window extent of 0,0 72,54 is the default.

• The user can specify an extent file to obtain any desired display window extent.

• During conversion, four outputs are displayed in the sequence:

• A line of commas, one comma for each 200,000 lines in the dxf file.

• Three lines of 70 dots, one for each pass made by dxf2g.

• List of layer files produced.

• Name of each entity not processed, if any (see below). Description The SL-GMS utility dxf2g converts AutoCAD DXF (Data Exchange Format) files to SL-GMS ".g" (ASCII) model files. The USAGE statement is: USAGE: dxf2g [ -a | -f ] [-e] [ -d ] [ -t | -tw ] [ -w ] [ -cap || -cf ] [- L] [.dxf] Convert the DXF file to a set of SL-GMS g files, one g file for each active layer in the DXF file, plus a "..._subs.g" file with the submodel(s) derived from each inserted BLOCK of the DXF file. Submodels are external; string "_" is appended to each

222 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

name. Each output layer file has the name "_.g." All g files are created in the directory where dxf2g is executed. Note that each value must be a positive number. -a Use the AutoCAD coordinate and other values from the DXF file without change unless the - d, -t, -w, or -L options are set. -d Divide all x and y values by this value. DEFAULT is 1.0. -L Apply cosine(mid_latitude) correction to longitude coordinates when x,y coords. of the dxf file are in degrees of lat and lon. NOTE: If those coords. are multiples of the true lat/lon values, use -d parameter to convert them to the true values. -t Multiply all text heights by this value. DEFAULT is 1.0. -f Fit resulting display to SL-GMS-DRAW default window (0,0 72,54). The a and f options are mutually exclusive. DEFAULT is -f. -e dxf2g will use $EXTMIN & $EXTMAX from DXF HEADER to set scaling. -w Use extent specified in . Extent must be in this sequence in the : xmin ymin xmax ymax -tw Change black text to white. -cap Approximate AutoCAD dxf colors (1-255) with GMS colors (0-31). -cf Approximate AutoCAD colors with color defs in . If both -cap and -cf are absent, use the 168 colors in $HOME/ lib/colordef.acad, provided it has been copied to colordef.dat there or is the colordef.dat file in present working directory. Comments In order to display the results of a conversion by dxf2g, convert the ".g" files output by dxf2g to m1 format, usually using "gm1".

Version 6.2 - 26 May 2006 SL-GMS Release Notes 223 SL-GMS (v6.0a1)

When the -f option (DEFAULT) is in effect and none of the options -a, -d, -t, or -L have been set, the extent of the bounding display window is obtained by converting the minimum and maximum x,y values obtained from the DXF file to make the entire display fit into the SL-GMS Release v6.0 SL-GMSDraw default display window, that has extent of 0,0 72,54. The earlier SL-DRAW and SL-DRAW2 default display window was 0,0 100,75. The -w option is available to achieve such a display window extent, or any other desired extent. Option -a alone The option -a causes no changes to be made in the coordinate and other numerical values in the DXF file before output to SL-GMS ".g" files. If -a is not used, there is no problem because dxf2g automatically scales the coordinates to fit the SL-GMSDraw default display window. Option -d alone All coordinate and other numerical values, for example, text heights, are divided by before any further processing. Whenever the -a option is used, the following precaution must be taken. The extent of the DXF file can (usually) be obtained by looking at the values given by "EXTMAX x,y" and "EXTMIN x,y" near the beginning of the DXF file. If -a is set and any of those x,y values exceeds a magnitude of 32,767 or the difference between the x's or y's exceeds that magnitude, the -d option must used. Option -L alone This option must be applied when the x,y coordinates are given in latitude and longitude. Each x coordinate is multiplied by the cosine of the mid-latitude of the covered region. Failure to use this option in the case of lat/lon will cause the display to be elongated in the east-west direction. Option -t alone The height of each text character or string is multiplied by . This option is of value when the text is too small when displayed at the desired zoom factor or factors. Combinations of -a, -d, -L Any combination of these options is permitted. Two examples:

224 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

-a and -d. If -a is set and any x or y coordinate in the DXF file exceeds a magnitude of 32,767 or the difference between the MIN and MAX x or y exceeds that magnitude, the -d option must also be applied in order to reduce such values to less than 32,767. A common use for this combination is when the DXF file represents a map, especially when the map may have to adjoin another map. The recommended value for is a power of ten. -a, -d, and -L. When the coordinates are in lat/lon, the -L option must be added. A few DXF files convert to a "very small display," which, when zoomed in, becomes a correct and satisfactory display. The solution for dxf2g could be the "zoom in" AutoCAD solution, where most initial displays are small. The alternative is the -e option, that is, to execute "dxf2g -e .dxf." That causes dxf2g to use the extent given by $EXTMIN and $EXTMAX from the DXF header, which is then normalized to the SL-GMSDraw standard extent. (Our experience is that those values in the DXF header are not always correct.) Option -t is sometimes helpful, while -tw may be needed when the display background colors are very dark grey or black. -t2 will double the dxf text heights, that is, those specified in the dxf file; -t0.5 will halve the dxf heights; -tw will make all text white. The -w option is self-explanatory, as are -cap and "-cf ". dxf2g and Colors

NOTE: In what follows, "DRAW" should be taken to mean SL-DRAW, SL-DRAW2, or SL-GMSDraw, whichever is appropriate.

dxf2g can be run in any directory provided GMS_HOME is defined and GMS_HOME/bin is in the path. When using DRAW or a similar display application, a "colordef.dat" file must be available. If such a file is in the present working directory, it will be used by DRAW; otherwise, DRAW will obtain and use the file "colordef.dat" in GMS_HOME/lib.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 225 SL-GMS (v6.0a1)

SL has developed the 168-color file "colordef.acad" for use in conjunction with the models produced by dxf2g. The first 32 colors (0 - 31) are the same as the standard colors shown by DRAW. Color 0 is the background color. Color 32 is white. The remaining 135 colors closely approximate the colors used by AutoCAD. In order to force DRAW to use the "colordef.acad" file, copy it to, or link it into, the present working directory, or go to GMS_HOME/lib and rename the SL-GMS "colordef.dat" file to "colordef.hold," for example, and copy "colordef.acad" to "colordef.dat". Supplementary Utilities Some support utilities are especially designed to improve efficiency when using dxf2g. Each is implemented as a Bourne Shell script and/or a C program. They are shipped with the executable dxf2g utility. gmyr (Script and C program)

NOTE: Use only if "dxf2g " created the "_subs.g".

The gmyr utility converts to m1 format all "_*.g" files associated with the most recent "_subs.g" file and moves the new SubModels to the SUBMODS subdirectory where they are available to DRAW, creating that subdirectory if necessary. It does not work as expected if there is not a "most recent" "_subs.g" file, as would be true if the DXF file had no inserted BLOCK entries. In such a case one would use "gm1 _*.g". gmyr invokes gm1. Assure the paths to gm1 and gml are established. mvaa (Script and C program) When "_subs.g" is converted to m1 format using gm1 directly, all the SubModels listed therein are external, with the result that those ".m1" model files end up in the current directory. The utility "mvaa" moves virtually all such ".m1" models to the subdirectory SUBMODS (creating it if necessary) where they are available to DRAW. fdlayers (C program)

226 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

This USAGE statement is obtained by entering fdlayers "USAGE: fdlayers Layer name, color, status of layers in the DXF LAYER TABLE The information given by fdlayers can be obtained by examining the "LAYER" table in the DXF file. Alternative to gmyr 1. Create subdirectory SUBMODS if it does not exist 2. Copy "_subs.g" to subdirectory SUBMODS 3. Change execution to subdirectory SUBMODS 4. Execute "gm1 _subs.g" 5. Remove "_subs.g" 6. Change execution to the previous directory 7. Execute "gm1 _*.g" excluding "_subs.g" The external SubModels created by conversion of "_subs.g" are often numerous and may interfere with working conveniently with the layer files, usually the only ones of significant interest. Steps 1 - 5 assure that all external SubModels end up in the SUBMODS subdirectory, where they are available to DRAW. AutoCAD Release 13 and 14 Problems A few entries in DXF files have always been bypassed by dxf2g, with little or no adverse effect, and continue to be ignored. AutoCAD Release 13 and 14 have many new features for AutoCAD users, some of which have no equivalent in SL-GMS, and thus are not handled by dxf2g. The remainder of this document describes how entries in a DXF file that may have impact on the resulting display are handled by dxf2g. LTYPE When the linetype name in this table is one of the standard AutoCAD names, for example, DOT2, DIVIDE, that linetype is used. Other specifications of LTYPE are ignored and a SOLID linetype is substituted.

Version 6.2 - 26 May 2006 SL-GMS Release Notes 227 SL-GMS (v6.0a1)

STYLE All STYLE entries (for text) are ignored because the only text style used by dxf2g is the simplest Hershey font. The simplest has been chosen to enhance zoom and pan speeds. Also, Hershey fonts can be rotated, as are virtually all DXF file text entries. The following AutoCAD Release 13 and 14 graphical entities are ignored and a message to that effect is output for each different one that is bypassed. 3DFACE BODY MLINE RAY TOLERANCE 3DSOLID HATCH MTEXT REGION VIEWPORT ACAD_ZOMBIE LEADER OLEFRAME SPLINE XLINE Problems, Anomalies, and Limitations

NOTE: The displays created by AutoCAD from DXF files are considered to be correct and have been used as the basis of comparison.

1. If the initial character of a BLOCK name is * or $ or - it is replaced by aa_ or ad_ or am_, respectively. An interior character of * or $ or - is replaced by the _ character.

228 SL-GMS Release Notes Version 6.2 - 26 May 2006 Core Functionality

2. If the initial character of a BLOCK name is a digit, the three characters an_ are prefixed. 3. If a BLOCK name is an SL-GMS keyword, the three characters ak_ are prefixed. 4. If the basename of a DXF file is an SL-GMS keyword, execution stops with an appropriate message — the name of the file must be changed. 5. The initially displayed line widths, that is, when the zoom factor is 1.0, are usually correct. Each line width in DRAW is constant and does not change thickness when zoomed, whereas lines in AutoCAD are actually filled rectangles or other shapes and do change thickness when zoomed. The SL method has been adopted primarily to achieve fast zoom and pan speeds, that many of our applications require. 6. The AutoCAD feature that permits slanting of text characters (oblique angle) is not supported. 7. AutoCAD constructs for text that begin with %% are not supported by dxf2g, except for the sequence %%% for %, which is respected. In general, all other %% sequences are removed before the ".g" file is created, except for the cases described here. Both of the constructs, %%u and %%o, which enclose strings, are removed, but any other %% sequences in that particular string are not removed. Of the other %% sequences, only the first one appearing in any given string is removed. Note: The sequence %%nnn is removed only if there are exactly three digits. 8. Partial Ellipses are not handled correctly. 9. POINT, as specified by $PDMODE and $PDSIZE. Only the POINT is output. 10. If an x or y "extrusion" associated with an entity is non-zero, the entity is ignored. All z "extrusions" are assumed to be 0. SL-GMSDraw is a two-dimensional system. Very Small Radius There is one case dxf2g cannot handle at all. If the radius of a sector (arc) or circle converts to a value less than 0.000015, the object will not be output or displayed. That is due to a basic feature of the SL-GMS program that converts ".g" files to ".m1" format, which thereby avoids spending its time trying to create

Version 6.2 - 26 May 2006 SL-GMS Release Notes 229 SL-GMS (v6.0a1)

an arc or circle smaller than a single dot or pixel. This "very small radius" problem" may arise with a "very small display" and then go away when the -e option is used.

230 SL-GMS Release Notes Version 6.2 - 26 May 2006 Index

Symbols A ".bmp" file(s) ...... 66, 175, 192, 198 ActiveX controls ...... 99, 151 ".dat" file(s)...... 5, 181 crop mode enabled in...... 120 saving to disk ...... 182 implemented in gmsdraw_mfc ...... 139 ".g" file(s)...... 171 new methods in...... 120 ".gmsdrawrc" file ...... 16, 30, 51, 131 new property in...... 120 ".h" file(s)...... 104 WM_CONTEXTMENU and...... 11 ".jpe" file(s) ADA interfaces now accepted as JPEG image import updated for SL-GMS v6.0 ...... 158 extension...... 45 add_basemap_layer...... 103 ".jpeg" file(s)...... 66 add_flag method ...... 174 ".jpg" file(s)...... 66 add_map_layer...... 103 ".m1" file(s) Adjust for Scale checkbox...... 21, 146 on Sun/Windows, now compatible 193 -Ae option ...... 157 ".m2" file(s)...... 193 alignment, text...... 67 on Dec-Alpha Digital UNIX...... 193 ANSI_CHARSET...... 156 on SGI...... 193 anti-aliasing ".mnu" file(s) now supported on Windows...... 5, 6 defining a menu bar ...... 119 options for ...... 10 loading from any directory...... 95 Apply Transform option ".tiles" file(s) ...... 51 and redraw behavior...... 145 ".xbm" file(s)...... 169 APPVER (environment variable) ..... 39, 40 ".xpm" file(s) ...... 124, 169 atms on-line example ".xwd" file(s)...... 175, 192, 198, 210 errors no longer occur in...... 121 "colordef.dat"...... 31, 37, 38 limitations displaying polygons...... 112 "colordef.symb" ...... 31, 37 map windows in...... 121, 122 "drawmenu.mnu" ...... 166, 167 restoring focus in...... 60 "fontdef.dat"20, 82, 118, 155, 156, 169, 209 Available Bitmaps dialog ...... 177, 198 "fontdef.hpxim" ...... 156 Available Images dialog ...... 66 "gms_include.h"...... 220 Available Palettes list ...... 4, 11, 36, 38 "gms_include_core.h" ...... 221 Available Submodels list ...... 177 "gmscodes.h" ...... 124 order of Models in...... 145 "gmsdraw_mfc.rc" ...... 24 "gmsl10n.txt"...... 92, 166 B "gmsprefs.dat"...... 33 Background Flag "menudef.dat"...... 22 checkbox ...... 178 "pscolordef.dat" ...... 27 restriction of...... 173 "rpcrt4.lib"...... 134 background rectangle "smsmap.h"...... 79, 123, 163 edge of, no longer detectable ...... 129 "strings.loc"...... 166, 167 background view, objects in ...... 196 "userfctns.c" ...... 131, 137, 140 background_color ...... 173 "vcvars32.bat" ...... 135

Version 6.2 - 26 May 2006 SL-GMS Release Notes page i Index

BadWindow errors...... 57 drawing in correct position ...... 156 BASEMAPCONFIG file ...... 59, 78, 122 clear_default_view_size ...... 143 Basic1 on-line example clipping, overflow ...... 11 stack function in...... 121 clipping, text stacked models in ...... 121 in User Preferences dialog ...... 54 Basic4 example code cloned_objects_fctn...... 3, 116 enhancement of ...... 133 close button batcherase, unconditional in myproject_mfc_mdi ...... 190 added to Enter Dyn in SL-DRAW2 .. 192 color handling ...... 212 bcolor button...... 89 colordef on-line example bitmap(s) colors "flashing" in ...... 65 ".xwd" and ".bmp" extensions ...... 175 colorDlgMgrState, in custom editors ..... 27 crashing in SL-GMSDraw ...... 198 colors, SL-GMS limitation of ...... 216 device-dependent...... 172 Compaq Tru64 v5.1, now supported.... 75 fonts, supported ...... 82 compile warnings, in minidraw_mfc..... 55 images, and overlapping windows ... 45 connectors, dynamic shape points for.. 41 importation of, and file extensions ... 66 context menus in telecom_xm, on SGI platforms 124 enhancement of...... 137 labels, for Push Button Controls ..... 167 Control Object(s) making undetectable...... 199 changing renamed variables of ...... 101 name, in model ...... 70 Groups containing...... 186 scaling of ...... 198 in double-buffered models ...... 57 SL-GMSDraw correctly outputting in map nodes...... 58 bitmap paths...... 132 in SMS mapping applications ...... 60 standard file browser available in ... 172 model creation, improved ...... 46 visible at certain zoom levels ...... 73 orphan, no longer created when changing renamed variables ...... 185 C resizing and ...... 43, 44, 46, 57, 63, 186 c1btn_chk3 error, no longer occurs...... 83 selectability ...... 129 c1scale Controls set_variable renamed variable, in setting height for ...... 189 map nodes ...... 58 using Windows Trackbar...... 189 setting visibility to OFF ...... 46 cb_fctn( ) ...... 215 stacking order of ...... 186 change_directory_browser method..... 182 tabbing between...... 162 Check Button Controls zooming over ...... 187 internal error fixed in...... 83 copy_con_template, enhancement of... 41 Chinese locale created_object_fctn ...... 3, 116 proper base font setting for...... 218 CreateState ...... 3, 116 circle(s) crop mode conversion of, errors in fill color .... 196 enabled in ActiveX Controls ...... 120 on Windows platforms ...... 156, 214 resizing model while in ...... 68 circles/sectors crop_mode attribute

page ii SL-GMS Release Notes Version 6.2 - 26 May 2006 Index

availability for external map dynactions on-line example ...... 191 windows...... 122 dynamic properties, editing cursor no longer causes loss of changes in behavior, in gmsdraw_mfc ...... 143 text strings...... 161 echoing, clearing correctly ...... 144 cut/copy operations E in Edit Data File dialog ...... 147 ecpdemo example no longer causes crash/hang in double-click supported ...... 12 gmsdraw_mfc...... 129, 130 state message routing...... 12 cut/paste operations ...... 24, 26 tree no longer collapses...... 12 D Edit Data File dialog...... 147, 182, 184 cut/copy operations ...... 147 DDIF option ...... 214 EditMgrState...... 116 default editor customization mode point ...... 173 more options/additional functionality size, user-selectable ...... 141 provided...... 138 zoom range, increasing...... 148 EditorTopState...... 3, 116 Default Fill Properties dialog editplane_winmodstate_exemplar...... 173 listing properties correctly ...... 94 EditPlaneState...... 3, 4, 116 Default Graphic Properties dialog elliptic gradient behavior...... 14, 15 enhancement of ...... 31, 179 emf2g conversion utility...... 13, 63, 64 Default Text Properties dialog ...... 19, 21 empty_group_free_flag attribute ...... 183 enhancement of ...... 146 Enter Point dialog ...... 174, 175 showing default properties...... 179 entrypoint functions default_font_name message ...... 185 unregistering...... 3 dialog size, sizable/non-resizable ...... 51 error(s) DIB (Device Independent Bitmap) BadWindow...... 57 defined...... 14 in popup menus...... 55 DIB sections, and GDI resources...... 14 on gradient filled objects ...... 54 directories European, non-western changing, for m1javagui ...... 30 language strings, supported...... 155 displaying incorrectly in dialog ...... 63 event handling, mouse ...... 124 double redraw Export Bitmap option in Models with Controls...... 161 restricted to onscreen windows ...... 172 double_click_object_fctn ...... 116 Export.GML Script option ...... 141 double-buffering export_bitmap_browser method...... 172 in SL-GMSDraw ...... 82, 153 Expose events draw2_flag flag, added to palettes state and disappearing objects ...... 184 exemplar...... 132 redrawing of ...... 26 drivers, Rainbow Sentinel...... 29 extent object dxf conversion ...... 221 for controlling icon sizing...... 52 of multi-byte text...... 158

Version 6.2 - 26 May 2006 SL-GMS Release Notes page iii Index

F fpercent erase behavior, inconsistent ... 12 free_dataobject ...... 103 -f option ...... 170 file browser, standard G for exporting bitmaps ...... 172 -g option, eliminating ...... 189 file name browser, SubModel ...... 177 G_ANTIALIAS_FILL ...... 6 file(s) G_ANTIALIAS_FILLS ...... 6 importation from Windows Explorer, G_ANTIALIAS_HERSHEYTEXT ...... 6 using drag and drop...... 67 G_ANTIALIAS_INVALID ...... 6 resource, alternative...... 131 G_ANTIALIAS_LINE ...... 6 fill color, errors in G_ANTIALIAS_NONE...... 6 circle conversion ...... 196 G_ANTIALIAS_PATFILL ...... 6 fill patterns G_ANTIALIAS_PATLINE ...... 6 gradient, now available ...... 83 G_DOUBLE_CLICK ...... 71, 124 index for ...... 31 G_FGRADIENT_STYLE_ELLIPTIC ...... 87 user-defined...... 33 G_FILER_LOCFILE...... 28 fill style, transparent G_FILER_M1 ...... 28 on Windows ...... 78, 112 G_FILER_M2 ...... 28 flag(s) G_FONT_SIZE_PIXELS ...... 119 and Group redrawing ...... 146, 153 G_FONT_SIZE_POINTS...... 119 and object drawing ...... 146 G_ID ...... 220 resizing...... 46 G_IMAGE_TYPE_BMP ...... 72 focus_control G_IMAGE_TYPE_JPEG ...... 72 keyboard focus and ...... 148 G_IMAGE_TYPE_XWD...... 72 focus_lost_flag...... 114 G_LOC_PRESS ...... 71, 124, 125 font size G_LOC_RELEASE ...... 71, 124, 125 minimum value set...... 169 G_NUMERIC ...... 220 using with Control Objects...... 186 G_PIXMAP...... 167 font(s) G_QUICK_RELEASE...... 71 changing from Hershey to Raster.... 117 g_save_nt_window_id( ) ...... 215 default, in SL-GMSDraw...... 19 g_strfree( ) ...... 105 handling, predefined fonts ...... 168 G_TCONSTRAINT_CLIP...... 109 raster, on Windows Japanese...... 217 G_TCONSTRAINT_FIT_WIDTH .. 107, 109 styles, specification of...... 19 G_TCONSTRAINT_NONE...... 108 TrueType G_VISUAL_CGA ...... 62 anti-aliasing for ...... 6 G_VISUAL_MONO ...... 62 rotation enabling of...... 110 G_VISUAL_TABLE...... 62 style specification of...... 19 G_VISUAL_TRUECOLOR ...... 62, 65 vector ...... 82 G_WCOORD ...... 220 font_index variable ...... 77, 118, 187, 188 G_WIN_EXPOSE events font_size variable ...... 77, 118 redrawing of ...... 26 foreground text color G_WS_DBUFF_CLEAR ...... 6, 211 for mode buttons, updating...... 188

page iv SL-GMS Release Notes Version 6.2 - 26 May 2006 Index

G_WS_LOOKUP_COLORS...... 212, 213 gmsrun_ax.ocx, now in run-time G_WS_PLATFORM_CURSOR...... 127 installation...... 76 GDI brushes, no longer leak...... 19 gmsrun_ax_setup.bat, now in run-time GDI resources installation...... 76 and DIB sections...... 14 gmssrc.dl (DLL library) ...... 38 and gradient filled objects ...... 14 gmsStructDef, renamed from Structdef. 80 gdiplus.dll library, updated with Microsoft gmstimer ...... 211 security patch ...... 4 grabber pan tool gen_random_int ...... 102 gmsdraw_mfc no longer crashes when get_dataobject ...... 103 utilizing...... 113 get_dataobject_class_by_id( )...... 122 gradient fill attribute get_dataobjects_by_extent( )...... 58 in gmsdraw_mfc ...... 88 get_dataobjects_instances_by_extent( ) 58 limitations of...... 87 get_name_to_widget...... 96 now available ...... 83 get_validate_names...... 79 styles of...... 86, 87 getpin executable ...... 112 gradient filled objects command-line option for...... 76 and memory leakage...... 32 gm1 utility inactive...... 19 and converting ".g" files...... 49, 152 no longer crash in SL-GMSDraw ...... 54 no longer exits when processing transforms no longer lost on ...... 19 Model list...... 193 using gradient hardware mode ...... 14 gm1/gm2 utilities gradient hardware mode reporting line number of syntax gradient style enhancements ...... 14 errors ...... 153 graph(s) GMS Command Prompt shortcut time ...... 201 working on Windows 95/98...... 157 grid GMS Control Resize Flag option ...... 47 attributes, saving correctly ...... 180 GMS_HOME decluttering...... 73 and new SL-GMS installation...... 218 drawing on top of graphics objects 180 gms_install script ...... 90 elements, drawn too closely gms_move_path_index( )...... 200 together ...... 73 gms_move_path_percent( )...... 200 Grid Options dialog gms_udate_add_days( )...... 201 modeless ...... 181 gms_utime_add( ) ...... 199 modified...... 181 gmsClipViewOverflow( )...... 11 GridManager state ...... 74 gmsdemo_nt closing application windows in ...... 191 gmsA gmsdraw_mfc gmsAddUserFctn( ) ...... 137, 140 running with - or -f option...... 170 gmsprefs.dat ...... 34 gmsC gmsreg.exe, OEM customization of ...... 76 GmsCreateMode( )...... 120

Version 6.2 - 26 May 2006 SL-GMS Release Notes page v Index gmsD gmsO GmsDatFlag property...... 102 gmsObjIsClassName( )...... 193 gmsE gmsP gmsEvent( ) ...... 88, 203 gmsPsPolyMaxPoints( )...... 216 gmsExtentMode( )...... 199 gmsQ gmsF gmsQArcLength( )...... 55 gmsFGradient( ) ...... 85 gmsQControlInfo( )...... 97 GmsFindObject( ) ...... 101 gmsQFGradient( ) ...... 87 gmsQFindFileFctn( ) ...... 29 gmsG gmsQFilerFctn( ) ...... 28, 29 GmsGetVarTable( )...... 120 gmsQGradientHwMode( ) ...... 18, 19 GmsGetVarTableIndices( ) ...... 120 gmsQGridDeclutterFactor( ) ...... 74 GmsGetVarTableNames( )...... 120 gmsQGridDeclutterFlag( ) ...... 73 GmsGetVarTableTypes( ) ...... 120 gmsQGridPixelThreshold( )...... 74 gmsGradientHwMode( )...... 16, 18, 19 gmsQMUserHeaderStr( )...... 105 gmsGridDeclutterFactor( )...... 74 GmsQName( ) ...... 101 gmsGridDeclutterFlag( ) ...... 73 gmsQObjClassName( )...... 61 gmsGridPixelThreshold( ) ...... 74 gmsQStartAngle( )...... 55 gmsQTPrec0RotFlag( )...... 110, 111 gmsI gmsQTRectTextConstraint( ) ...... 108, 109 gmsImageAddType( ) ...... 51 GmsQUserData( )...... 101 gmsImageDisableDefaultPlugins( )...... 50 GmsQUserWord( ) ...... 102 gmsInitialize( ) ...... 50 gmsQVuLocCaptureMode( )...... 195 gmsQWaVisualType( )...... 62 gmsL gmsQWinSjisCharsetFlag( )...... 217 gmsQWorkst( )...... 90, 110 gmsL10nInit( ) ...... 93, 94 gmsQWsAllAntiAliasModes( )...... 5, 6 gmsL10nStr( ) ...... 93 gmsQWsAntiAliasMode( )...... 5, 6 gmsLFGradient( ) ...... 85 gmsQWsColormapId( )...... 209 gmsLTRectTextConstraint( ) ...... 108, 109 gmsQWsCursor( )...... 126 gmsM gmsQWsCursorInfo( )...... 128 gmsQWsCursorNames( ) ...... 126 gmsMGetUserHeaderStr( )...... 106 gmsQWsNumColors( )...... 209 GmsModelName( )...... 121 gmsQWsPixmapData( ) ...... 99, 100 gmsMSave( )...... 61 gmsQWsRenderer( )...... 7, 8 gmsMTRectTextConstraint( ) ...... 108, 109 gmsQWsView( ) ...... 22, 23, 110 gmsMUserHeaderStr( )...... 105 gmsQWsVisualType( ) ...... 65

page vi SL-GMS Release Notes Version 6.2 - 26 May 2006 Index gmsR H gmsRedraw( )...... 211 hardware gradient mode ...... 16 hardware, bitmap scaling of...... 198 gmsS Hershey font, backspacing over...... 104 gmsSetFindFileFctn( ) ...... 196, 197 hook function, no longer available..... 148 gmsSetup( ) ...... 50 HP platforms gmsStNameCreateLS()...... 163 Makefiles modified to include gmsStNameInvokeLS( )...... 163 ANSI-C -Ae flag...... 157 gmsStNameStrMsgV( )...... 163 I gmsT -i option, and modopt utility...... 21 gmsTPrec0RotFlag( )...... 110, 111 -i option, in path name ...... 43 gmsTRectTextConstraint( ) ...... 108, 109 IBM RS/6000 AIX v4.3 now supported ...... 75 gmsU icon(s) gmsUnlinkVarDef( )...... 200 sizing, extent object for controlling... 52 gmsUpdate( ) ...... 210 SL logo, on title bar...... 161 gmsUserMarkerFctn( ) ...... 202 SL-GMS...... 169 icon_name message, to winmod state 149 gmsV icontype_id...... 103 icontypes gmsVis( ) ...... 187 number of, increased ...... 103 gmsVuLocCaptureMode( )...... 195 import_bitmap_list_window method .. 177 gmsVuRasterImageSave( ) ...... 72 include files, modified for use with gmsVuRedrawOnNextUpdate( )...... 210 Solaris C++...... 163 gmsW Initial W C to Pixel Scale option...... 69 input method, "over the spot"...... 156 gmsWindowDestructionFctn( ) ...... 215 Insert ActiveX Control, removed from gmsWindXY( )...... 210 gmsdraw_mfc ...... 22 gmsWinSjisCharsetFlag( ) ...... 217 installation procedure, on Windows... 218 gmsWorkst( )...... 215 InstallShield utility...... 218 gmsWsAddCursor( )...... 127 dongle from...... 75 gmsWsAddEvent( ) ...... 204 intercept functions gmsWsAntiAliasMode( ) ...... 5 registering ...... 115 gmsWsCursor( ) ...... 126 unregistering...... 3 gmsWsFreePixmap( )...... 99, 100 invoke_popup_menu...... 113 gmsWsNewPixmap( ) ...... 99, 100 gmsWsPointDCToIC( )...... 22, 23, 110 J gmsWsRedrawNoErase( ) ...... 100 Japanese Model files gmsWsRedrawToPixmap( ) ...... 99, 100 available on UNIX XIM ...... 129, 166 gmsWsRenderer( ) ...... 6, 7 Java, export enabled in SL-GMSDraw... 68

Version 6.2 - 26 May 2006 SL-GMS Release Notes page vii Index

JPEG macros, for gmsObjIsClassName( ) ..... 194 images, and overlapping windows ... 45 map import and export plugin functions.. 56 interaction modes...... 122 support, in SL-GMSDraw ...... 68, 72 loading, optimization of...... 78 jump_value variable...... 100 MAP_RECT_PRESS_DRAG_RELEASE_MODE 47 K MAP_RECT_PRESS_PRESS_MODE 47, 123 -k1 option. See Initial W C to Pixel map_top_initialize( )...... 79, 123 Scale option MapPickRectState ...... 60, 123 Kanji input mapping factor, user-selectable...... 141 accepting without window manager 89 mapping library, no longer ignores keep_aspect_flag...... 30, 96, 97 MinZoomFactor/MinScaleFactor...... 103 for external map windows ...... 122 MapPlaneState ...... 59 keep_aspect_mode ...... 81, 89, 97 MapTopState, move_connector method keyboard accelerators added to...... 52 in Edit Pull-Down Menu ...... 140 MapZoomfactorLimit...... 78 keyboard focus, and "focus_control" .. 148 markers keypad input, numeric implemented in SL-GMSDraw ...... 117 supported on UNIX...... 155 MAX_MODELNAME, now obsolete .... 149 KEYS file, containing comments ...... 218 MAX_MODELNAME_LEN ...... 40 memory leakage L and zooming in/out of models...... 5 Labels, on Windows Japanese dialogs.. 24 in former gradient filled objects ...... 27 LC_ALL...... 74 in gradient filled objects ...... 32 LC_CTYPE ...... 74 in models containing large text...... 185 LC_NUMERIC ...... 75 in Option Menu Controls...... 51, 91 libraries, shared...... 199 in SMS library ...... 80 for Digital UNIX ...... 90 in SMSMAP library...... 80 library path, default in smsnew code ...... 80 enhancement to...... 60 in SMSXM library...... 80 licensing, SL-GMS...... 134, 218 while zooming/panning...... 214 returning invalid PIN...... 38 menu_name variable, dynamic changes Listbox ...... 31, 98 made to...... 119 loading time Merge into current model button for models, improved ...... 49 now "sticky"...... 171 loc_motion event ...... 195 MergeState ...... 4, 116 loc_press event ...... 98 MFC dialogs...... 40 loc_release event...... 195 incorrect placement of ...... 32 workaround added to simulate ...... 98 Microsoft Visual C++ 5.0 SL-GMS now supports...... 220 M Microsoft Visual C++ 6.0...... 40 Microsoft Visual C++ 7.0 m1javagui, loading profiles for...... 30

page viii SL-GMS Release Notes Version 6.2 - 26 May 2006 Index

changes needed to run ...... 39 resized, no longer revert to original Microsoft Visual Studio 7.0...... 40 size...... 181 SL-GMS now supports...... 39 resizing, in crop mode ...... 68 Microsoft Visual Studio 7.1 upward compatibility ...... 21 SL-GMS now supports...... 11 model_merge_sticky_flag variable ...... 171 Microsoft Windows Explorer modopt utility .21, 22, 25, 40, 44, 60, 152 files imported from ...... 67 mouse button, right opening SL-GMS models in ...... 28, 43 options during preview...... 130 minidraw_message, made obsolete .... 170 mouse cursor minidraw_mfc, compile errors in...... 55 changing, in SL-GMS windows...... 125 minidraw_mfc.rc2 ...... 94 mouse event handling ...... 124 modal dialog invocation failure ...... 57 Move dialog...... 175 Mode Buttons...... 101 move_connector method, added to mode point, default MapTopState...... 52 changing mode...... 173 MOVENODE...... 60 Model Dynamic Properties dialog mqFreeResults( ) ...... 59 displays current model’s dynamics ... 28 mqGetResult( ) ...... 59 having scroll bars ...... 117 mqGetResultCount( ) ...... 59 Hold buffer ...... 146 mqInputData( ) ...... 59 model merge operation myproject_ax_vb example ...... 191 no longer fails if spaces exist in myproject_common directory name...... 140 on-line example ...... 162 Model name myproject_jb example...... 190, 191 in top-level banner...... 161 now obsolete...... 39 new, consistent across platforms .... 170 myproject_mfc applications Model Properties dialog size/position of main windows ...... 151 coordinates update correctly ...... 145 myproject_mfc_mdi example Model Pull-Down Menu Help Pull-Down Menu in...... 101 added to SL-GMSDraw...... 168 myproject_mfc_sdi example... 151, 190 Model(s) Help Pull-Down Menu in...... 101 appearance of...... 5 myproject_motif on-line example .. 165 cut/pasted as SubModel, loading .... 144 myproject_win on-line example ..... 190 editing, new options added...... 178 Japanese...... 129, 166 N loading time, improved ...... 49 NCOs. See Control Object(s) name, longer than 87 characters ...... 80 New Model Window option not reloaded when previewing ...... 181 renaming Size Window to objects with dynprops no longer Model ...... 171 crash SL-GMSDraw ...... 147 New with Background previously unreadable ...... 21 menu option, added ...... 131, 172 produced using modopt with NEWLINE -J option...... 152 clicking, forcing line selection...... 189

Version 6.2 - 26 May 2006 SL-GMS Release Notes page ix Index

NEWMAP map interaction mode ...... 122 no longer activate if arrow keys NIC licenses...... 38, 112 used ...... 162 nodes/connectors output SL-GMS now supports...... 152 SL-GMSDraw, localized...... 92 non-western European language strings overflow clipping...... 11 now supported...... 155 numeric keypad input P supported on UNIX...... 155 Palette(s) O and flag settings ...... 11 names, longer than 26 chars...... 45 -o option ...... 148 no longer display in different window11 Object Dynamic Properties dialog PALETTES ...... 37 enhancements made to...... 32 English ...... 129 Hold buffer ...... 146 Japanese...... 129 resizing...... 4 paste mode...... 123, 144, 161, 168 vertical scroll bar provided in ...... 148 pick_aperture setting ...... 173 Object Information dialog ...... 70 Pie sides crashing on Models with large no longer off by one pixel ...... 163 renamed variables ...... 145 pixmap labels, now work correctly Object Renamed Variables dialog.... 30 on Windows ...... 188 "hidden" variables and...... 56, 179 pixmaps (SL-GMS) Clear button changed ...... 147 print capability for ActiveX closing, causing crash ...... 27 applications...... 99 improvements made to...... 180 plugin functions Object Text dialog, multi-line text .... 178 for JPEG import and export...... 56 Object Ungroup ...... 30 popup menu(s) object(s) buttons, variable driven ...... 98 deleting, during paste operations.... 123 crash when invoking...... 36 filled, line on top now pickable...... 70 error displaying ...... 55 right side, selecting ...... 155 in applications without NCOs ...... 99 transparent, zooming into...... 50 included in SL-GMS menu files ...... 113 with flags ...... 146 mode set to loc_press ...... 98 with radius 0...... 54, 66 popup_menu_name...... 113 with unapplied properties ...... 114 post_modelget_fctn...... 3, 116 ObjectPropertyState ...... 4, 25, 56, 116 post_modelgsave_fctn...... 3, 116 OLE embedding post_modelmerge_fctn...... 4, 116 SL no longer supports...... 140 post_modelsave_fctn...... 3, 116 open_model_browser method ...... 184 post_validate_dynprop_fctn ...... 4, 116 Option Menu Controls...... 77 PostScript memory leakage in ...... 51, 91 color definition file...... 27 modality no longer disabled...... 81 dialog no longer behaves as if PostScript file exists ...... 114

page x SL-GMS Release Notes Version 6.2 - 26 May 2006 Index

dialog options now work correctly. 114 in Models with Controls...... 161 file browser added ...... 184 Reference Points, displaying/hiding.... 176 with polylines over 4096 points ...... 216 refKilAll( )...... 87 PostScript output Refresh option, in gmsdraw_mfc in VMS Alpha...... 217 Japanese...... 115 limitation of points for polylines..... 216 registration program no longer fails ...... 27 and SL-GMS registration...... 219 PostScript printer now includes email option...... 13 multiple users can now access...... 74 renderers, graphic ...... 7 PRE_DISPLAY_RENSTR ...... 56 now supported on Windows...... 5 pre_display_renstr_fctn...... 4 Repair flag pre_modelget_fctn ...... 3, 116 when using Special Ungroup...... 117 pre_modelgsave_fctn ...... 4, 116 resize behavior, erroneous pre_modelmerge_fctn...... 4, 116 on X platforms...... 43 pre_modelsave_fctn ...... 4, 92, 116 resize flag option, removed from User pre_validate_dynprop_fctn...... 4, 116 Preferences dialog...... 46 Preview mode resource file(s)...... 51 performing on "new" Model...... 181 alternative ...... 131 terminated when New/New with secondary...... 94 Background option selected ...... 138 right mouse button, during preview... 130 Preview Options dialog ...... 183, 184 Rotate dialog...... 176 Print Dialog, in SL-GMSDraw Run Options dialog displaying incorrect message...... 131 in SL-GMSDraw and SL-GMSRUN PrintScrn key, no longer affects updating of...... 184 paste operations ...... 168 run-time installation ...... 76 profiles, loading for m1javagui ...... 30 S prompt string, in SL-GMSDraw ...... 92 Save As option, path name in...... 31, 171 prompt_string variable...... 170 Save Resources option...... 54 Q Scale Controls setting height for ...... 189 quadrant mask, no longer used ...... 51 using Windows Trackbar...... 189 quit message, posting ...... 96 visibility of ...... 150 Scale dialog ...... 176 R Scroll bar(s) radius 0, objects with...... 54, 66 and grey bar ...... 91 Rainbow Sentinel drivers. See drivers, Controls, on Windows ...... 119 Rainbow Sentinel enabling, in crop mode ...... 169 raster fonts, on Windows Japanese..... 217 in telecom on-line example...... 119 raster text size ...... 72 jump values of, in UNIX ...... 100 RECTSEL map interaction mode ...... 122 slider/thumb size...... 188 redraw, double secondary resource files ...... 94

Version 6.2 - 26 May 2006 SL-GMS Release Notes page xi Index sector(s) SMSX library ...... 149 line erasure...... 70 software elliptic gradient ...... 15 with arcangle 0...... 163 software gradient mode...... 16 with arclength 0 ...... 163 Solaris 7, now supported...... 75 Select by Name dialog ...... 174 Solaris 8, now supported...... 75 Select by Properties dialog ...... 174 space_evenly_hor...... 67 select( )...... 211 space_evenly_ver ...... 67 select_by_name method ...... 174 Special Ungroup option selected_index value...... 189 losing Repair flag...... 117 selection_aperture...... 102 with more than one object selected 114 SetClipRectangle Special Ungroup/Special Regroup X protocol requests...... 199, 211 erroneous behavior no longer shared libraries...... 199 occurs in ...... 144 for Digital UNIX ...... 90 stack_model method...... 191 Show Reference Point option stdafx.h ...... 39 in Point Pull-Down Menu ...... 63 StructDef, renamed gmsStructDef ...... 80 Size Window to Model, in User SubModel(s) Preferences dialog ...... 143, 172 changes in, reflected in sjis_charset_flag...... 217 SL-GMSDraw ...... 175 SL logo icon, on title bar ...... 161 double buffered, redrawing SL-GMS incorrectly ...... 178 DOS window, warning if external, updating in SL-GMSDraw. 143 Microsoft Visual C++ 5.0 not set.... 135 file name browser ...... 177 icon(s)...... 138, 169 Symbol Factory graphics...... 36 licensing...... 38, 134 SYMBOL_CHARSET ...... 155 SL-GMS applications syntax coloring crashing when date is out of range .. 49 added to Object Dynamic Properties 32 different versions of ...... 158 SL-GMS Mapping Library, added to T distribution ...... 152 telecom on-line example slgms_ident history models bitmaps read on SGI platforms...... 124 updating unnecessarily ...... 133 errors no longer occur at startup..... 122 SL-GMSDraw output, localized ...... 92 templates SL-GMSRun ActiveX added to Object Dynamic Properties 32 new functions in ...... 101 text viewing models in...... 101 alignment ...... 67 slider thumbs clipping, in User Preferences functioning at high magnification ... 169 dialog ...... 54 slider_size Hershey, backspacing over...... 104 renamed variable, added to scroll bar setting, in Text Rectangles ...... 134 Controls...... 188 Western European, support of ...... 175 SMSMAP library...... 192 text color, foreground

page xii SL-GMS Release Notes Version 6.2 - 26 May 2006 Index

updating...... 188 Undo/redo stack, reflecting current text constraint attribute operation...... 179 added to text rectangle objects ...... 106 Ungroup. See Object Ungroup TRect tab, added to Default Graphic uninstallation, of SL-GMS...... 219 Properties dialog...... 95 USB dongles, support now available.. 111 Text Display/Text Display Box user data and duplicate text object ...... 55 limit of 16,384 bytes...... 192 and multi-line strings ...... 150 user functions, custom enabling scroll bars...... 149 adding to SL-GMSDraw...... 140 enhancement of ...... 150 User Preferences dialog resizing vertically...... 187 modified to avoid text clipping...... 54 Text Edit Box option removed from...... 46, 47 moving mouse out of...... 77 using system-independent dialog multi-line, activated when cursor model ...... 171 leaves window...... 98 user templates single-line ...... 83 added to Object Dynamic Properties 33 tabbing between ...... 36 userfctns_initialize( )...... 93 text font usertop_activate()...... 139 definition, enhancement of ...... 118 usertop_initialize() ...... 139 Text List Box USERWORD value clicking on...... 98 in ".g" files, can now be negative.... 153 displaying correctly ...... 133 double-clicking event on...... 188 V not having horizontal scroll bar ...... 91 validate_names...... 78, 79 width error in ...... 83 vector fonts...... 82 Time Axis Trend graph on-line View GML File dialog ...... 30, 171 example ...... 201 View Presets dialog, in atms on-line toolbar, customization of...... 129 example ...... 104 tprec0_rot_flag ...... 111 View Presets toolbar ...... 69 transparent fill View Pull-Down Menu...... 63 objects, zooming into...... 50 view, resetting to 100 x 75 ...... 95 style, on Windows ...... 78, 112 view_wc_extent...... 45 TRect tab ...... 95 Visual C++. See Microsoft Visual C++ Japanese, label no longer clipped..... 82 Visual Studio. See Microsoft Visual Studio TrueType fonts anti-aliasing for...... 6 W rotation enabled ...... 110 warning(s) style specification of ...... 19 compile, in minidraw_mfc...... 55 U Western European text support of ...... 175 -u option ...... 189 -Wf, -XNh2000 option, removed from Digital UNIX Makefile ...... 157

Version 6.2 - 26 May 2006 SL-GMS Release Notes page xiii Index width, window on Solaris XIM ...... 89 win_destroy( )...... 215 win_size( )...... 46 window geometry, SL-GMS MFC applications storing...... 182 window width, on Solaris XIM...... 89 Windows Registry file association names in...... 157 windows, overlapping and exported bitmap/jpeg images .... 45 WM_CONTEXTMENU...... 11 word wrap capability added to Text Edit Controls ...... 100 workstations cropped, resizing problems in ...... 80 double-buffered...... 210 wrap renamed variable, added to Text Edit Controls...... 100 X -x option SL-DRAW no longer crashes using.. 134 Z zoom range default, increasing...... 148 zoom reset...... 67 zoom/pan operations ...... 183 zooming continuous, now terminates ...... 26 into transparent fill objects ...... 50 ZOOMRECT map interaction mode.... 122 "rubber band" effect...... 60

page xiv SL-GMS Release Notes Version 6.2 - 26 May 2006 Number Index

Bugs B6144 112 B6147 193 B0945 150 B6237 147 B1519 199 B6249 182 B1531 61 B6250 181 B1737 171 B6263 186 B1876 212 B6264 187 B1934 211 B6271 187 B1971 212 B6278 189 B1997 212 B6287 188 B2139 212 B6299 191 B3118 193 B6323 183 B3179 175 B6438 191 B3206 199 B6497 180 B3270 172 B6509 188 B3290 175 B6516 174 B3352 199 B6538 182 B3375 158 B6550 169 B4071 173 B6625 179 B4777 192 B6637 144 B4791 217 B6705 215 B4800 212 B6706 196 B4865 199, 211 B6719 179 B4947 212 B6721 138 B5094 211 B6761 186 B5105 152 B6762 186 B5122 169 B6769 188 B5137 216 B6774 170 B5156 153 B6851 214 B5433 201 B6861 188 B5465 201 B6865 193 B5511 212 B6871 196 B5652 201 B6873 173 B5659 74 B6877 214 B5737 170 B6878 185 B5826 198 B6887 185 B5958 185 B6891 188 B6012 178 B6898 39 B6051 212 B6903 221 B6057 181 B6916 168 B6074 192 B6930 12 B6109 178 B6954 221 B6111 177 B6962 169 B6119 138

Version 6.2 - 26 May 2006 SL-GMS Release Notes page i Number Index

B6979 190 B7539 146 B7010 170 B7541 163 B7018 171 B7543 163 B7039 188 B7544 163 B7053 200 B7545 163 B7072 101 B7553 162 B7085 189 B7566 162 B7096 186 B7567 163 B7108 192 B7583 153 B7109 198 B7585 145 B7123 187 B7587 146 B7141 220 B7604 140 B7149 178 B7610 156 B7178 216 B7619 140 B7203 169 B7629 158 B7225 193 B7635 151 B7267 209 B7636 147 B7278 220 B7638 150 B7292 181 B7649 157 B7309 217 B7653 151 B7312 218 B7654 152 B7327 189 B7656 145 B7344 177 B7662 145 B7384 186 B7669 155 B7386 172 B7670 144 B7444 183 B7672 90 B7445 143, 175 B7682 104 B7448 153 B7866 147 B7449 220 B7870 145 B7458 161 B7891 121 B7461 184 B7901 130 B7472 151 B7903 141 B7475 167 B7912 149 B7477 161 B7921 143 B7487 146 B7937 143 B7504 162 B7939 144 B7518 161 B7948 133 B7519 147 B7964 157 B7520 161 B7966 149 B7524 161 B7975 143 B7527 144 B7981 141 B7530 138 B7982 131 B7534 95 B7994 131

page ii SL-GMS Release Notes Version 6.2 - 26 May 2006 Number Index

B7997 132 B8297 100 B8009 134 B8301 104 B8010 135 B8304 101 B8015 132 B8305 71 B8017 131 B8307 99 B8021 133 B8320 104 B8046 66 B8321 103 B8052 134 B8326 102 B8068 134 B8340 98 B8092 92 B8345 95 B8094 115 B8346 94 B8097 130 B8349 101 B8098 129 B8350 100 B8120 114 B8368 96 B8127 88 B8376 98 B8132 68 B8377 110 B8134 121 B8382 92 B8135 129 B8390 98 B8136 114 B8393 91 B8141 120 B8394 91 B8146 121 B8405 83 B8147 123 B8409 82 B8161 122 B8411 83 B8163 122 B8412 89 B8166 119 B8413 81 B8171 121 B8419 62 B8178 117 B8422 89 B8179 116 B8424 90 B8180 119 B8425 83 B8184 114 B8428 83 B8187 117 B8431 88 B8188 124 B8486 82 B8190 113 B8499 90 B8194 89 B8518 31 B8198 111 B8554 77 B8202 114 B8555 78 B8209 115 B8556 80 B8210 96 B8557 80 B8211 122 B8558 80 B8263 112 B8559 80 B8272 97 B8560 80 B8273 92 B8561 78 B8291 75 B8574 80

Version 6.2 - 26 May 2006 SL-GMS Release Notes page iii Number Index

B8575 80 B9014 47 B8579 78 B9015 60 B8580 80 B9019 14 B8582 79 B9041 65 B8585 80 B9042 63 B8586 80 B9052 55 B8645 80 B9057 63 B8651 81 B9058 57 B8696 41 B9059 36 B8701 77 B9060 54 B8707 80 B9068 45 B8716 75 B9069 52 B8774 76 B9071 51 B8777 67 B9081 46 B8819 76 B9085 45 B8820 76 B9086 47 B8827 57 B9090 51 B8828 72 B9094 49 B8829 73 B9098 45 B8840 66 B9099 45 B8848 74 B9100 50 B8849 75 B9101 49 B8856 55 B9104 36 B8861 71 B9105 49 B8887 70 B9111 46 B8891 63 B9121 38 B8900 70 B9128 39 B8920 63 B9133 44 B8925 54 B9159 38 B8928 54 B9171 43 B8939 58 B9172 43 B8940 58 B9173 43 B8947 55 B9185 30 B8955 57 B9201 32 B8960 60 B9203 37 B8963 59 B9218 38 B8965 58 B9219 32 B8966 60 B9220 30 B8985 60 B9234 40 B8994 57 B9236 27 B8997 14 B9237 25 B9000 61 B9239 30 B9012 55 B9241 31

page iv SL-GMS Release Notes Version 6.2 - 26 May 2006 Number Index

B9242 40 E1616 177 B9243 39 E1650 33 B9277 26 E1739 67 B9281 11 E1830 106 B9284 28 E2248 155 B9298 26 E2403 202 B9303 27 E2420 210 B9308 26 E3116 198 B9309 27 E3342 155 B9310 27 E3394 146, 153 B9311 28 E3795 156 B9314 28 E4088 177 B9337 27 E4550 218 B9340 29 E4839 124 B9345 24 E4880 218 B9356 24 E5044 193 B9357 25 E5218 192, 198 B9367 22 E5440 214 B9370 21 E5543 209 B9376 22 E5666 210 B9378 22 E5828 72 B9380 21 E5907 198 B9381 21 E5943 175 B9382 19 E5944 176 B9383 19 E5945 176 B9386 22 E5949 152 B9389 13 E6010 184 B9405 4 E6065 191 B9426 11 E6122 174 B9431 13 E6124 174 B9436 5 E6197 199 B9448 2, 3 E6243 181 B9449 4 E6244 30 B9454 11 E6245 183 B9458 12 E6281 172 B9478 12 E6287 187 B9479 12 E6288 118 B9496 5 E6296 165 B9497 11 E6470 200 E6486 119 Enhancements E6495 177 E0159 178 E6500 179 E1523 212 E6507 182

Version 6.2 - 26 May 2006 SL-GMS Release Notes page v Number Index

E6518 150 E7101 196 E6554 191 E7150 179 E6576 165 E7201 174 E6577 190 E7202 188 E6578 190 E7219 147 E6592 155 E7220 149 E6603 211 E7268 180 E6607 146, 153 E7288 176 E6615 95 E7307 209 E6630 148 E7329 190 E6640 184 E7352 32 E6732 117 E7381 173 E6743 178 E7390 180 E6757 216 E7392 171 E6763 118 E7393 172 E6765 118 E7396 172 E6766 189 E7422 166 E6767 187 E7447 195 E6769 185 E7548 137 E6784 177 E7558 156 E6794 181 E7560 113 E6886 184 E7574 158 E6889 168 E7582 151 E6896 184 E7586 146 E6904 218 E7594 140 E6907 210 E7598 148 E6921 106 E7609 155 E6958 179 E7620 149 E6973 174 E7622 148 E6974 174 E7625 148 E6975 175 E7631 148 E6983 192 E7639 139 E6997 182 E7878 125 E7011 189 E7884 156 E7012 190 E7930 152 E7013 189 E7931 137 E7015 176 E7932 140 E7017 171 E7941 157 E7020 173 E7968 157 E7079 181 E8070 133 E7080 202 E8073 117 E7088 171 E8086 110 E7097 168 E8103 129

page vi SL-GMS Release Notes Version 6.2 - 26 May 2006 Number Index

E8110 120 E9197 31 E8114 82 E9198 31 E8116 105 E9199 31 E8122 120 E9280 5 E8126 120 E9566 4 E8164 119 E8165 121 E8201 122 E8243 122 E8269 19 E8280 102 E8296 94 E8299 122 E8303 99 E8306 98 E8309 103 E8310 103 E8311 98 E8318 124 E8322 103 E8332 102 E8358 96 E8533 69 E8535 73 E8536 68 E8537 68 E8548 70 E8703 75 E8718 56 E8719 68 E8741 69 E8842 67 E8941 60 E8981 63 E8998 56 E9070 51 E9082 52 E9083 50 E9084 52 E9149 31 E9150 31 E9151 44 E9160 36

Version 6.2 - 26 May 2006 SL-GMS Release Notes page vii