Chapter 6:
Annotation Attributes (AAN_)

ATTRIBUTE

Description

AAN_ARC_INFO

Annotation Arc Information

AAN_ARW_ANGLE

Annotation Arrow Angle

AAN_ARW_HDIND

Annotation Arrow Head Indent

AAN_ARW_HDWID

Annotation Arrow Head Width

AAN_ARW_PRESET

Annotation Arrow Preset

AAN_ARW_SIDES

Annotation Arrow Sides

AAN_ARW_TLIND

Annotation Arrow Tail Indent

AAN_ARW_TLWID

Annotation Arrow Tail Width

AAN_BOUNDS

Annotation Bounds

AAN_BOXTYPE_BALLOON

Annotation Box Type Balloon

AAN_BOXTYPE_BCHART

Annotation Box Type Bullet Chart Text

AAN_BOXTYPE_BOX

Annotation Box Type Box

AAN_BOXTYPE_DBLTBOX

Annotation Box Type Double Edged Text Box

AAN_BOXTYPE_NOBOX

Annotation Box Type No Box

AAN_BOXTYPE_THREEDTBOX

Annotation Box Type 3D Text Box

AAN_BULLET_SHP

Annotation Bullet Shape

AAN_BULLET_SIZE

Annotation Bullet Size

AAN_BULLET_SPACING

Annotation Bullet Spacing

AAN_ENDPOINTS

Annotation Endpoints of arrow or line

AAN_LINEARROWHEADS

Annotation Line Arrowheads

AAN_MOVE

Annotation Move

AAN_RECT_ROUNDNESS

Annotation Rectangle Roundness

AAN_RROUNDNESS_100

Annotation Rectangle Rounding 100%

AAN_RROUNDNESS_25

Annotation Rectangle Rounding 25%

AAN_RROUNDNESS_50

Annotation Rectangle Rounding 50%

AAN_RROUNDNESS_75

Annotation Rectangle Rounding 75%

AAN_RROUNDNESS_NONE

Annotation Rectangle Rounding None

AAN_TBOX_EDITBOUNDS

Annotation Text Box Editable Bounds

AAN_TBOX_MARGINS

Annotation Text Box Margins

AAN_TEXT

Annotation Text

AAN_THICKNESS

Annotation Thickness

AAN_ARC_INFO

 

This attribute defines an OAN_ARC object. The annotation engine can create an arc by specifying a start angle and stop angle in radians (startAngle and arcAngle) or by specifying a start and stop point in Three |D| Graphics virtual coordinates (startPt and endPt). If both fields of the structure are filled in, the startPt and endPt will have control.

Type:

typedef struct WedgeInfoRec {
     Rect bounds;
     INT16 startAngle;
     INT16 arcAngle;
     Point startPt;
     Point endPt;
     INT16 height;
} WedgeInfoRec, FAR *WedgeInfoPtr;

Valid Range:

bounds: A pointer to a rectangle data structure.

 

startAngle: A integer expressed in degrees, range 0 to 360. Within the bounding box, this number defines the angle at which the arc will start to draw.

 

arcAngle: A integer expressed in degrees, range 0 to 360. Within the bounding box, this number defines the angle at which the arc will stop drawing.

 

startPt: An integer expressed in TDG Virtual coordinates, this is the X/Y location at which the arc is to begin drawing relative to the bounding box of the arc. If this entry is set, it overrides the startAngle and arcAngle entries above.

 

endPt: An integer expressed in TDG Virtual coordinates, this is the X/Y location at which the arc is to stop drawing relative to the bounding box of the arc. If this entry is set, it overrides the startAngle and arcAngle entries above.

 

height: This parameter is for internal use by TDG only; do not attempt to change its value.

Default:

None

Also See:

AAN_BOUNDS

Usage

ObjectID

SeriesID

GroupID

GraphTypes

Requirements:

ANNOTATION: For use with freeform drawing tools ONLY

AAN_ARW_ANGLE

 

This attribute defines the angle (in radians) of the head of an arrow.

Type:

REAL64

Valid Range:

0 to 2_r of the Arc

Default:

ARROWANGLE (500.0)

