Appendix A:
Relevant Data Structures


 

This chapter describes the data structures that are commonly referenced in the library's chart attributes and API functions.

 

AdvancedWashRecord; Advanced Wash Record

 

AdvFormatStruct; Advanced Format Structure

 

AnaLineInfoRec; Annotation Line Information Record

 

AnodeInfoRec; Annotation Node Information Record

 

AnodeMasterRec; Annotation Node Master Record

 

AreaInstRec; Area Instance Record

 

ArrowInfoRec; Arrow Information Record

 

BoxInstRec; Box Instance Record

 

BrushRecord; Brush Record

 

ColorInstRec; Color Instance Record

 

CrustInfoRec; Pie Crust Information Record

 

DetListInfo; Detection List Information

 

DetNodeRec; Detection Node Record

 

DetNodeRef; Detection Node Reference

 

DropShadowInstRec; Drop Shadow Instance Record

 

FontInstRec; Font Instance Record

 

FXStruct; Special Effects Structure

 

GDPALETTE; External Palette

 

GlobalFontClass; Global Font Class

 

GlowInstRec; Glow Instance Record

 

GraphDataInfo; Graph Data Information

 

GroupInfoRec; Group Information Record

 

GTextInfoRec; General Text Information Record

 

IOPATH; Platform independent file I/O structure.

 

LineInfoRec; Line Information Record

 

LineInstRec; Line Instance Record

 

PictureRecord; Picture Record

 

Point; Point definition

 

Point16; Point INT16 definition

 

Point2D; Point 2D definition

 

PolygonInfoRec; Polygon Information Record

 

PolyInfoRec; Polygon Line Information Record

 

RamFileRec; RAM File Record

 

Rect; Rectangle definition

 

RegionInfoRec; Region Information Record

 

RGB16; Red/Green/Blue Color definition

 

ScaleClass; Scale Class

 

SelItemRec; Selection Item Record

 

SelListRec; Selection List Record

 

SliceInfoRec; Pie Slice Information Record

 

TDG_GraphPresetInfo; Three |D| Graphics Graph Preset Information

 

TextInfoRec; Text Information Record

 

TiffHeaderRec; TIFF File Header Record

 

TiffInputRec; TIFF File Input Record

 

UpdateItemRec; Update Item Record

 

VTABLE; Variable length array type

 

WashRecord; Wash Record

 

WedgeInfoRec; Pie Wedge Information Record

   

AdvancedWashRecord

 

This data structure defines a wash record that can be applied as a special effect to area, line, and text objects in the chart.

typedef:

typedef struct
{
     RGB16 startColor;
     RGB16 endColor;
     INT16 nOffsetX;
     INT16 nOffsetY;
     INT16 nAngle;
     INT16 nSteps;
     INT16 nScale;
     INT16 nWashType;
//     POINT *points;
//     INT16 nNumPoints;
} AdvancedWashRecord;

Members:

startColor: RGB16 structure where the starting color of the wash is stored

 

endColor: RGB16 structure where the ending color of the wash is stored

 

nOffsetX: horizontal offset percentage relative to target rectangle's top left corner. Range: 0 to 100. 0=left end point, 100=right end point

 

nOffsetY: vertical offset percentage relative to target rectangle's top left corner. Range: 0 to 100. 0=top end point, 100=bottom end point

 

nAngle: rotation angle in degrees CounterClockwise from horizontal. Range: 0 to 360. (not used in Oval Wash)

 

nSteps: number of color blending steps. The smaller the steps the more coarse the color. Range: positive integers. 0=automatic (most fine)

 

nScale: the initial size of the Oval or Rectangle Wash. Range: 0 to 100. 0=start at center, 100=start at boundary of the target rectangle. (not used in Linear Washes)

 

nWashType: INT16 the advanced wash types: WashOval, WashZoomRect and WashLinear.

Used By:

A_AREASFX, A_LINESFX, A_FONTSFX, FXStruct

Also See:

RGB16

AdvFormatStruct

 

This data structure is used to define a custom format string for the following numeric values that may be drawn in the chart:

 

Formula and correction coefficient strings drawn in conjunction with series-dependent lines

 

Numeric Axis Labels

 

Numeric Axis data text

 

typedef struct _AdvFormatStruct {
     AdvFormatTypes formatType;
     UINT iLZero;
     UINT iDigits;
     UINT iGrouping;
     UINT iNegNumber;
     _TCHAR szScientificSymbol[3];
     _TCHAR szDecimal[5];
     _TCHAR szThousand[5];
     UINT iCurrDigits;
     UINT iMonGrouping;
     UINT iNegCurr;
     UINT iPosCurr;
     _TCHAR szCurrency[5];
     _TCHAR szMonDecimalSep[5];
     _TCHAR szMonThousandSep[5];
     _TCHAR szTimeFormat[32];
     _TCHAR szDateFormat[32];
     _TCHAR szPrefixText[20];
     _TCHAR szPostfixText[20];
     _TCHAR szNumColor[20];
     _TCHAR szNegColor[20];
     _TCHAR szZeroColor[20];
     BOOL bPrefixPercentSymbol;
     double dScaleFactor;
     BOOL bNoNegSign;
     LCID localeID;
     _TCHAR szCustomFormat[256];
} AdvFormatStruct, *AdvFormatPtr;

 

Before this data structure is used, it should be initialized using the InitAdvFormat() API.

Members:

formatType: = A value from the AdvFormatTypes enum:

 

AdvFormatTypes

Value

Description

 

NoFormat

0

None

 

GeneralFormat

1

General Format

 

NumberFormat

2

Number Format

 

ScientificFormat

3

Scientific Format

 

PercentFormat

4

Percent Format

 

FractionFormat

5

Fraction Format

 

CurrencyFormat

6

Currency Format

 

DateFormat

7

Date Format

 

TimeFormat

8

Time Format

 

DateTimeFormat

9

Date/Time Format

 

ZipCodeFormat

10

Zip Code Format

 

ZipCodePlus4Format

11

Zip Code + 4-digits format (ex. input: 900675908, output: 90067-5908)

 

SSNFormat

12

Social Security Number format (ex. input: 220450867, output: 220-45-0867)

 

PhoneFormat

13

Telephone Number Format (ex. input: 3105533313, output: (310) 553-3313)

 

TextFormat

14

Text Format

 

CustomFormat

15

Custom Format

 

iLZero: leading zero flag (0=no, 1=yes). Used by NumberFormat and CurrencyFormat.

 

iDigits: # of precision digits after decimal point. Used by NumberFormat, ScientificFormat, PercentFormat, FractionFormat

 

iGrouping: # of group digits (eg, every 3 digits). Used by NumberFormat.

 

iNegNumber: negative number format code (0...4). See Win32 LCTYPE constant LOCALE_INEGSIGNPOSN for code meaning. Used by NumberFormat.

 

szScientificSymbol[3]: scientific notation symbol('E' or 'e'). Used by ScientificFormat.

 

szDecimal[5]: Decimal period symbol. Used by NumberFormat, ScientificFormat, PercentFormat, and GeneralFormat

 

szThousand[5]: Thousand separator symbol. Used by NumberFormat

 

iCurrDigits: # of precision digits after decimal point for currencies. Used by CurrencyFormat

 

iMonGrouping: # of group digits for currency (eg, every 3 digits). Used by CurrencyFormat

 

iNegCurr: negative Currency format code (0 to 15). See Win32 LCTYPE LOCALE_INEGCURR for code meaning. Used by CurrencyFormat.

 

iPosCurr: positive Currency format code (0 to 3). See Win32 LCTYPE_LOCALE_ICURRENCY for code meaning. Used by CurrencyFormat

 

szCurrency[5]: If formatType is CurrencyFormat, this member specifies the currency symbol.

 

szMonDecimalSep[5]: If formatType is CurrencyFormat, this member specifies the Currency Decimal point symbol.

 

szMonThousandSep[5]: If formatType is CurrencyFormat, this member specifies the Currency Thousand separator symbol.

 

szTimeFormat[32]: If formatType is TimeFormat or DateTimeFormat, specify a time format string (eg, "hh':'mm':'ss"). See Win32 GetTimeFormat function for all possible string formats.

 

szDateFormat[32]: If formatType is TimeFormat or DateTimeFormat, specify a date format string (eg, "MM'/'dd'/'yy"). See Win32 GetDateFormat function for all possible string formats.

 

szPrefixText[20]: If formatType is set to any value other than NoFormat, specify the text you want to put in from of the output.

 

szPostfixText[20]: If formatType is set to any value other than NoFormat, specify the text you want to append to the output.

 

szNumColor[20]: positive number color name: "red", "green", "blue", "yellow", "black", "cyan", "magenta", "white". Used by all Formats except NoFormat.

 

szNegColor[20]: negative number color name: red, green, blue, yellow, black, cyan, magenta, white. Used by all Formats except NoFormat.

 

szZeroColor[20]: zero color name: red, green, blue, yellow, black, cyan, magenta, white. Used by all Formats except NoFormat.

 

bPrefixPercentSymbol: If formatType is PercentFormat, use TRUE to put a percent sign (%) in front of number. Use FALSE to omit the percent sign.

 

