mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-10-31 14:31:38 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			1025 lines
		
	
	
		
			32 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
			
		
		
	
	
			1025 lines
		
	
	
		
			32 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
| {
 | |
|     This file is part of the Free Pascal run time library.
 | |
|     Copyright (c) 2002 by Yuri Prokushev (prokushev@freemail.ru).
 | |
| 
 | |
|     OS/2 Presentation Manager Device Context constants, types and
 | |
|     function declarations
 | |
| 
 | |
|     See the file COPYING.FPC, included in this distribution,
 | |
|     for details about the copyright.
 | |
| 
 | |
|     This program is distributed in the hope that it will be useful,
 | |
|     but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 | |
| 
 | |
|  **********************************************************************}
 | |
| 
 | |
| {Warning: This code is alfa. Future versions
 | |
|  of this unit might not be compatible.}
 | |
| 
 | |
| unit pmdev;
 | |
| 
 | |
| interface
 | |
| 
 | |
| uses
 | |
|   os2def;
 | |
| 
 | |
| //General DEV return values
 | |
| const
 | |
|   DEV_ERROR                       =0;
 | |
|   DEV_OK                          =1;
 | |
| 
 | |
| //DC type for DevOpenDC
 | |
| 
 | |
|   OD_QUEUED                       =2;
 | |
|   OD_DIRECT                       =5;
 | |
|   OD_INFO                         =6;
 | |
|   OD_METAFILE                     =7;
 | |
|   OD_MEMORY                       =8;
 | |
|   OD_METAFILE_NOQUERY             =9;
 | |
| 
 | |
| //codes for DevQueryCaps
 | |
|   CAPS_FAMILY                     =0;
 | |
|   CAPS_IO_CAPS                    =1;
 | |
|   CAPS_TECHNOLOGY                 =2;
 | |
|   CAPS_DRIVER_VERSION             =3;
 | |
|   CAPS_WIDTH                      =4;  //pels
 | |
|   CAPS_HEIGHT                     =5;  //pels
 | |
|   CAPS_WIDTH_IN_CHARS             =6;
 | |
|   CAPS_HEIGHT_IN_CHARS            =7;
 | |
|   CAPS_HORIZONTAL_RESOLUTION      =8;  //pels per meter
 | |
|   CAPS_VERTICAL_RESOLUTION        =9;  //pels per meter
 | |
|   CAPS_CHAR_WIDTH                 =10; //pels
 | |
|   CAPS_CHAR_HEIGHT                =11; //pels
 | |
|   CAPS_SMALL_CHAR_WIDTH           =12; //pels
 | |
|   CAPS_SMALL_CHAR_HEIGHT          =13; //pels
 | |
|   CAPS_COLORS                     =14;
 | |
|   CAPS_COLOR_PLANES               =15;
 | |
|   CAPS_COLOR_BITCOUNT             =16;
 | |
|   CAPS_COLOR_TABLE_SUPPORT        =17;
 | |
|   CAPS_MOUSE_BUTTONS              =18;
 | |
|   CAPS_FOREGROUND_MIX_SUPPORT     =19;
 | |
|   CAPS_BACKGROUND_MIX_SUPPORT     =20;
 | |
|   CAPS_DEVICE_WINDOWING           =31;
 | |
|   CAPS_ADDITIONAL_GRAPHICS        =32;
 | |
|   CAPS_VIO_LOADABLE_FONTS         =21;
 | |
|   CAPS_WINDOW_BYTE_ALIGNMENT      =22;
 | |
|   CAPS_BITMAP_FORMATS             =23;
 | |
|   CAPS_RASTER_CAPS                =24;
 | |
|   CAPS_MARKER_HEIGHT              =25; //pels
 | |
|   CAPS_MARKER_WIDTH               =26; //pels
 | |
|   CAPS_DEVICE_FONTS               =27;
 | |
|   CAPS_GRAPHICS_SUBSET            =28;
 | |
|   CAPS_GRAPHICS_VERSION           =29;
 | |
|   CAPS_GRAPHICS_VECTOR_SUBSET     =30;
 | |
|   CAPS_PHYS_COLORS                =33;
 | |
|   CAPS_COLOR_INDEX                =34;
 | |
|   CAPS_GRAPHICS_CHAR_WIDTH        =35;
 | |
|   CAPS_GRAPHICS_CHAR_HEIGHT       =36;
 | |
|   CAPS_HORIZONTAL_FONT_RES        =37;
 | |
|   CAPS_VERTICAL_FONT_RES          =38;
 | |
|   CAPS_DEVICE_FONT_SIM            =39;
 | |
|   CAPS_LINEWIDTH_THICK            =40;
 | |
|   CAPS_DEVICE_POLYSET_POINTS      =41;
 | |
| 
 | |
| //Constants for CAPS_IO_CAPS
 | |
|   CAPS_IO_DUMMY                   =1;
 | |
|   CAPS_IO_SUPPORTS_OP             =2;
 | |
|   CAPS_IO_SUPPORTS_IP             =3;
 | |
|   CAPS_IO_SUPPORTS_IO             =4;
 | |
| 
 | |
| //Constants for CAPS_TECHNOLOGY
 | |
|   CAPS_TECH_UNKNOWN               =0;
 | |
|   CAPS_TECH_VECTOR_PLOTTER        =1;
 | |
|   CAPS_TECH_RASTER_DISPLAY        =2;
 | |
|   CAPS_TECH_RASTER_PRINTER        =3;
 | |
|   CAPS_TECH_RASTER_CAMERA         =4;
 | |
|   CAPS_TECH_POSTSCRIPT            =5;
 | |
| 
 | |
| //Constants for CAPS_COLOR_TABLE_SUPPORT
 | |
|   CAPS_COLTABL_RGB_8              =1;
 | |
|   CAPS_COLTABL_RGB_8_PLUS         =2;
 | |
|   CAPS_COLTABL_TRUE_MIX           =4;
 | |
|   CAPS_COLTABL_REALIZE            =8;
 | |
| 
 | |
| //Constants for CAPS_FOREGROUND_MIX_SUPPORT
 | |
|   CAPS_FM_OR                      =1;
 | |
|   CAPS_FM_OVERPAINT               =2;
 | |
|   CAPS_FM_XOR                     =8;
 | |
|   CAPS_FM_LEAVEALONE             =16;
 | |
|   CAPS_FM_AND                    =32;
 | |
|   CAPS_FM_GENERAL_BOOLEAN        =64;
 | |
| 
 | |
| //Constants for CAPS_BACKGROUND_MIX_SUPPORT
 | |
|   CAPS_BM_OR                      =1;
 | |