Notes:

If this (or any of the other arrow-specific attribute) is set to a value that is not contained within an arrow preset, a Get operation on AAN_ARROW_PRESET will return null.

Also See:

AAN_ARW_PRESET

Usage

ObjectID

SeriesID

GroupID

GraphTypes

Requirements:

ANNOTATION: For use with freeform drawing tools ONLY

   

AAN_ARW_HDIND

 

This attribute specifies the amount (in virtual coordinate integers) that the head of the arrow is indented from the main body of the arrow.

Type:

INT16

Valid Range:

0 to 3000, but aesthetic limits are in the 10 to 75 range

Default:

ARROWHEADINDENT (0)

Also See:

AAN_ARW_PRESET

Usage

ObjectID

SeriesID

GroupID

GraphTypes

Requirements:

ANNOTATION: For use with freeform drawing tools ONLY

   

AAN_ARW_HDWID

 

This attribute specifies the width (in virtual coordinate integers) of the head of the arrow. Width is defined as being the width of the head of the arrow at the point where the arrow head joins the arrow body.

Type:

INT16

Valid Range:

0 to 3000, but aesthetic limits are in the 10 to 75 range

Default:

ARROWWIDHEAD (100)

Also See:

AAN_ARW_PRESET

Usage

ObjectID

SeriesID

GroupID

GraphTypes

Requirements:

ANNOTATION: For use with freeform drawing tools ONLY

AAN_ARW_PRESET

 

This attribute determines which of the arrow presets this arrow uses. Each preset defines the angle, head sides, head indent, head width, tail indent, and tail width as shown in the following table.

Type:

INT16

Valid Range:

0...15

 

0=

Angle: 500.0, Head Sides/Indent/Width: 500/0/100, Tail Indent/Width: 0/100

 

1=

Angle: 1000.0, Head Sides/Indent/Width: 500/-200/100, Tail Indent/Width: 0/200

 

2=

Angle: 1000.0, Head Sides/Indent/Width: 750/-200/100, Tail Indent/Width: 0/200

 

3=

Angle: 1100.0, Head Sides/Indent/Width: 820/-300/200, Tail Indent/Width: 0/200

 

4=

Angle: 1100.0, Head Sides/Indent/Width: 820/-300/200, Tail Indent/Width: 400/400

 

5=

Angle: 2000.0, Head Sides/Indent/Width: 1000/0/225, Tail Indent/Width: 400/500

 

6=

Angle: 1500.0, Head Sides/Indent/Width: 1300/-500/200, Tail Indent/Width: 0/500

 

7=

Angle: 1300.0, Head Sides/Indent/Width: 1000/0/400, Tail Indent/Width: 0/400

 

8=

Angle: 1300.0, Head Sides/Indent/Width: 1300/-350/380, Tail Indent/Width: 0/380

 

9=

Angle: 1300.0, Head Sides/Indent/Width: 1300/0/500, Tail Indent/Width: 0/500

 

10=

Angle: 1300.0, Head Sides/Indent/Width: 1300/-200/500, Tail Indent/Width: 300/550

 

11=

Angle: 2500.0, Head Sides/Indent/Width: 1750/-400/450, Tail Indent/Width: 0/450

 

12=

Angle: 2000.0, Head Sides/Indent/Width: 2150/-200/450, Tail Indent/Width: 300/700

 

13=

Angle: 1400.0, Head Sides/Indent/Width: 1400/0/400, Tail Indent/Width: 300/700

 

14=

Angle: 1400.0, Head Sides/Indent/Width: 2800/0/750, Tail Indent/Width: 0/850

 

15=

Angle: 2850.0, Head Sides/Indent/Width: 2800/-500/750, Tail Indent/Width: 300/900

Default:

None

Notes:

Applications can create and maintain their own 'preset arrows' by specifying them using the other ARROW attributes. See AAN_ARW_... for more information.

Also See:

AAN_ARW_ANGLE, AAN_ARW_HDIND, AAN_ARW_HDWID, AAN_ARW_SIDES, AAN_ARW_TLIND, AAN_ARW_TLWID

Usage

ObjectID

SeriesID

GroupID