dScaleFactor: If formatType is NumberFormat or CurrencyFormat, specify the factor to reduce the number (eg, 1000 Kilo, 1000000 Mega, etc.).

 

bNoNegSign: True/False use negative sign

 

localeID: Locale ID

 

szCustomFormat: Custom number format string

Notes:

1.

All of the members can work with Internationalization. Character members supports Multi-byte and Unicode. You must define those flags before using them.

 

2.

NoFormat can be used to temporarily disable advanced formatting and use the format index specified by A_FORMAT_SDLINE

 

3.

TimeFormat, DateFormat and DateTimeFormat require the use of the function PackDate to pack the time and date into a single value before formatting will work.

 

4.

ZipCodeFormat, ZipCodePlus4Format, SSNFormat, and PhoneFormat require the input to be a single number (eg, 90067-5908 should be input as 900675908).

Used By:

InitAdvFormat()

AnaLineInfoRec

 

This data structure is used by the Annation Node Information Record data structure (AnodeInfoRec) to define an Annotation Line.

typedef:

typedef struct {
     Point p0;
     Point p1;
     INT16 thickness;
     INT16 arrowAtStart;
     INT16 arrowAtEnd;
     INT16 arrowSize;
}AnaLineInfoRec, FAR *AnaLineInfoPtr;

Members:

p0; Defines the x,y coordinates of a point. See Point.

 

p1; Defines the x,y coordinates of a point. See Point.

 

thickness; Defines the thickness of the line.

 

arrowAtStart; True/False enables/disables arrow at start of line

 

arrowAtEnd; True/False enables/disables arrow at end of line

 

arrowSize; Size of arrow if ArrowAtStart or arrowAtEnd is true.

Used By:

AnodeInfoRec

   

AnodeInfoRec

 

This data structure defines an annotation information record. Each AnodeInfoRec defines an annotation item that has been created in the graph.

typedef:

typedef struct _AnodeInfoRec {
     CONTROL nNodeType;
     AnodeInfoNext hNextNode;
     AnodeInfoPrev hPrevNode;
     INT16 group;
     Rect bounds;
     AreaInstPtr pArea;
     LineInstPtr pLine;
     FontInstPtr pFont;
     INT16 linkSeries;
     INT16 linkGroup;
     Rect linkRect;
     union {
          AnaLineInfoRec line;
          PolygonInfoRec poly;
          WedgeInfoRec wedge;
          RegionInfoRec region;
          GTextInfoRec text;
          ArrowInfoRec arrow;
          GroupInfoRec group;
     } info;
} AnodeInfoRec, FAR *AnodeInfoPtr;

Members:

nNodeType: A value from the NodeType enum (0...23) defines the annotation node type

 

NodeType

Value

Description

 

ARROWOBJ

0

Arrow Object

 

BALLOON

1

Balloon

 

ELLIPSE

2

Ellipse

 

FREEHAND

3

Freehand drawing

 

GROUP

4

Group

 

LINE

5

Line

 

POLYGON2

6

Polygon

 

RECTANGLE

7

Rectangle

 

REGION

8

Region

 

TEXT

9

Text

 

TEXTBOX

10

Text box

 

TEXTCHART

11

Text chart

 

WEDGE

12

Wedge

 

WEDGECRUST

13

Wedge Crust

 

WEDGEFACE

14

Wedge Face

 

DBLTBOX

15

Double Text Box

 

THREEDTBOX

16

3D Text Box

 

ARC

17

Arc

 

POLYLINE

18

Polyline

 

ROTLABEL

19

Rotated label

 

ROUNDRECT

20

Rounded Rectangle

 

HOLLOW_ELLIPSE

21

Hollow Ellipse

 

HOLLOW_RECTANGLE

22

Hollow Rectangle

 

HOLLOW_POLYGON

23

Hollow Polygon

 

hNextNode; Next AnodeInfoRect structure

 

hPrevNode; Previous AnodeInfoRect structure

 

group; Group number

 

bounds; Pointer to a rectangle data structure. See Rect.

 

pArea; Pointer to a area instance record. See AreaInstRec.

 

pLine; Pointer to a line instance record. See LineInstRec.

 

pFont; Pointer to a font instance record. See FontInstRec.

 

linkSeries; Series number

 

linkGroup; Group number

 

linkRect; Rectable data structure. See Rect.

 

line; Annotation Line Information Record. See AnaLineInfoRec.

 

poly; Polygon Information Record. See PolygonInfoRec.

 

wedge; Wedge Information Record. See WedgeInfoRec.

 

region; Region Information Record. See RegionInfoRec

 

text; General Text Information Record. See GTextInfoRec.

 

arrow; Arrow Information Record. See ArrowInfoRec.

 

group; Group Information Record. See GroupInfoRec.

Used By:

AnodeHdl2ID(), CloneHandle(),GetAnodeFromTextboxID(), ID2AnodeHdl()

Also See:

AnodeMasterRec

AnodeMasterRec

 

The Annotation Master Record (AnodeMasterRec) data structure keeps track up AnodeInfoRec data structures.

typedef:

typedef struct {
     AnodeInfoHdl head;
     AnodeInfoHdl tail;
} AnodeMasterRec, FAR *AnodeMasterPtr;

Members:

head: First AnodeInfoRec

 

tail: Last AnodeInfoRec

Also See:

AnodeInfoRec

   

AreaInstRec

Description:

For area objects such as risers, markers, pie slices, etc. that can have multiple instances identified by a Group and/or SeriesID number, the Area Instance Record (AreaInstRec) data structure defines a particular instance of that object. The system will create and maintain an "areainstrec" for each area type object in a graph. Each "areainstrec" contains the specifications for how the interior of the object is to be filled.

typedef:

typedef struct {
     ColorInstRec color;
     INT16 nPattern;
     INT16 nBRed;
     INT16 nBGreen;
     INT16 nBBlue;
     DropShadowInstRec drop;
} AreaInstRec, FAR *AreaInstPtr;

Members:

color: Defines the interior color of the area instance. See the ColorInstRec structure.

 

nPattern :An INT16 value (0..255) identifying a pattern (if any). Set by the A_AREAPATTERN attribute.

 

nBRed; nBGreen, nBBlue: If a pattern is selected, these entries define the pattern's background color in red/green/blue values (0..65535)

 

drop:Defines the drop shadow (if any) of the area instance. See the DropShadowInstRec structure.

Used By:

DetNodeRec, GTextInfoRec

Also See:

ColorInstRec, DropShadowInstRec

ArrowInfoRec

Description:

The Arrow Information Record (ArrowInfoRec) data structure defines an arrow annotation object.

typedef:

typedef struct {
     Point p0;
     Point p1;
     REAL angle;
     INT16 headSides;
     INT16 headIndent;
     INT16 headWidth;
     INT16 tailIndent;
     INT16 tailWidth;
}ArrowInfoRec, FAR *ArrowInfoPtr;

Members:

p0; Defines the x,y coordinates of a point. See Point.

 

p1; Defines the x,y coordinates of a point. See Point.

 

angle; Angle of the arrow

 

headSides; Arrow head sides

 

headIndent; Arrow head indent

 

headWidth; Arrow head width

 

tailIndent; Arow tail indent

 

tailWidth; Arrow tail width

Used By:

AnodeInfoRec

Also See:

Point

BoxInstRec

 

The Box Instance Record (BoxInstRec) data structure defines the virtual coordinates of the upper left corner and a lower right corner of a box.

 

 

A copy of this data structure is used by several attributes to define the size and location of an object in the graph.

typedef:

typedef struct {
     INT16 xULC, yULC;
     INT16 xLRC, yLRC;
} BoxInstRec, FAR *BoxInstPtr;

Members:

xULC, yULC; x,y coordinates of the upper-left corner of the box.

 

xLRC, yLRC; x,y coordinates of the lower-right corner of the box.

 

The following definitions in the header file define the maximum size of a rectangle in virtual coordinates:

 

#define

Value

 

VirtualXMIN

(-16383)

 

VirtualXMAX

16383

 

VirtualYMIN

(-16383)

 

VirtualYMAX

16383

Used By:

xBoxToRect()

Example:

BoxInstRec NewLegLoc;
case IDM_AREA:
/* For Area Graph, move legend
box to side of graph */
NewLegLoc.xULC = -15500;
NewLegLoc.yULC = 6500;
NewLegLoc.xLRC = -13500;
NewLegLoc.yLRC = -6500;
SetGraphAttr(gpGraph,GRAPH_LAYER,
     NULL_OBJECTID,
     NULL_SERIESID, NULL_GROUPID,
     A2D_LOCATE_LEGEND,
     (void FAR *)&NewLegLoc);

BrushRecord

 

The brush record (BrushRecord) data structure defines a brush special effect.

typedef:

typedef struct
{
     HBRUSH hBrush;
     INT16 nBrushMode;
} BrushRecord;

Members:

hBrush:

 

nBrushMode: BRUSHHANDLE

Used By:

FXStruct

   

ColorInstRec

 