|   CAPS_BM_OVERPAINT               =2;
 | |
|   CAPS_BM_XOR                     =8;
 | |
|   CAPS_BM_LEAVEALONE             =16;
 | |
|   CAPS_BM_AND                    =32;
 | |
|   CAPS_BM_GENERAL_BOOLEAN        =64;
 | |
|   CAPS_BM_SRCTRANSPARENT        =128;
 | |
|   CAPS_BM_DESTTRANSPARENT       =256;
 | |
| 
 | |
| //Constants for CAPS_DEVICE_WINDOWING
 | |
|   CAPS_DEV_WINDOWING_SUPPORT      =1;
 | |
| 
 | |
| //Constants for CAPS_ADDITIONAL_GRAPHICS
 | |
|   CAPS_VDD_DDB_TRANSFER            =1;
 | |
|   CAPS_GRAPHICS_KERNING_SUPPORT    =2;
 | |
|   CAPS_FONT_OUTLINE_DEFAULT        =4;
 | |
|   CAPS_FONT_IMAGE_DEFAULT          =8;
 | |
| //bits represented by values 16L and 32L are reserved
 | |
|   CAPS_SCALED_DEFAULT_MARKERS     =64;
 | |
|   CAPS_COLOR_CURSOR_SUPPORT      =128;
 | |
|   CAPS_PALETTE_MANAGER           =256;
 | |
|   CAPS_COSMETIC_WIDELINE_SUPPORT =512;
 | |
|   CAPS_DIRECT_FILL              =1024;
 | |
|   CAPS_REBUILD_FILLS            =2048;
 | |
|   CAPS_CLIP_FILLS               =$00001000; //4096L
 | |
|   CAPS_ENHANCED_FONTMETRICS     =$00002000; //8192L
 | |
|   CAPS_TRANSFORM_SUPPORT        =$00004000; //16384L
 | |
| 
 | |
| //Constants for CAPS_WINDOW_BYTE_ALIGNMENT
 | |
|   CAPS_BYTE_ALIGN_REQUIRED        =0;
 | |
|   CAPS_BYTE_ALIGN_RECOMMENDED     =1;
 | |
|   CAPS_BYTE_ALIGN_NOT_REQUIRED    =2;
 | |
| 
 | |
| //Constants for CAPS_RASTER_CAPS
 | |
|   CAPS_RASTER_BITBLT              =1;
 | |
|   CAPS_RASTER_BANDING             =2;
 | |
|   CAPS_RASTER_BITBLT_SCALING      =4;
 | |
|   CAPS_RASTER_SET_PEL            =16;
 | |
|   CAPS_RASTER_FONTS              =32;
 | |
|   CAPS_RASTER_FLOOD_FILL         =64;
 | |
| 
 | |
| //structures for DEVESC_QUERYVIOCELLSIZES
 | |
| 
 | |
| type
 | |
|   PVioSizeCount=^VioSizeCount;
 | |
|   VioSizeCount=record
 | |
|     maxcount: Longint;
 | |
|     count: Longint;
 | |
|   end;
 | |
| 
 | |
|   PVioFontCellSize=^VioFontCellSize;
 | |
|   VioFontCellSize=record
 | |
|     cx: Longint;
 | |
|     cy: Longint;
 | |
|   end;
 | |
| 
 | |
| //structure for DEVESC_GETSCALINGFACTOR
 | |
|   PSFactors=^SFactors;
 | |
|   SFactors=record
 | |
|     x: Longint;
 | |
|     y: Longint;
 | |
|   end;
 | |
| 
 | |
| //structure for DEVESC_NEXTBAND
 | |
|   PBandRect=^BandRect;
 | |
|   BandRect=record
 | |
|     xleft: Longint;
 | |
|     ybottom: Longint;
 | |
|     xright: Longint;
 | |
|     ytop: Longint;
 | |
|   end;
 | |
| 
 | |
| //return codes for DevEscape
 | |
| const
 | |
|   DEVESC_ERROR                  =-1;
 | |
|   DEVESC_NOTIMPLEMENTED         =0;
 | |
| 
 | |
| //codes for DevEscape
 | |
|   DEVESC_QUERYESCSUPPORT      =   0;
 | |
|   DEVESC_GETSCALINGFACTOR     =   1;
 | |
|   DEVESC_QUERYVIOCELLSIZES    =   2;
 | |
|   DEVESC_GETCP                =8000;
 | |
| 
 | |
|   DEVESC_STARTDOC             =8150;
 | |
|   DEVESC_ENDDOC               =8151;
 | |
|   DEVESC_NEXTBAND             =8152;
 | |
|   DEVESC_ABORTDOC             =8153;
 | |
| 
 | |
|   DEVESC_NEWFRAME            =16300;
 | |
|   DEVESC_DRAFTMODE           =16301;
 | |
|   DEVESC_FLUSHOUTPUT         =16302;
 | |
|   DEVESC_RAWDATA             =16303;
 | |
|   DEVESC_SETMODE             =16304;
 | |
| 
 | |
|   DEVESC_DBE_FIRST           =24450;
 | |
|   DEVESC_DBE_LAST            =24455;
 | |
| 
 | |
| //DevEscape codes for adding extra space to character strings
 | |
|   DEVESC_CHAR_EXTRA          =16998;
 | |
|   DEVESC_BREAK_EXTRA         =16999;
 | |
| 
 | |
| //codes for DevEscape PM_Q_ESC spool files
 | |
|   DEVESC_STD_JOURNAL         =32600;
 | |
| 
 | |
| //structure for DEVESC_SETMODE
 | |
| type
 | |
|   PEscMode=^EscMode;
 | |
|   EscMode=record
 | |
|     mode: cardinal;
 | |
|     modedata: byte;
 | |
|   end;
 | |
| 
 | |
| //return codes for DevPostDeviceModes
 | |
| const
 | |
|   DPDM_ERROR                   =-1;
 | |
|   DPDM_NONE                    =0;
 | |
| 
 | |
| //codes for DevPostDeviceModes
 | |
|   DPDM_POSTJOBPROP             =0;
 | |
|   DPDM_CHANGEPROP              =1;
 | |
|   DPDM_QUERYJOBPROP            =2;
 | |
| 
 | |
| //string types for DevQueryDeviceNames
 | |
| type
 | |
|   Str16= string [15];
 | |
|   Str32= string [31];
 | |
|   Str64= string [63];
 | |
| 
 | |
| //return code for DevQueryHardcopyCaps
 | |
| const
 | |
|   DQHC_ERROR                    =-1;
 | |
| 
 | |
| //codes for DevQueryHardcopyCaps
 | |