GraphTypes

Requirements:

ANNOTATION: For use with freeform drawing tools ONLY

   

AAN_ARW_SIDES

 

This attribute determines the length in virtual coordinates of the arrow in question.

Type:

INT16

Valid Range:

0 to 2000 in virtual coordinates, but aesthetic limits are from about 50 to 200.

Default:

ARROWSIDES (500)

Also See:

AAN_ARW_PRESET

Usage

ObjectID

SeriesID

GroupID

GraphTypes

Requirements:

ANNOTATION: For use with freeform drawing tools ONLY

   

AAN_ARW_TLIND

 

This attribute determines the amount that the tail of the arrow will be indented. This figure determines how far in the base of the tail will be indented (feathered) from the end of the arrow.

Type:

INT16

Valid Range:

0 to 2000, but aesthetic limits are somewhere around 0 to 75. A value of 0 will result in an arrow that does not have an indented tail at all.

Default:

ARROWTAILINDENT (0)

Also See:

AAN_ARW_PRESET

Usage

ObjectID

SeriesID

GroupID

GraphTypes

Requirements:

ANNOTATION: For use with freeform drawing tools ONLY

   

AAN_ARW_TLWID

 

This attribute determines the width of the tail of the arrow in virtual coordinates.

Type:

INT16

Valid Range:

0 to 2000, but aesthetic limites are around 0 to 200

Default:

ARROWWIDTAIL (100)

Also See:

AAN_ARW_PRESET

Usage

ObjectID

SeriesID

GroupID

GraphTypes

Requirements:

ANNOTATION: For use with freeform drawing tools ONLY

   

AAN_BOUNDS

 

This attribute determines the bounds of the annotation object in question. Note that this is a true RECT, not a BoxInstRec as is used in the 2D engine.

Type:

typedef struct tagRECT
{
     int left; int top;
     int right; int bottom;
} RECT;

Valid Range:

left, top: x,y coordinates of top-left corner of rectangle

 

right, bottom: x,y coordinates of right-bottom corner of rectangle

Default:

None

Usage

ObjectID

SeriesID

GroupID

GraphTypes

Requirements:

ANNOTATION: For use with freeform drawing tools ONLY

   

AAN_BOXTYPE_BALLOON

 

This attribute is a duplicate of AAN_TBOXTYPE. It allows direct switching of the text box type into a balloon via a boolean control that can be directly attached to a toggle menu item, if desired.

Type:

BOOLEAN

Valid Range:

TRUE/FALSE

 

TRUE=

This annotation is a balloon type.

 

FALSE=

This annotation is not a balloon type.

Default:

FALSE

Also See:

AAN_BOXTYPE_BCHART, AAN_BOXTYPE_BOX, AAN_BOXTYPE_DBLTBOX, AAN_BOXTYPE_NOBOX, AAN_BOXTYPE_THREEDTBOX

Usage

ObjectID

SeriesID

GroupID

GraphTypes

Requirements:

ANNOTATION: For use with freeform drawing tools ONLY

   

AAN_BOXTYPE_BCHART

 

This attribute is a duplicate of AAN_TBOXTYPE. It allows direct switching of the text box type into a bullet chart via a boolean control that can be directly attached to a toggle menu item, if desired.

Type:

BOOLEAN

Valid Range:

TRUE/FALSE

 

TRUE=

This annotation is a bullet chart type.

 

FALSE=

This annotation is not a bullet chart type.

Default:

FALSE

Also See:

AAN_BOXTYPE_BALLOON, AAN_BOXTYPE_BOX, AAN_BOXTYPE_DBLTBOX, AAN_BOXTYPE_NOBOX, AAN_BOXTYPE_THREEDTBOX

Usage

ObjectID

SeriesID

GroupID

GraphTypes

Requirements:

ANNOTATION: For use with freeform drawing tools ONLY

   

AAN_BOXTYPE_BOX

 

This attribute is a duplicate of AAN_TBOXTYPE. It allows direct switching of the text box type into a boxed text item via a boolean control that can be directly attached to a toggle menu item, if desired. A boxed text item is a line of text which is surrounded by a simple one-dimensional bounding box.