A color instance record (ColorInstRec) contains the specifications of how to paint a given area, line, or text object. The useMaytag determines whether the area is to be painted normally or special effected. If the area is painted normally, the nRed, nGreen, and nBlue fields are used to determine the color. If the area is to use special effects, the information stored in the hMaytag field is used. The nBin and nSpectrum bin fields are used for indexed color support. The nBin field holds the index value of the color. The RGB values are also used for indexed color support and should contain the proper values for the color index. The nSpectrum bin is further used as a flag to indicate invisibility (nSpectrumBin == NOFILL).

typedef:

typedef struct {
     INT16 useMaytag;
     SFXHDL hMaytag;
     INT16 nBin;
     INT16 nSpectrumBin;
     UINT16 nRed;
     UINT16 nGreen;
     UINT16 nBlue;
     UINT16 nAlpha;
} ColorInstRec, FAR *ColorInstPtr;

Members:

useMaytag: Enable/Disable (1/0) special effects:

 

0=

Special effects disabled

 

1=

Special effects enables

 

hMaytag: Handle to special effects data

 

nBin: An INT16 value identifying a palette entry number

 

nSpectrumBin: An INT16 value identifying the bin from which RGB values originated

 

nRed; nGreen, nBlue: red/green/blue color values (0..65535)

 

nAlpha; Alpha channel (0..255) 255 = opaque, 0 = transparent

Used By:

AreaInstRec, FontInstRec, LineInstRec

CrustInfoRec

 

The Crust Information Record (CrustInfoRec) defines the crust of a pie slice.

typedef:

typedef struct _CrustInfoRec {
     Rect bounds;
     FIXED32 lxOffset;
     FIXED32 lyOffset;
     INT16 xSize;
     INT16 ySize;
     INT16 nStart;
     INT16 nEnd;
     INT16 nHeight;
     INT16 bIsOuterCrust;
} CrustInfoRec, FAR * CrustInfoPtr;

Members:

bound; bounds of the slice crust. See Rect.

 

lxOffset, lyOffset; x,y offset of slice crust.

 

xSize, ySize; x,y size of slice crust.

 

nStart; Start of slice crust

 

nEnd; End of slice crust

 

nHeight; Heigt of slice crust

 

bIsOuterCrust; True/False if crust is an outer crust. Outer crust (True) is drawn from nStart to nEnd. Inner crust (False) is drawn from nEnd to nStart.

Used By:

DetNodeRec, dvCrust(), vdCrust()

Also See:

Rect

DetListInfo

 

The Detection List Information (DetListInfo) data structure keeps track of DetNodeRec data structures.

typedef:

typedef struct {
     UINT32 totalSize;
     UINT32 totalFree;
     UINT32 firstFree;
     UINT32 lastDetNode;
} DetListInfo, FAR * DetListPtr;

Members:

totalSize; current size of detection node list

 

totalFree; free space available in the detection node list

 

firstFree; offset to first free entry in the detection node list

 

lastDetNode; offset to last allocated detnode

Used By:

AllocDetListHandle(), FreeDetListHandle(), SwapDetListHandle()

Also See:

DetNodeRec

DetNodeRec

 

The Detection Node Record (DetNodeRec) data structure completely defines a visible object in the graph. Each time the graph is drawn (with DrawTheGraph() or DryRunTheGraph()), the system will create a DetNodeRec for each visible/selectable object. While your application should not directly reference this data structure, the selection list and selection item structures will provide a reference to the DetNodeRec.

typedef:

typedef struct {
     UINT32 offset;
     INT16 nNodeType;
     INT16 nObjectID;
     INT16 nSeriesID;
     INT16 nGroupID;
     Rect detBounds;
     AreaInstPtr pArea;
     LineInstPtr pLine;
     FontInstPtr pFont;
     union {
          CrustInfoRec crust;
          LineInfoRec line;
          PolyInfoRec poly;
          RegionInfoRec region;
          SliceInfoRec slice;
          TextInfoRec text;
          WedgeInfoRec wedge;
     } info;
     INT16 tagSize;
     char tagInfo[2];
} DetNodeRec, HUGE * DetNodePtr;

Members:

offset:UINT32 value identifying the offset to next DetNodeRec

 

NodeType;:INT16 value identifying the DetNode shape.

 

nObjectID;:INT16 value identifying the Object ID. See the PGSDK Programmer's Manual for possible values.

 

nSeriesID:INT16 value identifying the series ID (-1 = not applicable)

 

nGroupID :INT16 value identifying the group ID (-1 = not applicable)

 

detBounds;:Pointer to a rectangle data structure identifying the x,y coordinates of the boundary of the object. See Rect.

 

pArea:For area objects, pointer to an area instance record. See AreaInstRec.

 

pLine:For line objects, pointer to a line instance record. See LineInstRec.

 

pFont:For text objects, pointer to a font instance record. See FontInstRec.

 

crust:For area objects in a pie chart, pointer to a Crust Information Record. See CrustInfoRec.

 

line:For line objects, pointer to a Line Information Record. See LineInfoRec.

 

poly:For polygon objects, pointer to a Polygon Information Record. See PolyInfoRec.

 

region:Pointer to a Region Information Record. See RegionInfoRec.

 

slice:For area objects in a pie chart, pointer to a Slice Information Record. See SliceInfoRec.

 

text:For text objects, pointer to a Text Information Record. See TextInfoRec.

 

wedge:Pointer to a Wedge Information Record. See WedgeInfoRec.

 

tagSize:size of special tagging information

 

tagInfo[2] :location of tag information

Also See:

AreaInstRec, FontInstRec, LineInstRec, CrustInfoRec, RegionInfoRec, SliceInfoRec, TextInfoRec, WedgeInfoRec

DetNodeRef

 

The Detection Node Reference (DetNodeRef) data structure identifies a graph layer where a DetNodeRec is located, the detection node list in which the DetNodeRec resides, and an offset into the list where the DetNodeRec is located. This information is provided by the FindDetNode() and FindNextDetNode() API functions.

typedef:

typedef struct {
     INT16 layer;
     DetListHdl hDetList;
     UINT32 offset;
} DetNodeRef, FAR * DetNodeRefPtr;

Members:

layer: Identifies the graph layer where the object represented by DetNodeRec resides: BACKGROUND_LAYER, GRAPH_LAYER, ANNOTATION_LAYER

 

hDetList: INT16 value of a detection list handle.

 

offset: Offset into hDetList where the DetNodeRec can be found

Used By:

DetRef2AnodeID(), FindDetNode(), FindNextDetNode(), FreeDetNode(), GetDetNode(), GetFirstDetNodeRef(), GetNextDetNode(), Item2DetRef(), LockDetNodeRef(), Item2DetRef(), Select_AddItem(), Select_AddRelatedItems(), Select_SearchList(), SelectDetNode(),

Example:

SelectDetNode ( gpGraph, pDE,
     pSelList, &detNodeRef, appendNode );

DropShadowInstRec

 

For area objects that can have drop shadows applied to them (thus creating drop shadow objects), the Drop Shadow Instance Record (DropShadowInstRec) data structure defines a particular instance of a drop shadow object.

typedef:

typedef struct {
     INT16 nXoff;
     INT16 nYoff;
     UINT16 nRed;
     UINT16 nGreen;
     UINT16 nBlue;
} DropShadowInstRec, FAR *DropShadowInstPtr;

Members:

nXoff: Virtual X-offset from shadowed object

 

nYoff: Virtual Y-offset from shadowed object

 

nRed, nGreen, nBlue: red/green/blue color values (0..65535)

Used By:

AreaInstRec, FontInstRec, A_AREADROPSHADOW, A_FONTDROPSHADOW

Example:

See Samp15.C
DropShadowInstRec Shadow;
Shadow.nXoff = 100;
Shadow.nYoff = 120;
Shadow.nRed = 0;
Shadow.nGreen = 0;
Shadow.nBlue = 0;
UpdateMenu (hmenu,&wEffect,wParam);
SetGraphAttrSL(gpGraph,gpList,
     A_AREADROPSHADOW,&Shadow);

FontInstRec

 

Font Instance Record

 

typedef struct {
     ColorInstRec color;
     INT16 nFontIndex;
     INT16 eQuality;
     INT16 nSize;
     INT16 nAngle;
     INT16 justH;
     INT16 justV;
     INT16 textFont;
     INT16 textSize;
     INT16 textFace;
     INT16 textMode;
     INT16 nFlags;
     INT16 nPitchAndFamily;
     INT16 nCharSet;
     DropShadowInstRec drop;
} FontInstRec, FAR *FontInstPtr;

Members:

color; Standard color/sfx values. See ColorInstRec

 

nFontIndex; font name index

 

eQuality; stroke, draft or proof

 

nSize; virtual size (0..32767)

 

nAngle; axis direction in degrees

 

justH, justV; horizontal/vertical justification control

 

textFont; font num

 

textSize; font size mode

 

textFace; font style

 

textMode; font transfer mode

 

nFlags; flags for rotated, hotel, anti-aliasing, etc.

 

#define

Value

Description

 

FONT_bBoxIsOK

1

 
 

FONT_bHotelText

2

Hotel Text

 

FONT_bAntiAliased

4

Anti-Aliased Text

 

FONT_bRotate90

8

Rotate Text 90%

 

FONT_bRotate180

16

Rotate Text 180%

 

FONT_bRotate270

32

Rotate Text 270%

 

