(* Release 3.10 *) (*-------------------------------------------------------------------------* * * * GPI.DEF - OS/2 PM GPI interface * * * * COPYRIGHT (C) 1989..1992 Clarion Software Corporation. * * Copyright (c) 1988 Microsoft Corporation * * All Rights Reserved * * This file is compatible with OS/2 version 1.2. * * * *--------------------------------------------------------------------------*) (*# call(o_a_size => off, o_a_copy=>off, result_optional=>on, reg_saved => (si, di, ds, st1, st2), reg_param => (), seg_name => none, near_call => off, ds_eq_ss => off) *) (*# module(implementation=>off, init_code => off) *) (*# name(prefix => os2_lib) *) (*# data(near_ptr => off) *) (*# check(index=>off,range=>off,overflow=>off,nil_ptr=>off) *) DEFINITION MODULE Gpi; (**) (**--- OS/2 Presentation Manager GPI ---------------------------------------*) (**) FROM OS2DEF IMPORT HDC,HRGN,HAB,HPS,HBITMAP,HMF,LSET,POINTL,RECTL,STR8,HMODULE ; (**) (*--- Conditional sections, set to TRUE if required ------------------------*) (**) CONST i_CONTROL = TRUE ; (* PS control *) i_CORR = TRUE ; (* Picking, boundary and correlation *) i_SEGM = TRUE ; (* Segment control and drawing *) i_SEGMEDIT = TRUE ; (* Segment editing *) i_TRANSF = TRUE ; (* Transforms and transform conversion *) i_PATH = FALSE; (* Paths and clipping with paths *) i_COLORTAB = TRUE ; (* Logical color tables *) i_PRIM1 = TRUE ; (* Drawing primitives *) i_PRIM2 = TRUE ; (* Drawing primitives uncommon *) i_LCID = FALSE; (* Physical and logical fonts *) i_BITMAP1 = TRUE ; (* Bitmaps and pel operations *) i_BITMAP2 = TRUE ; (* Bitmaps and pel operations uncommon *) i_BITMAP3 = FALSE; (* Bitmaps file formats *) i_REGION = FALSE; (* Regions and clipping with regions *) i_METAF = FALSE; (* Metafiles *) i_DEFAULT = FALSE; (* Gpi Defaults *) i_ORDER = FALSE; (* GOCA orders *) i_FONT = FALSE; (* Font structures *) (**) (**--- Win General section 1 -----------------------------------------------*) (**) CONST GPI_ERROR = 0; GPI_OK = 1; GPI_HITS = 2; (* HITSRET Correlation Error *) GPI_ALTERROR = -1; (* GPIRET, >=0 returns value *) TYPE FIXED = RECORD frac : CARDINAL; int : INTEGER; END; GPIRET = LONGINT; HITSRET = LONGINT; TYPE SIZEL = RECORD cx : LONGINT; cy : LONGINT; END; CONST CLR_NOINDEX = -254; PU_ARBITRARY = 04H; PU_PELS = 08H; PU_LOMETRIC = 0CH; PU_HIMETRIC = 010H; PU_LOENGLISH = 014H; PU_HIENGLISH = 018H; PU_TWIPS = 01CH; GPIF_DEFAULT = 0; GPIF_SHORT = 0100H; GPIF_LONG = 0200H; GPIT_NORMAL = 0; GPIT_MICRO = 01000H; GPIA_NOASSOC = 0; GPIA_ASSOC = 04000H; HDC_ERROR = HDC(-1); PROCEDURE CreatePS(a:HAB; c:HDC; VAR s:SIZEL; o:LONGCARD) : HPS; PROCEDURE DestroyPS(h:HPS) : BOOLEAN; PROCEDURE Associate(h:HPS; c:HDC) : BOOLEAN; PROCEDURE RestorePS(h:HPS; p:LONGINT) : BOOLEAN; PROCEDURE SavePS(h:HPS) : LONGINT; PROCEDURE Erase(h:HPS) : BOOLEAN; PROCEDURE QueryDevice(h:HPS) : HDC; (**) (**--- Gpi Control --------------------------------------------------------*) (**) (*%T i_CONTROL*) CONST (* options for GpiResetPS *) GRES_ATTRS = LSET(01H); GRES_SEGMENTS = LSET(02H); GRES_ALL = LSET(04H); (* option masks for PS options used by GpiQueryPs *) PS_UNITS = LSET(0FCH); PS_FORMAT = LSET(0F00H); PS_TYPE = LSET(01000H); PS_MODE = LSET(02000H); PS_ASSOCIATE = LSET(04000H); PS_NORESET = LSET(08000H); (* error context returned by GpiErrorSegmentData *) GPIE_SEGMENT = 0; GPIE_ELEMENT = 1; GPIE_DATA = 2; (* control parameter for GpiSetDrawControl *) DCTL_ERASE = 1; DCTL_DISPLAY = 2; DCTL_BOUNDARY = 3; DCTL_DYNAMIC = 4; DCTL_CORRELATE = 5; (* constants for GpiSet/QueryDrawControl *) DCTL_ERROR = -1; DCTL_OFF = 0; DCTL_ON = 1; (* constants for GpiSet/QueryStopDraw *) SDW_ERROR = -1; SDW_OFF = 0; SDW_ON = 1; (* drawing for GpiSet/QueryDrawingMode *) DM_ERROR = 0; DM_DRAW = 1; DM_RETAIN = 2; DM_DRAWANDRETAIN = 3; PROCEDURE ResetPS(h:HPS; o:LSET) : BOOLEAN; PROCEDURE SetPS(h:HPS; VAR s:SIZEL; o:LONGCARD) : BOOLEAN; PROCEDURE QueryPS(h:HPS; VAR s:SIZEL) : LSET; PROCEDURE ErrorSegmentData(h:HPS; VAR s:LONGCARD; VAR c:LONGINT) : GPIRET; PROCEDURE QueryDrawControl(h:HPS; c:LONGINT) : LONGINT; PROCEDURE SetDrawControl(h:HPS; c,v:LONGINT) : BOOLEAN; PROCEDURE QueryDrawingMode(h:HPS) : LONGINT; PROCEDURE SetDrawingMode(h:HPS; m:LONGINT) : BOOLEAN; PROCEDURE QueryStopDraw(h:HPS) : LONGINT; PROCEDURE SetStopDraw(h:HPS; v:LONGINT) : BOOLEAN; (*%E*) (**) (**--- Gpi Correlation ----------------------------------------------------*) (**) (*%T i_CORR*) CONST (* options for GpiSetPickApertureSize *) PICKAP_DEFAULT = 0; PICKAP_REC = 2; (* type of correlation for GpiCorrelateChain *) PICKSEL_VISIBLE = 0; PICKSEL_ALL = 1; PROCEDURE CorrelateChain(h:HPS; t:LONGINT; VAR p:POINTL; m,d:LONGCARD; VAR s:ARRAY OF LONGINT) : LONGINT; PROCEDURE QueryTag(h:HPS; VAR t:LONGINT) : BOOLEAN; PROCEDURE SetTag(h:HPS; t:LONGINT) : BOOLEAN; PROCEDURE QueryPickApertureSize(h:HPS; VAR s:SIZEL) : BOOLEAN; PROCEDURE SetPickApertureSize(h:HPS; o:LONGINT; VAR s:SIZEL) : BOOLEAN; PROCEDURE QueryPickAperturePosition(h:HPS; VAR p:POINTL) : BOOLEAN; PROCEDURE SetPickAperturePosition(h:HPS; VAR p:POINTL) : BOOLEAN; PROCEDURE QueryBoundaryData(h:HPS; VAR r:RECTL) : BOOLEAN; PROCEDURE ResetBoundaryData(h:HPS) : BOOLEAN; PROCEDURE CorrelateFrom(h:HPS; f,l:LONGCARD; t:LONGINT; VAR p:POINTL; m,d:LONGCARD; VAR s:ARRAY OF LONGINT) : LONGINT; PROCEDURE CorrelateSegment(h:HPS; s,t:LONGINT; VAR p:POINTL; m,d:LONGCARD; VAR a:ARRAY OF LONGINT) : LONGINT; (*%E*) (**) (**--- Gpi Segments -------------------------------------------------------*) (**) (*%T i_SEGM*) CONST (* data formats for GpiPutData and GpiGetData *) DFORM_NOCONV = 0; DFORM_S370SHORT = 1; DFORM_PCSHORT = 2; DFORM_PCLONG = 4; (* segment attributes used by GpiSet/QuerySegmentAttrs and others *) ATTR_ERROR = -1; ATTR_DETECTABLE = 1; ATTR_VISIBLE = 2; ATTR_CHAINED = 6; ATTR_DYNAMIC = 8; ATTR_FASTCHAIN = 9; ATTR_PROP_DETECTABLE = 10; ATTR_PROP_VISIBLE = 11; ATTR_OFF = 0; ATTR_ON = 1; (* segment priority used by GpiSetSegmentPriority and others *) LOWER_PRI = -1; HIGHER_PRI = 1; (* segment control functions *) PROCEDURE OpenSegment(h:HPS; s:LONGCARD) : BOOLEAN; PROCEDURE CloseSegment(h:HPS) :BOOLEAN; PROCEDURE DeleteSegment(h:HPS; s:LONGCARD) : BOOLEAN; PROCEDURE QueryInitialSegmentAttrs(h:HPS; a:LONGINT) : LONGINT; PROCEDURE SetInitialSegmentAttrs(h:HPS; a,v:LONGINT) : BOOLEAN; PROCEDURE QuerySegmentAttrs(h:HPS; i:LONGCARD; a:LONGINT) : LONGINT; PROCEDURE SetSegmentAttrs(h:HPS; s:LONGCARD; a,v:LONGINT) : BOOLEAN; PROCEDURE QuerySegmentPriority(h:HPS; s:LONGCARD; o:LONGINT) : GPIRET; PROCEDURE SetSegmentPriority(h:HPS; s,r:LONGCARD; o:LONGINT) : BOOLEAN; PROCEDURE DeleteSegments(h:HPS; f,l:LONGCARD) : BOOLEAN; PROCEDURE QuerySegmentNames(h:HPS; f,l,m:LONGCARD; VAR s:ARRAY OF LONGCARD) : GPIRET; (* draw functions for segments *) PROCEDURE GetData(h:HPS; s:LONGCARD; VAR o:LONGINT; f:LONGCARD; l:LONGCARD; VAR d:ARRAY OF BYTE) : GPIRET; PROCEDURE PutData(h:HPS; f:LONGINT; VAR c:LONGCARD; d:ARRAY OF BYTE) : HITSRET; PROCEDURE DrawChain(h:HPS) : BOOLEAN; PROCEDURE DrawFrom(h:HPS; f,l:LONGCARD) : BOOLEAN; PROCEDURE DrawSegment(h:HPS; s:LONGCARD) : BOOLEAN; PROCEDURE DrawDynamics(h:HPS) : BOOLEAN; PROCEDURE RemoveDynamics(h:HPS; f,l:LONGCARD) : BOOLEAN; (*%E*) (**) (**--- Gpi Segment Editing ------------------------------------------------*) (**) (*%T i_SEGMEDIT*) CONST (* edit modes used by GpiSet/QueryEditMode *) SEGEM_ERROR = 0; SEGEM_INSERT = 1; SEGEM_REPLACE = 2; (*** segment editing by element functions *) PROCEDURE BeginElement(h:HPS; t:LONGINT; d:ARRAY OF CHAR) : BOOLEAN; PROCEDURE EndElement(h:HPS) : BOOLEAN; PROCEDURE Label(h:HPS; l:LONGINT) : BOOLEAN; PROCEDURE Element(h:HPS; t:LONGINT; s:ARRAY OF CHAR; l:LONGCARD; VAR d:ARRAY OF BYTE) : HITSRET; PROCEDURE QueryElement(h:HPS; o,m:LONGCARD; VAR b:ARRAY OF BYTE) : GPIRET; PROCEDURE DeleteElement(h:HPS) : BOOLEAN; PROCEDURE DeleteElementRange(h:HPS; f,l:LONGINT) : BOOLEAN; PROCEDURE DeleteElementsBetweenLabels(h:HPS; f,l:LONGINT) : BOOLEAN; PROCEDURE QueryEditMode(h:HPS) : LONGINT; PROCEDURE SetEditMode(h:HPS; m:LONGINT) : BOOLEAN; PROCEDURE QueryElementPointer(h:HPS) : GPIRET; PROCEDURE SetElementPointer(h:HPS; e:LONGINT) : BOOLEAN; PROCEDURE OffsetElementPointer(h:HPS; o:LONGINT) : BOOLEAN; PROCEDURE QueryElementType(h:HPS; VAR t:LONGINT; c:LONGCARD; VAR d:ARRAY OF CHAR) : GPIRET; PROCEDURE SetElementPointerAtLabel(h:HPS; l:LONGINT) : BOOLEAN; (*%E*) (**) (**--- Gpi Transforms -----------------------------------------------------*) (**) (*%T i_TRANSF*) CONST (* co-ordinates space for GpiConvert *) CVTC_WORLD = 1; CVTC_MODEL = 2; CVTC_DEFAULTPAGE = 3; CVTC_PAGE = 4; CVTC_DEVICE = 5; (* type of transformation for GpiSetSegmentTransformMatrix *) TRANSFORM_REPLACE = 0; TRANSFORM_ADD = 1; TRANSFORM_PREEMPT = 2; TYPE (* transform matrix *) MATRIXLF = RECORD M11,M12 : FIXED; M13 : LONGINT; M21,M22 : FIXED; M23 : LONGINT; M31,M32,M33 : LONGINT; END; PROCEDURE QuerySegmentTransformMatrix(h:HPS; s,c:LONGCARD; VAR m:ARRAY OF MATRIXLF) : BOOLEAN; PROCEDURE SetSegmentTransformMatrix(h:HPS; s,c:LONGCARD; m:ARRAY OF MATRIXLF; o:LONGINT) : BOOLEAN; PROCEDURE Convert(h:HPS; s,t:LONGINT; c:LONGCARD; VAR p:ARRAY OF POINTL) : BOOLEAN; PROCEDURE QueryModelTransformMatrix(h:HPS; c:LONGCARD; VAR m:MATRIXLF) : BOOLEAN; PROCEDURE SetModelTransformMatrix(h:HPS; c:LONGCARD; m:ARRAY OF MATRIXLF; o:LONGINT) : BOOLEAN; PROCEDURE CallSegmentMatrix(h:HPS; s:LONGCARD; c:LONGCARD; VAR m:MATRIXLF; o:LONGINT) : HITSRET; PROCEDURE QueryDefaultViewMatrix(h:HPS; c:LONGCARD; VAR m:ARRAY OF MATRIXLF) : BOOLEAN; PROCEDURE SetDefaultViewMatrix(h:HPS; c:LONGCARD; m:ARRAY OF MATRIXLF; o:LONGINT) : BOOLEAN; PROCEDURE QueryPageViewport(h:HPS; VAR r:RECTL) : BOOLEAN; PROCEDURE SetPageViewport(h:HPS; VAR r:RECTL) : BOOLEAN; PROCEDURE QueryViewingTransformMatrix(h:HPS; c:LONGCARD; VAR m:ARRAY OF MATRIXLF) : BOOLEAN; PROCEDURE SetViewingTransformMatrix(h:HPS; c:LONGCARD; m:ARRAY OF MATRIXLF; o:LONGINT) : BOOLEAN; (*** transform helper routines *) PROCEDURE Translate(h: HPS; VAR m: MATRIXLF; l:LONGINT; VAR p:POINTL): BOOLEAN; PROCEDURE Scale(h: HPS; VAR m:MATRIXLF; l:LONGINT; VAR f:FIXED; VAR p:POINTL): BOOLEAN; PROCEDURE Rotate(h: HPS; VAR m:MATRIXLF; l:LONGINT; f:FIXED; VAR p:POINTL): BOOLEAN; (*** general clipping functions *) PROCEDURE SetGraphicsField(h:HPS; VAR r:RECTL) : BOOLEAN; PROCEDURE QueryGraphicsField(h:HPS; VAR r:RECTL) : BOOLEAN; PROCEDURE SetViewingLimits(h:HPS; VAR r:RECTL) : BOOLEAN; PROCEDURE QueryViewingLimits(h:HPS; VAR r:RECTL) : BOOLEAN; (*%E*) (**) (**--- Gpi Paths ----------------------------------------------------------*) (**) (*%T i_PATH*) CONST (* modes for GpiModifyPath *) MPATH_STROKE = 6; (* modes for GpiFillPath *) FPATH_ALTERNATE = 0; FPATH_WINDING = 2; (* modes for GpiSetClipPath *) SCP_ALTERNATE = 0; SCP_WINDING = 2; SCP_AND = 4; SCP_RESET = 0; PROCEDURE BeginPath(h:HPS; i:LONGINT) : BOOLEAN; PROCEDURE EndPath(h:HPS) : BOOLEAN; PROCEDURE CloseFigure(h:HPS) : BOOLEAN; PROCEDURE ModifyPath(h:HPS; p:LONGCARD; m:LONGINT) : BOOLEAN; PROCEDURE FillPath(h:HPS; p:LONGCARD; o:LONGINT) : HITSRET; PROCEDURE SetClipPath(h:HPS; p:LONGCARD; o:LONGINT) : BOOLEAN; PROCEDURE OutlinePath(h:HPS; Path: LONGINT; Options: LONGINT): LONGINT; PROCEDURE StrokePath(h:HPS; p,o:LONGCARD) : HITSRET; (*%E*) (**) (**--- Gpi Logical Color Tables -------------------------------------------*) (**) (*%T i_COLORTAB*) CONST (* options for GpiCreateLogColorTable and others *) LCOL_RESET = LSET(01H); LCOL_REALIZABLE = LSET(02H); LCOL_PURECOLOR = LSET(04H); (* format of logical lColor table for GpiCreateLogColorTable and others *) LCOLF_DEFAULT = 0; LCOLF_INDRGB = 1; LCOLF_CONSECRGB = 2; LCOLF_RGB = 3; (* options for GpiQueryRealColors and others *) LCOLOPT_REALIZED = LSET(01H); LCOLOPT_INDEX = LSET(02H); (* return codes from GpiQueryLogColorTable to indicate it is in RGB mode *) QLCT_ERROR = -1; QLCT_RGB = -2; (* GpiQueryLogColorTable index returned for colors not explicitly loaded *) QLCT_NOTLOADED = -1; (* return codes for GpiQueryColorData *) QCD_LCT_FORMAT = 0; QCD_LCT_LOINDEX = 1; QCD_LCT_HIINDEX = 2; (* logical lColor table functions *) PROCEDURE CreateLogColorTable(h:HPS; o:LSET; f:LONGINT; s,c:LONGCARD; VAR t:ARRAY OF LONGINT) : BOOLEAN; PROCEDURE RealizeColorTable(h:HPS) : BOOLEAN; PROCEDURE UnrealizeColorTable(h:HPS) : BOOLEAN; PROCEDURE QueryColorData(h:HPS; c:LONGCARD; VAR a:ARRAY OF LONGINT) : BOOLEAN; PROCEDURE QueryLogColorTable(h:HPS; o:LSET; s,c:LONGCARD; VAR a:ARRAY OF LONGINT) : LONGINT; PROCEDURE QueryRealColors(h:HPS; o:LSET; s,c:LONGCARD; VAR a:ARRAY OF LONGINT) : GPIRET; PROCEDURE QueryNearestColor(h:HPS; o:LSET; r:LONGINT) : GPIRET; PROCEDURE QueryColorIndex(h:HPS; o:LSET; c:LONGINT) : LONGINT; PROCEDURE QueryRGBColor(h:HPS; o:LSET; i:LONGINT) : GPIRET; (*%E*) (**) (**--- Gpi Common Primitives ----------------------------------------------*) (**) (*%T i_PRIM1*) CONST (* default color table indices *) CLR_FALSE = -5; CLR_TRUE = -4; CLR_ERROR = -255; CLR_DEFAULT = -3; CLR_WHITE = -2; CLR_BLACK = -1; CLR_BACKGROUND = 0; CLR_BLUE = 1; CLR_RED = 2; CLR_PINK = 3; CLR_GREEN = 4; CLR_CYAN = 5; CLR_YELLOW = 6; CLR_NEUTRAL = 7; CLR_DARKGRAY = 8; CLR_DARKBLUE = 9; CLR_DARKRED = 10; CLR_DARKPINK = 11; CLR_DARKGREEN = 12; CLR_DARKCYAN = 13; CLR_BROWN = 14; CLR_PALEGRAY = 15; (* rgb colors *) RGB_ERROR = -255; RGB_BLACK = 00H; RGB_BLUE = 0FFH; RGB_GREEN = 0FF00H; RGB_CYAN = 0FFFFH; RGB_RED = 0FF0000H; RGB_PINK = 0FF00FFH; RGB_YELLOW = 0FFFF00H; RGB_WHITE = 0FFFFFFH; (* control flags used by GpiBeginArea *) BA_NOBOUNDARY = LSET(0); BA_BOUNDARY = LSET(01H); BA_ALTERNATE = LSET(0); BA_WINDING = LSET(02H); (* fill options for GpiBox/GpiFullArc *) DRO_FILL = 1; DRO_OUTLINE = 2; DRO_OUTLINEFILL = 3; (* basic pattern symbols *) PATSYM_ERROR = -1; PATSYM_DEFAULT = 0; PATSYM_DENSE1 = 1; PATSYM_DENSE2 = 2; PATSYM_DENSE3 = 3; PATSYM_DENSE4 = 4; PATSYM_DENSE5 = 5; PATSYM_DENSE6 = 6; PATSYM_DENSE7 = 7; PATSYM_DENSE8 = 8; PATSYM_VERT = 9; PATSYM_HORIZ = 10; PATSYM_DIAG1 = 11; PATSYM_DIAG2 = 12; PATSYM_DIAG3 = 13; PATSYM_DIAG4 = 14; PATSYM_NOSHADE = 15; PATSYM_SOLID = 16; PATSYM_BLANK = 64; PATSYM_HALFTONE = 17; (* lcid values for GpiSet/QueryPattern and others *) LCID_ERROR = -1; LCID_DEFAULT = 0; PROCEDURE SetColor(h:HPS; c:LONGINT) : BOOLEAN; PROCEDURE QueryColor(h:HPS) : LONGINT; PROCEDURE Box(h:HPS; c:LONGINT; VAR p:POINTL; hr,vr:LONGINT) : HITSRET; PROCEDURE Move(h:HPS; VAR p:POINTL) : BOOLEAN; PROCEDURE Line(h:HPS; VAR p:POINTL) : HITSRET; PROCEDURE PolyLine(h:HPS; c:LONGCARD; p:ARRAY OF POINTL) : GPIRET; PROCEDURE SetPattern(h:HPS; p:LONGINT) : BOOLEAN; PROCEDURE QueryPattern(h:HPS) : LONGINT; PROCEDURE BeginArea(h:HPS; o:LSET) : BOOLEAN; PROCEDURE EndArea(h:HPS) : HITSRET; PROCEDURE CharString(h:HPS; c:LONGCARD; s:ARRAY OF CHAR) : HITSRET; PROCEDURE CharStringAt(h:HPS; VAR p:POINTL; c:LONGCARD; s:ARRAY OF CHAR) : HITSRET; (*%E*) (**) (**--- Gpi Uncommon Primitives --------------------------------------------*) (**) (*%T i_PRIM2*) CONST (* mode for GpiSetAttrMode *) AM_ERROR = -1; AM_PRESERVE = 0; AM_NOPRESERVE = 1; (* foreground mixes *) FM_ERROR = -1; FM_DEFAULT = 0; FM_OR = 1; FM_OVERPAINT = 2; FM_LEAVEALONE = 5; FM_XOR = 4; FM_AND = 6; FM_SUBTRACT = 7; FM_MASKSRCNOT = 8; FM_ZERO = 9; FM_NOTMERGESRC = 10; FM_NOTXORSRC = 11; FM_INVERT = 12; FM_MERGESRCNOT = 13; FM_NOTCOPYSRC = 14; FM_MERGENOTSRC = 15; FM_NOTMASKSRC = 16; FM_ONE = 17; (* background mixes *) BM_ERROR = -1; BM_DEFAULT = 0; BM_OVERPAINT = 2; BM_LEAVEALONE = 5; BM_OR = 1; BM_XOR = 4; (* basic line type styles *) LINETYPE_ERROR = -1; LINETYPE_DEFAULT = 0; LINETYPE_DOT = 1; LINETYPE_SHORTDASH = 2; LINETYPE_DASHDOT = 3; LINETYPE_DOUBLEDOT = 4; LINETYPE_LONGDASH = 5; LINETYPE_DASHDOUBLEDOT = 6; LINETYPE_SOLID = 7; LINETYPE_INVISIBLE = 8; LINETYPE_ALTERNATE = 9; (* cosmetic line widths *) LINEWIDTH_ERROR = -1; LINEWIDTH_DEFAULT = 0; LINEWIDTH_NORMAL = 010000H; (* actual line widths *) LINEWIDTHGEOM_ERROR = -1; (* line end styles *) LINEEND_ERROR = -1; LINEEND_DEFAULT = 0; LINEEND_FLAT = 1; LINEEND_SQUARE = 2; LINEEND_ROUND = 3; (* line join styles *) LINEJOIN_ERROR = -1; LINEJOIN_DEFAULT = 0; LINEJOIN_BEVEL = 1; LINEJOIN_ROUND = 2; LINEJOIN_MITRE = 3; (* character directions *) CHDIRN_ERROR = -1; CHDIRN_DEFAULT = 0; CHDIRN_LEFTRIGHT = 1; CHDIRN_TOPBOTTOM = 2; CHDIRN_RIGHTLEFT = 3; CHDIRN_BOTTOMTOP = 4; (* character modes *) CM_ERROR = -1; CM_DEFAULT = 0; CM_MODE1 = 1; CM_MODE2 = 2; CM_MODE3 = 3; (* basic marker symbols *) MARKSYM_ERROR = -1; MARKSYM_DEFAULT = 0; MARKSYM_CROSS = 1; MARKSYM_PLUS = 2; MARKSYM_DIAMOND = 3; MARKSYM_SQUARE = 4; MARKSYM_SIXPOINTSTAR = 5; MARKSYM_EIGHTPOINTSTAR = 6; MARKSYM_SOLIDDIAMOND = 7; MARKSYM_SOLIDSQUARE = 8; MARKSYM_DOT = 9; MARKSYM_SMALLCIRCLE = 10; MARKSYM_BLANK = 64; (* formatting options for GpiCharStringPosAt *) CHS_OPAQUE = LSET(01H); CHS_VECTOR = LSET(02H); CHS_LEAVEPOS = LSET(08H); CHS_CLIP = LSET(010H); (* bundle codes for GpiSetAttributes and GpiQueryAttributes *) PRIM_LINE = 1; PRIM_CHAR = 2; PRIM_MARKER = 3; PRIM_AREA = 4; PRIM_IMAGE = 5; (* line bundle mask bits *) LBB_COLOR = LSET{0}; LBB_MIX_MODE = LSET{2}; LBB_WIDTH = LSET{4}; LBB_GEOM_WIDTH = LSET{5}; LBB_TYPE = LSET{6}; LBB_END = LSET{7}; LBB_JOIN = LSET{8}; (* character bundle mask bits *) CBB_COLOR = LSET{0}; CBB_BACK_COLOR = LSET{1}; CBB_MIX_MODE = LSET{2}; CBB_BACK_MIX_MODE = LSET{3}; CBB_SET = LSET{4}; CBB_MODE = LSET{5}; CBB_BOX = LSET{6}; CBB_ANGLE = LSET{7}; CBB_SHEAR = LSET{8}; CBB_DIRECTION = LSET{9}; (* marker bundle mask bits *) MBB_COLOR = LSET{0}; MBB_BACK_COLOR = LSET{1}; MBB_MIX_MODE = LSET{2}; MBB_BACK_MIX_MODE = LSET{3}; MBB_SET = LSET{4}; MBB_SYMBOL = LSET{5}; MBB_BOX = LSET{6}; (* pattern bundle mask bits *) ABB_COLOR = LSET{0}; ABB_BACK_COLOR = LSET{1}; ABB_MIX_MODE = LSET{2}; ABB_BACK_MIX_MODE = LSET{3}; ABB_SET = LSET{4}; ABB_SYMBOL = LSET{5}; ABB_REF_POINT = LSET{6}; (* image bundle mask bits *) IBB_COLOR = LSET{0}; IBB_BACK_COLOR = LSET{1}; IBB_MIX_MODE = LSET{2}; IBB_BACK_MIX_MODE = LSET{3}; TYPE (* structure for GpiSetArcParams and GpiQueryArcParams *) ARCPARAMS = RECORD P,Q,R,S : LONGINT; END; (* variation of SIZE used for FIXEDs *) SIZEF = RECORD cx,cy : LONGINT; END; (* structure for gradient parameters e.g. for GpiSetCharAngle *) GRADIENTL = RECORD x,y : LONGINT; END; (* line bundle for GpiSetAttributes and GpiQueryAttributes *) LINEBUNDLE = RECORD Color : LONGINT; Reserved : LONGINT; MixMode : CARDINAL; Reserved2 : CARDINAL; Width : LONGINT; GeomWidth : LONGINT; Type : CARDINAL; End : CARDINAL; Join : CARDINAL; END; (* character bundle for GpiSetAttributes and GpiQueryAttributes *) CHARBUNDLE = RECORD Color : LONGINT; BackColor : LONGINT; MixMode : CARDINAL; BackMixMode : CARDINAL; Set : CARDINAL; Precision : CARDINAL; Cell : SIZEF; Angle : POINTL; Shear : POINTL; Direction : CARDINAL; END; (* marker bundle for GpiSetAttributes and GpiQueryAttributes *) MARKERBUNDLE = RECORD Color : LONGINT; BackColor : LONGINT; MixMode : CARDINAL; BackMixMode : CARDINAL; Set : CARDINAL; Symbol : CARDINAL; Cell : SIZEF; END; (* pattern bundle for GpiSetAttributes and GpiQueryAttributes *) AREABUNDLE = RECORD Color : LONGINT; BackColor : LONGINT; MixMode : CARDINAL; BackMixMode : CARDINAL; Set : CARDINAL; Symbol : CARDINAL; RefPoint : POINTL; END; (* image bundle for GpiSetAttributes and GpiQueryAttributes *) IMAGEBUNDLE = RECORD Color : LONGINT; BackColor : LONGINT; MixMode : CARDINAL; BackMixMode : CARDINAL; END; (* pointer to any bundle used by GpiSet/QueryAttrs *) PBUNDLE = FarADDRESS; CONST (* array indices for GpiQueryTextBox *) TXTBOX_TOPLEFT = 0; TXTBOX_BOTTOMLEFT = 1; TXTBOX_TOPRIGHT = 2; TXTBOX_BOTTOMRIGHT = 3; TXTBOX_CONCAT = 4; TXTBOX_COUNT = 5; (* return codes for GpiPtVisible *) PVIS_ERROR = 0; PVIS_INVISIBLE = 1; PVIS_VISIBLE = 2; (* return codes for GpiRectVisible *) RVIS_ERROR = 0; RVIS_INVISIBLE = 1; RVIS_PARTIAL = 2; RVIS_VISIBLE = 3; (*** attribute mode functions *) PROCEDURE SetAttrMode(h:HPS; m:LONGINT) : BOOLEAN; PROCEDURE QueryAttrMode(h:HPS) : LONGINT; PROCEDURE SetAttrs(h:HPS; p:LONGINT; a,d:LSET; b:FarADDRESS) : BOOLEAN; PROCEDURE QueryAttrs(h:HPS; p:LONGINT; a:LSET; b:FarADDRESS) : LSET; PROCEDURE SetBackColor(h:HPS; c:LONGINT) : BOOLEAN; PROCEDURE QueryBackColor(h:HPS) : LONGINT; PROCEDURE SetMix(h:HPS; m:LONGINT) : BOOLEAN; PROCEDURE QueryMix(h:HPS) : LONGINT; PROCEDURE SetBackMix(h:HPS; c:LONGINT) : BOOLEAN; PROCEDURE QueryBackMix(h:HPS) : LONGINT; PROCEDURE SetLineType(h:HPS; t:LONGINT) : BOOLEAN; PROCEDURE QueryLineType(h:HPS) : LONGINT; PROCEDURE SetLineWidth(h:HPS; w:FIXED) : BOOLEAN; PROCEDURE QueryLineWidth(h:HPS) : LONGINT; PROCEDURE SetLineWidthGeom(h:HPS; w:LONGINT) : BOOLEAN; PROCEDURE QueryLineWidthGeom(h:HPS) : LONGINT; PROCEDURE SetLineEnd(h:HPS; e:LONGINT) : BOOLEAN; PROCEDURE QueryLineEnd(h:HPS) : LONGINT; PROCEDURE SetLineJoin(h:HPS; j:LONGINT) : BOOLEAN; PROCEDURE QueryLineJoin(h:HPS) : LONGINT; PROCEDURE SetCurrentPosition(h:HPS; VAR p:POINTL) : BOOLEAN; PROCEDURE QueryCurrentPosition(h:HPS; VAR p:POINTL) : BOOLEAN; PROCEDURE SetArcParams(h:HPS; VAR a:ARCPARAMS) : BOOLEAN; PROCEDURE QueryArcParams(h:HPS; VAR a:ARCPARAMS) : BOOLEAN; PROCEDURE PointArc(h:HPS; VAR p:POINTL) : HITSRET; PROCEDURE FullArc(h:HPS; c:LONGINT; m:FIXED) : HITSRET; PROCEDURE PartialArc(h:HPS; VAR p:POINTL; m:FIXED; a,s:LONGINT) : HITSRET; PROCEDURE PolyFilletSharp(h:HPS; c:LONGCARD; p:ARRAY OF POINTL; s:ARRAY OF FIXED) : HITSRET; PROCEDURE PolySpline(h:HPS; c:LONGCARD; p:ARRAY OF POINTL) : HITSRET; PROCEDURE PolyFillet(h:HPS; c:LONGCARD; p:ARRAY OF POINTL) : HITSRET; PROCEDURE SetPatternSet(h:HPS; s:LONGINT) : BOOLEAN; PROCEDURE QueryPatternSet(h:HPS) : LONGINT; PROCEDURE SetPatternRefPoint(h:HPS; VAR p:POINTL) : BOOLEAN; PROCEDURE QueryPatternRefPoint(h:HPS; VAR p:POINTL) : BOOLEAN; PROCEDURE QueryCharStringPos(h:HPS; o:LSET; c:LONGCARD; s:ARRAY OF CHAR; x:ARRAY OF LONGINT; VAR p:ARRAY OF POINTL) : BOOLEAN; PROCEDURE QueryCharStringPosAt(h:HPS; VAR p:POINTL; o:LSET; c:LONGCARD; s:ARRAY OF CHAR; x:ARRAY OF LONGINT; VAR po:ARRAY OF POINTL) : BOOLEAN; PROCEDURE QueryTextBox(h:HPS; c:LONGCARD; s:ARRAY OF CHAR; c2:LONGCARD; VAR p:ARRAY OF POINTL) : BOOLEAN; PROCEDURE QueryDefCharBox(h:HPS; VAR s:SIZEL) : BOOLEAN; PROCEDURE SetCharSet(h:HPS; i:LONGINT) : BOOLEAN; PROCEDURE QueryCharSet(h:HPS) : LONGINT; PROCEDURE SetCharBox(h:HPS; VAR b:SIZEF) : BOOLEAN; PROCEDURE QueryCharBox(h:HPS; VAR s:SIZEF) : BOOLEAN; PROCEDURE SetCharAngle(h:HPS; VAR a:GRADIENTL) : BOOLEAN; PROCEDURE QueryCharAngle(h:HPS; VAR a:GRADIENTL) : BOOLEAN; PROCEDURE SetCharShear(h:HPS; VAR p:POINTL) : BOOLEAN; PROCEDURE QueryCharShear(h:HPS; VAR p:POINTL) : BOOLEAN; PROCEDURE SetCharDirection(h:HPS; d:LONGINT) : BOOLEAN; PROCEDURE QueryCharDirection(h:HPS) : LONGINT; PROCEDURE SetCharMode(h:HPS; m:LONGINT) : BOOLEAN; PROCEDURE QueryCharMode(h:HPS) : LONGINT; PROCEDURE CharStringPos(h:HPS; VAR r:RECTL; o:LSET; c:LONGCARD; s:ARRAY OF CHAR; VAR i: ARRAY OF LONGINT) : HITSRET; PROCEDURE CharStringPosAt(h:HPS; VAR p:POINTL; VAR r:RECTL; o:LSET; c:LONGCARD; s:ARRAY OF CHAR; VAR i:ARRAY OF LONGINT) : HITSRET; PROCEDURE SetMarkerSet(h:HPS; s:LONGINT) : BOOLEAN; PROCEDURE QueryMarkerSet(h:HPS) : LONGINT; PROCEDURE SetMarker(h:HPS; s:LONGINT) : BOOLEAN; PROCEDURE QueryMarker(h:HPS) :LONGINT; PROCEDURE SetMarkerBox(h:HPS; VAR s:SIZEF) : BOOLEAN; PROCEDURE QueryMarkerBox(h:HPS; VAR s:SIZEF) : BOOLEAN; PROCEDURE Marker(h:HPS; VAR p:POINTL) : HITSRET; PROCEDURE PolyMarker(h:HPS; c:LONGCARD; p:ARRAY OF POINTL) : GPIRET; PROCEDURE Image(h:HPS; f:LONGINT; VAR s:SIZEL; l:LONGCARD; VAR d:ARRAY OF BYTE) : HITSRET; PROCEDURE Pop(h:HPS; c:LONGCARD) : BOOLEAN; PROCEDURE PtVisible(h:HPS; VAR p:POINTL) : LONGINT; PROCEDURE RectVisible(h:HPS; VAR r:RECTL) : LONGINT; PROCEDURE Comment(h:HPS; l:LONGCARD; VAR b:ARRAY OF BYTE) : BOOLEAN; (*%E*) (**) (**--- Gpi LCIDS ----------------------------------------------------------*) (**) (*%T i_LCID*) CONST (* return codes from GpiCreateLogFont *) FONT_DEFAULT = 1; FONT_MATCH = 2; (* lcid type for GpiQuerySetIds *) LCIDT_FONT = 6; LCIDT_BITMAP = 7; LCID_ALL = -1; TYPE (* kerning data returned by GpiQueryKerningPairs *) KERNINGPAIRS = RECORD FirstChar : INTEGER; SecondChar : INTEGER; KerningAmount : INTEGER; END; CONST (* options for GpiQueryFonts *) QF_PUBLIC = LSET(01H); QF_PRIVATE = LSET(02H); TYPE (* font file descriptions for GpiQueryFontFileDescriptions *) FFDESCS = ARRAY [0..1] OF ARRAY [0..31] OF CHAR; CONST (* values of Selection field of FATTRS structure *) FATTR_SEL_ITALIC = 001H; FATTR_SEL_UNDERSCORE = 002H; FATTR_SEL_OUTLINE = 008H; FATTR_SEL_STRIKEOUT = 010H; FATTR_SEL_BOLD = 020H; (* values of Type field of FATTRS structure *) FATTR_TYPE_FIXED = 002H; FATTR_TYPE_KERNING = 004H; FATTR_TYPE_MBCS = 008H; FATTR_TYPE_DBCS = 010H; FATTR_TYPE_ANTIALIASED= 020H; (* values of FontUse field of FATTRS structure *) FATTR_FONTUSE_NOMIX = 002H; FATTR_FONTUSE_OUTLINE = 004H; FATTR_FONTUSE_TRANSFORMABLE = 008H; (* size for fields in the font structures *) FACESIZE = 32; TYPE FATTRS = RECORD RecordLength : CARDINAL; Selection : CARDINAL; Match : LONGINT; FaceName : ARRAY [0..31] OF CHAR; IdRegistry : CARDINAL; CodePage : CARDINAL; MaxBaselineExt : LONGINT; AveCharWidth : LONGINT; Type : CARDINAL; FontUse : CARDINAL; END; CONST (* values of fsType field of FONTMETRICS structure *) FM_TYPE_FIXED = 0001H; FM_TYPE_LICENSED = 0002H; FM_TYPE_KERNING = 0004H; FM_TYPE_DBCS = 0010H; FM_TYPE_MBCS = 0018H; FM_TYPE_64K = 8000H; (* values of fsDefn field of FONTMETRICS structure *) FM_DEFN_OUTLINE = 0; FM_DEFN_GENERIC = 15; (* values of fsSelection field of FONTMETRICS structure *) FM_SEL_ITALIC = 0001H; FM_SEL_UNDERSCORE = 0002H; FM_SEL_NEGATIVE = 0004H; FM_SEL_OUTLINE = 0008H; (* Hollow Outline Font *) FM_SEL_STRIKEOUT = 0010H; FM_SEL_BOLD = 0020H; (* values of fsCapabilities field of FONTMETRICS structure *) FM_CAP_NOMIX = 0001H; TYPE FONTMETRICS = RECORD Familyname : ARRAY [0..31] OF CHAR; Facename : ARRAY [0..31] OF CHAR; IdRegistry : INTEGER; CodePage : INTEGER; EmHeight : LONGINT; XHeight : LONGINT; MaxAscender : LONGINT; MaxDescender : LONGINT; LowerCaseAscent : LONGINT; LowerCaseDescent : LONGINT; InternalLeading : LONGINT; ExternalLeading : LONGINT; AveCharWidth : LONGINT; MaxCharInc : LONGINT; EmInc : LONGINT; MaxBaselineExt : LONGINT; CharSlope : INTEGER; InlineDir : INTEGER; CharRot : INTEGER; WeightClass : CARDINAL; WidthClass : CARDINAL; XDeviceRes : INTEGER; YDeviceRes : INTEGER; FirstChar : INTEGER; LastChar : INTEGER; DefaultChar : INTEGER; BreakChar : INTEGER; NominalPointSize : INTEGER; MinimumPointSize : INTEGER; MaximumPointSize : INTEGER; Type : CARDINAL; Defn : BITSET; Selection : CARDINAL; Capabilities : CARDINAL; SubscriptXSize : LONGINT; SubscriptYSize : LONGINT; SubscriptXOffset : LONGINT; SubscriptYOffset : LONGINT; SuperscriptXSize : LONGINT; SuperscriptYSize : LONGINT; SuperscriptXOffset : LONGINT; SuperscriptYOffset : LONGINT; UnderscoreSize : LONGINT; UnderscorePosition : LONGINT; StrikeoutSize : LONGINT; StrikeoutPosition : LONGINT; KerningPairs : INTEGER; Reserved : INTEGER; Match : LONGINT; END; (*** physical and logical font functions *) PROCEDURE DeleteSetId(h:HPS; i:LONGINT) : BOOLEAN; PROCEDURE QueryNumberSetIds(h:HPS) : GPIRET; PROCEDURE QuerySetIds(h:HPS; c:LONGCARD; VAR t:ARRAY OF LONGINT; VAR n:ARRAY OF STR8; VAR i:ARRAY OF LONGCARD) : BOOLEAN; PROCEDURE LoadFonts(a:HAB; f:ARRAY OF CHAR) : BOOLEAN; PROCEDURE UnloadFonts(a:HAB; f:ARRAY OF CHAR) : BOOLEAN; PROCEDURE CreateLogFont(h:HPS; VAR n:STR8; i:LONGCARD; VAR a:FATTRS) : LONGINT; PROCEDURE QueryFonts(h:HPS; o:LSET; f:ARRAY OF CHAR; VAR c:LONGINT; l:LONGINT; VAR m:ARRAY OF FONTMETRICS) : LONGINT; PROCEDURE QueryFontMetrics(h:HPS; c:LONGCARD; VAR m:ARRAY OF FONTMETRICS) : BOOLEAN; PROCEDURE QueryKerningPairs(h:HPS; c:LONGCARD; VAR d:ARRAY OF KERNINGPAIRS) : GPIRET; PROCEDURE QueryWidthTable(h:HPS; f,c:LONGCARD; VAR d:ARRAY OF LONGCARD) : BOOLEAN; PROCEDURE SetCp(h:HPS; p:CARDINAL) : BOOLEAN; PROCEDURE QueryCp(h:HPS) : CARDINAL; PROCEDURE QueryFontFileDescriptions(a:HAB; f:ARRAY OF CHAR; VAR c:LONGCARD; VAR d:ARRAY OF FFDESCS) : GPIRET; (*%E*) (**) (**--- Gpi Common BITMAP functions ----------------------------------------*) (**) (*%T i_BITMAP1*) CONST (* rastor operations defined for GpiBitBlt *) ROP_SRCCOPY = 0CCH; ROP_SRCPAINT = 0EEH; ROP_SRCAND = 088H; ROP_SRCINVERT = 066H; ROP_SRCERASE = 044H; ROP_NOTSRCCOPY = 033H; ROP_NOTSRCERASE = 011H; ROP_MERGECOPY = 0C0H; ROP_MERGEPAINT = 0BBH; ROP_PATCOPY = 0F0H; ROP_PATPAINT = 0FBH; ROP_PATINVERT = 05AH; ROP_DSTINVERT = 055H; ROP_ZERO = 00H; ROP_ONE = 0FFH; (* Blt options for GpiBitBlt *) BBO_OR = LSET(0); BBO_AND = LSET(1); BBO_IGNORE = LSET(2); (* error return for GpiSetBitmap *) HBM_ERROR = HBITMAP(-1); (*** bitmap and pel functions *) PROCEDURE LoadBitmap(s:HPS; r:HMODULE; b:CARDINAL; w,h:LONGCARD) : HBITMAP; PROCEDURE DeleteBitmap(b:HBITMAP) : BOOLEAN; PROCEDURE SetBitmap(h:HPS; b:HBITMAP) : HBITMAP; PROCEDURE BitBlt(t,s:HPS; c:LONGCARD; VAR p:ARRAY OF POINTL; r:LONGCARD; o:LSET) : HITSRET; PROCEDURE WCBitBlt(h:HPS; b:HBITMAP; c:LONGCARD; p:ARRAY OF POINTL; r:LONGINT; o:LSET) : HITSRET; (*%E*) (**) (**--- Gpi Uncommon BITMAP Funtions ---------------------------------------*) (**) (*%T i_BITMAP2*) CONST (* usage flags for GpiCreateBitmap *) CBM_INIT = LSET(04H); TYPE (* bitmap parameterization used by GpiCreateBitmap and others *) BITMAPINFOHEADER = RECORD Fix : LONGCARD; x : CARDINAL; y : CARDINAL; Planes : CARDINAL; BitCount : CARDINAL; END; (* RGB data for _BITMAPINFO struct *) RGB = RECORD Blue : SHORTCARD; Green : SHORTCARD; Red : SHORTCARD; END; (* bitmap data used by GpiSetBitmapBits and others *) BITMAPINFO = RECORD Fix : LONGCARD; x : CARDINAL; y : CARDINAL; Planes : CARDINAL; BitCount : CARDINAL; Color : ARRAY [0..0] OF RGB; (* *** *) END; CONST (* error return code for GpiSet/QueryBitmapBits *) BMB_ERROR = -1; (*** bitmap and pel functions *) PROCEDURE CreateBitmap(h:HPS; VAR n:BITMAPINFOHEADER; o:LSET; VAR d:ARRAY OF BYTE; VAR i:BITMAPINFO) : HBITMAP; PROCEDURE SetBitmapDimension(b:HBITMAP; VAR s:SIZEL) : BOOLEAN; PROCEDURE QueryBitmapDimension(b:HBITMAP; VAR s:SIZEL) : BOOLEAN; PROCEDURE QueryDeviceBitmapFormats(h:HPS; c:LONGCARD; VAR a:ARRAY OF LONGINT) : BOOLEAN; PROCEDURE QueryBitmapParameters(b:HBITMAP; VAR i:BITMAPINFOHEADER) : BOOLEAN; PROCEDURE QueryBitmapBits(h:HPS; s,n:LONGCARD; VAR b:ARRAY OF BYTE; VAR i:BITMAPINFO) : GPIRET; PROCEDURE SetBitmapBits(h:HPS; s,n :LONGCARD; b:ARRAY OF BYTE; VAR d:BITMAPINFO) : GPIRET; PROCEDURE SetPel(h:HPS; VAR p:POINTL) : LONGINT; PROCEDURE QueryPel(h:HPS; VAR p:POINTL) : GPIRET; PROCEDURE SetBitmapId(h:HPS; b:HBITMAP; y:LONGINT) : BOOLEAN; PROCEDURE QueryBitmapHandle(h:HPS; i:LONGINT) : HBITMAP; (*%E*) (**) (**--- Bitmap file formats ------------------------------------------------*) (**) (*%T i_BITMAP3*) (* * This is the file format structure for Bit Maps, Pointers and Icons * as stored in the resource file of a PM application. * * Notes on file format: * Each BITMAPFILEHEADER entry is immediately followed by the color table * for the bit map bits it references. * Icons and Pointers contain two BITMAPFILEHEADERs for each ARRAYHEADER * item. The first one is for the ANDXOR mask, the second is for the * COLOR mask. All offsets are absolute based on the start of the FILE. *) TYPE BITMAPFILEHEADER = RECORD Type: CARDINAL; Size: LONGCARD; xHotspot: INTEGER; yHotspot: INTEGER; offBits : LONGCARD; bmp : BITMAPINFOHEADER; END; (* This is the 1.2 device independent format header *) BITMAPARRAYFILEHEADER = RECORD Type: CARDINAL; Size: LONGCARD; offNext : LONGCARD; cxDisplay: CARDINAL; cyDisplay: CARDINAL; bfh : BITMAPFILEHEADER; END; (* These are the identifying values that go in the usType field of the * BITMAPFILEHEADER and BITMAPARRAYFILEHEADER. (BFT_ => Bit map File Type) *) CONST BFT_ICON = 04349H; (* 'IC' *) BFT_BMAP = 04D42H; (* 'BM' *) BFT_POINTER = 05450H; (* 'PT' *) BFT_COLORICON = 04943H; (* 'CI' *) BFT_COLORPOINTER = 05043H; (* 'CP' *) BFT_BITMAPARRAY = 04142H; (* 'BA' *) (*%E*) (**) (**--- Gpi Regions --------------------------------------------------------*) (**) (*%T i_REGION*) CONST (* options for GpiCombineRegion *) CRGN_OR = 1; CRGN_COPY = 2; CRGN_XOR = 4; CRGN_AND = 6; CRGN_DIFF = 7; (* usDirection of returned region data for GpiQueryRegionRects *) RECTDIR_LFRT_TOPBOT = 1; RECTDIR_RTLF_TOPBOT = 2; RECTDIR_LFRT_BOTTOP = 3; RECTDIR_RTLF_BOTTOP = 4; TYPE (* control data for GpiQueryRegionRects *) RGNRECT = RECORD Start : CARDINAL; crc : CARDINAL; crcReturned : CARDINAL; Direction : CARDINAL; END; CONST (* return code to indicate type of region for GpiCombineRegion and others *) RGN_ERROR = 0; RGN_NULL = 1; RGN_RECT = 2; RGN_COMPLEX = 3; (* return codes for GpiPtInRegion *) PRGN_ERROR = 0; PRGN_OUTSIDE = 1; PRGN_INSIDE = 2; (* return codes for GpiRectInRegion *) RRGN_ERROR = 0; RRGN_OUTSIDE = 1; RRGN_PARTIAL = 2; RRGN_INSIDE = 3; (* return codes for GpiEqualRegion *) EQRGN_ERROR = 0; EQRGN_NOTEQUAL = 1; EQRGN_EQUAL = 2; (* error return code for GpiSetRegion *) HRGN_ERROR = HRGN(-1); (*** main region functions *) PROCEDURE CreateRegion(h:HPS; c:LONGCARD; VAR r:ARRAY OF RECTL) : HRGN; PROCEDURE SetRegion(h:HPS; r:HRGN; c:LONGCARD; a:ARRAY OF RECTL) : BOOLEAN; PROCEDURE DestroyRegion(h:HPS; r:HRGN) : BOOLEAN; PROCEDURE CombineRegion(h:HPS; d,s1,s2:HRGN; m:LONGCARD) : LONGINT; PROCEDURE EqualRegion(h:HPS; s1,s2:HRGN) : LONGINT; PROCEDURE OffsetRegion(h:HPS; r:HRGN; VAR p:POINTL) : BOOLEAN; PROCEDURE PtInRegion(h:HPS; r:HRGN; VAR p:POINTL) : LONGINT; PROCEDURE RectInRegion(h:HPS; r:HRGN; VAR t:RECTL) : LONGINT; PROCEDURE QueryRegionBox(h:HPS; r:HRGN; VAR b:RECTL) : LONGINT; PROCEDURE QueryRegionRects(h:HPS; r:HRGN; VAR b:RECTL; VAR c:RGNRECT; VAR a:ARRAY OF RECTL) : BOOLEAN; PROCEDURE PaintRegion(h:HPS; r:HRGN) : HITSRET; PROCEDURE SetClipRegion(h:HPS; r:HRGN; VAR o:HRGN) : LONGINT; PROCEDURE QueryClipRegion(h:HPS) : HRGN; PROCEDURE QueryClipBox(h:HPS; VAR r:RECTL) : LONGINT; PROCEDURE IntersectClipRectangle(h:HPS; VAR r:RECTL) : LONGINT; PROCEDURE ExcludeClipRectangle(h:HPS; VAR r:RECTL) : LONGINT; PROCEDURE OffsetClipRegion(h:HPS; VAR p:POINTL) : LONGINT; (*%E*) (**) (**--- Gpi Metafiles ------------------------------------------------------*) (**) (*%T i_METAF*) CONST (* constants for index values of options array for GpiPlayMetafile *) PMF_SEGBASE = 0; PMF_LOADTYPE = 1; PMF_RESOLVE = 2; PMF_LCIDS = 3; PMF_RESET = 4; PMF_SUPPRESS = 5; PMF_COLORTABLES = 6; PMF_COLORREALIZABLE = 7; (* options for GpiPlayMetafile *) RS_DEFAULT = 0; RS_NODISCARD = 1; LC_DEFAULT = 0; LC_NOLOAD = 1; LC_LOADDISC = 3; LT_DEFAULT = 0; LT_NOMODIFY = 1; LT_ORIGINALVIEW = 4; RES_DEFAULT = 0; RES_NORESET = 1; RES_RESET = 2; SUP_DEFAULT = 0; SUP_NOSUPPRESS = 1; SUP_SUPPRESS = 2; CTAB_DEFAULT = 0; CTAB_NOMODIFY = 1; CTAB_REPLACE = 3; CREA_DEFAULT = 0; CREA_REALIZE = 1; CREA_NOREALIZE = 2; DDEF_DEFAULT = 0; DDEF_IGNORE = 1; DDEF_LOADDISC = 3; RSP_DEFAULT = 0; RSP_NODISCARD = 1; PROCEDURE LoadMetaFile(a:HAB; f:ARRAY OF CHAR) : HMF; PROCEDURE PlayMetaFile(h:HPS; f:HMF; c1:LONGCARD; VAR o:ARRAY OF LONGINT; VAR s:LONGCARD; c2:LONGCARD; VAR d:ARRAY OF BYTE) : HITSRET; PROCEDURE SaveMetaFile(f:HMF; n:ARRAY OF CHAR) : BOOLEAN; PROCEDURE DeleteMetaFile(f:HMF) : BOOLEAN; PROCEDURE CopyMetaFile(f:HMF) : HMF; PROCEDURE QueryMetaFileLength(f:HMF) : GPIRET; PROCEDURE QueryMetaFileBits(f:HMF; o,c:LONGCARD; VAR d:ARRAY OF BYTE) : BOOLEAN; PROCEDURE SetMetaFileBits(f:HMF; o,c:LONGCARD; d:ARRAY OF BYTE) : BOOLEAN; (*%E*) (**) (**--- Gpi Defaults ------------------------------------------------------*) (**) (*%T i_DEFAULT*) (* default functions *) PROCEDURE QueryDefArcParams(h:HPS; VAR a:ARCPARAMS): BOOLEAN; PROCEDURE QueryDefAttrs(h:HPS; Prim: LONGINT; Mask: LONGCARD; bun: PBUNDLE): BOOLEAN; PROCEDURE QueryDefTag(h:HPS; VAR Tag: LONGINT): BOOLEAN; PROCEDURE QueryDefViewingLimits(h:HPS; VAR Limits: RECTL): BOOLEAN; PROCEDURE SetDefArcParams(h:HPS; VAR p: ARCPARAMS): BOOLEAN; PROCEDURE SetDefAttrs(h:HPS; Prim: LONGINT; Mask: LSET; bun: PBUNDLE): BOOLEAN; PROCEDURE SetDefTag(h:HPS; Tag: LONGINT): BOOLEAN; PROCEDURE SetDefViewingLimits(h:HPS; VAR Limits:RECTL): BOOLEAN; (*%E*) (**) (**--- GOCA Orders --------------------------------------------------------*) (**) (*%T i_ORDER*) (* form of RECTL with shorts instead of longs *) TYPE RECT1S = RECORD xLeft, yBottom, xRight, yTop: INTEGER; END; (* form of POINTL with 1 byte offsets instead of longs *) ODPOINT = RECORD dx,dy: SHORTCARD; END; (* form of SIZEL with shorts instead of longs *) SIZES = RECORD cx,cy: INTEGER; END; (* unsigned two-byte swapped integer *) SWPUSHORT = RECORD HiByte: SHORTCARD; LoByte: SHORTCARD; END; CONST (* 1-byte order codes *) OCODE_GNOP1 = 000H; (* No-operation *) OCODE_GESD = 0FFH; (* End symbol definition *) (* definitions to help determine whether an order code is a 2-byte order *) OCODE2_1 = 080H; OCODE2_2 = 088H; TYPE (* General 2-byte order structure *) ORDER = RECORD Code,Data: SHORTCARD; END; CONST (* 2-byte order codes *) OCODE_GBAR = 068H; (* Begin area *) OCODE_GCFIG = 07DH; (* Close figure *) OCODE_GEEL = 049H; (* End element *) OCODE_GEPTH = 07FH; (* End path *) OCODE_GEPROL = 03EH; (* End prologue *) OCODE_GPOP = 03FH; (* Pop *) OCODE_GSBMX = 00DH; (* Set background mix *) OCODE_GPSBMX = 04DH; (* Push & set b/g mix *) OCODE_GSCD = 03AH; (* Set char direction *) OCODE_GPSCD = 07AH; (* Push & set char direction *) OCODE_GSCR = 039H; (* Set char precision *) OCODE_GPSCR = 079H; (* Push & set char precision *) OCODE_GSCS = 038H; (* Set char set *) OCODE_GPSCS = 078H; (* Push & set char set *) OCODE_GSCOL = 00AH; (* Set color *) OCODE_GPSCOL = 04AH; (* Push & set color *) OCODE_GSLE = 01AH; (* Set line end *) OCODE_GPSLE = 05AH; (* Push & set line end *) OCODE_GSLJ = 01BH; (* Set line join *) OCODE_GPSLJ = 05BH; (* Push & set line join *) OCODE_GSLT = 018H; (* Set line type *) OCODE_GPSLT = 058H; (* Push & set line type *) OCODE_GSLW = 019H; (* Set line width *) OCODE_GPSLW = 059H; (* Push & set line width *) OCODE_GSMP = 03BH; (* Set marker precision *) OCODE_GPSMP = 07BH; (* Push & set marker precision *) OCODE_GSMS = 03CH; (* Set marker set *) OCODE_GPSMS = 07CH; (* Push & set marker set *) OCODE_GSMT = 029H; (* Set marker symbol *) OCODE_GPSMT = 069H; (* Push & set marker symbol *) OCODE_GSMX = 00CH; (* Set mix *) OCODE_GPSMX = 04CH; (* Push & set mix *) OCODE_GSPS = 008H; (* Set pattern set *) OCODE_GPSPS = 048H; (* Push & set pattern set *) OCODE_GSPT = 028H; (* Set pattern symbol *) OCODE_GPSPT = 009H; (* Push & set pattern symbol *) (* constants for 2-byte orders *) (* Begin area *) GBAR_RESERVED = 080H; GBAR_BOUNDARY = 0C0H; GBAR_NOBOUNDARY = 080H; GBAR_WINDING = 0A0H; GBAR_ALTERNATE = 080H; (* Set Character Precision *) GSCR_PRECISION = 00FH; (* definitions to help determine whether an order code is a long order *) OCODE_VLONG = 0FEH; (* long order structure *) LORDER_ML = 253; TYPE LORDER = RECORD Code,length: SHORTCARD; Data: ARRAY [0..LORDER_ML] OF SHORTCARD; END; CONST (* Long orders for which the length of data is normally zero *) OCODE_GEAR = 060H; (* End Area *) OCODE_GEIMG = 093H; (* End Image *) (* Long orders for which the data is contained in a type already defined *) (* Character String *) OCODE_GCCHST = 083H; (* char string at curr posn *) GCCHST_MC = 255; (* Max len of string in bytes *) OCODE_GCHST = 0C3H; (* char string at given pos *) GCHST_SMC = 251; (* Max len of string (S) *) GCHST_LMC = 247; (* Max len of string (L) *) (* Character String Move *) OCODE_GCCHSTM = 0B1H; (* char string move at c.p. *) GCCHSTM_MC = 255; (* Max len of string in byte *) OCODE_GCHSTM = 0F1H; (* char string move at g.p. *) GCHSTM_SMC = 251; (* Max len of string (S) *) GCHSTM_LMC = 247; (* Max len of string (L) *) (* Comment *) OCODE_GCOMT = 001H; (* Comment *) GCOMT_ML = 255; (* Maximum len of comment data *) (* Image *) OCODE_GIMD = 092H; (* Image data *) GIMD_ML = 255; (* Maximum len of image data *) (* Full Arc *) OCODE_GCFARC = 087H; (* full arc at current posn *) OCODE_GFARC = 0C7H; (* full arc at given posn *) (* Label *) OCODE_GLABL = 0D3H; (* Label *) (* Set Current Position *) OCODE_GSCP = 021H; (* Set current position *) OCODE_GPSCP = 061H; (* Push and set curr posn *) (* Bezier spline *) OCODE_GCBEZ = 0A5H; (* Bezier spline at curr pos *) GCBEZ_SMB = 21; (* Max number of splines (S) *) GCBEZ_LMB = 10; (* Max number of splines (L) *) OCODE_GBEZ = 0E5H; (* Bezier spline at given pos *) GBEZ_SMB = 20; (* Max number of splines (S) *) GBEZ_LMB = 10; (* Max number of splines (L) *) (* Fillet *) OCODE_GCFLT = 085H; (* fillet at current posn *) GCFLT_SMP = 63; (* Max number of points (S) *) GCFLT_LMP = 31; (* Max number of points (L) *) OCODE_GFLT = 0C5H; (* fillet at given position *) GFLT_SMP = 62; (* Max number of points (S) *) GFLT_LMP = 30; (* Max number of points (L) *) (* Polyline *) OCODE_GCLINE = 081H; (* polyline at current posn *) GCLINE_SMP = 63; (* Max number of points (S) *) GCLINE_LMP = 31; (* Max number of points (L) *) OCODE_GLINE = 0C1H; (* polyline at given posn *) GLINE_SMP = 62; (* Max number of points (S) *) GLINE_LMP = 30; (* Max number of points (L) *) (* Polymarker *) OCODE_GCMRK = 082H; (* marker at current posn *) GCMRK_SMP = 63; (* Max number of points (S) *) GCMRK_LMP = 31; (* Max number of points (L) *) OCODE_GMRK = 0C2H; (* marker at given posn *) GMRK_SMP = 62; (* Max number of points (S) *) GMRK_LMP = 30; (* Max number of points (L) *) (* Relative Line *) OCODE_GCRLINE = 0A1H; (* Relative line at curr pos *) GCRLINE_MP = 127; (* Max number of points *) OCODE_GRLINE = 0E1H; (* Relative line at givn pos *) GRLINE_SMP = 125; (* Max number of points (S) *) GRLINE_LMP = 123; (* Max number of points (L) *) (* Set Background Color *) OCODE_GSBCOL = 025H; (* Set background color *) OCODE_GPSBCOL = 065H; (* Push and set b/g color *) (* Set Extended Color *) OCODE_GSECOL = 026H; (* Set extended color *) OCODE_GPSECOL = 066H; (* Push and set ext color *) (* Extended Color values *) SECOL_DEFAULT0 = 00000H; SECOL_DEFAULT1 = 0FF00H; SECOL_NEUTRAL = 0FF07H; SECOL_RESET = 0FF08H; (* Set Character Angle *) OCODE_GSCA = 034H; (* Set character angle *) OCODE_GPSCA = 074H; (* Push and set char angle *) (* Set Character Shear *) OCODE_GSCH = 035H; (* Set character shear *) OCODE_GPSCH = 075H; (* Push and set char shear *) (* Set Fractional Line Width *) OCODE_GSFLW = 011H; (* Set fractional line width *) OCODE_GPSFLW = 051H; (* Push and set frac l width *) (* Set Pick Identifier *) OCODE_GSPIK = 043H; (* Set pick identifier *) OCODE_GPSPIK = 023H; (* Push and set pick id *) OCODE_GCARC = 086H; (* Arc at Current Position *) OCODE_GARC = 0C6H; (* Arc at Given Position *) OCODE_GBEL = 0D2H; (* Begin Element *) GBEL_DL = 251; OCODE_GCBIMG = 091H; (* Begin Image at curr posn *) OCODE_GBIMG = 0D1H; (* Begin Image at given posn *) OCODE_GBPTH = 0D0H; (* Begin Path *) OCODE_GCBOX = 080H; (* Box at current position *) OCODE_GBOX = 0C0H; (* Box at given position *) GCBOX_FILL = 040H; GCBOX_BOUNDARY = 020H; OCODE_GCALLS = 007H; (* call segment *) OCODE_GFPTH = 0D7H; (* Fill path *) GFPTH_ALTERNATE = 000H; GFPTH_WINDING = 040H; GFPTH_MODIFY = 020H; OCODE_GOPTH = 0D4H; (* Outline Path *) OCODE_GMPTH = 0D8H; (* modify path *) GMPTH_STROKE = 006H; OCODE_GCPARC = 0A3H; (* Partial arc at curr posn *) OCODE_GPARC = 0E3H; (* Partial arc at given posn *) OCODE_GSCPTH = 0B4H; (* Set clip path *) GSCPTH_ALTERNATE = 000H; GSCPTH_WINDING = 040H; GSCPTH_RESET = 000H; GSCPTH_INTERSECT = 020H; OCODE_GSAP = 022H; (* Set arc parameters *) OCODE_GPSAP = 062H; (* Push and set arc params *) OCODE_GSBICOL = 0A7H; (* Set b/g indexed color *) OCODE_GPSBICOL = 0E7H; (* Push and set b/g ind color *) OCODE_GSICOL = 0A6H; (* Set indexed color *) OCODE_GPSICOL = 0E6H; (* Push and set indexd color *) SICOL_SPECIFY = 000H; SICOL_SPECIAL = 040H; SICOL_DEFAULT = 080H; SICOL_BLACK = 1; SICOL_WHITE = 2; SICOL_ONES = 4; SICOL_ZEROES = 5; OCODE_GSCC = 033H; (* Set character cell *) OCODE_GPSCC = 003H; (* Push and set char cell *) GSCC_ZERODEF = 000H; GSCC_ZEROZERO = 080H; OCODE_GPSMC = 077H; (* Push and set marker cell *) GSMC_ZERODEF = 000H; GSMC_ZEROZERO = 080H; OCODE_GSPRP = 0A0H; (* Set pattern ref point *) OCODE_GPSPRP = 0E0H; (* Push and set patt ref pt *) GSPRP_DEFAULT = 080H; GSPRP_SPECIFY = 000H; OCODE_GSIA = 014H; (* Set individual attribute *) OCODE_GPSIA = 054H; (* Push and set ind attr *) GSIA_COLOR = 001H; GSIA_BCOLOR = 002H; GSIA_MIX = 003H; GSIA_BMIX = 004H; GSIA_LINE = 001H; GSIA_CHAR = 002H; GSIA_MARKER = 003H; GSIA_PATTERN = 004H; GSIA_IMAGE = 005H; GSIA_SPECIFY = 000H; GSIA_SPECIAL = 040H; GSIA_DEFAULT = 080H; GSIA_BLACK = 1; GSIA_WHITE = 2; GSIA_ONES = 4; GSIA_ZEROES = 5; OCODE_GSTM = 024H; (* Set model transform *) OCODE_GPSTM = 064H; (* Push and set model tfm *) OCODE_GSTV = 031H; (* Set Viewing Transform *) GSTM_ML = 16; GSTM_M11 = 08000H; GSTM_M12 = 04000H; GSTM_M13 = 02000H; GSTM_M14 = 01000H; GSTM_M21 = 00800H; GSTM_M22 = 00400H; GSTM_M23 = 00200H; GSTM_M24 = 00100H; GSTM_M31 = 00080H; GSTM_M32 = 00040H; GSTM_M33 = 00020H; GSTM_M34 = 00010H; GSTM_M41 = 00008H; GSTM_M42 = 00004H; GSTM_M43 = 00002H; GSTM_M44 = 00001H; GSTM_UNITY = 000H; GSTM_AFTER = 001H; GSTM_BEFORE = 002H; GSTM_OVERWRITE = 003H; GSTV_OVERWRITE = 000H; GSTV_AFTER = 004H; OCODE_GSSB = 032H; (* Set segment boundary *) OCODE_GSVW = 027H; (* Set viewing window *) OCODE_GPSVW = 067H; (* Push and set view window *) GSSB_ML = 4; GSSB_XLEFT = 020H; GSSB_XRIGHT = 010H; GSSB_YBOTTOM = 008H; GSSB_YTOP = 004H; GSVW_INTERSECT = 000H; GSVW_REPLACE = 080H; OCODE_GSGCH = 004H; (* Set segment characteristics *) GSGCH_ML = 254; OCODE_GSSLW = 015H; (* Set stroke line width *) OCODE_GPSSLW = 055H; (* Push and set strk l width *) GSSLW_DEFAULT = 080H; GSSLW_SPECIFY = 000H; OCODE_GCSFLT = 0A4H; (* Sharp fillet at curr pos *) OCODE_GSFLT = 0E4H; (* Sharp fillet at given pos *) GCSFLT_SMF = 21; GSFLT_SMF = 20; GCSFLT_LMF = 12; GSFLT_LMF = 12; OCODE_GBBLT = 0D6H; (* Bitblt *) OCODE_GESCP = 0D5H; (* Escape *) GESCP_ML = 253; GESCP_REG = 080H; (* identifier is registered *) GEBB_REGID = 002H; (* uchIdent - Bitblt *) ETYPE_GEBB = 0800200D5H; GEBB_LMP = 29; GEPEL_REGID = 001H; (* uchIdent - Set Pel *) ETYPE_GEPEL = 0800100D5H; ETYPE_LINEBUNDLE = 00000FD01H; ETYPE_CHARBUNDLE = 00000FD02H; ETYPE_MARKERBUNDLE = 00000FD03H; ETYPE_AREABUNDLE = 00000FD04H; ETYPE_IMAGEBUNDLE = 00000FD05H; (***************************************************************************\ * * Very long orders * \***************************************************************************) (* Very long order structure *) CONST VORDER_ML = 65530; TYPE VORDER = RECORD Code: SHORTCARD; Qual: SHORTCARD; Length: SWPUSHORT; DATA: ARRAY [0..VORDER_ML-1] OF SHORTCARD; END; CONST (* Character String Extended *) OCODEQ_GCCHSTE = 0B0H; (* Qualifier - current posn *) OCODEQ_GCHSTE = 0F0H; (* Qualifier - given position *) ETYPE_GCCHSTE = 00000FEB0H; ETYPE_GCHSTE = 00000FEF0H; GCCHSTE_DRAWRECT = 080H; GCCHSTE_NORECT = 000H; GCCHSTE_CLIP = 040H; GCCHSTE_NOCLIP = 000H; GCCHSTE_DEEMPHASIZE = 020H; GCCHSTE_NODEEMPHASIZE = 000H; GCCHSTE_LEAVEPOS = 010H; GCCHSTE_MOVEPOS = 000H; OCODEQ_GEESCP = 0D5H; (* Qualifier - extended escape *) (*%E*) (**) (**--- Font stuff ---------------------------------------------------------*) (**) (*%T i_FONT*) TYPE FOCAMETRICS = RECORD Identity : LONGCARD; Size : LONGCARD; Familyname: ARRAY[0..31] OF CHAR; Facename : ARRAY[0..31] OF CHAR; RegistryId: INTEGER; CodePage : INTEGER; EmHeight : INTEGER; XHeight : INTEGER; yMaxAscender : INTEGER; yMaxDescender : INTEGER; yLowerCaseAscent : INTEGER; yLowerCaseDescent: INTEGER; yInternalLeading : INTEGER; yExternalLeading : INTEGER; xAveCharWidth : INTEGER; xMaxCharInc : INTEGER; xEmInc : INTEGER; yMaxBaselineExt : INTEGER; CharSlope : INTEGER; InlineDir : INTEGER; CharRot : INTEGER; WeightClass: CARDINAL; WidthClass : CARDINAL; xDeviceRes : INTEGER; yDeviceRes : INTEGER; FirstChar : INTEGER; LastChar : INTEGER; DefaultChar: INTEGER; BreakChar : INTEGER; NominalPointSize : INTEGER; MinimumPointSize : INTEGER; MaximumPointSize : INTEGER; TypeFlags : INTEGER; Defn : INTEGER; SelectionFlags : INTEGER; Capabilities : INTEGER; ySubscriptXSize : INTEGER; ySubscriptYSize : INTEGER; ySubscriptXOffset: INTEGER; ySubscriptYOffset: INTEGER; ySuperscriptXSize: INTEGER; ySuperscriptYSize: INTEGER; ySuperscriptXOffset: INTEGER; ySuperscriptYOffset: INTEGER; yUnderscoreSize : INTEGER; yUnderscorePosition: INTEGER; yStrikeoutSize : INTEGER; yStrikeoutPosition : INTEGER; KerningPairs : INTEGER; FamilyClass : INTEGER; DeviceNameOffset: FarADDRESS; END; FONTDEFINITIONHEADER = RECORD Identity: LONGCARD; Size : LONGCARD; Fontdef : INTEGER; Chardef : INTEGER; CellSize: INTEGER; xCellWidth : INTEGER; yCellHeight : INTEGER; xCellIncrement: INTEGER; xCellA : INTEGER; xCellB : INTEGER; xCellC : INTEGER; pCellBaseOffset: INTEGER; END; CONST FONTDEFFONT1 = 0047H; (* set width, height, inc. & base offset *) FONTDEFFONT2 = 0042H; (* set height & base offset *) FONTDEFFONT3 = 0042H; (* set height & base offset *) FONTDEFCHAR1 = 0081H; (* set char offset and width *) FONTDEFCHAR2 = 0081H; (* set char offset and width *) FONTDEFCHAR3 = 00B8H; (* set char offset, A, B, and C space *) SPACE_UNDEF = 08000H; (* space undefined = take default *) TYPE FONTSIGNATURE = RECORD Identity : LONGCARD; Size : LONGCARD; Signature: ARRAY [0..11] OF CHAR; END; FOCAFONT = RECORD Signature : FONTSIGNATURE; Metrics : FOCAMETRICS; Definitions: FONTDEFINITIONHEADER; END; CONST FONT_SIGNATURE = 0FFFFFFFEH; (* Identity header start *) FONT_METRICS = 000000001H; (* Identity metrics *) FONT_DEFINITION = 000000002H; (* Identity definition *) FONT_ENDRECORD = 0FFFFFFFFH; (* Identity record end *) (* Options for QueryFonts *) QUERY_PUBLIC_FONTS = 01H; QUERY_PRIVATE_FONTS = 02H; CDEF_GENERIC = 00001H; CDEF_BOLD = 00002H; CDEF_ITALIC = 00004H; CDEF_UNDERSCORE = 00008H; CDEF_STRIKEOUT = 00010H; CDEF_OUTLINE = 00020H; (*%E*) (**) (**--- Gpi End ------------------------------------------------------------*) (**) END Gpi.