Type:

BOOLEAN

Valid Range:

TRUE/FALSE

 

TRUE=

This annotation is a boxed type.

 

FALSE=

This annotation is not a boxed type.

Default:

FALSE

Also See:

AAN_BOXTYPE_BALLOON, AAN_BOXTYPE_BCHART, AAN_BOXTYPE_DBLTBOX, AAN_BOXTYPE_NOBOX, AAN_BOXTYPE_THREEDTBOX

Usage

ObjectID

SeriesID

GroupID

GraphTypes

Requirements:

ANNOTATION: For use with freeform drawing tools ONLY

   

AAN_BOXTYPE_DBLTBOX

 

This attribute is a duplicate of AAN_TBOXTYPE. It allows direct switching of the text box type into a double box text item via a boolean control that can be directly attached to a toggle menu item, if desired. A double boxed text item is one that has a box inside a another box; the text itself resides within the inner box.

Type:

BOOLEAN

Valid Range:

TRUE/FALSE

 

TRUE=

This annotation is a double boxed type.

 

FALSE=

This annotation is not a double boxed type.

Default:

FALSE

Also See:

AAN_BOXTYPE_BALLOON, AAN_BOXTYPE_BCHART, AAN_BOXTYPE_BOX, AAN_BOXTYPE_NOBOX, AAN_BOXTYPE_THREEDTBOX

Usage

ObjectID

SeriesID

GroupID

GraphTypes

Requirements:

ANNOTATION: For use with freeform drawing tools ONLY

   

AAN_BOXTYPE_NOBOX

 

This attribute is a duplicate of AAN_TBOXTYPE. It allows direct switching of the text box type into a unboxed text item via a boolean control that can be directly attached to a toggle menu item, if desired. This type of text item has no box around it at all; it is simply free-floating text.

Type:

BOOLEAN

Valid Range:

TRUE/FALSE

 

TRUE=

This annotation is a no-box type.

 

FALSE=

This annotation is a no-box type.

Default:

FALSE

Also See:

AAN_BOXTYPE_BALLOON, AAN_BOXTYPE_BCHART, AAN_BOXTYPE_BOX, AAN_BOXTYPE_DBLTBOX, AAN_BOXTYPE_THREEDTBOX

Usage

ObjectID

SeriesID

GroupID

GraphTypes

Requirements:

ANNOTATION: For use with freeform drawing tools ONLY

   

AAN_BOXTYPE_THREEDTBOX

 

This attribute is a duplicate of AAN_TBOXTYPE. It allows direct switching of the text box type into a 3D text box via a boolean control that can be directly attached to a toggle menu item, if desired. A text annotation with a 3D box is one that has two sides to it, simulating the appearance of a 3D cube with text on the top surface. The depth of the 3D effect can be controlled in a manner very similar to the 3D effect on a pie chart.

Type:

BOOLEAN

Valid Range:

TRUE/FALSE

 

TRUE=

This annotation is a 3D box type.

 

FALSE=

This annotation is not a 3D box type.

Default:

FALSE

Also See:

AAN_BOXTYPE_BALLOON, AAN_BOXTYPE_BCHART, AAN_BOXTYPE_BOX, AAN_BOXTYPE_DBLTBOX, AAN_BOXTYPE_NOBOX

Usage

ObjectID

SeriesID

GroupID

GraphTypes

Requirements:

ANNOTATION: For use with freeform drawing tools ONLY

   

AAN_BULLET_SHP

 

This attribute governs the shape of the bullet that will be used for all bullet lines in this text instance. It uses the same shapes that are used by the 2D and 3D engines for markers on line and scatter graphs.

Type:

INT16

Valid Range:

See A2D_MARKERSHAPE for a list of definitions

Default:

1 (SRectangle)

Also See:

A2D_MARKERSHAPE, AAN_BULLET_SIZE, AAN_BULLET_SPACING

Usage

ObjectID

SeriesID

GroupID

GraphTypes

Requirements:

ANNOTATION: For use with freeform drawing tools ONLY

   

AAN_BULLET_SIZE

 

This attribute determines the size of the marker as a percentage of its total available area.