FONT_bRotate45

64

Rotate Text 45%

 

FONT_bRotate315

128

Rotate Text 315%

 

FONT_bRotateCustom

256

Rotate Text a custom rotation

 

nPitchAndFamily; font pitch and family

 

nCharSet; font character set

 

drop; drop shadow instance record. See DropShadowInstRec.

Used By:

AnodeInfoRec, DetNodeRec

FXStruct

 

The special effects (FXStruct) data structure is used by the special effects attributes to apply a wash record, picture record, brush record, or advanced wash special effect to an area, font, or line object.

typedef:

typedef struct
{
     INT16 effect;
     union
     {
          WashRecord wash;
          PictureRecord picture;
          BrushRecord brush;
          AdvancedWashRecord advwash;
     } info;
} FXStruct, *FXPtr;

Members:

effect: Specifies the type of special effect with a value from the SfxType enum:

 

SfxType

Value

Description

 

WASH_FX

3

wash special effect in a WashRecord

 

PICTURE_FX

4

bitmap/picture in a PictureRecord

 

USER_PICTURE_FX

6

Reserved

 

BRUSH_FX

13

brush special effect defined in a BrushRecord

 

ADVANCED_WASH_FX

14

advanced special effect defined in AdvancedWashRecord

 

WashRecord is included for backward compatibility. AdvancedWashRecord should be used for new implementations.

 

wash; If effect is set to WASH_FX, identify the wash special effect in a WashRecord data structure. See WashRecord.

 

picture; If effect is set to PICTURE_FX, identify the picture special effect in a PictureRecord data structure. See PictureRecord.

 

brush; If effect is set to BRUSH_FX, identify the brush special effect in a BrushRecord data structure. See BrushRecord.

 

advwash; If effect is set to ADVANCED_WASH_FX, identify the advanced special effect in an AdvancedWashRecord data structure. See AdvancedWashRecord.

Used By:

A_AREASFX, A_FONTSFX, A_LINESFX

Also See:

WashRecord, PictureRecord, BrushRecord, AdvancedWashRecord

GDPALETTE

 

External Palette

typedef:

typedef struct GDPALETTE {
     TDG_WORD nEntries;
     RGB16 pal[MAXPAL];
} GDPALETTE, FAR *LPGDPALETTE;

Members:

nEntries; Number of entries

 

pal; Palette array. #define MAXPAL 256

Used By:

ExportGif(), ExportGifToMemory(), ExportPNG(), ExportPNGToMemory()

   

GlobalFontClass

 

The global font class data structure is used by DEGetGlobalFontInfo() and DESetGlobalFontInfo() to get and set global font information.

typedef:

typedef struct {
     INT16 nStructSize;
     BOOLEAN16 bUseGlobalFontInfo;
     BOOLEAN16 bEnableFontScaling;
     INT16 nGreekingSize;
} GlobalFontClass, FAR * GlobalFontPtr;

Members:

nStructSize: Size of GlobalFontClass

 

bUseGlobalFontInfo; True / False

 

TRUE=

Enable use of FontInstRec (Default)

 

FALSE=

Disable use of FontInstRec

 

bEnableFontScaling; Allow scaling. Not applicable if bUseGlobalFontInfo is FALSE.

 

TRUE=

Use Stroke Quality (Default)

 

FALSE=

Proof Quality

 

nGreekingSize; Size at which font greeking will occur.

Used By:

DEGetGlobalFontInfo(), DESetGlobalFontInfo()

Example:

GlobalFontClass myFontRec;
DEGetGlobalFontInfo (pDEIn, &myFontRec);
if (myFontRec.bUseGlobalFontInfo != TRUE)
{
     myFontRec.bUseGlobalFontInfo = TRUE;
     DESetGlobalFontInfo (pDEIn, &myFontRec);
}

GlowInstRec

 

Glow Instance Record associated with a LineInstRec.

typedef:

typedef struct {
     BOOLEAN16 bGlow;
     INT16 nThick;
     INT16 nMode;
     UINT16 nRed;
     UINT16 nGreen;
     UINT16 nBlue;
} GlowInstRec, FAR *GlowInstPtr;

Members:

bGlow: Enable (TRUE)/Disable (FALSE) glow

 

nThick; Glow line thickness (0..32767)

 

nMode; Glow Mode

 

#define

Value

Description

 

GLOW_INSIDE

1

Inside

 

GLOW_OUTSIDE

2

Outside

 

GLOW_INOUT

3

Inside and Outside

 

nRed, nGreen, nBlue; Defines the color of the glow.

Used By:

LineInstRec

GraphDataInfo

 

The Graph Data Information structure (GraphDataInfo) defines the Callback functions used to get data and strings from your application and the number of rows and columns of data for charting in the following fields:

typedef:

typedef struct _GraphDataInfo {
     LPFNGetDataCallBack lpfnGetData;
     LPFNGetLabelCallBack lpfnGetLabel;
     LPFNGetStringCallBack lpfnGetString;
     LPFNRealToStringCallBack lpfnRealToString;
     LPFNSetPageCallBack lpfnSetPage;
     LPFNGetRawLimits lpfnGetRawLimits;
     LPFNPictureCallBack lpfnPicture;
     INT16 nPages;
     INT16 nCols;
     INT16 nRows;
     INT32 lClientData;
     INT16 nDataIFMode;
     INT16 nDimensionCount;
     DimArrayPtr pDimensionArray;
     DimArrayPtr pStartElement;
     DimArrayPtr pStopElement;
     LPFNMDGetLabel lpfnMDGetLabel;
     BOOLEAN16 bSymmetric;
     LPFNGetCognosMDLabelCallBack lpfnGetCognosMDLabel
} GraphDataInfo, FAR * GraphDataPtr;

Members:

lpfnGetData: Gets data from application. Returns data for a given row and column.

 

lpfnGetLabel: Gets a row or column header. Returns label for a given row and column.

 

lpfnGetString: Gets one of the title strings, for example, title, subtitle, etc. Returns string based on GraphDataStringType enum. It can be one of the following:

 

GraphDataStringType

Value

Description

 

gsTITLE

0

Graph Title

 

gsSUBTITLE

1

Graph Subtitle

 

gsFOOTNOTE

2

Graph Footnote

 

gsSERIESTITLE

3

Series Title

 

gsGROUPSTITLE

4

Group Title

 

gsXAXISTITLE

5

X-Axis Title

 

gsY1AXISTITLE

6

Y1-Axis Title

 

gsY2AXISTITLE

7

Y2-Axis Title

 

gsZAXISTITLE

8

Z-Axis Title

 

gsY3AXISTITLE

9

Y3-Axis Title

 

gsY4AXISTITLE

10

Y4-Axis Title

 

lpfnRealToString: Converts REAL to a string. (not currently used)

 

lpfnSetPage: Request to select a page.

 

lpfnGetRawLimits: Request data limits.

 

lpfnPicture; request a picture handle

 

nPages: Number of pages accessible through callbacks. (not currently used, your application should set to 1)

 

nCols: Number of data columns accessible through lpfnGetData.

 

nRows: Number of data rows accessible through lpfnGetData.

 

lClientData:Storage location available to your application. This value is returned to your application in each of the callback functions. The lClientData field is not actually used by TDGLIB routines. It is supplied as a convenience to the client. It can be used to store an arbitrary value (or pointer) in the graph structure.

 

nDataIFMode; data interface mode. One of the following #defined may be used:

 

#define

Value

Description

 

DATAIF_CALLBACK

0

use host supplied callbacks for chart data

 

DATAIF_SENDDATA

1

host sends data for storage before charting

 

DATAIF_VDM_DM

2

Data Manager supplies chart data and/or host sends data for storage (Reserved for future use)

 

The following fields are extensions for multi-dimension labels only.

 

nDimensionCount; # of dimensions needing labeling (1..32)

 

pDimensionArray; Ptr to an array of 32 UINT16 values

 

pStartElement; Defines which hierarchy element is first to graph

 

pStopElement; Defines which hierarchy element is last to graph

 

lpfnMDGetLabel; Returns a particular data item if it exists

 

bSymmetric; TRUE = Symmetrical data, FALSE = Asymmetric

Used By:

AccGraphDataStatus(), GetGraphDataInfo, SetGraphDataInfo()

Notes:

See the PGSDK Programmer's Manual for more information about this data structure and the data call back functions.

   

GroupInfoRec

 

Group Information Record

typedef:

typedef struct {
     INT16 children;
}GroupInfoRec, FAR *GroupInfoPtr;

Members:

children; Number of children in the group

Used By:

AnodeInfoRec

GTextInfoRec

 

Generalized Text Box Information Record

typedef:

typedef struct {
     TEXTHDL hText;
     INT16 leftInd;
     INT16 topInd;
     INT16 rightInd;
     INT16 bottomInd;
     INT16 hPct;
     INT16 vPct;
     INT16 SpikeWidth;
     AreaInstPtr pbArea;
     LineInstPtr pbLine;
     INT16 bTopInd;
     INT16 bSides;
     INT16 bulTxtSpc;
     INT16 bShape;
     INT16 thickness;
} GTextInfoRec, FAR *GTextInfoPtr;

Members:

hText; Text handle

 

