mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-16 12:39:24 +02:00
Orders added
This commit is contained in:
parent
c6fbaed636
commit
1712c1a175
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
PMGPI interface unit
|
PMGPI interface unit
|
||||||
FPC Pascal Runtime Library for OS/2
|
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
|
Copyright (c) 1999-2000 by Ramon Bosque
|
||||||
|
|
||||||
The Free Pascal runtime library is distributed under the Library GNU Public
|
The Free Pascal runtime library is distributed under the Library GNU Public
|
||||||
@ -39,6 +39,8 @@ unit pmgpi;
|
|||||||
|
|
||||||
interface
|
interface
|
||||||
|
|
||||||
|
{$MACRO ON}
|
||||||
|
|
||||||
uses os2def,pmbitmap;
|
uses os2def,pmbitmap;
|
||||||
|
|
||||||
const GPI_ERROR = 0;
|
const GPI_ERROR = 0;
|
||||||
@ -699,6 +701,942 @@ type SizeL=record
|
|||||||
PPolyset=^Polyset;
|
PPolyset=^Polyset;
|
||||||
TPolyset=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 GpiCreatePS(hab,hdc : cardinal;var psizlSize : SIZEL;flOptions : cardinal) : cardinal;cdecl;
|
||||||
function GpiDestroyPS(hps : cardinal) : longbool;cdecl;
|
function GpiDestroyPS(hps : cardinal) : longbool;cdecl;
|
||||||
function GpiAssociate(hps,hdc : 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;
|
function GpiPolygons(hps,ulCount : cardinal;var paplgn : POLYGON;flOptions,flModel : cardinal) : longint; cdecl; external 'pmgpi' index 650;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$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
|
* Gpi*Palette* parameters corrected
|
||||||
|
|
||||||
Revision 1.3 2002/09/07 16:01:25 peter
|
Revision 1.3 2002/09/07 16:01:25 peter
|
||||||
|
Loading…
Reference in New Issue
Block a user