| const
 | |
|   HCAPS_CURRENT                 =1;
 | |
|   HCAPS_SELECTABLE              =2;
 | |
| 
 | |
| //structure for DevQueryHardcopyCaps
 | |
| type
 | |
|   PHCInfo=^HCInfo;
 | |
|   HCInfo=record
 | |
|     szFormname: Str32;
 | |
|     cx: Longint;
 | |
|     cy: Longint;
 | |
|     xLeftClip: Longint;
 | |
|     yBottomClip: Longint;
 | |
|     xRightClip: Longint;
 | |
|     yTopClip: Longint;
 | |
|     xPels: Longint;
 | |
|     yPels: Longint;
 | |
|     flAttributes: Longint;
 | |
|   end;
 | |
| 
 | |
|     { -----------------------------------------------------------------
 | |
|           Tuple Item used for QUERYSIZE
 | |
|         }
 | |
|     { djpQRT  }
 | |
|     { I - Property                       }
 | |
|     { I - type (DJP_ALL or DJP_CURRENT)  }
 | |
|     {                                                                }
 | |
| 
 | |
|     type
 | |
| 
 | |
|        TdjpQueryTuple = record
 | |
|             ulProperty : Cardinal;
 | |
|             lType : Longint;
 | |
|          end;
 | |
|        TQUERYTUPLE = TdjpQueryTuple;
 | |
|        TPQUERYTUPLE = ^TdjpQueryTuple;
 | |
|     { -----------------------------------------------------------------
 | |
|           Query Size Structure for DEVESC_QUERYSIZE
 | |
|         }
 | |
|     { djpQRS  }
 | |
|     { I - Size of entire structure       }
 | |
|     { O - Size returned;                 }
 | |
|     { I - Start of tuple list            }
 | |
|     {                                 use DJP_NONE for end of list   }
 | |
| 
 | |
|        TdjpQuerySize = record
 | |
|             cb : Cardinal;
 | |
|             ulSizeNeeded : Cardinal;
 | |
|             aTuples : array[0..0] of TQUERYTUPLE;
 | |
|          end;
 | |
|        TQUERYSIZE = TdjpQuerySize;
 | |
|        TPQUERYSIZE = ^TdjpQuerySize;
 | |