leftInd; Left indent

 

topInd; Top indent

 

rightInd; Right indent

 

bottomInd; Bottom indent

 

hPct; For Balloons, horizontal percent

 

vPct; For Balloons, vertical percent

 

SpikeWidth; For Balloons, spike width

 

pbArea; For Bullet charts, pointer to an Area Instance Record. See AreaInstRec.

 

pbLine; For Bullet charts, Pointer to a Line Instance Record. See LineInstRec.

 

bTopInd; For Bullet charts, bullet top indent

 

bSides; For Bullet charts, bullet sides

 

bulTxtSpc; For Bullet charts, bullet text spacing

 

bShape; For Bullet charts, bullet shape

 

thickness; For Bullet charts, bullet thickness

Used By:

AnodeInfoRec

IOPATH

 

This data structure is used by the platform independent file I/O functions.

typedef:

typedef struct IOPATH {
     COOKIE cookie;
     INT16 isRamFile;
     UCHAR FAR * pBuffer;
     UCHAR FAR * buffer;
     UINT32 nBufSize;
     UINT32 nBufIndex;
} IOPATH, FAR * IOPATHPTR;

Members:

cookie: For Macintosh applications, this is a typedef short value that identifies a file reference number (refNum). For windows application, this is an INT16 value identifying a DOS file handle. For MSDOS applications, this is a pointer to a "C" file stream.

 

isRamFile: 1=RAM file/0=not a RAM file

 

pBuffer: Pointer to a character buffer

 

buffer: Input buffer

 

nBufSize: Buffer size

 

nBufIndex: Current location in buffer

Used By:

IOclose(), IOconnect(), IOgetc(), IOgets(), IOopen(), IOread(), IOseek(), IOwrite(), Load_TIFFGraphPath(), Save_TIFFGraph()

LineInfoRec

 

The Line Information Record (LineInfoRec) data structure defines a line annotation object.

typedef:

typedef struct {
     Point p0;
     Point p1;
     INT16 thickness;
     _PolyHandle hPoly;
} LineInfoRec, FAR *LineInfoPtr;

Members:

p0; Defines the x,y coordinates of a point. See Point.

 

p1; Defines the x,y coordinates of a point. See Point.

 

thickness; Thickness of the line

 

hPoly: Polygon handle created by AllocPolyHandle()

Used By:

DetNodeRec

Also See:

Point

   

LineInstRec

 

Line Instance Record

typedef:

typedef struct {
     ColorInstRec color;
     INT16 nThick;
     INT16 nStyle;
     INT16 nColor;
     INT16 nBColor;
     GlowInstRec glow;
} LineInstRec, FAR *LineInstPtr;

Members:

color; Standard color/sfx values. See ColorInstRec.

 

nThick; line thickness (0..32767)

 

nStyle; line style (0..255)

 

nColor; line color (0..15)

 

nBColor; background color (0..15)

 

GlowInstRec; A Glow Instance Record. See GlowInstRec

Used By:

AnodeInfoRec, DetNodeRec, GTextInfoRec

PictureRecord

 

This data structure is part of the special effects data structure.

typedef:

typedef struct
{
     INT16 pictScale;
     INT16 pictFlip;
     INT16 xExt;
     INT16 yExt;
     char pictName[MAXFILENAME];
     INT16 format;
} PictureRecord;

Members:

pictScale: Uses one of the following picture scaling values from the PictureScalingTypes enum:

 

PictureScalingTypes

Value

Description

 

ScaleNone

0

No Scaling

 

Scale2Fit

1

Scale to fit

 

Scale2Frame

2

Scale to frame

 

Scale2Background

3

Scale to background

 

Tiled

4

Tiled

 

Tiled2Frame

5

Tiled to Frame

 

Tiled2Background

6

Tiled to background

 

BrickHorizontal

7

Brick Horizontal

 

BrickVertical

8

Brick Vertical

 

Stack

9

Stack

 

ScaleProportional

10

Scale Proportional

 

pictFlip: Uses one of the following values from the FilpTypes enum:

 

FlipTypes

Value

Description

 

NullFlip

0

Don't flip

 

FlipH

1

Flip Horizontal

 

FlipV

2

Flip Vertical

 

FlipHV

3

Flip Horizontal/Vertical

 

xExt, yExt: For a Metafile only, specifies the coordinates of "X Extents" and "Y Extents".

 

pictName: Character string identifying the name of a file where the picture is stored. The extension must be: ".BMP" or ".GIF". The maximum length of the string is #defined by MAXFILENAME:

 

#define MAXFILENAME 128

 

format: Reserved for system use.

 

hdl: An INT32 value that is the picture file's (pictName) handle.

Used By:

FXStruct, A_AREASFX, A_FONTSFX, A_LINESFX

Point

 

This data structure defines the x,y coordinates of a point.

typedef:

typedef struct tagPOINT
{
     int x; /* x-coordinate */
     int y; /* y-coordinate */
} POINT;

Members:

x: INT16 value of the x-coordinate

 

y: INT16 value of the y-coordinate

Used By:

AAN_ENDPOINTS, AAN_TBOX_EDITBOUNDS, AbsPoint(), AddPoints(), DestroySelItemOutline(), dvPoint(), dvScalePoint(), FindDetNode(), FindNextDetNode(), Points2Poly(), ScalePoint(), Select_HandleHitTest(), SetLineItemPoints(), SubPoints(), vdPoint(), vdScalePoint()

Example:

POINT pt;
//Get the Mouse Pointer
pt = MAKEPOINT (lParam);
//Convert to virtual coordinates
dvPoint(gpDrawEnv,&pt);

   

Point16

 

This data structure defines the x,y coordinates of a point with two INT16 values..

typedef:

typedef struct _Point16 {
     INT16 x;
     INT16 y;
} Point16, *Point16Ptr;

Members:

x: INT16 value of the x-coordinate

 

y: INT16 value of the y-coordinate

   

Point2D

 

This data structure defines the x,y coordinates of a point on a 2D graph.

typedef:

typedef struct _Point2D {
     INT16 x; /* x-coordinate */
     INT16 y; /* y-coordinate */
} Point2D, FAR * Point2DPtr;

Members:

x: INT16 value of the x-coordinate

 

y: INT16 value of the y-coordinate

Used By:

dvPoint2D(), dvScalePoint2D(), vdPoint2D(), vdScalePoint2D()

   

PolygonInfoRec

 

This data structure defines a polygon annotation object.

typedef:

typedef struct {
     BOOLEAN16 bClosed;
     _PolyHandle hPoly;
} PolygonInfoRec, FAR *PolygonInfoPtr;

Members:

bClosed: TRUE = Polygon is closed

 

hPoly: Polygon handle created by AllocPolyHandle()

Used By:

AnodeInfoRec

   

PolyInfoRec

 

This data structure defines a polyline annotation object.

typedef:

typedef struct {
     _PolyHandle hPoly;
} PolyInfoRec, FAR *PolyInfoPtr;

Members:

hpoly: Polygon handle created by AllocPolyHandle()

Used By:

DetNodeRec

RamFileRec

 

This data structure defines a Ram File. The Ram File can be used to store the contents of a graph in memory for access by other applications. API functions are available to create the Ram File (AllocRamFile()), set its size (SetRamFileSize()), etc. The graph read and write API functions can be used read and write to a Ram File the same as any other disk-based file.

typedef:

typedef struct _RamFile {
     MEMSIZE bufSize;
     MEMSIZE bufWritten;
     MEMHDL hBuffer;
     UCHAR HUGE * pBuffer;
     UCHAR HUGE * pCurrent;
} RamFileRec, FAR * RamFilePtr;

Members:

bufSize: Size of the Ram File specified by AllocRamFile()

 

bufWritten: Size of the RamFile specified by SetRamFileSize()

 

hBuffer: The current size of the Ram File

 

pBuffer: Pointer to the Ram File buffer

 

pCurrent: Pointer to the current read/write location in the Ram File

Used By:

GetRamFileBuffer(), GetRamFileName(), RFgetc(), RFrewind(), RFseek(), RFwrite(), SetRamFileSize(), ExportBMPtoRamFile()

Example:

/*** write buffer to the TIFF file ***/
nStatus = Tiff_WriteEntry(pOutput,
     TIFFX_FILE_3D3,
     TIFF_TYPE_ASCII,
     ulBytes,
     GetRamFileBuffer(pRamFile) );
CheckStatus(nStatus);

Rect

 

This data structure defines the virtual coordinates of the upper left corner and a lower right corner of a rectangle.

typedef:

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

Members:

left, top; Two integers that define the top-left corner of the rectangle.

 

right, bottom; Two integers that define the bottom-right corner of the rectangle.

Used By:

dCheckRect(), DEGetDestRect(), DEGetVirtRect(), DESetDestRect(), DESetVirtRect(), dSetRect(), dvRect(), EncompassLineThickness(), GetPolyBounds(), GetPolyPtrBounds(), GetRectAnodeInfo(), GetRiserBounds(), GetWireFrameBounds(), MoveSelectedItem(), OGL_BlitOffscreen(), Select_HandleHitTest(), SelectDetNodesInRect(), SetLineItemPoints(), SetRectAnodeInfo(), Update_GetInvalRect(), vCheckRect(), vdRect, vSetRect(), xBoxToRect(), AAN_BOUNDS

