Professional Documents
Culture Documents
VERSION 2.3
Copyright
VAPS XT 2.3 Getting Started Guide
© 2008 Presagis™ All rights reserved.
All trademarks contained herein are the property of their respective owners.
PRESAGIS PROVIDES THIS MATERIAL AS IS, WITHOUT WARRANTY OF
ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE.
Presagis may make improvements and changes to the product described in this
document at any time without notice. Presagis assumes no responsibility for the
use of the product or this document except as expressly set forth in the applicable
Presagis agreement or agreements and subject to terms and conditions set forth
therein and applicable Presagis policies and procedures. This document may
contain technical inaccuracies or typographical errors. Periodic changes may be
made to the information contained herein. If necessary, these changes will be
incorporated in new editions of the document.
Presagis Canada Inc. and/or Presagis USA Inc. and/or its suppliers are the owners
of all intellectual property rights in and to this document and any proprietary
software that accompanies this documentation, including but not limited to,
copyrights in and to this document and any derivative works there from. Use of
this document is subject to the terms and conditions of the Presagis Software
License Agreement included with this product.
No part of this publication may be stored in a data retrieval system, transmitted,
distributed or reproduced, in whole or in part, in any way, including, but not
limited to, photocopy, photograph, magnetic, or other record, without the prior
written permission of Presagis Canada Inc. and/or Presagis USA Inc.
Use, distribution, duplication, or disclosure by the U. S. Government is subject to
"Restricted Rights" as set forth in DFARS 252.227-7014(c)(1)(ii).
July 24, 2008
Contents
Chapter 1: About This Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
In This Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7
Conventions Used . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8
Symbols Used. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9
Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9
Hints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9
Cautions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9
VAPS XT Documentation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
In This Guide
Here’s what you will find in this guide.
Conventions Used
The following conventions are used in this manual:
• Path names are written with a backward slash (e.g.,
VAPSXT_23\bin\), which is the general convention for Windows.
However, for our purposes, this convention is used to identify any
path names.
• Menu items, options, button names, and commands are in boldface
type.
• When selecting commands from the menus, the menu path is
presented as follows:
Select Windows | Docking Windows | Project View.
This would mean that you would open the Windows menu, open
the Docking Windows submenu, and then select the Project View
command.
• If you must use keys on your keyboard, the keys are written as
follows:
• Press Ctrl+C: you press the Ctrl key and the C key at the same
time.
• Press Delete: you press the Delete key.
• Press F4: you press the Function Key #4 (usually at the top of
your keyboard).
• System messages or prompts, names of structures, C library scripts,
and other directory and filenames are written in courier font.
• Italics are used to give special emphasis.
• Procedural steps are numbered.
Symbols Used
Notes, Hints and Cautions are indicated by an icon to the left of the text,
as shown below:
Notes
Hints
Cautions
A Caution contains a warning about a procedure.
VAPS XT Documentation
The following documentation is provided with this release:
• VAPS XT Getting Started Guide
• VAPS XT User’s Guide
• VAPS XT Programmer’s Guide
• VAPS XT Online Help (MS HTML Help)
• VAPS XT CODE nGEN User’s Guide
• VAPS XT CODE nGEN Programmer’s Guide
• VAPS XT Tutorial 1: Creating a Basic Project
• VAPS XT Tutorial 2: Defining Behavior with State Charts
• VAPS XT Tutorial 3: Designing an HSI
• DOORS Interface User’s Guide
If you have the ARINC 661 plugin installed, you should also refer to:
• Cockpit Display System Interfaces To User Systems, ARINC
Specification 661-2, Airlines Electronic Engineering Committee,
Aeronautical Radio, Inc.
You can access the documentation, provided in Adobe® PDF format, by
choosing Start | Programs or All Programs | VAPS XT 2.3 |
Documentation, or by using Windows Explorer to locate the files in the
Docs folder under the install root directory.
• The PC must have Microsoft Visual Studio 2005 SP1 installed to use
CODE nGEN.
(path=C:\path\to\vxtDirectShowObject.dll;%path%)
MMAudio/MMVideo core DLL:
vxtDirectShowObject.dll
Partial Redraw
The Partial Redraw feature accumulates the damage areas (rectangular
areas) of the screen that have changed in every iteration, and then only
redraws these areas. Areas not changed are not redrawn.
Partial Redraw is designed to reduce CPU and/or GPU cycles, especially
for complex applications when only small sections or damage regions
need to be redrawn.
Dynamic Instantiation
Dynamic Instantiation lets the user create arrays of Objects and then
reference them by name. The user can specify objects to be dynamically
instantiated and control the visual priority, visibility, and allocation of
these objects instantiated inside an implementation at runtime. The
feature is designed for users with limited RAM/ ROM space, for example,
when the user may want to draw 100 icons at a certain sequence of
execution at runtime, and another 120 icons for another sequence of
execution.
Dynamic Instantiation has advantages over the RepeatGroup as it does
not draw multiple copies of its children, but only draws instances
depending on what changed. A removed instanced object is not redrawn
and has no effect on the runtime, where as the hidden status hides the
instanced object, and only redraws it when it becomes visible again. A
hidden instanced object is not updated when
UpdateVisibleInstancesOnly is set to True, where as a visible instanced
object is updated and drawn.
Comment Editor
The Comment Editor lets the user insert, edit, and delete comments.
Comments can be put on class (.vcls), class attribute (property, event,
operation), implementation document family (.vimp, .vxdf, .vlyr, .vws,
.vxdd), object, state chart object, transition, and dataflow.
The comment operations (insert, edit, and delete) can be launched from
the context menu and from the Edit menu of the main frame. The
comment operation menus are dynamic, support Unicode, and only the
operations shown are allowed.
The user can undo all comment operations. Also, putting a comment on
an item affects the document tag to which the modified item is a part of.
Comment operations done on items kept in an implementation are put
in the undo stack of the document, while comments put on documents
that cannot be opened are put in the undo stack of the Project View.
A small red triangle is drawn in the top right corner of the cell containing
the comment. In the State Chart Diagram, the commented items are
identified with a yellow dialog bubble. Both comment indicators can be
hidden through settings located in the Options dialog in the General tab,
and there are the user can change the Comment Editor font and font size.
GUID
The Global Unique Identifier (GUID) is a read only field used to identify
object instances and classes. GUIDs are saved in XML format in .vcls and
.vimp files.
When an object gets assigned a GUID it cannot be changed, and the
unique identifier stays the same throughout the life of the project.
GUIDs for object instances and classes are generated and assigned when
a document is saved. VAPS XT validates and ensures no duplicate GUID
gets created within the same document.
Nested Stenciling
In the case where a StencilGroup is placed inside another StencilGroup,
the intersection of the two stencil regions applies to the more deeply
nested stencil group. Stenciling functions were added to the porting layer
to support this. The level of nesting depends on the number of stencil
bit planes available in OpenGL; there may be 2^number-of-stencil-bits
of nested stencils.
Note that the PartialRedraw feature requires one layer of Stenciling.
Additionally, the first object within a StencilGroup is no longer drawn
to the screen; it only defines the shape of a stencil region.
Pop-Up Mechanism
The Pop-Up Mechanism allows graphical objects to appear on top of all
other objects by changing the visual priority of an object. The feature
can be used in built and coded objects to allow pop-ups to appear and
disappear at a higher level of visual priority than standard graphics.
The feature can be used to implement objects and ARINC 661 widgets
such as pop-up menus and combo boxes. Users can modify or switch
the pop-up position during runtime.
Pop-Up is implemented using 2 new coded objects: the PopUpPart and
the PopUpContext. The ComboBox in the UI Components project is
provided as an example of a built object that uses Pop-Up.
Report Profile
The Report Profile allows the user to determine what information gets
documented in an implementation. The Report Profile tree view and
the Report Profile properties inspector are used to configure the
parameters of the selected objects. The information kept are image
properties and Datasnapshot.
The Report Profile lets the user capture Images and Data Snapshots of
the Implementation in Editor Mode. To do this, the "Editor Mode" must
be configured. All Report Profiles have an Editor Mode item by default.
Image and Data Snapshots can be captured for the Implementation
when in Editor Mode by executing the Report Profile. The Report
Profile can be attached to a Record Session, and Images and Data
Snapshots get captured at Key Points when the Implementation is in
Playback Mode.
Drawing Integration
The Drawing Integration API allows the user to integrate VAPS XT
applications inside a Vega Prime 3D Scene, or any other 3rd party
application with an existing OpenGL Context.
A simple API and code generation target (wogl_dll.cfg) are provided,
and the user can integrate any VAPS XT application to Vega Prime in
the following two ways:
• Overlay drawn on top of a 3rd party application.
• Embedded within a 3rd party application such as a 2D panel that
can be viewed as a plane positioned in 3D space. In this condition,
support for multiple panels is required.
Data Snapshot
A Data Snapshot is a snapshot of the object's property value at specific
times. In the Report Profile (see “Report Profile” on page 20) context,
this specific time is identified by a Key Point from the Record Session
(see “Record & Playback” on page 28).
Data Snapshots get produced per Key Point and are saved in a XML file.
Polygon Tessellation
Tessellation is now performed in the Editor when required, and a new
“Mesh” property has been added.
The Polygon stores the result of the Tessellation, and the resulting
Polygon can still be driven dynamically as long as its changes do not
require re-tessellation.
To increase drawing performance and avoid dynamic memory
allocation, VAPS XT does not perform Tessellation of Polygons during
runtime.
Example
The PFD Example format from the Examples project in the Standard
root project is used as a representative example of a single display page.
The format contains approximately 400 objects of various types and 45
dataflow connections.
The following tables show the footprint figures for the PFD Example.
VAPS XT 2.3
Exe File Total Total Data Initialized Data Uninitialized Data Heap Size
size Code Size (data Size (data) (bss) Size
Size + bss +
(text) Heap)
Total 1180 Kb 893 Kb 340 Kb 205 Kb 82 Kb 53 Kb
Size
Fixed 823 Kb 181 Kb 82 Kb 10 Kb
Size
Variable 70 Kb 24 Kb <1 Kb 41 Kb
Size
VAPS XT 2.2
Exe File Total Total Data Initialized Data Uninitialized Data Heap Size
size Code Size (data Size (data) (bss) Size
Size + bss +
(text) Heap)
Total 1224 Kb 1005 Kb 786 Kb 211 Kb 513 Kb 62 Kb
Size
Fixed 820 Kb 187 Kb 500 Kb 10 Kb
Size
Variable 185 Kb 24 Kb 13 Kb 52 Kb
Size
Exe File Total Total Data Initialized Data Uninitialized Data Heap Size
size Code Size (data Size (data) (bss) Size
Size + bss
(text) Heap)
Total 3.5 % 11 % 57 % 3% 84 % 15 %
Size
Fixed 0% 3% 83 % 0%
Size
Variable 62 % 0% 99 % 21 %
Size
Exe File Total Total Data Initialized Data Uninitialized Data Heap Size
size Code Size (data Size (data) (bss) Size
Size + bss +
(text) Heap)
Total 1992 Kb 1512 Kb 1034 Kb 397 Kb 82 Kb 440 Kb
Size
Fixed 823 Kb 181 Kb 82 Kb 10 Kb
Size
Variable 700 Kb 216 Kb <1 Kb 430 Kb
Size
VAPS 2.2
Exe File Total Total Data Initialized Data Uninitialized Data Heap Size
size Code Size (data Size (data) (bss) Size
Size + bss +
(text) Heap)
Total 3112 Kb 2700 Kb 1551 Kb 393 Kb 628 Kb 530 Kb
Size
Fixed 820 Kb 187 Kb 500 Kb 10 Kb
Size
Variable 1880 Kb 206 Kb 128 Kb 520 Kb
Size
Exe File Total Total Data Initialized Data Uninitialized Data Heap Size
size Code Size (data Size (data) (bss) Size
Size + bss
(text) Heap)
Total 3.6 % 44 % 33 % -1 % 87 % 17 %
Size
The fixed and variable % improvements are the same as in the single
PFD Example so they have been omitted from the above table. However,
because the variable size code footprint is a more significant portion of
the overall cost, the overall code size savings seen for 10 similar pages is
much higher at 44% versus 11% for the single PFD page. Similarly, the
executable file size saving is also higher at 36% versus 3.5% for the single
page PFD Example.
An example scenario of an embedded system memory requirement for
the 10 pages example where the application code runs from RAM, and
the executable image is stored in flash memory is as follows:
VAPS XT 2.3
Flash required: 2Mb (approximately exe size)
RAM required: 3Mb (text + data + heap + stack)
VAPS XT 2.2
Flash required: 3Mb (exe size)
RAM required: 5Mb (text + data + heap + stack)
Release Executables
1 Install the latest version (v2.0) of vcredist_x86.exe.
It can be found in a visual studio installation at:
%PROGDIR%\Microsoft Visual Studio
8\SDK\v2.0\BootStrapper\Packages
The Microsoft Visual C++ 2005 Redistributable Package (x86)
installs runtime components of Visual C++ Libraries required to
run applications developed with Visual C++ on a computer that
does not have Visual C++ 2005 installed.
• The installation requires the user to have administrative
permissions.
• This installs all Visual C++ libraries as shared assemblies. On a
target computer with support for manifest-based binding of
applications to their dependencies (Windows XP Home
Edition, Windows XP Professional, Windows Server 2003,
Windows Vista), the libraries are installed in the WinSxS folder.
On a computer without such support (Windows 98, Windows
98 Second Edition, Windows Millennium Edition, Windows
2000), the libraries are installed to both the WinSxS and
System32 folders.
2 Create a folder structure on the target computer containing the
executable.
3 Vaps XT version specific details:
• If nCom is used in the executable certain XML related DLLs are
needed. There are two ways of accessing these DLLs:
• If the target computer has Vaps XT installed, accessing these
DLLs can be done by modifying the PATH environment
variable and adding VAPSXT\VAPSXT_DIR\bin to it. If this is
done, point 4 can be skipped because the \bin folder contains
the DLL that is needed.
Directory Structure
This section is only relevant for users who have nGen sources.
The Microsoft Visual Studio 2005 solutions and the top level makefile
were relocated to make it easier to build your runtime libraries and XT
objects.
• Top-level make file
• New location: %VAPSXT_DIR%\src\make\makefile.mak
• Old location: %VAPSXT_DIR%\src\RT\make\makefile.mak
• This makefile is now the top level makefile to build runtime
libraries for any target. To build, simply run cg_make as before
but with this makefile.
• Microsoft Visual Studio 2005 solutions to build static runtime
libraries for Windows
• New location: %VAPSXT_DIR%\src\make\vxtRT.sln and
%VAPSXT_DIR%\src\make\vxtRTA661.sln
• Old location: %VAPSXT_DIR%\src\RT\make\vxtRT.sln and
%VAPSXT_DIR%\src\RT\make\vxtRTA661.sln
• Microsoft Visual Studio 2005 solutions to build XT coded objects
• New location:%VAPSXT_DIR%\src\make\XTObjects.sln and
%VAPSXT_DIR%\src\make\XTObjectsForA661.sln
• Old location:
%VAPSXT_DIR%\src\XTObjects\make\XTObjects.sln and
%VAPSXT_DIR%\src\XTObjects\make\XTObjectsForA661.s
ln
• pGetRTInterface
• You should now use
VXT_DECLARE_P_GET_RT_INTERFACE instead of a direct
declaration in the coded object
The Windows-only DirectShow Wrapper
%VAPSXT_DIR%\src\XTObjects\make\XTMultimediaObject.sln was
replaced with
%VAPSXT_DIR%\src\ThirdParty\XTDirectShow\make\DirectShow
Wrappe r.sln.
• In the generated code for built objects, the "mo_" prefix remains
used for instance variables corresponding to sub-objects.
New macros for memory allocation
The “new” and “delete” statements are longer used, but instead have
been replaced by new macros. Calls to operator new/delete should be
altered to use the VXT_NEW, VXT_POD_NEW, VXT_DELETE and
VXT_ARRAY_DELETE macros. VXT_POD_NEW is used for "Plain
Old Data".
For example:
• MyClz *pMc = new MyClz(a1, a2) should be coded as MyClz *pMc
= VXT_NEW(MyClz, (a1,a2))
• MyClz *pMc = new MyClz[5]should be coded as MyClz *pMc =
VXT_NEW(MyClz, [5])
• MyClz *pMc = new MyClz should be coded as MyClz *pMc =
VXT_POD_NEW(MyClz)
• delete pMc should be coded as VXT_DELETE(pMc)
• delete [] pMc should be coded as VXT_ARRAY_DELETE(pMc)
New C++ Objects Related to Passing Property Paths and Values
Changes to the way that data values are passed and parts of properties
are processed were made.
A “const vxtRTValue &a_rValue” argument is used instead of a “Void
*” argument in several functions.
• To get simple numeric values out of a vxtRTValue, just call one of
the following vxtRTValue functions:
• GetByte(), GetSByte(), GetShort(), GetUShort(), GetInt(),
GetUInt(), GetFloat(), GetDouble().
• If the value stored in the vxtRTValue doesn’t have the same data
type, a type conversion is performed.
• If the conversion can’t be performed (e.g. the type is a
structure), a value of 0 is returned.
• To get an object of type “vxtTyp<typename>”:
• Use vxtTyp<typename>::s_GetTypeValue(a_rValue) for an
enum or fixed point types
• Action:
• Delete the old function and take the new function from the
generated template code.
• The names of the specific property-setting functions have changed
from vSet<propname> to vSet<propname>Prop
• Action:
• Use the new vSet<propname>Prop name, as generated in the
new generated template code.
• Keep any special logic you might have had that did more than
just set the property and mark it to be updated/redrawn.
• Note that there are two versions of this function for complex
types: the old one that set the whole value, and a new one that
sets all or part of the value from a vxtRTValue. Be sure to put
any special code into both these functions.
• Refer to the “Update-Related Changes” section below for
changes to the way that we mark objects to be updated/redrawn.
• If all your function did was to set the property in the normal
way, you should just use the function from the generated
template code.
• There were changes to the Event and Operation-related functions:
• The signature of the following functions changed:
• vxtRTObject::vExecuteOperation
• vxtRTObject::ProcessEvent
• vxtRTOMEvtManager::QueueEvent
• vxtRTOMEvtManager::ProcessOrEnqueueEvent
• The event data argument is no longer a 'const Void *', but
instead a 'const vxtRTValue &'
• Refer to the “New C++ Objects Related to Passing Property
Paths and Values” section above for how to work with
vxtRTValue.
• The s_vCalculate function for calculators was renamed to
s_Calculate
• The Output property value is given as the function return value
instead of as an argument.
Drawing-Related Changes
• vPaint, vBeginDraw and vEndDraw are obsolete; only vDraw
remains and is protected.
• The bodies of vBeginDraw and vEndDraw should be merged
into vDraw.
• If vPaint was overridden, it should be renamed vDraw.
• vDraw no longer takes a window Id as argument; it is now passed a
reference to vxtRTDrawMode.
• By convention, the argument is named a_rMode.
• The window id is stored in the m_Window variable of the
drawing mode.
• vDraw is now a private function. To draw an object, use one of the
following:
• a_rMode.vDraw(Object)
• a_rMode.vDrawTranslated(Object)
• a_rMode.vDraw(FirstObject, LastObject) – draws a series of
sibling objects; they must have the same parent.
• a_rMode.vDrawTranslated(FirstObject, LastObject) –
translates and draws a series of sibling objects.
• vDrawChildren() – draws the children of a group
• vDrawChildrenTranslated(OffsetX, OffserY) – translates and
draws the children of a group.
• You do not need to test if an object can be drawn, or even if it is a
graphical object before passing it to the vDraw function of the
drawing mode.
• The draw mode (a_rMode) tests if an object is graphical, visible,
and not hidden in the editor before drawing.
• If you want to know if an object can be drawn without drawing
it, call a_rMode.CanDrawObject(Object). This is the same
function used internally by a_rMode.vDraw(Object). It
replaces the CanDrawObject function which used to be a
member of vxtRTGrObject.
• Objects do not need to test if they are visible in the vDraw function.
If an object is invisible, its vDraw will not be called.
• a_rMode.vDrawTranslated(Object)
• a_rMode.vDrawTranslated(FirstObject, LastObject)
• vDrawChildrenTranslated(OffsetX, OffserY)
• Apply clipping or stenciling to children:
• If a group object clips its children or stencils them (like the
ClippingRegion or the StencilGroup), it should check the
drawing mode’s m_EnableClipping member
• The m_EnableClipping member is only defined if the
VXT_CFG_DRAW_CONDITIONAL_CLIPPING macro is
defined. Use the following macros to test the m_EnableClipping
setting:
• VXT_IF_CLIPPING_ENABLED(a_rMode)
• VXT_AND_CLIPPING_ENABLED(a_rMode)
• Visibility of children:
• If a group object controls the visibility of individual children,
like the MutuallyExclusiveGroup (and not simply by setting the
group’s visibility), it should check the drawing mode’s
m_EnableVisibility member
• The m_EnableVisibility member is only defined if the
VXT_CFG_DRAW_CONDITIONAL_VISIBILITY macro is
defined. Use the following macros to test the
m_EnableVisibility setting:
• VXT_IF_VISIBILITY_ENABLED(a_rMode)
• VXT_AND_VISIBILITY_ENABLED(a_rMode)
• Rendering or drawing done by the group itself:
• If a group object draws something directly (not just by drawing
its children), it should check the drawing mode’s
m_EnableRendering member.
• The m_EnableRendering member is only defined if the
VXT_CFG_DRAW_CONDITIONAL_RENDERING macro is
defined. Use the following macros to test the
m_EnableRendering setting:
• VXT_IF_RENDERING_ENABLED(a_rMode)
• VXT_AND_RENDERING_ENABLED(a_rMode)
Extent-Related Changes
• vRequireExtentCalculation is deprecated.
• Calls to vRequireExtentClalculation should be replaced with
vRequireDrawAndExtentCalculation.
• Where it used to be called from the editor-only vRotate(Angle)
function, it can simply be removed.
• Objects that override vRequireExtentCalculation should
instead override OnChildExtentChanged (see below).
• OnChildExtentChanged replaces overrides of
vRequireExtentClalculation.
• vSetHasOnChildExtentChangedFunctionFlag() must be called
(typically in the constructor) or this function will not be called.
• It is called the first time a child changes its extent.
• The window Id and the child which is changing are passed as
arguments.
• Return VXT_TRUE in order for this object's extent to be flagged
as modified and keep flagging ancestors as having extent
modified.
• Return VXT_FALSE if this object's extent isn't based on the
extent of the child passed as argument to this function (see
ClippingRegion and MutuallyExclusiveGroup for examples).
• vCalculateExtent should not check if the object is visible, nor call
CanDrawObject; it should compute its extent regardless of visibility.
• If the object has no extent, it should set its extent to
vxtRRegion::s_InvalidRegion, or consider making the object
non-graphical (a calculator).
• If an object is invisible, the vGetExtent function will detect this
and automatically return an invalid extent.
• When an object is invisible, its extent variable is left as is. When
it becomes visible again it does not need to recalculate its extent
unless the object has changed while invisible.
Licensing – Packaging
Starting VAPS XT with the –vxt command line option is no longer
supported. The new default behavior when the user starts vapsxt.exe
with no command line option is equivalent to starting the previous
vapsxt with –vxt command line option.
A new DOCnGEN command line has been added to replace the old
designdoc command line option. DOCnGEN features are licensed under
DOCnGEN.
Image Generation is no longer provided with VAPS XT and its now
licensed under DOCnGEN.
Known Limitations
This section describes the known limitations in this release.
Partial Redraw
The InheritanceGroup and A661 Symbols do not work with the Partial
Redraw feature.
• An object may not be redrawn if it is brought to the front or sent to
the back of a ReorderGroup.
• Objects are clipped to the application's initial extent. This can be
worked around by adding a hidden rectangle to the application, to
increase its extent.
PopUp Mechanism
A PopUp may be visible even if its ancestors are hidden.
The "Window" pop-up context has a very small size when running in the
editor.
Drawing Integration
Loading different Implementations at the same time, and then
unloading one of them might corrupt the font of the other
Implementation. Therefore, multiple DLL Implementation in the same
process space is not supported.
Find Option
The go to Location feature does not work if the guard of a transition in
the Find results grid contains ‘[‘ .
InstanceGroup
• Instance Allocators are created with few undo capabilities, and
therefore, it is recommended to save the format before code
generating an application.
• Specific Instanced Object without any connections will not be fully
optimized in the Editor/Runtime. However, they are fully optimized
in Codegen/RT.
• When an Instanced Object generates an event the .Index of its parent
Instance Allocator is set to the correct index in order to identify the
Instanced Object. However, all other Instance Allocators will have
their index equal to “0” at the moment the event is generated, and
therefore, is not recommend in the Guard to refer to .Index property
of another Instance Allocator.
• Example: Buttons[].evPress(e)/ Switchs.Index != 0 / Actions
code. In this Switch, .Index is always equal to Zero when
Buttons[0], Buttons[1] get pressed, and therefore, the
transition never executes.
• If a specific Instanced Object event is desired, the user must use a
guard expression, .Index of the parent Instance Allocator object.
• Example: Buttons[].evPress(e)/ Buttons.Index == 1/ Actions
code;
• It is accepted, but there are problems since there are two
allocators with the same Class. The problem is perceived in the
Codegen/RT codegen/build. All elements of the second
InstanceAllocator are not created in their correct
InstanceAllocator/InstanceGroup parent since the codegen will
have picked the first InstanceAllocator for both sets of instanced
objects.
• It is not possible to have more than one InstanceGroup instances in
the same built implementation.
After adding objects to Allocators, the file modified flag does not
appear with *.
General Issues
• When editing vector fonts, all characters appear on top of each
other. Double-click a character in the implementation view to see it
on its own.
• Record and playback is not supported for A661 Graphics Server.
• Playback of multimedia object doesn’t work properly when the
playback speed is different than normal.
• If a “TableOnly” compilation is used, the raster gets loaded at
runtime. In this condition, it is important to start the executable in
the same place in the event the user wants to replace any raster file.
• The final raster file gets loaded first by looking in the current
directory of the executable, in “Executable”.CFG, and finally within
the global/local raster table element filename.
• Only the debugged version of the runtime “wogl_d” gives statistics
about the size/amount of RAM the image table held. By definition,
when the application is compiled with the Option TableAndData,
the amount of RAM is 0; since in the application the tiles are
codegenerated in ROM (as const tiles).
• There is a restriction that no two allocators within an InstanceGroup
can have the same class. There is a way to break this rule as follows:
• Drag and drop the “Text” class to Allocators
• Rename “Text” to “Text2”
• Drag and drop the “Text” class to Allocators again
C/C++ Interface
The ProcessPointerEvent and ProcessDiscreteEvent functions are not
currently used by vMainLoop. Also, the Windows port internally
handles pointer and discrete events, but currently does not use those
functions. If using the C/C++ interface as part of a standalone
application on Windows, the user should call vMainLoop instead of
calling the vExecuteIteration and vDrawAll / vDrawTopContext
functions.
For A661 applications, the user must modify
%VAPSXT_DIR%\src\Integration\A661\vxtRTA661Integration.
cpp’s ActivateRTKernel to specify UAs and streams, and rebuild the
runtime libraries. There is no callback function for A661 applications.
default :
{
[[bold]]vxtRTA661GrWidget::vSetProperty(a_Window,
a_rIds, a_rValue);[[/bold]]
}
}
}
switch(a_rIds.GetFirstPropId())
{
...
default :
{
[[bold]]Ret = vxtRTA661GrWidget::GetProperty(a_rIds);[[/
bold]]
}
}
return Ret;
}
5 Click Next.
6 Accept the terms of the Software License Agreement and click
Install.
7 Click Next when the installation is complete,
8 In the Server Location dialog box, set the LM_LICENSE_FILE
environment variable. Type the value in the following format:
@your_flex_lm_host
9 Click Next.
The Thank You dialog box shows
10 Click Finish.
11 Restart the work station to complete the installation.
5 Choose Save HOSTID info to a File and select a location to keep the file.
Since the license file corresponds to the Ethernet card address, the
user must obtain a new file if they change the card, card location,
or designate another workstation as the license server. Refer to
“Changing the License File” on page 63 for more information.
3 Using a browser, navigate to the directory where the License Manager files
are installed. By default, this directory is C:\Presagis\FlexLM_9_2.
4 Double-click lmtools.exe.
The LMTOOLS shows.
When Stop Server is selected, all VAPS XT users lose their licenses
and get disconnected from the program.
All VAPS XT users will lose their licenses and get disconnected
from the program if the license manger is stopped.
System Requirements
The minimum hardware and software requirements to install and run
VAPS XT (v2.3) are as follows:
Software
• Microsoft Windows 2000 (Service Pack 2) or Windows XP Professional
Edition (Service Pack 2).
• Microsoft Visual Studio 2005 compiler (if the user wants to code
objects or code generate applications)
Environment Variables
Two environment variables get added to the system environment
variables when VAPS XT (v2.3) is installed. The table below shows the
variables VAPS XT (v2.3) queries at run-time.
Variable Description
VAPSXT_DIR Path environment variable: The installation program
specifies this variable when the user selects an install
directory during set-up. All VAPS XT projects and
subprojects use it to find the run-time directory.
Microsoft Visual Studio 2005 projects (for SDK) use this
environment variable to define default output directories,
and to locate libraries and header files.
VAPSXT_DPI Screen resolution: Set this value (default 100 dpi) to the
screen's dpi. VAPS XT uses this value to render physical
units correctly. If this value is set correctly, 1mm in an
object file shows as 1mm on the screen.
Installation Directories
VAPS XT 2.3 gets installed to the C:\Presagis\VapsXT_23 directory.
The VAPS XT installation directory has the following structure:
set PATH=%VAPSXT_DIR%\bin;%PATH%
The user must make one copy of this setup.bat batch file for each
version of VAPS XT, and within each copy of the batch file, the user must
change the directory specified in the following line:
set VAPSXT_DIR=C:\Presagis\VapsXT_23
For example, if the user has two versions of VAPS XT (v2.1 and v2.3),
two copies of setup.bat batch file must be created as follows:
setup_21.bat with the line: set
VAPSXT_DIR=C:\Presagis\VapsXT_21
and
setup_23.bat with the line: set
VAPSXT_DIR=C:\Presagis\VapsXT_23
The command prompt window stays open during the VAPS XT session,
but closes when the user exits VAPS XT.
Add the following line to the end of the batch file to launch VAPS XT
immediately after running the batch file:
vapsXT.exe
If the autorun screen does not appear, navigate to the root folder on
the CD and double-click the autorun.exe file.
2 Click Install nGEN sources for VAPS XT 2.3.
The installation will check to see if you have VAPS XT currently
installed on your workstation and that the VAPSXT_DIR
environment variable is defined.
3 In the Welcome dialog box, review the instructions and click Next.
You must select the I accept the terms in the License Agreement
check box to continue the installation.
6 When the installation is complete, click Next.
7 If you do not want to view the Readme file, clear the View the
Readme check box.
8 Click Finish.
If you chose to view the Readme file, your default text editor starts
and displays the readme.txt file.