Type:

INT16

Valid Range:

0 to 100; 0 would draw an invisible bullet; 100 would make the largest possible bullets, which would all write over each other. 35 to 50 is ususally the "best" size for most purposes

Default:

24

Also See:

AAN_BULLET_SHP, AAN_BULLET_SPACING

Usage

ObjectID

SeriesID

GroupID

GraphTypes

Requirements:

ANNOTATION: For use with freeform drawing tools ONLY

   

AAN_BULLET_SPACING

 

This attribute determines the amount of spacing between the bullet item and the text in a BCHART type of text annotation. This integer is expressed in TDG virtual coordinates.

Type:

INT16

Valid Range:

0 to 2000. Aesthetic values should be kept quite small; 10 to 30 is usually acceptable except at very small font sizes

Default:

60

Also See:

AAN_BULLET_SHP, AAN_BULLET_SIZE

Usage

ObjectID

SeriesID

GroupID

GraphTypes

Requirements:

ANNOTATION: For use with freeform drawing tools ONLY

   

AAN_ENDPOINTS

 

This attribute controls the X/Y start and end points of a line or arrow. Note that this structure is code-identical to a RECT or a BoxInstRec, but its entries are used as two X/Y pairs to determine points on the screen.

Type:

typedef struct AEndPointStruct
{
     Point p0; /* Start Point */
     Point p1; /* End Point*/
} AEndPointStruct, FAR * EndPointSPtr;

Valid Range:

p0: x,y coordinates of start point

 

p1: x,y coordinates of end point

Default:

Zero

Also See:

AAN_LINEARROWHEADS

Usage

ObjectID

SeriesID

GroupID

GraphTypes

Requirements:

ANNOTATION: For use with freeform drawing tools ONLY

   

AAN_LINEARROWHEADS

 

This attribute controls whether an arrow annotation has arrows at one end, both ends, or no ends:

Type:

INT16

Valid Range:

0...3

 

0=

no arrows

 

1=

arrow at start end only

 

2=

arrow at ending end only

 

3=

arrow at both ends

Also See:

AAN_ARW_ANGLE, AAN_ARW_HDIND, AAN_ARW_HDWID, AAN_ARW_PRESET, AAN_ARW_SIDES, AAN_ARW_TLIND, AAN_ARW_TLWID, AAN_ENDPOINTS

Usage

ObjectID

SeriesID

GroupID

GraphTypes

Requirements:

ANNOTATION: For use with freeform drawing tools ONLY

   

AAN_MOVE

 

This attribute moves the specified annotation to a new position.

Type:

typedef struct tagRECT
{
     int left; int top;
     int right; int bottom;
} RECT;

Valid Range:

left, top: Specify the left/top corner of the location in virtual coordinates

 

right, bottom: Specify the right/bottom corner of the location in virtual coordinates

Default:

None

Usage

ObjectID

SeriesID

GroupID

GraphTypes

Requirements:

ANNOTATION: For use with freeform drawing tools ONLY

   

AAN_RECT_ROUNDNESS

 

This attribute is used to create rounded rectangles.

Type:

INT16

Valid Range:

Any INT16 value. Examples Values: 0=No rounding, 400=25% rounding, 800=50% rounding, 1200=75% rounding, 1600=100% rounding.

Default:

Zero (No Rounding)

Also See:

AAN_RROUNDNESS_NONE, AAN_RROUNDNESS_25, AAN_RROUNDNESS_50, AAN_RROUNDNESS_75, & AAN_RROUNDNESS_100

Usage

ObjectID

SeriesID

GroupID

GraphTypes

Requirements:

ANNOTATION: For use with freeform drawing tools ONLY

   

AAN_RROUNDNESS_25

 

This attribute creates a rectangle with 25% rounded corners.

Type:

NULL

Valid Range:

NULL

Default:

None

Also See:

AAN_RECT_ROUNDNESS, AAN_RROUNDNESS_NONE

Usage

ObjectID

SeriesID

GroupID

GraphTypes

Requirements:

ANNOTATION: For use with freeform drawing tools ONLY

AAN_RROUNDNESS_50

 