Example:

{
     pRect->left = left;
     pRect->right = right;
     pRect->top = top;
     pRect->bottom = bottom;
     dCheckRect(pDE, pRect);
}

RegionInfoRec

 

The Region Information Record (RegionInfoRec) data structure is used by AnodeInfoRec and DetNodeRec

typedef:

typedef struct {
     RgnHandle hRgn;
} RegionInfoRec, FAR *RegionInfoPtr;

Members:

hRgn; Region handle

Used By:

AnodeInfoRec, DetNodeRec

   

RGB16

 

The RGB16 data structure is a color triplet information record that defines the color of an particular instance of an object.

typedef:

typedef struct {
     UINT16 red; //0...65536
     UINT16 green; //0...65536
     UINT16 blue; //0...65536
} RGB16, FAR *RGB16Ptr;

Members:

red, green, blue: 0...65535. PGSDK uses a 48-bit color space (16 bits for each element red, green, blue). For the Windows platform, you must multiply each value by 256 to convert a Windows 8-bit color value to the PGSDK 16-bit color value. Example:

 

nRed = 256; // full red in Windows
MyRGB16 red = nRed<<8; // Set PGSDK to full red

Used By:

GDPALETTE, WashRecord, A_AREABACKCOLOR, A_AREACOLOR_RGB, A_FONTCOLOR_RGB, A_FONTBACKCOLOR, A_LINECOLOR_RGB, ACM_WASHBEGIN, ACM_WASHEND

Example:

/* one way to create white */
RGB16 white = {65280, 65280, 65280};
/* another way to create white */
RGB16 white = {0xff00, 0xff00, 0xff00};

ScaleClass

 

Scale Class Data Structure

typedef:

typedef struct {
     /* Caller sets these variables. */
     REAL fRawMin;
     REAL fRawMax;
     BOOLEAN16 bIsLog;
     BOOLEAN16 bManualMajorHash;
     INT16 nMajorHashCount;
     INT16 nManualScale;
     /* Routine sets these variables.*/
     INT16 nMajorHash;
     REAL fMin;
     REAL fMax;
} ScaleClass, FAR *ScalePtr;

Members:

fRawMin; Raw minimum value

 

fRawMax; Raw maximum value

 

bIsLog: TRUE/FALSE

 

TRUE=

Use logarithmic scale

 

FALSE=

Use linear scale

 

bManualMajorHash: TRUE/FALSE

 

TRUE=

Use manual settings for major grids (nMajorHashCount)

 

FALSE=

Use the automatic settings (charting engine calculates scale)

 

nMajorHashCount: Number of major grid lines to draw

 

nManualScale: 0...3

 

0=

Automatic scaling. Let the charting engine calculate and draw value labels on this axis.

 

1=

Manual scaling. Use the value set by fManualScaleMax as the maximum value and the value set by fManualScaleMin as the minimim value on this axis.

 

2=

Manual Minimum/Automatic Maximum. Use the value set by fManualScaleMin as the minimum value. Let the charting engine automatically calcuate the maximum value on this axis.

 

3=

Automatic Minimum/Manual Maximum. Let the charting engine automatically calcuate the minimum value on this axis. Use the value set by fManualScaleMax as the maximum value.

 

nMajorHash: Number of major gridlines

 

fMin; Minimum scaling value

 

fMax; Maximum scaling value

Used By:

DetermineScale()

SelItemRec

 

This data structure defines a selection item/object in a graph. It is created by the Select_AddItem() API function that returns a pointer to the data structure. Each SelItemRec is referenced in a SelListRec structure.

typedef:

typedef struct SelItemRec {
     struct SelItemRec FAR * pNext;
     void FAR * pSiblings;
     void FAR * pChildren;
     INT16 nLayer;
     INT16 nObjectID;
     INT16 nSeriesID;
     INT16 nGroupID;
     Rect rcBounds;
     Rect rcLastBounds;
     Point p0;
     Point p1;
     INT16 nHandleCount;
     Rect rcHandles[8];
     INT16 nType;
     DetNodeRef refDetNode;
     union {
     AnodeInfoHdl hAnode;
     GeodeInfoHdl hGeode;
     } data;
} SelItemRec, FAR * SelItemPtr;

Members:

pNext: Pointer to the next SelItemRec

 

pSiblings: Pointer to the selection list (SelListRec) that this item is in

 

pChildren: Pointer to child list if this is a group, otherwise NULL

 

nLayer: Graph Layer ID (BACKGROUND_LAYER, GRAPH_LAYER or ANNOTATION_LAYER)

 

nObjectID: Object ID if the graph object that this record describes. See the PGSDK Programmer's Manual for a description of the ObjectIDs that may be specified in this variable.

 

nSeriesID: For objects that can have multiple instances in the graph (e.g., O2D_RISER), this entry specifies the series ID of the object.

 

nGroupID : For objects in groups (e.g., O2D_RISER),. this entry specifies the group to which this object/series belongs

 

rcBounds: A rectangle data structure that defines the current outer boundaries (size and location) of the object.

 

rcLastBounds: A rectangle data structure that defines the previous boundaries (before move) of the object.

 

p0, p1: For line objects, these entries are point data structures that define the starting (p0) and ending (p1) points of the line

 

nHandleCount;: Number of sizing/moving handles around object

 

rcHandles[8];: Rectangle of each handle.

 

nType: a value from the SelItemDataType enum:

 

SelItemDataType

Value

Description

 

DETNODE

0

Detection Node

 

ANODE

1

Annotation Node

 

GEODE

2

Not Used

 

GROUPODE

3

Not Used

 

refDetNode: Detection Node Reference that is provided as input to Select_AddItem() with the selection item is created.

 

hAnode: For annotation objects, this entry defines an annotation node handle.

 

hGeode:

Used By:

Select_AddItem() and many other PGSDK APIs that access and use the selection list.

Example:

if(gpSelItem->nSeriesID >= 0 &&
     (gpSelItem->nObjectID == O2D_RISER ||
      gpSelItem->nObjectID == O2D_DATAMARKER ||
      gpSelItem->nObjectID == O2D_AREARISER))
{
     /*- Calculate Sizing Handles for item */
     Select_CalcHandlesItem ( gpDrawEnv,gpSelItem );

Notes:

This data structure and the SelListRec structure should be used by an API to access the detection node lists and detection node reference pointers. See the PGSDK Programmer's Manual for more information.

Also See:

SelListRec

SelListRec

 

This data structure defines a linked list of selection item records (SelItemRec) in the following fields:

typedef:

typedef struct _SelListRec {
     INT16 nItemCount;
     SelItemPtr pHead;
     SelItemPtr pGroups;
     SelItemPtr pParent;
     SelItemPtr pParentMarker;
} SelListRec, FAR * SelListPtr;

Members:

nItemCount: Number of Selection Item Records (SelItemRec) in the list

 

pHead: Pointer to first SelItemRec in the list

 

pGroups: Not currently used

 

pParent: Pointer to parent Group Item.

 

pParentMarker : Pointer to parent Group Marker item.

 

This structure is created by the Select_AllocList() API function when returns a pointer to the list.

Used By:

Select_AllocList() and many other PGSDK APIs that access and use the selection list.

Example:

/* create an empty selection list */
if( ! (gpList = Select_AllocList() ) )
{
     MessageBox(NULL, "Unable to
     allocate selection list",
     "WinMain",
     MB_OK | MB_ICONHAND | MB_SYSTEMMODAL );
     return FALSE;
}
gpSelItem = Select_AddItem(gpGraph,gpList,gpDetNode);

Notes:

This data structure is the master list from which an API should access the detection node lists and detection node reference pointers.

Also See:

SelItemRec

SliceInfoRec

 

Pie Slice Information Record

 

typedef struct _SliceInfoRec {
     Rect bounds;
     FIXED32 lxOffset;
     FIXED32 lyOffset;
     INT16 xSize;
     INT16 ySize;
     INT16 nStart;
     INT16 nEnd;
     INT16 nRing;
     struct {
          Rect bounds;
          FIXED32 lxOffset;
          FIXED32 lyOffset;
          INT16 xSize;
          INT16 ySize;
     } inner;
} SliceInfoRec, FAR * SliceInfoPtr;

Members:

Rect; Rectangle data structure that defines the bounds of the slice.

 

lxOffset, lyOffset; Left X-offset and Y-offset of slice.

 

xSize, ySize; x,y size of slice.

 

nStart, nEnd; Start and end points of slice

 

nRing; ring percentage

 

inner; Defines the inner ring of a slice in the following fields;

 

bounds; Bounding box of the inner edge of slice

 

lxOffset, lyOffset; Left X-offset and Y-offset of inner ring of slice.

 

xSize, ySize; x,y size of inner ring of slice.

Used By:

DetNodeRec, dvSlice(), vdSlice()

   

TDG_GraphPresetInfo

 

This data structure is used by the A_GRAPH_PRESET attribute to define the graph type and subtype.

typedef:

typedef struct {
     INT16 nMajorType;
     INT16 nMinorType;
} TDG_GraphPresetInfo, FAR *TDG_GraphPresetPtr;

Members:

nMajorType: Selects the major graph category from the TDG_GRAPH_TYPE enum:

 

TDG_GRAPH_TYPE :

Value

Description

 

TDG_GRAPH_3D

0=

3D Graphs

 

TDG_GRAPH_AREA

1=

Horizontal and Vertical Area Graphs

 

TDG_GRAPH_BARS

2=

Horizontal and Vertical Bar Graphs

 

TDG_GRAPH_LINES

3=

Horizontal and Vertical Line Graphs

 

TDG_GRAPH_PIE

4=

Pie Charts

 

TDG_GRAPH_SPECIAL

5=

Special Graphs (i.e., Radar, Polar, Spectral Maps, etc.)

 

TDG_GRAPH_TABLE

6=

Table Chart

 

TDG_GRAPH_TEXT

7=

Text Chart

 

nMinorType: For TDG_GRAPH_TABLE and TDG_GRAPH_TEXT, this value should always be zero. For other graph types, this value depends on the value of nMajorType.

 

If nMajorType is set to TDG_GRAPH_3D (0), set nMinorType to one of these values.

 

nMinorType

Value

Description

 

THREE_D_BARS

0

If nMajorType is TDG_GRAPH_3D(0), this nMinorType selects a 3D Riser Bar chart.

 

THREE_D_CUBE

1

If nMajorType is TDG_GRAPH_3D(0), this nMinorType selects a 3D Floating Cubes chart.

 

THREE_D_CUTCORNER

2

If nMajorType is TDG_GRAPH_3D, this nMinorType selects a 3D Riser Cut-Corner Bar chart.

 

THREE_D_DIAMOND

3

If nMajorType is TDG_GRAPH_3D, this nMinorType selects a 3D Floating Spheres chart.

 

THREE_D_OCTAGON

4

If nMajorType is TDG_GRAPH_3D, this nMinorType selects a 3D Riser Octogan chart.

 

THREE_D_PYRAMID

5

If nMajorType is TDG_GRAPH_3D, this nMinorType selects a 3D Riser Pyramid chart

 

THREE_D_SQUARE

6

If nMajorType is TDG_GRAPH_3D, this nMinorType selects a 3D Riser Square chart.

 

THREE_D_ROW_AREA

7

If nMajorType is TDG_GRAPH_3D, this nMinorType selects a 3D Connect Series Area chart

 

THREE_D_ROW_LINE

8

If nMajorType is TDG_GRAPH_3D, this nMinorType selects a 3D Connect Series Ribbons chart

 

THREE_D_ROW_STEP

9

If nMajorType is TDG_GRAPH_3D, this nMinorType selects a 3D Connect Series Steps chart

 

THREE_D_COL_AREA

10

If nMajorType is TDG_GRAPH_3D, this nMinorType selects a 3D Connect Group Area chart

 

THREE_D_COL_LINE

11

If nMajorType is TDG_GRAPH_3D, this nMinorType selects a 3D Connect Group Ribbons chart

 

THREE_D_COL_STEP

12

If nMajorType is TDG_GRAPH_3D, this nMinorType selects a 3D Connect Group Steps chart

 

THREE_D_HONEYCOMB

13

If nMajorType is TDG_GRAPH_3D, this nMinorType selects a 3D Honeycomb Surface chart

 

THREE_D_MODEL

14

If nMajorType is TDG_GRAPH_3D, this nMinorType selects a 3D Model chart

 

THREE_D_SURFACE

15

If nMajorType is TDG_GRAPH_3D, this nMinorType selects a 3D Surface chart

 

THREE_D_SCATTER

16

If nMajorType is TDG_GRAPH_3D, this nMinorType selects a 3D X-Y-Z Scatter Chart

 

If nMajorType is set to TDG_GRAPH_AREA (1), set nMinorType to one of these values.

 

nMinorType

Value

Description

 

AREA_ABSOLUTE

0

If nMajorType is TDG_GRAPH_AREA, this nMinorType selects an Absolute Area chart.

 

AREA_ABSOLUTE_DUALY

1

If nMajorType is TDG_GRAPH_AREA, this nMinorType selects a Dual-Axes Absolute Area chart.

 

AREA_ABSOLUTE_DUALY_BIPOLAR

3

If nMajorType is TDG_GRAPH_AREA, this nMinorType selects a BiPolar Absolute Area chart.

 

AREA_STACKED

4

If nMajorType is TDG_GRAPH_AREA, this nMinorType selects a Stacked Area chart.

 

AREA_STACKED_DUALY

5

If nMajorType is TDG_GRAPH_AREA, this nMinorType selects a Dual-Axes Stacked Area chart.

 

AREA_STACKED_DUALY_BIPOLAR

7

If nMajorType is TDG_GRAPH_AREA, this nMinorType selects a BiPolar Stacked Area chart.

 

AREA_PERCENT

12

If nMajorType is TDG_GRAPH_AREA, this nMinorType selects an Percent Area chart.

 

If nMajorType is set to TDG_GRAPH_BARS (2), set nMinorType to one of these values.

 

nMinorType

Value

Description

 

BAR_STACKED

4

If nMajorType is TDG_GRAPH_BARS, this nMinorType selects a Stacked Bar Chart

 

BAR_STACKED_DUALY

5

If nMajorType is TDG_GRAPH_BARS, this nMinorType selects a Dual-Axes Stacked Bar Chart

 

BAR_STACKED_BIPOLAR

6

If nMajorType is TDG_GRAPH_BARS, this nMinorType selects a BiPolar Stacked Bar Chart

 

BAR_STACKED_DUALY_BIPOLAR

7

If nMajorType is TDG_GRAPH_BARS, this nMinorType selects a Dual-Axes BiPolar Stacked Bar Chart

 

BAR_SIDEBYSIDE

8

If nMajorType is TDG_GRAPH_BARS, this nMinorType selects a Side by Side Bar Chart

 

BAR_SIDEBYSIDE_DUALY

9

If nMajorType is TDG_GRAPH_BARS, this nMinorType selects a Dual-Axes Side by Side Bar Chart

 

BAR_SIDEBYSIDE_DUALY_BIPOLAR

11

If nMajorType is TDG_GRAPH_BARS, this nMinorType selects a BiPolar Side by Side Bar Chart

 

BAR_PERCENT

12

If nMajorType is TDG_GRAPH_BARS, this nMinorType selects a Percent Bar Chart

 

If nMajorType is set to TDG_GRAPH_LINES (3), set nMinorType to one of these values.

 

nMinorType

Value

Description

 

LINE_ABSOLUTE

0

If nMajorType is TDG_GRAPH_LINES, this nMinorType selects an Absolute Line Chart

 

LINE_ABSOLUTE_DUALY

1

If nMajorType is TDG_GRAPH_LINES, this nMinorType selects a Dual-Axes Absolute Line Chart

 

LINE_ABSOLUTE_DUALY_BIPOLAR

3

If nMajorType is TDG_GRAPH_LINES, this nMinorType selects a BiPolar Absolute Line Chart

 

LINE_STACKED

4

If nMajorType is TDG_GRAPH_LINES, this nMinorType selects a Stacked Line Chart

 

LINE_STACKED_DUALY

5

If nMajorType is TDG_GRAPH_LINES, this nMinorType selects a Dual-Axes Stacked Line Chart

 

LINE_STACKED_DUALY_BIPOLAR

7

If nMajorType is TDG_GRAPH_LINES, this nMinorType selects a BiPolar Stacked Line Chart

 

LINE_PERCENT

12

If nMajorType is TDG_GRAPH_LINES, this nMinorType selects a Percent Line Chart

 

If nMajorType is set to TDG_GRAPH_PIE (4), set nMinorType to one of these values.

 

nMinorType

Value

Description

 

PIE_SINGLE

0

If nMajorType is TDG_GRAPH_PIE, this nMinorType selects a Pie Chart

 

PIE_SINGLE_RING

1

If nMajorType is TDG_GRAPH_PIE, this nMinorType selects a Ring Pie Chart

 

PIE_MULTIPLE

2

If nMajorType is TDG_GRAPH_PIE, this nMinorType selects a Multiple Pie chart

 

PIE_MULTIPLE_PROPORTIONAL

3

If nMajorType is TDG_GRAPH_PIE, this nMinorType selects a Multiple Proportional Pie chart

 

PIE_MULTIPLE_RING

4

If nMajorType is TDG_GRAPH_PIE, this nMinorType selects a Multiple Ring Pie chart

   

5

If nMajorType is TDG_GRAPH_PIE, this nMinorType selects a Multiple Proportional Ring Pie chart

 

PIE_BAR

6

If nMajorType is TDG_GRAPH_PIE, this nMinorType selects a Pie Bar Chart

   

7

If nMajorType is TDG_GRAPH_PIE, this nMinorType selects a Ring Pie Bar Chart

 

If nMajorType is set to TDG_GRAPH_SPECIAL (5), set nMinorType to one of these values.

 

nMinorType

Value

Description

 

SPECIAL_HISTOGRAM

0

If nMajorType is TDG_GRAPH_SPECIAL, this nMinorType selects a Histogram Chart

 

SPECIAL_SPECTRAL

1

If nMajorType is TDG_GRAPH_SPECIAL, this nMinorType selects a Spectral Map

 

SPECIAL_POLAR

2

If nMajorType is TDG_GRAPH_SPECIAL, this nMinorType selects a Polar Coordinate Chart

 

SPECIAL_SCATTER

3*

If nMajorType is TDG_GRAPH_SPECIAL, this nMinorType selects an X-Y Scatter or X-Y Scatter with Labels Chart

 

SPECIAL_SCATTER_DUALY

4*

If nMajorType is TDG_GRAPH_SPECIAL, this nMinorType selects a Dual-Axes X-Y Scatter or Dual-Axes X-Y Scatter with Labels Chart

 

SPECIAL_HILO

5*

If nMajorType is TDG_GRAPH_SPECIAL, this nMinorType selects a HiLo, HiLoOpen, or HiLoOpenClose Stock Chart

 

SPECIAL_HILO_DUALY

6*

If nMajorType is TDG_GRAPH_SPECIAL, this nMinorType selects a Dual-Axes HiLo, HiLoOpen, or HiLoOpenClose Stock Chart

   

11

If nMajorType is TDG_GRAPH_SPECIAL, this nMinorType selects a Dual-Axes Polar Coordinate Chart

 

SPECIAL_RADAR_ABSOLUTE_LINE

12

If nMajorType is TDG_GRAPH_SPECIAL, this nMinorType selects a Radar Line Chart

 

SPECIAL_RADAR_STACKED_AREA

13

If nMajorType is TDG_GRAPH_SPECIAL, this nMinorType selects a Radar Stacked Area Chart

   

14

If nMajorType is TDG_GRAPH_SPECIAL, this nMinorType selects a Dual-Axes Radar Line Chart

   

15

If nMajorType is TDG_GRAPH_SPECIAL, this nMinorType selects a Dual-Axes Radar Stacked Area Chart

 

SPECIAL_BUBBLE

17

If nMajorType is TDG_GRAPH_SPECIAL, this nMinorType selects a Bubble Chart

   

18

If nMajorType is TDG_GRAPH_SPECIAL, this nMinorType selects a Dual Axes Bubble Chart

 

SPECIAL_GANTT

19

If nMajorType is TDG_GRAPH_SPECIAL, this nMinorType selects a Gantt Chart

 

SPECIAL_RADAR_ABSOLUTE_AREA

20

If nMajorType is TDG_GRAPH_SPECIAL, this nMinorType selects a Radar Absolute Area Chart

 

SPECIAL_JAPANESE_STOCK

21

If nMajorType is TDG_GRAPH_SPECIAL, this nMinorType selects a Candle Stock Chart

 

SPECIAL_STEMLEAF

22

If nMajorType is TDG_GRAPH_SPECIAL, this nMinorType selects a Stemleaf Chart

 

SPECIAL_MULTIBAR

23

If nMajorType is TDG_GRAPH_SPECIAL, this nMinorType selects a Multi-Bar Chart

 

SPECIAL_WATERFALL

24

If nMajorType is TDG_GRAPH_SPECIAL, this nMinorType selects a Vertical Waterfall Chart

 

SPECIAL_WATERFALL_HORIZONTAL

25

If nMajorType is TDG_GRAPH_SPECIAL, this nMinorType selects a Horizontal Waterfall Chart

 

SPECIAL_CI_BALANCE_SCORECARD

26

Balance Score Card Chart. Chart Intelligence ChartType (Only available in Chart Intelligence build)

 

SPECIAL_CI_PRODUCT_POSITION

27

Product Positioning Chart. Chart Intelligence ChartType (Only available in Chart Intelligence build)

 

SPECIAL_CI_RESOURCE_RETURN

28

Resource Return Chart. Chart Intelligence ChartType (Only available in Chart Intelligence build)

 

SPECIAL_CI_TIME_SERIES

29

Time Series Chart. Chart Intelligence ChartType (Only available in Chart Intelligence build)

 

SPECIAL_CI_4Y

30

Chart Intelligence ChartType (Only available in Chart Intelligence build)

 

* These nMinorType values are further defined by the format of data input to the chart by A2D_DATAFORMAT

Used By:

A_GRAPH_PRESET

Example:

case IDM_HISTOGRAM:
     iGraph = 8;
     break;
case IDM_TABLE:
     iGraph = 9;
     break;
}
/* MAKE CALL TO SELECT A DIFFERENT
PRESET GRAPH TYPE */
SetGraphAttrSL(gpGraph,NULL,
     A_GRAPH_PRESET,
     &GraphTable[iGraph]);

   

