mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-18 23:19:25 +02:00
Orders added
This commit is contained in:
parent
c6fbaed636
commit
1712c1a175
@ -4,7 +4,7 @@
|
||||
|
||||
PMGPI interface unit
|
||||
FPC Pascal Runtime Library for OS/2
|
||||
Copyright (c) 1999-2000 by Florian Kl„mpfl
|
||||
Copyright (c) 1999-2000 by Florian Klaempfl
|
||||
Copyright (c) 1999-2000 by Ramon Bosque
|
||||
|
||||
The Free Pascal runtime library is distributed under the Library GNU Public
|
||||
@ -39,6 +39,8 @@ unit pmgpi;
|
||||
|
||||
interface
|
||||
|
||||
{$MACRO ON}
|
||||
|
||||
uses os2def,pmbitmap;
|
||||
|
||||
const GPI_ERROR = 0;
|
||||
@ -699,6 +701,942 @@ type SizeL=record
|
||||
PPolyset=^Polyset;
|
||||
TPolyset=Polyset;
|
||||
|
||||
// ===========================================================================
|
||||
//*
|
||||
//* The orders fall into 4 categories :-
|
||||
//*
|
||||
//* 1) 1-byte orders
|
||||
//*
|
||||
//* 2) 2-byte orders - second byte contains the value
|
||||
//*
|
||||
//* 3) Long orders - second byte gives the order length, subsequent bytes
|
||||
//* contain the values (up to 256 bytes long)
|
||||
//*
|
||||
//* 4) Very long orders - third and fourth bytes gives the order length,
|
||||
//* subsequent bytes contain the values (up to 64K long)
|
||||
//*
|
||||
//* ===========================================================================
|
||||
|
||||
//#pragma pack(1) /* pack on byte boundary */
|
||||
|
||||
//***************************************************************************\
|
||||
//*
|
||||
//* Miscellaneous structures used in this file
|
||||
//*
|
||||
//***************************************************************************/
|
||||
|
||||
// form of RECTL with shorts instead of longs
|
||||
type
|
||||
RECT1S=record // rcs
|
||||
xLeft: Integer;
|
||||
yBottom: Integer;
|
||||
xRight: Integer;
|
||||
yTop: Integer;
|
||||
end;
|
||||
|
||||
// form of POINTL with 1 byte offsets instead of longs
|
||||
ODPOINT=record // odpt
|
||||
dx: Char;
|
||||
dy: Char;
|
||||
end;
|
||||
|
||||
// form of SIZEL with shorts instead of longs
|
||||
SIZES=record // sizs
|
||||
cx: Integer;
|
||||
cy: Integer;
|
||||
end;
|
||||
|
||||
// unsigned two-byte swapped integer
|
||||
SWPUSHORT=record // swpus
|
||||
HiByte: Byte;
|
||||
LoByte: Byte;
|
||||
end;
|
||||
|
||||
//***************************************************************************\
|
||||
//*
|
||||
//* 1-byte orders
|
||||
//*
|
||||
//***************************************************************************/
|
||||
|
||||
// macro to tell whether this is a 1-byte order
|
||||
{$define BYTE_ORDER(oc):=((oc)=OCODE_GNOP1 or (oc)=OCODE_GESD)}
|
||||
|
||||
// 1-byte order codes
|
||||
const
|
||||
OCODE_GNOP1 =$00; // No-operation
|
||||
OCODE_GESD =$FF; // End symbol definition
|
||||
|
||||
//***************************************************************************\
|
||||
//
|
||||
// 2-byte orders
|
||||
//
|
||||
//***************************************************************************/
|
||||
|
||||
// definitions to help determine whether an order code is a 2-byte order
|
||||
const
|
||||
OCODE2_1 =$80;
|
||||
OCODE2_2 =$88;
|
||||
|
||||
{$define SHORT_ORDER(oc):=((((oc) xor OCODE2_1) and OCODE2_2)=OCODE2_2)}
|
||||
|
||||
// General 2-byte order structure
|
||||
type
|
||||
ORDER=record // ord
|
||||
idCode: Byte;
|
||||
uchData: Byte;
|
||||
end;
|
||||
|
||||
// 2-byte order codes
|
||||
const
|
||||
OCODE_GBAR =$68; // Begin area
|
||||
OCODE_GCFIG =$7D; // Close figure
|
||||
OCODE_GEEL =$49; // End element
|
||||
OCODE_GEPTH =$7F; // End path
|
||||
OCODE_GEPROL =$3E; // End prologue
|
||||
OCODE_GPOP =$3F; // Pop
|
||||
OCODE_GSBMX =$0D; // Set background mix
|
||||
OCODE_GPSBMX =$4D; // Push & set b/g mix
|
||||
OCODE_GSCD =$3A; // Set char direction
|
||||
OCODE_GPSCD =$7A; // Push & set char direction
|
||||
OCODE_GSCR =$39; // Set char precision
|
||||
OCODE_GPSCR =$79; // Push & set char precision
|
||||
OCODE_GSCS =$38; // Set char set
|
||||
OCODE_GPSCS =$78; // Push & set char set
|
||||
OCODE_GSCOL =$0A; // Set color
|
||||
OCODE_GPSCOL =$4A; // Push & set color
|
||||
OCODE_GSLE =$1A; // Set line end
|
||||
OCODE_GPSLE =$5A; // Push & set line end
|
||||
OCODE_GSLJ =$1B; // Set line join
|
||||
OCODE_GPSLJ =$5B; // Push & set line join
|
||||
OCODE_GSLT =$18; // Set line type
|
||||
OCODE_GPSLT =$58; // Push & set line type
|
||||
OCODE_GSLW =$19; // Set line width
|
||||
OCODE_GPSLW =$59; // Push & set line width
|
||||
OCODE_GSMP =$3B; // Set marker precision
|
||||
OCODE_GPSMP =$7B; // Push & set marker precision
|
||||
OCODE_GSMS =$3C; // Set marker set
|
||||
OCODE_GPSMS =$7C; // Push & set marker set
|
||||
OCODE_GSMT =$29; // Set marker symbol
|
||||
OCODE_GPSMT =$69; // Push & set marker symbol
|
||||
OCODE_GSMX =$0C; // Set mix
|
||||
OCODE_GPSMX =$4C; // Push & set mix
|
||||
OCODE_GSPS =$08; // Set pattern set
|
||||
OCODE_GPSPS =$48; // Push & set pattern set
|
||||
OCODE_GSPT =$28; // Set pattern symbol
|
||||
OCODE_GPSPT =$09; // Push & set pattern symbol
|
||||
|
||||
// constants for 2-byte orders
|
||||
|
||||
// Begin area
|
||||
const
|
||||
GBAR_RESERVED =$80;
|
||||
GBAR_BOUNDARY =$C0;
|
||||
GBAR_NOBOUNDARY =$80;
|
||||
GBAR_WINDING =$A0;
|
||||
GBAR_ALTERNATE =$80;
|
||||
|
||||
// Set Character Precision
|
||||
const
|
||||
GSCR_PRECISION =$0F;
|
||||
|
||||
//***************************************************************************\
|
||||
//*
|
||||
//* Long orders
|
||||
//*
|
||||
//***************************************************************************/
|
||||
|
||||
// definitions to help determine whether an order code is a long order
|
||||
const
|
||||
OCODE_VLONG =$FE;
|
||||
|
||||
{$define LONG_ORDER(oc):=(not((oc)=OCODE_VLONG or BYTE_ORDER(oc) or SHORT_ORDER(oc)))}
|
||||
|
||||
// long order structure
|
||||
const
|
||||
LORDER_ML=253;
|
||||
|
||||
type
|
||||
LORDER=record // lord
|
||||
idCode: Byte;
|
||||
uchLength: Byte;
|
||||
uchData: Array[0..LORDER_ML-1] of Byte;
|
||||
end;
|
||||
|
||||
// Long orders for which the length of data is normally zero
|
||||
const
|
||||
OCODE_GEAR =$60; // End Area
|
||||
OCODE_GEIMG =$93; // End Image
|
||||
|
||||
// Long orders for which the data is contained in a type already defined
|
||||
|
||||
// Character String
|
||||
const
|
||||
OCODE_GCCHST = $83; // char string at curr posn
|
||||
GCCHST_MC = 255; // Max len of string in bytes
|
||||
|
||||
OCODE_GCHST = $C3; // 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 = $B1; // char string move at c.p.
|
||||
GCCHSTM_MC = 255; // Max len of string in byte
|
||||
|
||||
OCODE_GCHSTM = $F1; // 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 = $01; // Comment
|
||||
GCOMT_ML = 255; // Maximum len of comment data
|
||||
|
||||
// Image
|
||||
OCODE_GIMD = $92; // Image data
|
||||
GIMD_ML = 255; // Maximum len of image data
|
||||
|
||||
// Full Arc
|
||||
OCODE_GCFARC = $87; // full arc at current posn
|
||||
OCODE_GFARC = $C7; // full arc at given posn
|
||||
|
||||
// Label
|
||||
OCODE_GLABL = $D3; // Label
|
||||
|
||||
// Set Current Position
|
||||
OCODE_GSCP = $21; // Set current position
|
||||
OCODE_GPSCP = $61; // Push and set curr posn
|
||||
|
||||
// Bezier spline
|
||||
OCODE_GCBEZ = $A5; // Bezier spline at curr pos
|
||||
GCBEZ_SMB = 21; // Max number of splines (S)
|
||||
GCBEZ_LMB = 10; // Max number of splines (L)
|
||||
|
||||
OCODE_GBEZ = $E5; // Bezier spline at given pos
|
||||
GBEZ_SMB = 20; // Max number of splines (S)
|
||||
GBEZ_LMB = 10; // Max number of splines (L)
|
||||
|
||||
// Fillet
|
||||
OCODE_GCFLT = $85; // fillet at current posn
|
||||
GCFLT_SMP = 63; // Max number of points (S)
|
||||
GCFLT_LMP = 31; // Max number of points (L)
|
||||
|
||||
OCODE_GFLT = $C5; // fillet at given position
|
||||
GFLT_SMP = 62; // Max number of points (S)
|
||||
GFLT_LMP = 30; // Max number of points (L)
|
||||
|
||||
// Polyline
|
||||
OCODE_GCLINE = $81; // polyline at current posn
|
||||
GCLINE_SMP = 63; // Max number of points (S)
|
||||
GCLINE_LMP = 31; // Max number of points (L)
|
||||
|
||||
OCODE_GLINE = $C1; // polyline at given posn
|
||||
GLINE_SMP = 62; // Max number of points (S)
|
||||
GLINE_LMP = 30; // Max number of points (L)
|
||||
|
||||
// Polymarker
|
||||
OCODE_GCMRK = $82; // marker at current posn
|
||||
GCMRK_SMP = 63; // Max number of points (S)
|
||||
GCMRK_LMP = 31; // Max number of points (L)
|
||||
|
||||
OCODE_GMRK = $C2; // marker at given posn
|
||||
GMRK_SMP = 62; // Max number of points (S)
|
||||
GMRK_LMP = 30; // Max number of points (L)
|
||||
|
||||
// Relative Line
|
||||
OCODE_GCRLINE =$A1; // Relative line at curr pos
|
||||
GCRLINE_MP =127; // Max number of points
|
||||
|
||||
OCODE_GRLINE = $E1; // 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 = $25; // Set background color
|
||||
OCODE_GPSBCOL = $65; // Push and set b/g color
|
||||
|
||||
// Set Extended Color
|
||||
OCODE_GSECOL = $26; // Set extended color
|
||||
OCODE_GPSECOL = $66; // Push and set ext color
|
||||
|
||||
// Extended Color values
|
||||
SECOL_DEFAULT0 =$0000;
|
||||
SECOL_DEFAULT1 =$FF00;
|
||||
SECOL_NEUTRAL =$FF07;
|
||||
SECOL_RESET =$FF08;
|
||||
|
||||
// Set Character Angle
|
||||
OCODE_GSCA = $34; // Set character angle
|
||||
OCODE_GPSCA = $74; // Push and set char angle
|
||||
|
||||
// Set Character Shear
|
||||
OCODE_GSCH = $35; // Set character shear
|
||||
OCODE_GPSCH = $75; // Push and set char shear
|
||||
|
||||
// Set Fractional Line Width
|
||||
OCODE_GSFLW = $11; // Set fractional line width
|
||||
OCODE_GPSFLW = $51; // Push and set frac l width
|
||||
|
||||
// Set Pick Identifier
|
||||
OCODE_GSPIK = $43; // Set pick identifier
|
||||
OCODE_GPSPIK = $23; // Push and set pick id
|
||||
|
||||
|
||||
// Long Orders for which a structure can be defined for the data
|
||||
|
||||
// Arc
|
||||
OCODE_GCARC = $86; // Arc at Current Position
|
||||
OCODE_GARC = $C6; // Arc at Given Position
|
||||
|
||||
type
|
||||
ORDERS_GCARC=record // osgcarc
|
||||
ptInter: POINTS;
|
||||
ptEnd: POINTS;
|
||||
end;
|
||||
|
||||
ORDERL_GCARC=record // olgcarc
|
||||
ptInter: POINTL;
|
||||
ptEnd: POINTL;
|
||||
end;
|
||||
|
||||
// Begin Element
|
||||
const
|
||||
OCODE_GBEL = $D2; // Begin Element
|
||||
|
||||
GBEL_DL = 251;
|
||||
|
||||
type
|
||||
ORDER_GBEL=record // ogbel
|
||||
lElementType: Longint;
|
||||
achDesc: Array[0..GBEL_DL-1] of Char;
|
||||
end;
|
||||
|
||||
// Begin Image
|
||||
const
|
||||
OCODE_GCBIMG = $91; // Begin Image at curr posn
|
||||
OCODE_GBIMG = $D1; // Begin Image at given posn
|
||||
|
||||
type
|
||||
ORDER_GCBIMG=record // ogbimg
|
||||
uchFormat: Byte;
|
||||
uchReserved: Byte;
|
||||
cx: SWPUSHORT;
|
||||
cy: SWPUSHORT;
|
||||
end;
|
||||
|
||||
// Begin Path
|
||||
const
|
||||
OCODE_GBPTH = $D0; // Begin Path
|
||||
|
||||
type
|
||||
ORDER_GBPTH=record // ogbpth
|
||||
usReserved: Word;
|
||||
idPath: Longint;
|
||||
end;
|
||||
|
||||
// Box
|
||||
const
|
||||
OCODE_GCBOX =$80; // Box at current position
|
||||
OCODE_GBOX =$C0; // Box at given position
|
||||
|
||||
type
|
||||
ORDERS_GCBOX=record // osgcbox
|
||||
fbFlags: Byte;
|
||||
uchReserved: Byte;
|
||||
ptCorner: POINTS;
|
||||
hAxis: Integer;
|
||||
vAxis: Integer;
|
||||
end;
|
||||
|
||||
ORDERL_GCBOX=record // olgcbox
|
||||
fbFlags: Byte;
|
||||
uchReserved: Byte;
|
||||
ptCorner: POINTL;
|
||||
hAxis: Longint;
|
||||
vAxis: Longint;
|
||||
end;
|
||||
|
||||
const
|
||||
GCBOX_FILL =$40;
|
||||
GCBOX_BOUNDARY =$20;
|
||||
|
||||
// Call Segment
|
||||
OCODE_GCALLS =$07; // call segment
|
||||
|
||||
type
|
||||
ORDER_GCALLS=record // ogcalls
|
||||
sReserved: Word;
|
||||
idSegment: Longint;
|
||||
end;
|
||||
|
||||
// Fill Path
|
||||
const
|
||||
OCODE_GFPTH =$D7; // Fill path
|
||||
|
||||
type
|
||||
ORDER_GFPTH=record // ogfpth
|
||||
fbFlags: Byte;
|
||||
uchReserved: Byte;
|
||||
idPath: Longint;
|
||||
end;
|
||||
|
||||
const
|
||||
GFPTH_ALTERNATE =$00;
|
||||
GFPTH_WINDING =$40;
|
||||
GFPTH_MODIFY =$20;
|
||||
|
||||
// Outline Path
|
||||
OCODE_GOPTH =$D4; // Outline Path
|
||||
|
||||
type
|
||||
ORDER_GOPTH=record // ogopth
|
||||
fbFlags: Byte;
|
||||
uchReserved: Byte;
|
||||
idPath: Longint;
|
||||
end;
|
||||
|
||||
// Modify Path
|
||||
const
|
||||
OCODE_GMPTH =$D8; // modify path
|
||||
|
||||
type
|
||||
ORDER_GMPTH=record // ogmpth
|
||||
uchMode: Byte;
|
||||
uchReserved: Byte;
|
||||
idPath: Longint;
|
||||
end;
|
||||
|
||||
const
|
||||
GMPTH_STROKE =$06;
|
||||
|
||||
// Partial Arc
|
||||
OCODE_GCPARC =$A3; // Partial arc at curr posn
|
||||
OCODE_GPARC =$E3; // Partial arc at given posn
|
||||
|
||||
type
|
||||
ORDERS_GCPARC=record // osgcparc
|
||||
ptCenter: POINTS;
|
||||
ufx88Multiplier: FIXED88;
|
||||
usStartAngle: Longint;
|
||||
usSweepAngle: Longint;
|
||||
end;
|
||||
|
||||
ORDERL_GCPARC=record // olgcparc
|
||||
ptCenter: POINTL;
|
||||
ufxMultiplier: FIXED;
|
||||
usStartAngle: Longint;
|
||||
usSweepAngle: Longint;
|
||||
end;
|
||||
|
||||
// Set Clip Path
|
||||
const
|
||||
OCODE_GSCPTH =$B4; // Set clip path
|
||||
|
||||
type
|
||||
ORDER_GSCPTH=record // ogscpth
|
||||
fbFlags: Byte;
|
||||
uchReserved: Byte;
|
||||
idPath: Longint;
|
||||
end;
|
||||
|
||||
const
|
||||
GSCPTH_ALTERNATE =$00;
|
||||
GSCPTH_WINDING =$40;
|
||||
GSCPTH_RESET =$00;
|
||||
GSCPTH_INTERSECT =$20;
|
||||
|
||||
// Set Arc Parameters
|
||||
OCODE_GSAP =$22; // Set arc parameters
|
||||
OCODE_GPSAP =$62; // Push and set arc params
|
||||
|
||||
type
|
||||
ORDERS_GSAP=record // osgsap
|
||||
p: Integer;
|
||||
q: Integer;
|
||||
r: Integer;
|
||||
s: Integer;
|
||||
end;
|
||||
|
||||
ORDERL_GSAP=record // olgsap
|
||||
p: Longint;
|
||||
q: Longint;
|
||||
r: Longint;
|
||||
s: Longint;
|
||||
end;
|
||||
|
||||
// Set Background Indexed Color
|
||||
const
|
||||
OCODE_GSBICOL =$A7; // Set b/g indexed color
|
||||
OCODE_GPSBICOL =$E7; // Push and set b/g ind color
|
||||
OCODE_GSICOL =$A6; // Set indexed color
|
||||
OCODE_GPSICOL =$E6; // Push and set indexd color
|
||||
|
||||
|
||||
type
|
||||
ORDER_GSBICOL=record // ogbicol
|
||||
fbFlags: Byte;
|
||||
auchColor: Array[0..3-1] of Byte;
|
||||
end;
|
||||
|
||||
const
|
||||
SICOL_SPECIFY =$00;
|
||||
SICOL_SPECIAL =$40;
|
||||
SICOL_DEFAULT =$80;
|
||||
SICOL_BLACK =1;
|
||||
SICOL_WHITE =2;
|
||||
SICOL_ONES =4;
|
||||
SICOL_ZEROES =5;
|
||||
|
||||
// Set Character Cell
|
||||
OCODE_GSCC =$33; // Set character cell
|
||||
OCODE_GPSCC =$03; // Push and set char cell
|
||||
|
||||
type
|
||||
ORDERS_GSCC=record // osgscc
|
||||
cxInt: Integer;
|
||||
cyInt: Integer;
|
||||
cxFract: Word;
|
||||
cyFract: Word;
|
||||
fbFlags: Byte;
|
||||
uchReserved: Byte;
|
||||
end;
|
||||
|
||||
ORDERL_GSCC=record // olgscc
|
||||
cxInt: Longint;
|
||||
cyInt: Longint;
|
||||
cxFract: Word;
|
||||
cyFract: Word;
|
||||
fbFlags: Byte;
|
||||
uchReserved: Byte;
|
||||
end;
|
||||
|
||||
const
|
||||
GSCC_ZERODEF =$00;
|
||||
GSCC_ZEROZERO =$80;
|
||||
|
||||
// Set Marker Cell
|
||||
OCODE_GSMC =$37; // Set marker cell
|
||||
OCODE_GPSMC =$77; // Push and set marker cell
|
||||
|
||||
type
|
||||
ORDERS_GSMC=record // osgsmc
|
||||
cx: Integer;
|
||||
cy: Integer;
|
||||
fbFlags: Byte;
|
||||
uchReserved: Byte;
|
||||
end;
|
||||
|
||||
ORDERL_GSMC=record // olgsmc
|
||||
cx: Longint;
|
||||
cy: Longint;
|
||||
fbFlags: Byte;
|
||||
uchReserved: Byte;
|
||||
end;
|
||||
|
||||
const
|
||||
GSMC_ZERODEF =$00;
|
||||
GSMC_ZEROZERO =$80;
|
||||
|
||||
// Set Pattern Reference Point
|
||||
OCODE_GSPRP =$A0; // Set pattern ref point
|
||||
OCODE_GPSPRP =$E0; // Push and set patt ref pt
|
||||
|
||||
type
|
||||
ORDERS_GSPRP=record // osgsprp
|
||||
fbFlags: Byte;
|
||||
uchReserved: Byte;
|
||||
ptPos: POINTS;
|
||||
end;
|
||||
|
||||
ORDERL_GSPRP=record // olgsprp
|
||||
fbFlags: Byte;
|
||||
uchReserved: Byte;
|
||||
ptPos: POINTL;
|
||||
end;
|
||||
|
||||
const
|
||||
GSPRP_DEFAULT =$80;
|
||||
GSPRP_SPECIFY =$00;
|
||||
|
||||
|
||||
// Set Individual Attribute
|
||||
OCODE_GSIA =$14; // Set individual attribute
|
||||
OCODE_GPSIA =$54; // Push and set ind attr
|
||||
|
||||
GSIA_VL=3;
|
||||
|
||||
type
|
||||
ORDER_GSIA=record // ogsia
|
||||
uchAttrType: Byte;
|
||||
uchPrimType: Byte;
|
||||
fbFlags: Byte;
|
||||
auchValue: Array[0..GSIA_VL-1] of Byte;
|
||||
end;
|
||||
|
||||
const
|
||||
GSIA_COLOR =$01;
|
||||
GSIA_BCOLOR =$02;
|
||||
GSIA_MIX =$03;
|
||||
GSIA_BMIX =$04;
|
||||
GSIA_LINE =$01;
|
||||
GSIA_CHAR =$02;
|
||||
GSIA_MARKER =$03;
|
||||
GSIA_PATTERN =$04;
|
||||
GSIA_IMAGE =$05;
|
||||
GSIA_SPECIFY =$00;
|
||||
GSIA_SPECIAL =$40;
|
||||
GSIA_DEFAULT =$80;
|
||||
GSIA_BLACK =1;
|
||||
GSIA_WHITE =2;
|
||||
GSIA_ONES =4;
|
||||
GSIA_ZEROES =5;
|
||||
|
||||
|
||||
// Set Model /Viewing Transform
|
||||
OCODE_GSTM =$24; // Set model transform
|
||||
OCODE_GPSTM =$64; // Push and set model tfm
|
||||
|
||||
OCODE_GSTV =$31; // Set Viewing Transform
|
||||
|
||||
GSTM_ML =16;
|
||||
|
||||
type
|
||||
ORDERS_GSTM=record // osgstm
|
||||
uchReserved: Byte;
|
||||
fbFlags: Byte;
|
||||
fsMask: Word;
|
||||
asMatrix: Array[0..GSTM_ML-1] of Integer;
|
||||
end;
|
||||
|
||||
ORDERL_GSTM=record // olgstm
|
||||
uchReserved: Byte;
|
||||
fbFlags: Byte;
|
||||
fsMask: Word;
|
||||
alMatrix: Array[0..GSTM_ML-1] of Longint;
|
||||
end;
|
||||
|
||||
const
|
||||
GSTM_M11 =$8000;
|
||||
GSTM_M12 =$4000;
|
||||
GSTM_M13 =$2000;
|
||||
GSTM_M14 =$1000;
|
||||
GSTM_M21 =$0800;
|
||||
GSTM_M22 =$0400;
|
||||
GSTM_M23 =$0200;
|
||||
GSTM_M24 =$0100;
|
||||
GSTM_M31 =$0080;
|
||||
GSTM_M32 =$0040;
|
||||
GSTM_M33 =$0020;
|
||||
GSTM_M34 =$0010;
|
||||
GSTM_M41 =$0008;
|
||||
GSTM_M42 =$0004;
|
||||
GSTM_M43 =$0002;
|
||||
GSTM_M44 =$0001;
|
||||
|
||||
GSTM_UNITY =$00;
|
||||
GSTM_AFTER =$01;
|
||||
GSTM_BEFORE =$02;
|
||||
GSTM_OVERWRITE =$03;
|
||||
|
||||
GSTV_OVERWRITE =$00;
|
||||
GSTV_AFTER =$04;
|
||||
|
||||
// Set Segment Boundary, Viewing Window
|
||||
OCODE_GSSB =$32; // Set segment boundary
|
||||
OCODE_GSVW =$27; // Set viewing window
|
||||
OCODE_GPSVW =$67; // Push and set view window
|
||||
|
||||
GSSB_ML =4;
|
||||
|
||||
type
|
||||
ORDERS_GSSB=record // osgssb
|
||||
fbFlags: Byte;
|
||||
fbMask: Byte;
|
||||
alMatrix: Array[0..GSSB_ML-1] of Integer;
|
||||
end;
|
||||
|
||||
ORDERL_GSSB=record // olgssb
|
||||
fbFLags: Byte;
|
||||
fbMask: Byte;
|
||||
alMatrix: Array[0..GSSB_ML-1] of Longint;
|
||||
end;
|
||||
|
||||
const
|
||||
GSSB_XLEFT =$20;
|
||||
GSSB_XRIGHT =$10;
|
||||
GSSB_YBOTTOM =$08;
|
||||
GSSB_YTOP =$04;
|
||||
|
||||
GSVW_INTERSECT =$00;
|
||||
GSVW_REPLACE =$80;
|
||||
|
||||
// Set Segment Characteristics
|
||||
OCODE_GSGCH =$04; // Set segment characteristics
|
||||
|
||||
GSGCH_ML =254;
|
||||
|
||||
type
|
||||
ORDER_GSGCH=record // ogsgch
|
||||
uchIdent: Byte;
|
||||
auchData: Array[0..GSGCH_ML-1] of Byte;
|
||||
end;
|
||||
|
||||
// Set Stroke Line Width
|
||||
const
|
||||
OCODE_GSSLW =$15; // Set stroke line width
|
||||
OCODE_GPSSLW =$55; // Push and set strk l width
|
||||
|
||||
type
|
||||
ORDERS_GSSLW=record // osgsslw
|
||||
fbFlags: Byte;
|
||||
uchReserved: Byte;
|
||||
LineWidth: Integer;
|
||||
end;
|
||||
|
||||
type
|
||||
ORDERL_GSSLW=record // olgsslw
|
||||
fbFlags: Byte;
|
||||
uchReserved: Byte;
|
||||
LineWidth: Longint;
|
||||
end;
|
||||
|
||||
const
|
||||
GSSLW_DEFAULT =$80;
|
||||
GSSLW_SPECIFY =$00;
|
||||
|
||||
// Sharp Fillet at Current Position
|
||||
OCODE_GCSFLT =$A4; // Sharp fillet at curr pos
|
||||
OCODE_GSFLT =$E4; // Sharp fillet at given pos
|
||||
|
||||
GCSFLT_SMF =21;
|
||||
GSFLT_SMF =20;
|
||||
|
||||
type
|
||||
ORDERS_GCSFLT=record // osgcsflt
|
||||
apt: Array[0..2*GCSFLT_SMF-1] of POINTS;
|
||||
afxSharpness: Array[0..GCSFLT_SMF-1] of FIXED;
|
||||
end;
|
||||
|
||||
const
|
||||
GCSFLT_LMF = 12;
|
||||
GSFLT_LMF = 12;
|
||||
|
||||
type
|
||||
ORDERL_GCSFLT=record // olgcsflt
|
||||
apt: Array[0..2*GCSFLT_SMF-1] of POINTL;
|
||||
afxSharpness: Array[0..GCSFLT_SMF-1] of FIXED;
|
||||
end;
|
||||
|
||||
// Bitblt
|
||||
const
|
||||
OCODE_GBBLT =$D6; // Bitblt
|
||||
|
||||
type
|
||||
ORDERS_GBBLT=record // osgbblt
|
||||
fsFlags: Word;
|
||||
usMix: Word;
|
||||
hbmSrc: HBITMAP;
|
||||
lOptions: Longint;
|
||||
rcsTargetRect: RECT1S;
|
||||
rclSourceRect: RECTL;
|
||||
end;
|
||||
|
||||
ORDERL_GBBLT=record // olgbblt
|
||||
fsFlags: Word;
|
||||
usMix: Word;
|
||||
hbmSrc: HBITMAP;
|
||||
lOptions: Longint;
|
||||
rclTargetRect: RECTL;
|
||||
rclSourceRect: RECTL;
|
||||
end;
|
||||
|
||||
// Char & break extra
|
||||
const
|
||||
OCODE_GSCE =$17; // Set char extra
|
||||
OCODE_GPSCE =$57; // Push and set char extra
|
||||
OCODE_GSCBE =$05; // Set char break extra
|
||||
OCODE_GPSCBE =$45; // Push and set char break extra
|
||||
|
||||
type
|
||||
ORDER_GSCBE=record // osgsce
|
||||
fbFlags: Byte;
|
||||
uchReserved: Byte;
|
||||
ufxextra: FIXED;
|
||||
end;
|
||||
ORDER_GSCE=ORDER_GSCBE;
|
||||
ORDER_GPSCE=ORDER_GSCBE;
|
||||
ORDER_GPSCBE=ORDER_GSCBE;
|
||||
|
||||
// Escape
|
||||
const
|
||||
OCODE_GESCP =$D5; // Escape
|
||||
|
||||
|
||||
//* type describes type of escape order, identifier gives the escape
|
||||
//* order if the type is registered
|
||||
const
|
||||
GESCP_ML = 253;
|
||||
|
||||
type
|
||||
ORDER_GESCP=record // ogescp
|
||||
uchType: Byte;
|
||||
uchIdent: Byte;
|
||||
auchData: Array[0..GESCP_ML-1] of Byte; // Escape data
|
||||
end;
|
||||
|
||||
const
|
||||
GESCP_REG =$80; // identifier is registered
|
||||
|
||||
// Escape (Bitblt)
|
||||
const
|
||||
GEBB_REGID =$02; // uchIdent - Bitblt
|
||||
|
||||
ETYPE_GEBB =$800200D5;
|
||||
|
||||
GEBB_LMP =29;
|
||||
|
||||
type
|
||||
ORDERL_GEBB=record // olgebb
|
||||
fbFlags: Byte;
|
||||
usMix: Word;
|
||||
cPoints: Byte;
|
||||
hbmSrc: HBITMAP;
|
||||
lReserved: Longint;
|
||||
lOptions: Longint;
|
||||
aptPoints: Array[0..GEBB_LMP-1] of POINTL;
|
||||
end;
|
||||
|
||||
// Escape (Set Pel)
|
||||
const
|
||||
GEPEL_REGID =$01; // uchIdent - Set Pel
|
||||
|
||||
ETYPE_GEPEL =$800100D5;
|
||||
|
||||
// Escape (DrawBits)
|
||||
GEDB_REGID =$04; // uchIdent - DrawBits
|
||||
|
||||
ETYPE_GEDB =$800400D5;
|
||||
|
||||
type
|
||||
ORDERL_GEDB=record // olgedb
|
||||
fsFlags: Word;
|
||||
usMix: Word;
|
||||
pBits: Pointer;
|
||||
pbmi: PBITMAPINFO2;
|
||||
lOptions: Longint;
|
||||
rclTargetRect: RECTL;
|
||||
rclSourceRect: RECTL;
|
||||
end;
|
||||
|
||||
// Escape (FloodFill)
|
||||
const
|
||||
GEFF_REGID =$03; // uchIdent - FloodFill
|
||||
|
||||
ETYPE_GEFF =$800300D5;
|
||||
|
||||
type
|
||||
ORDERL_GEFF=record // olgeff
|
||||
fsFlags: Byte;
|
||||
auchColor: Array[0..3-1] of Byte;
|
||||
end;
|
||||
|
||||
// Element Types for attribute bundles
|
||||
const
|
||||
ETYPE_LINEBUNDLE =$0000FD01;
|
||||
ETYPE_CHARBUNDLE =$0000FD02;
|
||||
ETYPE_MARKERBUNDLE =$0000FD03;
|
||||
ETYPE_AREABUNDLE =$0000FD04;
|
||||
ETYPE_IMAGEBUNDLE =$0000FD05;
|
||||
|
||||
//***************************************************************************\
|
||||
//*
|
||||
//* Very long orders
|
||||
//*
|
||||
//***************************************************************************/
|
||||
|
||||
// macro to tell whether this is a very long order
|
||||
{$define VLONG_ORDER(oc):=((oc)=OCODE_VLONG)}
|
||||
|
||||
// Very long order structure
|
||||
const
|
||||
VORDER_ML =65531;
|
||||
|
||||
type
|
||||
VORDER=record // vord
|
||||
idCode: Byte;
|
||||
uchQualifier: Byte;
|
||||
uchLength: SWPUSHORT;
|
||||
uchData: Array[0..VORDER_ML-1] of Byte;
|
||||
end;
|
||||
|
||||
// Character String Extended
|
||||
const
|
||||
OCODEQ_GCCHSTE =$B0; // Qualifier - current posn
|
||||
OCODEQ_GCHSTE =$F0; // Qualifier - given position
|
||||
OCODEQ_GTCHSPA =$F4; // Tabbed Char String At
|
||||
|
||||
ETYPE_GCCHSTE =$0000FEB0;
|
||||
ETYPE_GCHSTE =$0000FEF0;
|
||||
|
||||
type
|
||||
ORDERS_GCCHSTE=record // osgcchste
|
||||
fbFlags: Byte;
|
||||
uchReserved: Byte;
|
||||
ptRect: Array[0..2-1] of POINTS;
|
||||
cchString: SWPUSHORT;
|
||||
achString: Array[0..1-1] of Char;
|
||||
adx: Array[0..1-1] of Integer;
|
||||
end;
|
||||
|
||||
ORDERL_GCCHSTE=record // olgcchste
|
||||
fbFlags: Byte;
|
||||
uchReserved: Byte;
|
||||
ptRect: Array[0..2-1] of POINTL;
|
||||
cchString: SWPUSHORT;
|
||||
achString: Array[0..1-1] of Char;
|
||||
adx: Array[0..1-1] of Longint;
|
||||
end;
|
||||
|
||||
ORDERL_GTCHSPA=record // olgcchspa
|
||||
fbFlags: Byte;
|
||||
uchReserved: Byte;
|
||||
ptRect: Array[0..2-1] of POINTL;
|
||||
cchString: SWPUSHORT;
|
||||
achString: Array[0..1-1] of Char;
|
||||
adx: Array[0..2-1] of Longint;
|
||||
tabs: Array[0..1-1] of Longint;
|
||||
end;
|
||||
|
||||
const
|
||||
GCCHSTE_DRAWRECT =$80;
|
||||
GCCHSTE_NORECT =$00;
|
||||
GCCHSTE_CLIP =$40;
|
||||
GCCHSTE_NOCLIP =$00;
|
||||
GCCHSTE_DEEMPHASIZE =$20; // Reserved
|
||||
GCCHSTE_NODEEMPHASIZE =$00;
|
||||
GCCHSTE_LEAVEPOS =$10;
|
||||
GCCHSTE_MOVEPOS =$00;
|
||||
GCCHSTE_UNDERSCORE =$08;
|
||||
GCCHSTE_NOUNDERSCORE =$00;
|
||||
GCCHSTE_STRIKEOUT =$04;
|
||||
GCCHSTE_NOSTRIKEOUT =$00;
|
||||
GTCHSPA_STARTPOS =$02;
|
||||
GTCHSPA_NOSTARTPOS =$00;
|
||||
|
||||
// Extended Escape
|
||||
OCODEQ_GEESCP =$D5; // Qualifier - extended escape
|
||||
|
||||
GEESCP_ML =65533;
|
||||
|
||||
type
|
||||
ORDER_GEESCP=record // ogeescp
|
||||
uchType: Byte;
|
||||
uchIdent: Byte;
|
||||
auchData: Array[0..GEESCP_ML-1] of Byte;
|
||||
end;
|
||||
|
||||
//#pragma pack() /* reset to default packing */
|
||||
|
||||
|
||||
|
||||
function GpiCreatePS(hab,hdc : cardinal;var psizlSize : SIZEL;flOptions : cardinal) : cardinal;cdecl;
|
||||
function GpiDestroyPS(hps : cardinal) : longbool;cdecl;
|
||||
function GpiAssociate(hps,hdc : cardinal) : longbool;cdecl;
|
||||
@ -1226,9 +2164,13 @@ function GpiSetDefViewingLimits(hps : cardinal;var prclLimits : RECTL) : longboo
|
||||
function GpiPolygons(hps,ulCount : cardinal;var paplgn : POLYGON;flOptions,flModel : cardinal) : longint; cdecl; external 'pmgpi' index 650;
|
||||
|
||||
end.
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.4 2002-11-02 13:26:36 hajny
|
||||
Revision 1.5 2003-03-27 18:11:23 yuri
|
||||
Orders added
|
||||
|
||||
Revision 1.4 2002/11/02 13:26:36 hajny
|
||||
* Gpi*Palette* parameters corrected
|
||||
|
||||
Revision 1.3 2002/09/07 16:01:25 peter
|
||||
|
Loading…
Reference in New Issue
Block a user