This attribute creates a rectangle with 50% rounded corners.

Type:

NULL

Valid Range:

NULL

Default:

None

Also See:

AAN_RECT_ROUNDNESS, AAN_RROUNDNESS_NONE

Usage

ObjectID

SeriesID

GroupID

GraphTypes

Requirements:

ANNOTATION: For use with freeform drawing tools ONLY

   

AAN_RROUNDNESS_75

 

This attribute creates a rectangle with 75% rounded corners.

Type:

NULL

Valid Range:

NULL

Default:

None

Also See:

AAN_RECT_ROUNDNESS, AAN_RROUNDNESS_NONE

Usage

ObjectID

SeriesID

GroupID

GraphTypes

Requirements:

ANNOTATION: For use with freeform drawing tools ONLY

   

AAN_RROUNDNESS_100

 

This attribute creates a rectangle with 100% rounded corners.

Type:

NULL

Valid Range:

NULL

Default:

None

Also See:

AAN_RECT_ROUNDNESS, AAN_RROUNDNESS_NONE

Usage

ObjectID

SeriesID

GroupID

GraphTypes

Requirements:

ANNOTATION: For use with freeform drawing tools ONLY

   

AAN_RROUNDNESS_NONE

 

This attribute creates a rectangle with no rounding

Type:

NULL

Valid Range:

NULL

Default:

None

Also See:

AAN_RECT_ROUNDNESS, AAN_RROUNDNESS_25, AAN_RROUNDNESS_50, AAN_RROUNDNESS_75, AAN_RROUNDNESS_100

Usage

ObjectID

SeriesID

GroupID

GraphTypes

Requirements:

ANNOTATION: For use with freeform drawing tools ONLY

   

AAN_TBOX_EDITBOUNDS

 

This attribute defines the editable bounds of the text annotation. This allows an application to put up an 'edit area' directly on the screen in exactly the location that the annotation item is, and presents the user with a rectangle that exactly corresponds to the editable area of that annotation.

Type:

typedef struct tagRECT
{
int left; int top;
int right; int bottom;
} RECT;

Valid Range:

left, top: x,y coordinates of the top, left bounds

 

right, bottom: x,y coordinates of the right, bottom bounds

Default:

Zero

Also See:

AAN_TBOX_MARGINS

Usage

ObjectID

SeriesID

GroupID

GraphTypes

Requirements:

ANNOTATION: For use with freeform drawing tools ONLY

   

AAN_TBOX_MARGINS

 

This attribute defines the "inset" of the text itself from the bounding rectangle of the text annotation. This figure is expressed in TDG virtual coordinates.

Type:

INT16

Valid Range:

0 to 2000, theoretically; however, if the margins are set larger than the text annotation is itself, there will be no text at all in the annotation. Realistic values are in the 10 to 40 range, depending on the height and width of the text annotation item.

Default:

Zero

Also See:

AAN_TBOX_EDITBOUNDS

Usage

ObjectID

SeriesID

GroupID

GraphTypes

Requirements:

ANNOTATION: For use with freeform drawing tools ONLY

   

AAN_TEXT

 

This attribute creates a text annotation object with the actual text string, contained within quotes, that is used for this annotation.

Type:

String

Valid Range:

Any character string; there is a limit of 255 characters per text annotation item

Default:

None

Also See:

AAN_TBOX_EDITBOUNDS, AAN_TBOX_MARGINS, AAN_THICKNESS

Usage

ObjectID

SeriesID

GroupID

GraphTypes

Requirements:

ANNOTATION: For use with freeform drawing tools ONLY

   

AAN_THICKNESS

 

This attribute specifies the depth of the 3D text box. This attribute works in a similar manner to API_DEPTH in the pie engine; it controls the thickness of the 3D box. This value is expressed in TDG virtual coordinates.

Type:

INT16

Valid Range:

0 to 2000; aesthetic limits are between 20 and 400

Default:

150

Also See:

AAN_TBOX_EDITBOUNDS, AAN_TBOX_MARGINS

Usage

ObjectID

SeriesID

GroupID

GraphTypes

Requirements:

ANNOTATION: For use with freeform drawing tools ONLY