|     { was #define dname def_expr }
 | |
| //    function QUERYSIZE_HEADER_SIZE : longint;
 | |
|         { return type might be wrong }
 | |
| 
 | |
|     { -----------------------------------------------------------------
 | |
|           Dynamic Job Property Item
 | |
|         }
 | |
|     { djpITM  }
 | |
|     { I/O - sizeof DJP_ITEM structure    }
 | |
|     { I   - Which property               }
 | |
|     { I/O - DJP_ALL or DJP_CURRENT.      }
 | |
|     {                                   DJP_ERROR_XXX if error.      }
 | |
|     { O   - How many elements have been  }
 | |
|     {                                   returned                     }
 | |
|     { O   - Variably sized based on      }
 | |
|     {                                   ulProperty.  The smallest    }
 | |
|     {                                   is a ULONG in size           }
 | |
| 
 | |
|     type
 | |
| 
 | |
|        TdjpItem = record
 | |
|             cb : Cardinal;
 | |
|             ulProperty : Cardinal;
 | |
|             lType : Longint;
 | |
|             ulNumReturned : Cardinal;
 | |
|             ulValue : Cardinal;
 | |
|          end;
 | |
|        TDJP_ITEM = TdjpItem;
 | |
|        TPDJP_ITEM = ^TdjpItem;
 | |
|     { was #define dname def_expr }
 | |
| //    function DJP_HEADER_SIZE : longint;
 | |
|         { return type might be wrong }
 | |
| 
 | |
|     { was #define dname(params) para_def_expr }
 | |
|     { argument types are unknown }
 | |
| //    function DJP_NEXT_STRUCTP(p : longint) : TPDJP_ITEM;
 | |
| 
 | |
|     { was #define dname(params) para_def_expr }
 | |
|     { argument types are unknown }
 | |
| //    function DJP_ELEMENTP(s,t : longint) : ^Tt;
 | |
| 
 | |
| (* error
 | |
|    #define DJP_SET_ELEMENT(s,t,e) ( *DJP_ELEMENTP (s,t) = (e))
 | |
| in define line 83 *)
 | |
|     { -----------------------------------------------------------------
 | |
|           Types of Dynamic Job Properties
 | |
| 
 | |
|           To see if the driver is enabled use,
 | |
|               DevEscape      (DEVESC_QUERYESCSUPPORT,
 | |
|                               DEVESC_STARTDOC_WPROP, ...)
 | |
|           and DevQueryDevice (DEVQRY_QUERYSUPPORT,
 | |
|                               DEVESC_QUERYJOBPROPERTIES, ...)
 | |
| 
 | |
|           NOTE: The C/S in the defines indicate the complexity or size of
 | |
|                 the information.  If it is s, then the size is ULONG sized
 | |
|                 and no special processing for the next element needs to be
 | |
|                 done.
 | |
|                 The J/P in the defines indicate the class.  J stands for job
 | |
|                 properties and P stands for printer properties.
 | |
|         }
 | |
|     { also End Of List marker  }
 | |
| 
 | |
|     const
 | |
|        DJP_NONE = 0;
 | |
|        DJP_SJ_ORIENTATION = 1;
 | |
|        DJP_CJ_RESOLUTION = 2;
 | |
|        DJP_SJ_BITSPERPEL = 3;
 | |
|        DJP_SJ_COLOR = 4;
 | |
|        DJP_SJ_PRINTQUALITY = 5;
 | |
|        DJP_SJ_PAPERSIZE = 6;
 | |
|        DJP_SJ_TRAYTYPE = 7;
 | |
|        DJP_SJ_MEDIA = 8;
 | |
|        DJP_SJ_MEDIA_COLOR = 9;
 | |
|        DJP_CJ_FORM = 10;
 | |
|        DJP_CJ_MIXEDFORMS = 11;
 | |
|        DJP_SJ_FONTDOWNLOADING = 12;
 | |
|        DJP_SJ_DUPLEX = 13;
 | |
|        DJP_SJ_COLLATE = 14;
 | |
|        DJP_SJ_FEED = 15;
 | |
|        DJP_SJ_COPIES = 16;
 | |
|        DJP_SJ_SCALING = 17;
 | |
|        DJP_SJ_FORMFEEDCONTROL = 18;
 | |
|        DJP_SJ_N_UP = 19;
 | |
|        DJP_CJ_OUTPUTBIN = 20;
 | |
|        DJP_CJ_TRAYNAME = 21;
 | |
|     { Types for DEVESC_QUERYJOBPROPERTIES / DEVESC_SETJOBPROPERTIES
 | |
|         }
 | |
|     { enumerate the property  }
 | |
|        DJP_ALL = 1;
 | |
|     { from job properties     }
 | |
|        DJP_CURRENT = 2;
 | |
|     { Errors for DEVESC_QUERYJOBPROPERTIES / DEVESC_SETJOBPROPERTIES
 | |
|         }
 | |
|     { driver doesnt support that property  }
 | |
|        DJP_ERROR_NOT_SUPPORTED = -(1);
 | |
|     { not in the valid range               }
 | |
|        DJP_ERROR_OUT_OF_RANGE = -(2);
 | |
|     { not enumerateable                    }
 | |
|        DJP_ERROR_NOT_ENUM = -(3);
 | |
|     { field not proper value               }
 | |
|        DJP_ERROR_INV_PARMS = -(4);
 | |
|     { -----------------------------------------------------------------
 | |
|           DJP_SJ_ORIENTATION
 | |
|         }
 | |
|        DJP_ORI_PORTRAIT = 1;
 | |
|        DJP_ORI_LANDSCAPE = 2;
 | |
|        DJP_ORI_REV_PORTRAIT = 3;
 | |
|        DJP_ORI_REV_LANDSCAPE = 4;
 | |
| 
 | |
|     type
 | |
| 
 | |
|        TDJPT_ORIENTATION = Cardinal;
 | |
| 
 | |
|        TPDJPT_ORIENTATION = Cardinal;
 | |
|     { -----------------------------------------------------------------
 | |
|           DJP_CJ_RESOLUTION
 | |
|         }
 | |
|     { djpRES  }
 | |
|     { X resolution (in dots per inch)  }
 | |
|     { Y resolution (in dots per inch)  }
 | |
| 
 | |
|        TdjpResolution = record
 | |
|             usXResolution : Word;
 | |
|             usYResolution : Word;
 | |
|          end;
 | |
|        TDJPT_RESOLUTION = TdjpResolution;
 | |
|        TPDJPT_RESOLUTION = ^TdjpResolution;
 | |
|     { -----------------------------------------------------------------
 | |
|           DJP_SJ_BITSPERPEL
 | |
|         }
 | |
| 
 | |
|        TDJPT_BITSPERPEL = Cardinal;
 | |
| 
 | |
|        TPDJPT_BITSPERPEL = Cardinal;
 | |
|     { -----------------------------------------------------------------
 | |
|           DJP_SJ_COLOR
 | |
|         }
 | |
| 
 | |
|     const
 | |
|        DJP_CLR_MONOCHROME = 1;
 | |
|        DJP_CLR_COLOR = 2;
 | |
| 
 | |
|     type
 | |
| 
 | |
|        TDJPT_COLOR = Cardinal;
 | |
| 
 | |
|        TPDJPT_COLOR = Cardinal;
 | |
|     { -----------------------------------------------------------------
 | |
|           DJP_SJ_PRINTQUALITY
 | |
| 
 | |
|           Note: DJP_PQL_DRAFT is the worst quality.  In the future, there
 | |
|                 may be better qualities (such as DJP_PQL_ULTRA_HIGH) which
 | |
|                 will be numerically greater than DJP_PQL_HIGH.
 | |
|         }
 | |
| 
 | |
|     const
 | |
|        DJP_PQL_DRAFT = 1;
 | |
|        DJP_PQL_LOW = 2;
 | |
|        DJP_PQL_MEDIUM = 3;
 | |
|        DJP_PQL_HIGH = 4;
 | |
|        DJP_PQL_LAST = DJP_PQL_HIGH;
 | |
| 
 | |
|     type
 | |
| 
 | |
|        TDJPT_PRINTQUALITY = Cardinal;
 | |
| 
 | |
|        TPDJPT_PRINTQUALITY = Cardinal;
 | |
|     { -----------------------------------------------------------------
 | |
|           DJP_SJ_PAPERSIZE
 | |
| 
 | |
|           Note: it is recommended to use DJP_CJ_FORM to chage the papersize.
 | |
|                                                         approximate size
 | |
|         }
 | |
|     {  inches       millimeters  }
 | |
| 
 | |
|     const
 | |
|        DJP_PSI_NONE = 0;
 | |
|     {  8.5  x 11    216 x 279    }
 | |
|        DJP_PSI_LETTER = 1;
 | |
|     {  8.5  x 14    216 x 356    }
 | |
|        DJP_PSI_LEGAL = 2;
 | |
|     { 13.58 x 11    345 x 279    }
 | |
|        DJP_PSI_WIDE = 3;
 | |
|     { 17    x 22    431 x 558    }
 | |
|        DJP_PSI_CSHEET = 4;
 | |
|     { 22    x 34    558 x 863    }
 | |
|        DJP_PSI_DSHEET = 5;
 | |
|     { 34    x 44    863 x 1117   }
 | |
|        DJP_PSI_ESHEET = 6;
 | |
|     {                            }
 | |
|        DJP_PSI_LETTERSMALL = 7;
 | |
|     { 11    x 17    279 x 431    }
 | |
|        DJP_PSI_TABLOID = 8;
 | |
|     { 17    x 11    431 x 279    }
 | |
|        DJP_PSI_LEDGER = 9;
 | |
|     {  5.5  x  8.5  139 x 216    }
 | |
|        DJP_PSI_STATEMENT = 10;
 | |
|     {  7.25 x 10.5  184 x 266    }
 | |
|        DJP_PSI_EXECUTIVE = 11;
 | |
|     { 33.11 x 46.81 841 x 1189   }
 | |
|        DJP_PSI_A0 = 12;
 | |
|     { 23.39 x 33.11 594 x 841    }
 | |
|        DJP_PSI_A1 = 13;
 | |
|     { 16.54 x 23.39 420 x 594    }
 | |
|        DJP_PSI_A2 = 14;
 | |
|     { 11.7  x 16.54 297 x 420    }
 | |
|        DJP_PSI_A3 = 15;
 | |
|     {  8.3  x 11.7  210 x 297    }
 | |
|        DJP_PSI_A4 = 16;
 | |
|     {                            }
 | |
|        DJP_PSI_A4_SMALL = 17;
 | |
|     {  5.83 x  8.27 148 x 210    }
 | |
|        DJP_PSI_A5 = 18;
 | |
|     {  9.84 x 13.94 250 x 354    }
 | |
|        DJP_PSI_B4 = 19;
 | |
|     {  7.17 x 10.12 182 x 257    }
 | |
|        DJP_PSI_B5 = 20;
 | |
|     {  8.5  x 13    216 x 330    }
 | |
|        DJP_PSI_FOLIO = 21;
 | |
|     {  8.46 x 10.83 215 x 275    }
 | |
|        DJP_PSI_QUATRO = 22;
 | |
|     { 10    x 14    254 x 355    }
 | |
|        DJP_PSI_10X14 = 23;
 | |
|     { 11    x 17    279 x 431    }
 | |
|        DJP_PSI_11X17 = 24;
 | |
|     {                            }
 | |
|        DJP_PSI_NOTE = 25;
 | |
|     {                            }
 | |
|        DJP_PSI_ENV_9 = 26;
 | |
|     {                            }
 | |
|        DJP_PSI_ENV_10 = 27;
 | |
|     {                            }
 | |
|        DJP_PSI_ENV_11 = 28;
 | |
|     {                            }
 | |
|        DJP_PSI_ENV_12 = 29;
 | |
|     {                            }
 | |
|        DJP_PSI_ENV_14 = 30;
 | |
|     {                            }
 | |
|        DJP_PSI_ENV_DL = 31;
 | |
|     {                            }
 | |
|        DJP_PSI_ENV_A2 = 32;
 | |
|     {                            }
 | |
|        DJP_PSI_ENV_C3 = 33;
 | |
|     {                            }
 | |
|        DJP_PSI_ENV_C4 = 34;
 | |
|     {                            }
 | |
|        DJP_PSI_ENV_C5 = 35;
 | |
|     {                            }
 | |
|        DJP_PSI_ENV_C6 = 36;
 | |
|     {                            }
 | |
|        DJP_PSI_ENV_C65 = 37;
 | |
|     {                            }
 | |
|        DJP_PSI_ENV_C9 = 38;
 | |
|     {                            }
 | |
|        DJP_PSI_ENV_C10 = 39;
 | |
|     {                            }
 | |
|        DJP_PSI_ENV_B4 = 40;
 | |
|     {                            }
 | |
|        DJP_PSI_ENV_B5 = 41;
 | |
|     {                            }
 | |
|        DJP_PSI_ENV_B6 = 42;
 | |
|     {                            }
 | |
|        DJP_PSI_ENV_ITALY = 43;
 | |
|     {                            }
 | |
|        DJP_PSI_ENV_MONARCH = 44;
 | |
|     {                            }
 | |
|        DJP_PSI_ENV_PERSONAL = 45;
 | |
|     {                            }
 | |
|        DJP_PSI_FANFOLD_US = 46;
 | |
|     {                            }
 | |
|        DJP_PSI_FANFOLD_STD_GERMAN = 47;
 | |
|     {                            }
 | |
|        DJP_PSI_FANFOLD_LGL_GERMAN = 48;
 | |
|     {                            }
 | |
|        DJP_PSI_ARCHITECT_BSHEET = 49;
 | |
|     {                            }
 | |
|        DJP_PSI_ARCHITECT_CSHEET = 50;
 | |
|     {                            }
 | |
|        DJP_PSI_ARCHITECT_DSHEET = 51;
 | |
|     {                            }
 | |
|        DJP_PSI_ARCHITECT_ESHEET = 52;
 | |
|     {                            }
 | |
|        DJP_PSI_CARD_A6 = 53;
 | |
|     {                            }
 | |
|        DJP_PSI_CARD_4X6 = 54;
 | |
|     {                            }
 | |
|        DJP_PSI_CARD_5X8 = 55;
 | |
|     {                            }
 | |
|        DJP_PSI_CARD_HAGAKI = 56;
 | |
|     {  1.10 x 3.50   28 x 89     }
 | |
|        DJP_PSI_LABEL_STANDARD = 57;
 | |
|     {  3.98 x 2.13  101 x 54     }
 | |
|        DJP_PSI_LABEL_SHIPPING = 58;
 | |
|     {  2.76 x 2.13   70 x 54     }
 | |
|        DJP_PSI_LABEL_DISK = 59;
 | |
|     {  3.50 x 1.42   89 x 36     }
 | |
|        DJP_PSI_LABEL_EURO = 60;
 | |
|     {                            }
 | |
|        DJP_PSI_CARD_OUFUKU_HAGAKI = 61;
 | |
|     {                            }
 | |
|        DJP_PSI_B0 = 62;
 | |
|     {                            }
 | |
|        DJP_PSI_B1 = 63;
 | |
|     {                            }
 | |
|        DJP_PSI_B2 = 64;
 | |
|     {                            }
 | |
|        DJP_PSI_B3 = 65;
 | |
|     {                            }
 | |
|        DJP_PSI_B6 = 66;
 | |
|     {                            }
 | |
|        DJP_PSI_B7 = 67;
 | |
|     {                            }
 | |
|        DJP_PSI_B8 = 68;
 | |
|     {                            }
 | |
|        DJP_PSI_B9 = 69;
 | |
|     {                            }
 | |
|        DJP_PSI_B10 = 70;
 | |
|     {                            }
 | |
|        DJP_PSI_B0_JIS = 71;
 | |
|     {                            }
 | |
|        DJP_PSI_B1_JIS = 72;
 | |
|     {                            }
 | |
|        DJP_PSI_B2_JIS = 73;
 | |
|     {                            }
 | |
|        DJP_PSI_B3_JIS = 74;
 | |
|     {                            }
 | |
|        DJP_PSI_B4_JIS = 75;
 | |
|     {                            }
 | |
|        DJP_PSI_B5_JIS = 76;
 | |
|     {                            }
 | |
|        DJP_PSI_B6_JIS = 77;
 | |
|     {                            }
 | |
|        DJP_PSI_B7_JIS = 78;
 | |
|     {                            }
 | |
|        DJP_PSI_B8_JIS = 79;
 | |
|     {                            }
 | |
|        DJP_PSI_B9_JIS = 80;
 | |
|     {                            }
 | |
|        DJP_PSI_B10_JIS = 81;
 | |
|        DJP_PSI_LAST = DJP_PSI_B10_JIS;
 | |
| 
 | |
|     type
 | |
| 
 | |
|        TDJPT_PAPERSIZE = Longint;
 | |
| 
 | |
|        TPDJPT_PAPERSIZE = Longint;
 | |
|     { -----------------------------------------------------------------
 | |
|           DJP_SJ_TRAYTYPE
 | |
| 
 | |
|           Note: it is recommended to use DJP_CJ_FORM to chage the tray type.
 | |
|         }
 | |
| 
 | |
|     const
 | |
|        DJP_TRY_NONE = 0;
 | |
|        DJP_TRY_UPPER = 1;
 | |
|        DJP_TRY_ONLYONE = DJP_TRY_UPPER;
 | |
|        DJP_TRY_LOWER = 2;
 | |
|        DJP_TRY_MIDDLE = 3;
 | |
|        DJP_TRY_MANUAL = 4;
 | |
|        DJP_TRY_ENVELOPE = 5;
 | |
|        DJP_TRY_ENVMANUAL = 6;
 | |
|        DJP_TRY_AUTO = 7;
 | |
|        DJP_TRY_TRACTOR = 8;
 | |
|        DJP_TRY_SMALLFMT = 9;
 | |
|        DJP_TRY_LARGEFMT = 10;
 | |
|        DJP_TRY_LARGECAPACITY = 11;
 | |
|        DJP_TRY_CASSETTE = 12;
 | |
|        DJP_TRY_LAST = DJP_TRY_CASSETTE;
 | |
| 
 | |
|     type
 | |
| 
 | |
|        TDJPT_TRAYTYPE = Cardinal;
 | |
| 
 | |
|        TPDJPT_TRAYTYPE = Cardinal;
 | |
|     { -----------------------------------------------------------------
 | |
|           DJP_SJ_MEDIA
 | |
| 
 | |
|           Note: it is recommended to use DJP_CJ_FORM to chage the media type.
 | |
|         }
 | |
| 
 | |
|     const
 | |
|        DJP_MED_NONE = 0;
 | |
|        DJP_MED_PLAIN = 1;
 | |
|        DJP_MED_TRANSPARENCY = 2;
 | |
|        DJP_MED_GLOSSY = 3;
 | |
|        DJP_MED_SPECIAL = 4;
 | |
|        DJP_MED_COATED = 5;
 | |
|        DJP_MED_BACKPRINT = 6;
 | |
|        DJP_MED_CLOTH = 7;
 | |
|        DJP_MED_THICK = 8;
 | |
|        DJP_MED_STATIONARY = 9;
 | |
|        DJP_MED_ENVELOPE = 10;
 | |
|        DJP_MED_CONTINUOUS_LONG = 11;
 | |
|        DJP_MED_CONTINUOUS_SHORT = 12;
 | |
|        DJP_MED_TAB_STOCK = 13;
 | |
|        DJP_MED_MULTI_PART_FORM = 14;
 | |
|        DJP_MED_LABELS = 15;
 | |
|        DJP_MED_LAST = DJP_MED_LABELS;
 | |
| 
 | |
|     type
 | |
| 
 | |
|        TDJPT_MEDIA = Cardinal;
 | |
| 
 | |
|        TPDJPT_MEDIA = Cardinal;
 | |
|     { -----------------------------------------------------------------
 | |
|           DJP_SJ_MEDIA_COLOR
 | |
| 
 | |
|           Select the media color (for the same media types).
 | |
|         }
 | |
| 
 | |
|     const
 | |
|        DJP_MDC_BLUE = 1;
 | |
|        DJP_MDC_BLUFF = 2;
 | |
|        DJP_MDC_GOLDENROD = 3;
 | |
|        DJP_MDC_GREEN = 4;
 | |
|        DJP_MDC_PINK = 5;
 | |
|        DJP_MDC_TRANSPARENT = 6;
 | |
|        DJP_MDC_WHITE = 7;
 | |
|        DJP_MDC_YELLOW = 8;
 | |
|        DJP_MDC_LAST = DJP_MDC_YELLOW;
 | |
| 
 | |
|     type
 | |
| 
 | |
|        TDJPT_MEDIA_COLOR = Cardinal;
 | |
| 
 | |
|        TPDJPT_MEDIA_COLOR = Cardinal;
 | |
|     { -----------------------------------------------------------------
 | |
|           DJP_CJ_FORM
 | |
| 
 | |
|           Setting will match all three fields.  If szTrayname or szMedianame
 | |
|              is null then it will be defaulted to the first one found.
 | |
| 
 | |
|           Querying will return all fields filled in.
 | |
|         }
 | |
|     { djpFRM  }
 | |
|     { System Form name                   }
 | |
|     { System Tray name                   }
 | |
|     { System Media name                  }
 | |
|     {                      v-= Informational only =-v                           }
 | |
|     { Corresponding hard copy info       }
 | |
|     { Display Form name  (translated)    }
 | |
|     { Display Tray name  (translated)    }
 | |
|     { Display Media name (translated)    }
 | |
|     { Simple form id  (if not DJP_NONE)  }
 | |
|     { Simple tray id  (if not DJP_NONE)  }
 | |
|     { Simple media id (if not DJP_NONE)  }
 | |
| 
 | |
|        TdjpForm = record
 | |
|             szFormname : Str32;
 | |
|             szTrayname : Str32;
 | |
|             szMedianame : Str32;
 | |
|             ahcInfo : HCINFO;
 | |
|             szDisplayFormname : Str64;
 | |
|             szDisplayTrayname : Str64;
 | |
|             szDisplayMedianame : Str64;
 | |
|             djppsFormID : TDJPT_PAPERSIZE;
 | |
|             djpttTrayID : TDJPT_TRAYTYPE;
 | |
|             djpmdMediaID : TDJPT_MEDIA;
 | |
|          end;
 | |
|        TDJPT_FORM = TdjpForm;
 | |
|        TPDJPT_FORM = ^TdjpForm;
 | |
|     { -----------------------------------------------------------------
 | |
|           DJP_CJ_MIXEDFORMS
 | |
| 
 | |
|           This is unique in that both setting and querying can have multiple
 | |
|           elements.  Both the first page and the last page are DJP_MXF_INFINITY
 | |
|           (which is the separator for individual elements).
 | |
|           Some examples are:
 | |
| 
 | |
|           - Only one form (form1) for the entire job.
 | |
|             (DJP_MXF_INFINITY, DJP_MXF_INFINITY, form1)
 | |
| 
 | |
|           - Page 1 has form1, then pages 2 ... n have form2.
 | |
|             (DJP_MXF_INFINITY, 1, form1) (2, DJP_MXF_INFINITY, form2)
 | |
| 
 | |
|           - Even pages have form1 and odd pages have form2
 | |
|             (DJP_MXF_INFINITY, DJP_MXF_ODD, form1) (DJP_MXF_EVEN, DJP_MXF_INFINITY, form2)
 | |
|             or (DJP_MXF_INFINITY, DJP_MXF_EVEN, form2) (DJP_MXF_ODD, DJP_MXF_INFINITY, form1)
 | |
| 
 | |
|           - First page has form1, even pages have form2 and odd pages have form3
 | |
|             (DJP_MXF_INFINITY, 1, form1) (DJP_MXF_ODD, DJP_MXF_ODD, form1) (DJP_MXF_EVEN, DJP_MXF_INFINITY, form2)
 | |
|             or (DJP_MXF_INFINITY, 1, form1) (DJP_MXF_EVEN, DJP_MXF_EVEN, form2) (DJP_MXF_ODD, DJP_MXF_INFINITY, form1)
 | |
| 
 | |
|         }
 | |
| 
 | |
|     const
 | |
|        DJP_MXF_INFINITY = -(1);
 | |
|        DJP_MXF_ODD = -(2);
 | |
|        DJP_MXF_EVEN = -(3);
 | |
|     { djpMXF  }
 | |
|     { Starting page number            }
 | |
|     { Ending page number              }
 | |
|     { Form associated with the range  }
 | |
| 
 | |
|     type
 | |
| 
 | |
|        TdjpMixedForms = record
 | |
|             lStartRange : Longint;
 | |
|             lEndRange : Longint;
 | |
|             djpfmForm : TDJPT_FORM;
 | |
|          end;
 | |
|        TDJPT_MIXEDFORMS = TdjpMixedForms;
 | |
|        TPDJPT_MIXEDFORMS = ^TdjpMixedForms;
 | |
|     { -----------------------------------------------------------------
 | |
|           DJP_SJ_FONTDOWNLOADING
 | |
|         }
 | |
|     { Device does not support downloading }
 | |
| 
 | |
|     const
 | |
|        DJP_FDL_NONE = 0;
 | |
|     { Download fonts to printer           }
 | |
|        DJP_FDL_DOWNLOAD = 1;
 | |
|     { Rasterize fonts                     }
 | |
|        DJP_FDL_BITMAP = 2;
 | |
|     { Substitute device fonts for system  }
 | |
|        DJP_FDL_SUBSTITUTE = 3;
 | |
| 
 | |
|     type
 | |
| 
 | |
|        TDJPT_FONTDOWNLOADING = Cardinal;
 | |
| 
 | |
|        TPDJPT_FONTDOWNLOADING = Cardinal;
 | |
|     { -----------------------------------------------------------------
 | |
|           DJP_SJ_DUPLEX
 | |
|         }
 | |
|     { Device does not support duplex      }
 | |
| 
 | |
|     const
 | |
|        DJP_DUP_NONE = 0;
 | |
|     { Duplex is turned off                }
 | |
|        DJP_DUP_OFF = 1;
 | |
|        DJP_DUP_BOOK = 2;
 | |
|        DJP_DUP_FLIP = 3;
 | |
| 
 | |
|     type
 | |
| 
 | |
|        TDJPT_DUPLEX = Cardinal;
 | |
| 
 | |
|        TPDJPT_DUPLEX = Cardinal;
 | |
|     { -----------------------------------------------------------------
 | |
|           DJP_SJ_COLLATE
 | |
|         }
 | |
|     { Device does not support collation   }
 | |
| 
 | |
|     const
 | |
|        DJP_COL_NONE = 0;
 | |
|        DJP_COL_OFF = 1;
 | |
|        DJP_COL_ON = 2;
 | |
|     { more for printer dialogs than       }
 | |
|        DJP_COL_PRINTER_SETTING = 3;
 | |
|     { programmatic control.  Use          }
 | |
|     { the setting on the printer panel.   }
 | |
| 
 | |
|     type
 | |
| 
 | |
|        TDJPT_COLLATE = Cardinal;
 | |
| 
 | |
|        TPDJPT_COLLATE = Cardinal;
 | |
|     { -----------------------------------------------------------------
 | |
|           DJP_SJ_FEED
 | |
|         }
 | |
| 
 | |
|     const
 | |
|        DJP_FED_MANUAL = 1;
 | |
|        DJP_FED_AUTOMATIC = 2;
 | |
| 
 | |
|     type
 | |
| 
 | |
|        TDJPT_FEED = Cardinal;
 | |
| 
 | |
|        TPDJPT_FEED = Cardinal;
 | |
|     { -----------------------------------------------------------------
 | |
|           DJP_SJ_COPIES
 | |
| 
 | |
|           This is the number of copies on a per page basis.  This is not
 | |
|           enumerateable.
 | |
|         }
 | |
| 
 | |
|        TDJPT_COPIES = Cardinal;
 | |
| 
 | |
|        TPDJPT_COPIES = Cardinal;
 | |
|     { -----------------------------------------------------------------
 | |
|           DJP_SJ_SCALING
 | |
| 
 | |
|           This is a percentage value.  This is not enumerateable.
 | |
|         }
 | |
| 
 | |
|        TDJPT_SCALING = Longint;
 | |
| 
 | |
|        TPDJPT_SCALING = Longint;
 | |
|     { -----------------------------------------------------------------
 | |
|           DJP_SJ_FORMFEEDCONTROL
 | |
| 
 | |
|           This is a property that effects raw data jobs (print from the
 | |
|           command line, DOS print jobs, Windows print jobs). This checks
 | |
|           the very last byte of the data stream to see if it is a form
 | |
|           feed control character.
 | |
|         }
 | |
|     { Never add         }
 | |
| 
 | |
|     const
 | |
|        DJP_FFC_NONE = 1;
 | |
|     { Add if not seen   }
 | |
|        DJP_FFC_CONDITIONAL = 2;
 | |
|     { Always add        }
 | |
|        DJP_FFC_COMPULSORY = 3;
 | |
| 
 | |
|     type
 | |
| 
 | |
|        TDJPT_FORMFEEDCONTROL = Cardinal;
 | |
| 
 | |
|        TPDJPT_FORMFEEDCONTROL = Cardinal;
 | |
|     { -----------------------------------------------------------------
 | |
|           DJP_SJ_N_UP
 | |
| 
 | |
|           Number of logical pages per physical page (ex: 2-up, 4-up)
 | |
|         }
 | |
| 
 | |
|        TDJPT_NUP = Longint;
 | |
| 
 | |
|        TPDJPT_NUP = Longint;
 | |
|     { -----------------------------------------------------------------
 | |
|           DJP_CJ_OUTPUTBIN
 | |
| 
 | |
|           Setting will only use szBinname.
 | |
| 
 | |
|           Querying will return all fields filled in.
 | |
|         }
 | |
|     { djpOBN  }
 | |
|     { System Bin name                    }
 | |
|     {                      v-= Informational only =-v                           }
 | |
|     { Display Bin name  (translated)     }
 | |
|     { Bin id # (-1 for no id)            }
 | |
| 
 | |
|        TdjpOutputBin = record
 | |
|             szBinname : Str32;
 | |
|             szDisplayBinname : Str64;
 | |
|             lBinId : Longint;
 | |
|          end;
 | |
|        TDJPT_OUTPUTBIN = TdjpOutputBin;
 | |
|        TPDJPT_OUTPUTBIN = ^TdjpOutputBin;
 | |
|     { -----------------------------------------------------------------
 | |
|           DJP_CJ_TRAYNAME
 | |
| 
 | |
|           Setting will match only szTrayname.  The perfered way to set which
 | |
|           tray to use is DJP_CJ_FORM.  Otherwise, you are not guaranteed a
 | |
|           unique match for all three form, tray, and media possibilities.
 | |
| 
 | |
|           Querying will return all fields filled in.
 | |
|         }
 | |
|     { djpTry  }
 | |
|     { System Tray name                   }
 | |
|     {                      v-= Informational only =-v                           }
 | |
|     { Display Tray name  (translated)    }
 | |
|     { Simple tray id  (if not DJP_NONE)  }
 | |
| 
 | |
|        TdjpInputTray = record
 | |
|             szTrayname : Str32;
 | |
|             szDisplayTrayname : Str64;
 | |
|             djpttTrayID : TDJPT_TRAYTYPE;
 | |
|          end;
 | |
|        TDJPT_TRAYNAME = TdjpInputTray;
 | |
|        TPDJPT_TRAYNAME = ^TdjpInputTray;
 | |
| 
 | |
| 
 | |
| function DevOpenDC(ahab: HAB; lType: Longint; pszToken: PChar; lCount: Longint; var pdopData: DevOpenStruc; hdcComp: cardinal): cardinal; cdecl;
 | |
| function DevCloseDC(ahdc: cardinal): cardinal; cdecl;
 | |
| function DevEscape(ahdc: cardinal; lCode, lInCount: Longint; var pbInData; var plOutCount: Longint; var pbOutData): Longint; cdecl;
 | |
| function DevQueryCaps(ahdc: cardinal; lStart, lCount: Longint; var alArray: Longint): Longbool; cdecl;
 | |
| function DevQueryDeviceNames(ahab: HAB; pszDriverName: PChar; var pldn: Longint; aDeviceName: Str32; aDeviceDesc: Str64; var pldt: Longint; aDataType: Str16): Longbool; cdecl;
 | |
| function DevQueryHardcopyCaps(ahdc: cardinal; lStartForm, lForms: Longint; var phciHcInfo: HCInfo): Longint; cdecl;
 | |
| function DevPostDeviceModes(ahab: HAB; var pdrivDriverData: DrivData; pszDriverName, pszDeviceName, pszName: PChar; flOptions: cardinal): Longint; cdecl;
 | |
| 
 | |
| implementation
 | |
| 
 | |
| function DevOpenDC(ahab: HAB; lType: Longint; pszToken: PChar; lCount: Longint; var pdopData: DevOpenStruc; hdcComp: cardinal): cardinal; cdecl;
 | |
|     external 'PMGPI' index 610;
 | |
| function DevCloseDC(ahdc: cardinal): cardinal; cdecl;
 | |
|     external 'PMGPI' index 604;
 | |
| function DevEscape(ahdc: cardinal; lCode, lInCount: Longint; var pbInData; var plOutCount: Longint; var pbOutData): Longint; cdecl;
 | |
|     external 'PMGPI' index 605;
 | |
| function DevQueryCaps(ahdc: cardinal; lStart, lCount: Longint;var alArray: Longint): Longbool; cdecl;
 | |
|     external 'PMGPI' index 606;
 | |
| function DevQueryDeviceNames(ahab: HAB; pszDriverName: PChar; var pldn: Longint; aDeviceName: Str32; aDeviceDesc: Str64; var pldt: Longint; aDataType: Str16): Longbool; cdecl;
 | |
|     external 'PMGPI' index 607;
 | |
| function DevQueryHardcopyCaps(ahdc: cardinal; lStartForm, lForms: Longint; var phciHcInfo: HCInfo): Longint; cdecl;
 | |
|     external 'PMGPI' index 608;
 | |
| function DevPostDeviceModes(ahab: HAB; var pdrivDriverData: DrivData; pszDriverName, pszDeviceName, pszName: PChar; flOptions: cardinal): Longint; cdecl;
 | |
|     external 'PMGPI' index 609;
 | |
| 
 | |
|     { was
 | |
|    #define QUERYSIZE_HEADER_SIZE  (sizeof (QUERYSIZE) - sizeof (((PQUERYSIZE)NULL)->aTuples))
 | |
|     }
 | |
| //    function QUERYSIZE_HEADER_SIZE : longint;
 | |
| //        { return type might be wrong }
 | |
| //        begin
 | |
| //           QUERYSIZE_HEADER_SIZE:=(sizeof(QUERYSIZE)) - (sizeof((TPQUERYSIZE(NULL))^.aTuples));
 | |
| //        end;
 | |
| 
 | |
| //   #define DJP_HEADER_SIZE        (sizeof (DJP_ITEM) - sizeof (((PDJP_ITEM)NULL)->ulValue))
 | |
| //   #define DJP_NEXT_STRUCTP(p)    ((PDJP_ITEM)((PBYTE)(p) + (p)->cb))
 | |
| //   #define DJP_ELEMENTP(s,t)      ((t*)&((s).ulValue))
 | |
| //   #define DJP_SET_ELEMENT(s,t,e) (*DJP_ELEMENTP (s,t) = (e))
 | |
| 
 | |
|     { was #define dname def_expr }
 | |
| //    function DJP_HEADER_SIZE : longint;
 | |
| //        { return type might be wrong }
 | |
| //        begin
 | |
| //           DJP_HEADER_SIZE:=(sizeof(DJP_ITEM)) - (sizeof((TPDJP_ITEM(NULL))^.ulValue));
 | |
| //        end;
 | |
| 
 | |
|     { was #define dname(params) para_def_expr }
 | |
|     { argument types are unknown }
 | |
| //    function DJP_NEXT_STRUCTP(p : longint) : TPDJP_ITEM;
 | |
| //      begin
 | |
| //         DJP_NEXT_STRUCTP:=TPDJP_ITEM((TPBYTE(p)) + (p^.cb));
 | |
| //      end;
 | |
| 
 | |
|     { was #define dname(params) para_def_expr }
 | |
|     { argument types are unknown }
 | |
| //    function DJP_ELEMENTP(s,t : longint) : ^Tt;
 | |
| //      begin
 | |
| //         DJP_ELEMENTP:=^Tt(@(s.ulValue));
 | |
| //      end;
 | |
| 
 | |
| end.
 | 