TextInfoRec

 

Text Information Record

typedef:

typedef struct {
     Rect bounds;
     MEMHDL hText;
} TextInfoRec, FAR *TextInfoPtr;

Members:

bounds; Bounds of the text information. See Rect.

 

hText; Memory handle

Used By:

DetNodeRec

   

TiffHeaderRec

 

TIFF File Header Record

typedef:

typedef struct {
     UINT16 uFormat;
     UINT16 uVersion;
     UINT32 ulDirOffset;
} TiffHeaderRec, FAR * TiffHeaderPtr;

Members:

uFormat; Byte Order

 

uVersion; Must be 42.

 

ulDirOffset; Offset to first directory

Used By:

TiffInputRec

   

TiffInputRec

 

TIFF File Input Record

typedef:

typedef struct {
     IOPATHPTR iop;
     INT16 bHeaderInited;
     INT16 bNeedSwap;
     TiffHeaderRec hdr;
     PVTABLE vtDir;
} TiffInputRec, FAR * TiffInputPtr;

Members:

iop; Pointer to a file reference

 

bHeaderInited; Header has been read

 

bNeedSwap; TRUE if byte swap needed

 

hdr; TIFF File Header Record

 

vtDir; Pointer to a VTABLE data structure that defines IFD directory entries

Used By:

F3DF_ReadDescription, F3DF_ReadThumbnail

Also See:

TiffHeaderRec, VTABLE

UpdateItemRec

 

Update Item Record

typedef:

typedef struct UpdateItemRec {
     struct UpdateItemRec FAR * pNext;
     INT16 nObjectID;
     INT16 nSeriesID;
     INT16 nGroupID;
     Rect rcBounds;
} UpdateItemRec, FAR * UpdateItemPtr;

Members:

pNext; Pointer to the next update item record.

 

nObjectID; Object ID.

 

nSeriesID; Series ID.

 

nGroupID; Group ID.

 

rcBounds; a rectangle data structure. See Rect.

Used By:

Update_GetFirstItem(), Update_GetInvalRect(), Update_GetNextItem()

   

VTABLE

 

Variable length array type

typedef:

typedef struct {
     UINT32 ulEntrySize;
     UINT32 ulGrow;
     UINT32 ulMax;
     UINT32 ulCount;
     UCHAR ucbData[1];
} VTABLE, FAR * LPVTABLE;
typedef LPVTABLE PVTABLE;

Members:

ulEntrySize; Number of bytes in each entry.

 

ulGrow; Number of entries to grow.

 

ulMax; Number of entries allocated.

 

ulCount; Number of entries in-use.

 

ucbData; The actual data

Used By:

TiffInputRec

   

WashRecord

 

This data structure is used by the special effects attributes to apply a wash special effect to an area, line, or text object.

typedef:

typedef struct
{
     RGB16 startColor;
     RGB16 endColor;
     INT16 startBin;
     INT16 endBin;
     INT16 washType;
     INT16 washDir;
     INT16 washScale;
} WashRecord;

Members:

startColor: RGB16 structure where the starting color of the wash is stored. See RGB16.

 

endColor: RGB16 structure where the ending color of the wash is stored. See RGB16.

 

startBin/endBin: Not used in Windows applications

 

washType: 1...4

 

washDir: 0...13

 

0=

NilWashType

 

1=

WashUpLeft

 

2=

WashUp

 

3=

WashUpRight

 

4=

WashLeft

 

5=

WashRight

 

6=

WashDownLeft

 

7=

WashDown

 

8=

WashDownRight

 

9=

WashOval

 

10=

WashZoomRect

 

11=

WashSpecial1

 

12=

WashSpecial2

 

13=

WashSpecial3

 

14=

WashLinear

 

washScale: Not used in Windows applications

Used By:

A_AREASFX, A_FONTSFX, A_LINESFX, FXStruct

Also See:

RGB16, AdvancedWashRecord

WedgeInfoRec

 

Wedge Information Record

typedef:

typedef struct _WedgeInfoRec {
     Rect bounds;
     Point ptStart;
     Point ptEnd;
     REAL fStartAngle;
     REAL fEndAngle;
     INT16 nRing;
     INT16 nHeight;
} WedgeInfoRec, FAR *WedgeInfoPtr;

Members:

bounds; bounds rectangle. See Rect  

 

ptStart; start point defined in a Point data structure

 

ptEnd; end point defined in a Point data structure

 

fStartAngle; start angle (in rect radians)

 

fEndAngle; end angle (in rect radians)

 

nRing; ring percentage

 

nHeight; 2.5D crust/ring height

Used By:

AAN_ARC_INFO, AnodeInfoRec, DetNodeRec, dvWedge(), vdWedge()