~ubuntu-branches/debian/lenny/fpc/lenny

« back to all changes in this revision

Viewing changes to fpcsrc/rtl/os2/pmdev.pas

  • Committer: Bazaar Package Importer
  • Author(s): Mazen Neifer, Torsten Werner, Mazen Neifer
  • Date: 2008-05-17 17:12:11 UTC
  • mfrom: (3.1.9 intrepid)
  • Revision ID: james.westby@ubuntu.com-20080517171211-9qi33xhd9evfa0kg
Tags: 2.2.0-dfsg1-9
[ Torsten Werner ]
* Add Mazen Neifer to Uploaders field.

[ Mazen Neifer ]
* Moved FPC sources into a version dependent directory from /usr/share/fpcsrc
  to /usr/share/fpcsrc/${FPCVERSION}. This allow installing more than on FPC
  release.
* Fixed far call issue in compiler preventing building huge binearies.
  (closes: #477743)
* Updated building dependencies, recomennded and suggested packages.
* Moved fppkg to fp-utils as it is just a helper tool and is not required by
  compiler.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
{
 
2
    This file is part of the Free Pascal run time library.
 
3
    Copyright (c) 2002 by Yuri Prokushev (prokushev@freemail.ru).
 
4
 
 
5
    OS/2 Presentation Manager Device Context constants, types and
 
6
    function declarations
 
7
 
 
8
    See the file COPYING.FPC, included in this distribution,
 
9
    for details about the copyright.
 
10
 
 
11
    This program is distributed in the hope that it will be useful,
 
12
    but WITHOUT ANY WARRANTY; without even the implied warranty of
 
13
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
14
 
 
15
 **********************************************************************}
 
16
 
 
17
{Warning: This code is alfa. Future versions
 
18
 of this unit might not be compatible.}
 
19
 
 
20
unit pmdev;
 
21
 
 
22
interface
 
23
 
 
24
uses
 
25
  os2def;
 
26
 
 
27
//General DEV return values
 
28
const
 
29
  DEV_ERROR                       =0;
 
30
  DEV_OK                          =1;
 
31
 
 
32
//DC type for DevOpenDC
 
33
 
 
34
  OD_QUEUED                       =2;
 
35
  OD_DIRECT                       =5;
 
36
  OD_INFO                         =6;
 
37
  OD_METAFILE                     =7;
 
38
  OD_MEMORY                       =8;
 
39
  OD_METAFILE_NOQUERY             =9;
 
40
 
 
41
//codes for DevQueryCaps
 
42
  CAPS_FAMILY                     =0;
 
43
  CAPS_IO_CAPS                    =1;
 
44
  CAPS_TECHNOLOGY                 =2;
 
45
  CAPS_DRIVER_VERSION             =3;
 
46
  CAPS_WIDTH                      =4;  //pels
 
47
  CAPS_HEIGHT                     =5;  //pels
 
48
  CAPS_WIDTH_IN_CHARS             =6;
 
49
  CAPS_HEIGHT_IN_CHARS            =7;
 
50
  CAPS_HORIZONTAL_RESOLUTION      =8;  //pels per meter
 
51
  CAPS_VERTICAL_RESOLUTION        =9;  //pels per meter
 
52
  CAPS_CHAR_WIDTH                 =10; //pels
 
53
  CAPS_CHAR_HEIGHT                =11; //pels
 
54
  CAPS_SMALL_CHAR_WIDTH           =12; //pels
 
55
  CAPS_SMALL_CHAR_HEIGHT          =13; //pels
 
56
  CAPS_COLORS                     =14;
 
57
  CAPS_COLOR_PLANES               =15;
 
58
  CAPS_COLOR_BITCOUNT             =16;
 
59
  CAPS_COLOR_TABLE_SUPPORT        =17;
 
60
  CAPS_MOUSE_BUTTONS              =18;
 
61
  CAPS_FOREGROUND_MIX_SUPPORT     =19;
 
62
  CAPS_BACKGROUND_MIX_SUPPORT     =20;
 
63
  CAPS_DEVICE_WINDOWING           =31;
 
64
  CAPS_ADDITIONAL_GRAPHICS        =32;
 
65
  CAPS_VIO_LOADABLE_FONTS         =21;
 
66
  CAPS_WINDOW_BYTE_ALIGNMENT      =22;
 
67
  CAPS_BITMAP_FORMATS             =23;
 
68
  CAPS_RASTER_CAPS                =24;
 
69
  CAPS_MARKER_HEIGHT              =25; //pels
 
70
  CAPS_MARKER_WIDTH               =26; //pels
 
71
  CAPS_DEVICE_FONTS               =27;
 
72
  CAPS_GRAPHICS_SUBSET            =28;
 
73
  CAPS_GRAPHICS_VERSION           =29;
 
74
  CAPS_GRAPHICS_VECTOR_SUBSET     =30;
 
75
  CAPS_PHYS_COLORS                =33;
 
76
  CAPS_COLOR_INDEX                =34;
 
77
  CAPS_GRAPHICS_CHAR_WIDTH        =35;
 
78
  CAPS_GRAPHICS_CHAR_HEIGHT       =36;
 
79
  CAPS_HORIZONTAL_FONT_RES        =37;
 
80
  CAPS_VERTICAL_FONT_RES          =38;
 
81
  CAPS_DEVICE_FONT_SIM            =39;
 
82
  CAPS_LINEWIDTH_THICK            =40;
 
83
  CAPS_DEVICE_POLYSET_POINTS      =41;
 
84
 
 
85
//Constants for CAPS_IO_CAPS
 
86
  CAPS_IO_DUMMY                   =1;
 
87
  CAPS_IO_SUPPORTS_OP             =2;
 
88
  CAPS_IO_SUPPORTS_IP             =3;
 
89
  CAPS_IO_SUPPORTS_IO             =4;
 
90
 
 
91
//Constants for CAPS_TECHNOLOGY
 
92
  CAPS_TECH_UNKNOWN               =0;
 
93
  CAPS_TECH_VECTOR_PLOTTER        =1;
 
94
  CAPS_TECH_RASTER_DISPLAY        =2;
 
95
  CAPS_TECH_RASTER_PRINTER        =3;
 
96
  CAPS_TECH_RASTER_CAMERA         =4;
 
97
  CAPS_TECH_POSTSCRIPT            =5;
 
98
 
 
99
//Constants for CAPS_COLOR_TABLE_SUPPORT
 
100
  CAPS_COLTABL_RGB_8              =1;
 
101
  CAPS_COLTABL_RGB_8_PLUS         =2;
 
102
  CAPS_COLTABL_TRUE_MIX           =4;
 
103
  CAPS_COLTABL_REALIZE            =8;
 
104
 
 
105
//Constants for CAPS_FOREGROUND_MIX_SUPPORT
 
106
  CAPS_FM_OR                      =1;
 
107
  CAPS_FM_OVERPAINT               =2;
 
108
  CAPS_FM_XOR                     =8;
 
109
  CAPS_FM_LEAVEALONE             =16;
 
110
  CAPS_FM_AND                    =32;
 
111
  CAPS_FM_GENERAL_BOOLEAN        =64;
 
112
 
 
113
//Constants for CAPS_BACKGROUND_MIX_SUPPORT
 
114
  CAPS_BM_OR                      =1;
 
115
  CAPS_BM_OVERPAINT               =2;
 
116
  CAPS_BM_XOR                     =8;
 
117
  CAPS_BM_LEAVEALONE             =16;
 
118
  CAPS_BM_AND                    =32;
 
119
  CAPS_BM_GENERAL_BOOLEAN        =64;
 
120
  CAPS_BM_SRCTRANSPARENT        =128;
 
121
  CAPS_BM_DESTTRANSPARENT       =256;
 
122
 
 
123
//Constants for CAPS_DEVICE_WINDOWING
 
124
  CAPS_DEV_WINDOWING_SUPPORT      =1;
 
125
 
 
126
//Constants for CAPS_ADDITIONAL_GRAPHICS
 
127
  CAPS_VDD_DDB_TRANSFER            =1;
 
128
  CAPS_GRAPHICS_KERNING_SUPPORT    =2;
 
129
  CAPS_FONT_OUTLINE_DEFAULT        =4;
 
130
  CAPS_FONT_IMAGE_DEFAULT          =8;
 
131
//bits represented by values 16L and 32L are reserved
 
132
  CAPS_SCALED_DEFAULT_MARKERS     =64;
 
133
  CAPS_COLOR_CURSOR_SUPPORT      =128;
 
134
  CAPS_PALETTE_MANAGER           =256;
 
135
  CAPS_COSMETIC_WIDELINE_SUPPORT =512;
 
136
  CAPS_DIRECT_FILL              =1024;
 
137
  CAPS_REBUILD_FILLS            =2048;
 
138
  CAPS_CLIP_FILLS               =$00001000; //4096L
 
139
  CAPS_ENHANCED_FONTMETRICS     =$00002000; //8192L
 
140
  CAPS_TRANSFORM_SUPPORT        =$00004000; //16384L
 
141
 
 
142
//Constants for CAPS_WINDOW_BYTE_ALIGNMENT
 
143
  CAPS_BYTE_ALIGN_REQUIRED        =0;
 
144
  CAPS_BYTE_ALIGN_RECOMMENDED     =1;
 
145
  CAPS_BYTE_ALIGN_NOT_REQUIRED    =2;
 
146
 
 
147
//Constants for CAPS_RASTER_CAPS
 
148
  CAPS_RASTER_BITBLT              =1;
 
149
  CAPS_RASTER_BANDING             =2;
 
150
  CAPS_RASTER_BITBLT_SCALING      =4;
 
151
  CAPS_RASTER_SET_PEL            =16;
 
152
  CAPS_RASTER_FONTS              =32;
 
153
  CAPS_RASTER_FLOOD_FILL         =64;
 
154
 
 
155
//structures for DEVESC_QUERYVIOCELLSIZES
 
156
 
 
157
type
 
158
  PVioSizeCount=^VioSizeCount;
 
159
  VioSizeCount=record
 
160
    maxcount: Longint;
 
161
    count: Longint;
 
162
  end;
 
163
 
 
164
  PVioFontCellSize=^VioFontCellSize;
 
165
  VioFontCellSize=record
 
166
    cx: Longint;
 
167
    cy: Longint;
 
168
  end;
 
169
 
 
170
//structure for DEVESC_GETSCALINGFACTOR
 
171
  PSFactors=^SFactors;
 
172
  SFactors=record
 
173
    x: Longint;
 
174
    y: Longint;
 
175
  end;
 
176
 
 
177
//structure for DEVESC_NEXTBAND
 
178
  PBandRect=^BandRect;
 
179
  BandRect=record
 
180
    xleft: Longint;
 
181
    ybottom: Longint;
 
182
    xright: Longint;
 
183
    ytop: Longint;
 
184
  end;
 
185
 
 
186
//return codes for DevEscape
 
187
const
 
188
  DEVESC_ERROR                  =-1;
 
189
  DEVESC_NOTIMPLEMENTED         =0;
 
190
 
 
191
//codes for DevEscape
 
192
  DEVESC_QUERYESCSUPPORT      =   0;
 
193
  DEVESC_GETSCALINGFACTOR     =   1;
 
194
  DEVESC_QUERYVIOCELLSIZES    =   2;
 
195
  DEVESC_GETCP                =8000;
 
196
 
 
197
  DEVESC_STARTDOC             =8150;
 
198
  DEVESC_ENDDOC               =8151;
 
199
  DEVESC_NEXTBAND             =8152;
 
200
  DEVESC_ABORTDOC             =8153;
 
201
 
 
202
  DEVESC_NEWFRAME            =16300;
 
203
  DEVESC_DRAFTMODE           =16301;
 
204
  DEVESC_FLUSHOUTPUT         =16302;
 
205
  DEVESC_RAWDATA             =16303;
 
206
  DEVESC_SETMODE             =16304;
 
207
 
 
208
  DEVESC_DBE_FIRST           =24450;
 
209
  DEVESC_DBE_LAST            =24455;
 
210
 
 
211
//DevEscape codes for adding extra space to character strings
 
212
  DEVESC_CHAR_EXTRA          =16998;
 
213
  DEVESC_BREAK_EXTRA         =16999;
 
214
 
 
215
//codes for DevEscape PM_Q_ESC spool files
 
216
  DEVESC_STD_JOURNAL         =32600;
 
217
 
 
218
//structure for DEVESC_SETMODE
 
219
type
 
220
  PEscMode=^EscMode;
 
221
  EscMode=record
 
222
    mode: cardinal;
 
223
    modedata: byte;
 
224
  end;
 
225
 
 
226
//return codes for DevPostDeviceModes
 
227
const
 
228
  DPDM_ERROR                   =-1;
 
229
  DPDM_NONE                    =0;
 
230
 
 
231
//codes for DevPostDeviceModes
 
232
  DPDM_POSTJOBPROP             =0;
 
233
  DPDM_CHANGEPROP              =1;
 
234
  DPDM_QUERYJOBPROP            =2;
 
235
 
 
236
//string types for DevQueryDeviceNames
 
237
type
 
238
  Str16= string [15];
 
239
  Str32= string [31];
 
240
  Str64= string [63];
 
241
 
 
242
//return code for DevQueryHardcopyCaps
 
243
const
 
244
  DQHC_ERROR                    =-1;
 
245
 
 
246
//codes for DevQueryHardcopyCaps
 
247
const
 
248
  HCAPS_CURRENT                 =1;
 
249
  HCAPS_SELECTABLE              =2;
 
250
 
 
251
//structure for DevQueryHardcopyCaps
 
252
type
 
253
  PHCInfo=^HCInfo;
 
254
  HCInfo=record
 
255
    szFormname: Str32;
 
256
    cx: Longint;
 
257
    cy: Longint;
 
258
    xLeftClip: Longint;
 
259
    yBottomClip: Longint;
 
260
    xRightClip: Longint;
 
261
    yTopClip: Longint;
 
262
    xPels: Longint;
 
263
    yPels: Longint;
 
264
    flAttributes: Longint;
 
265
  end;
 
266
 
 
267
    { -----------------------------------------------------------------
 
268
          Tuple Item used for QUERYSIZE
 
269
        }
 
270
    { djpQRT  }
 
271
    { I - Property                       }
 
272
    { I - type (DJP_ALL or DJP_CURRENT)  }
 
273
    {                                                                }
 
274
 
 
275
    type
 
276
 
 
277
       TdjpQueryTuple = record
 
278
            ulProperty : Cardinal;
 
279
            lType : Longint;
 
280
         end;
 
281
       TQUERYTUPLE = TdjpQueryTuple;
 
282
       TPQUERYTUPLE = ^TdjpQueryTuple;
 
283
    { -----------------------------------------------------------------
 
284
          Query Size Structure for DEVESC_QUERYSIZE
 
285
        }
 
286
    { djpQRS  }
 
287
    { I - Size of entire structure       }
 
288
    { O - Size returned;                 }
 
289
    { I - Start of tuple list            }
 
290
    {                                 use DJP_NONE for end of list   }
 
291
 
 
292
       TdjpQuerySize = record
 
293
            cb : Cardinal;
 
294
            ulSizeNeeded : Cardinal;
 
295
            aTuples : array[0..0] of TQUERYTUPLE;
 
296
         end;
 
297
       TQUERYSIZE = TdjpQuerySize;
 
298
       TPQUERYSIZE = ^TdjpQuerySize;
 
299
    { was #define dname def_expr }
 
300
//    function QUERYSIZE_HEADER_SIZE : longint;
 
301
        { return type might be wrong }
 
302
 
 
303
    { -----------------------------------------------------------------
 
304
          Dynamic Job Property Item
 
305
        }
 
306
    { djpITM  }
 
307
    { I/O - sizeof DJP_ITEM structure    }
 
308
    { I   - Which property               }
 
309
    { I/O - DJP_ALL or DJP_CURRENT.      }
 
310
    {                                   DJP_ERROR_XXX if error.      }
 
311
    { O   - How many elements have been  }
 
312
    {                                   returned                     }
 
313
    { O   - Variably sized based on      }
 
314
    {                                   ulProperty.  The smallest    }
 
315
    {                                   is a ULONG in size           }
 
316
 
 
317
    type
 
318
 
 
319
       TdjpItem = record
 
320
            cb : Cardinal;
 
321
            ulProperty : Cardinal;
 
322
            lType : Longint;
 
323
            ulNumReturned : Cardinal;
 
324
            ulValue : Cardinal;
 
325
         end;
 
326
       TDJP_ITEM = TdjpItem;
 
327
       TPDJP_ITEM = ^TdjpItem;
 
328
    { was #define dname def_expr }
 
329
//    function DJP_HEADER_SIZE : longint;
 
330
        { return type might be wrong }
 
331
 
 
332
    { was #define dname(params) para_def_expr }
 
333
    { argument types are unknown }
 
334
//    function DJP_NEXT_STRUCTP(p : longint) : TPDJP_ITEM;
 
335
 
 
336
    { was #define dname(params) para_def_expr }
 
337
    { argument types are unknown }
 
338
//    function DJP_ELEMENTP(s,t : longint) : ^Tt;
 
339
 
 
340
(* error
 
341
   #define DJP_SET_ELEMENT(s,t,e) ( *DJP_ELEMENTP (s,t) = (e))
 
342
in define line 83 *)
 
343
    { -----------------------------------------------------------------
 
344
          Types of Dynamic Job Properties
 
345
 
 
346
          To see if the driver is enabled use,
 
347
              DevEscape      (DEVESC_QUERYESCSUPPORT,
 
348
                              DEVESC_STARTDOC_WPROP, ...)
 
349
          and DevQueryDevice (DEVQRY_QUERYSUPPORT,
 
350
                              DEVESC_QUERYJOBPROPERTIES, ...)
 
351
 
 
352
          NOTE: The C/S in the defines indicate the complexity or size of
 
353
                the information.  If it is s, then the size is ULONG sized
 
354
                and no special processing for the next element needs to be
 
355
                done.
 
356
                The J/P in the defines indicate the class.  J stands for job
 
357
                properties and P stands for printer properties.
 
358
        }
 
359
    { also End Of List marker  }
 
360
 
 
361
    const
 
362
       DJP_NONE = 0;
 
363
       DJP_SJ_ORIENTATION = 1;
 
364
       DJP_CJ_RESOLUTION = 2;
 
365
       DJP_SJ_BITSPERPEL = 3;
 
366
       DJP_SJ_COLOR = 4;
 
367
       DJP_SJ_PRINTQUALITY = 5;
 
368
       DJP_SJ_PAPERSIZE = 6;
 
369
       DJP_SJ_TRAYTYPE = 7;
 
370
       DJP_SJ_MEDIA = 8;
 
371
       DJP_SJ_MEDIA_COLOR = 9;
 
372
       DJP_CJ_FORM = 10;
 
373
       DJP_CJ_MIXEDFORMS = 11;
 
374
       DJP_SJ_FONTDOWNLOADING = 12;
 
375
       DJP_SJ_DUPLEX = 13;
 
376
       DJP_SJ_COLLATE = 14;
 
377
       DJP_SJ_FEED = 15;
 
378
       DJP_SJ_COPIES = 16;
 
379
       DJP_SJ_SCALING = 17;
 
380
       DJP_SJ_FORMFEEDCONTROL = 18;
 
381
       DJP_SJ_N_UP = 19;
 
382
       DJP_CJ_OUTPUTBIN = 20;
 
383
       DJP_CJ_TRAYNAME = 21;
 
384
    { Types for DEVESC_QUERYJOBPROPERTIES / DEVESC_SETJOBPROPERTIES
 
385
        }
 
386
    { enumerate the property  }
 
387
       DJP_ALL = 1;
 
388
    { from job properties     }
 
389
       DJP_CURRENT = 2;
 
390
    { Errors for DEVESC_QUERYJOBPROPERTIES / DEVESC_SETJOBPROPERTIES
 
391
        }
 
392
    { driver doesnt support that property  }
 
393
       DJP_ERROR_NOT_SUPPORTED = -(1);
 
394
    { not in the valid range               }
 
395
       DJP_ERROR_OUT_OF_RANGE = -(2);
 
396
    { not enumerateable                    }
 
397
       DJP_ERROR_NOT_ENUM = -(3);
 
398
    { field not proper value               }
 
399
       DJP_ERROR_INV_PARMS = -(4);
 
400
    { -----------------------------------------------------------------
 
401
          DJP_SJ_ORIENTATION
 
402
        }
 
403
       DJP_ORI_PORTRAIT = 1;
 
404
       DJP_ORI_LANDSCAPE = 2;
 
405
       DJP_ORI_REV_PORTRAIT = 3;
 
406
       DJP_ORI_REV_LANDSCAPE = 4;
 
407
 
 
408
    type
 
409
 
 
410
       TDJPT_ORIENTATION = Cardinal;
 
411
 
 
412
       TPDJPT_ORIENTATION = Cardinal;
 
413
    { -----------------------------------------------------------------
 
414
          DJP_CJ_RESOLUTION
 
415
        }
 
416
    { djpRES  }
 
417
    { X resolution (in dots per inch)  }
 
418
    { Y resolution (in dots per inch)  }
 
419
 
 
420
       TdjpResolution = record
 
421
            usXResolution : Word;
 
422
            usYResolution : Word;
 
423
         end;
 
424
       TDJPT_RESOLUTION = TdjpResolution;
 
425
       TPDJPT_RESOLUTION = ^TdjpResolution;
 
426
    { -----------------------------------------------------------------
 
427
          DJP_SJ_BITSPERPEL
 
428
        }
 
429
 
 
430
       TDJPT_BITSPERPEL = Cardinal;
 
431
 
 
432
       TPDJPT_BITSPERPEL = Cardinal;
 
433
    { -----------------------------------------------------------------
 
434
          DJP_SJ_COLOR
 
435
        }
 
436
 
 
437
    const
 
438
       DJP_CLR_MONOCHROME = 1;
 
439
       DJP_CLR_COLOR = 2;
 
440
 
 
441
    type
 
442
 
 
443
       TDJPT_COLOR = Cardinal;
 
444
 
 
445
       TPDJPT_COLOR = Cardinal;
 
446
    { -----------------------------------------------------------------
 
447
          DJP_SJ_PRINTQUALITY
 
448
 
 
449
          Note: DJP_PQL_DRAFT is the worst quality.  In the future, there
 
450
                may be better qualities (such as DJP_PQL_ULTRA_HIGH) which
 
451
                will be numerically greater than DJP_PQL_HIGH.
 
452
        }
 
453
 
 
454
    const
 
455
       DJP_PQL_DRAFT = 1;
 
456
       DJP_PQL_LOW = 2;
 
457
       DJP_PQL_MEDIUM = 3;
 
458
       DJP_PQL_HIGH = 4;
 
459
       DJP_PQL_LAST = DJP_PQL_HIGH;
 
460
 
 
461
    type
 
462
 
 
463
       TDJPT_PRINTQUALITY = Cardinal;
 
464
 
 
465
       TPDJPT_PRINTQUALITY = Cardinal;
 
466
    { -----------------------------------------------------------------
 
467
          DJP_SJ_PAPERSIZE
 
468
 
 
469
          Note: it is recommended to use DJP_CJ_FORM to chage the papersize.
 
470
                                                        approximate size
 
471
        }
 
472
    {  inches       millimeters  }
 
473
 
 
474
    const
 
475
       DJP_PSI_NONE = 0;
 
476
    {  8.5  x 11    216 x 279    }
 
477
       DJP_PSI_LETTER = 1;
 
478
    {  8.5  x 14    216 x 356    }
 
479
       DJP_PSI_LEGAL = 2;
 
480
    { 13.58 x 11    345 x 279    }
 
481
       DJP_PSI_WIDE = 3;
 
482
    { 17    x 22    431 x 558    }
 
483
       DJP_PSI_CSHEET = 4;
 
484
    { 22    x 34    558 x 863    }
 
485
       DJP_PSI_DSHEET = 5;
 
486
    { 34    x 44    863 x 1117   }
 
487
       DJP_PSI_ESHEET = 6;
 
488
    {                            }
 
489
       DJP_PSI_LETTERSMALL = 7;
 
490
    { 11    x 17    279 x 431    }
 
491
       DJP_PSI_TABLOID = 8;
 
492
    { 17    x 11    431 x 279    }
 
493
       DJP_PSI_LEDGER = 9;
 
494
    {  5.5  x  8.5  139 x 216    }
 
495
       DJP_PSI_STATEMENT = 10;
 
496
    {  7.25 x 10.5  184 x 266    }
 
497
       DJP_PSI_EXECUTIVE = 11;
 
498
    { 33.11 x 46.81 841 x 1189   }
 
499
       DJP_PSI_A0 = 12;
 
500
    { 23.39 x 33.11 594 x 841    }
 
501
       DJP_PSI_A1 = 13;
 
502
    { 16.54 x 23.39 420 x 594    }
 
503
       DJP_PSI_A2 = 14;
 
504
    { 11.7  x 16.54 297 x 420    }
 
505
       DJP_PSI_A3 = 15;
 
506
    {  8.3  x 11.7  210 x 297    }
 
507
       DJP_PSI_A4 = 16;
 
508
    {                            }
 
509
       DJP_PSI_A4_SMALL = 17;
 
510
    {  5.83 x  8.27 148 x 210    }
 
511
       DJP_PSI_A5 = 18;
 
512
    {  9.84 x 13.94 250 x 354    }
 
513
       DJP_PSI_B4 = 19;
 
514
    {  7.17 x 10.12 182 x 257    }
 
515
       DJP_PSI_B5 = 20;
 
516
    {  8.5  x 13    216 x 330    }
 
517
       DJP_PSI_FOLIO = 21;
 
518
    {  8.46 x 10.83 215 x 275    }
 
519
       DJP_PSI_QUATRO = 22;
 
520
    { 10    x 14    254 x 355    }
 
521
       DJP_PSI_10X14 = 23;
 
522
    { 11    x 17    279 x 431    }
 
523
       DJP_PSI_11X17 = 24;
 
524
    {                            }
 
525
       DJP_PSI_NOTE = 25;
 
526
    {                            }
 
527
       DJP_PSI_ENV_9 = 26;
 
528
    {                            }
 
529
       DJP_PSI_ENV_10 = 27;
 
530
    {                            }
 
531
       DJP_PSI_ENV_11 = 28;
 
532
    {                            }
 
533
       DJP_PSI_ENV_12 = 29;
 
534
    {                            }
 
535
       DJP_PSI_ENV_14 = 30;
 
536
    {                            }
 
537
       DJP_PSI_ENV_DL = 31;
 
538
    {                            }
 
539
       DJP_PSI_ENV_A2 = 32;
 
540
    {                            }
 
541
       DJP_PSI_ENV_C3 = 33;
 
542
    {                            }
 
543
       DJP_PSI_ENV_C4 = 34;
 
544
    {                            }
 
545
       DJP_PSI_ENV_C5 = 35;
 
546
    {                            }
 
547
       DJP_PSI_ENV_C6 = 36;
 
548
    {                            }
 
549
       DJP_PSI_ENV_C65 = 37;
 
550
    {                            }
 
551
       DJP_PSI_ENV_C9 = 38;
 
552
    {                            }
 
553
       DJP_PSI_ENV_C10 = 39;
 
554
    {                            }
 
555
       DJP_PSI_ENV_B4 = 40;
 
556
    {                            }
 
557
       DJP_PSI_ENV_B5 = 41;
 
558
    {                            }
 
559
       DJP_PSI_ENV_B6 = 42;
 
560
    {                            }
 
561
       DJP_PSI_ENV_ITALY = 43;
 
562
    {                            }
 
563
       DJP_PSI_ENV_MONARCH = 44;
 
564
    {                            }
 
565
       DJP_PSI_ENV_PERSONAL = 45;
 
566
    {                            }
 
567
       DJP_PSI_FANFOLD_US = 46;
 
568
    {                            }
 
569
       DJP_PSI_FANFOLD_STD_GERMAN = 47;
 
570
    {                            }
 
571
       DJP_PSI_FANFOLD_LGL_GERMAN = 48;
 
572
    {                            }
 
573
       DJP_PSI_ARCHITECT_BSHEET = 49;
 
574
    {                            }
 
575
       DJP_PSI_ARCHITECT_CSHEET = 50;
 
576
    {                            }
 
577
       DJP_PSI_ARCHITECT_DSHEET = 51;
 
578
    {                            }
 
579
       DJP_PSI_ARCHITECT_ESHEET = 52;
 
580
    {                            }
 
581
       DJP_PSI_CARD_A6 = 53;
 
582
    {                            }
 
583
       DJP_PSI_CARD_4X6 = 54;
 
584
    {                            }
 
585
       DJP_PSI_CARD_5X8 = 55;
 
586
    {                            }
 
587
       DJP_PSI_CARD_HAGAKI = 56;
 
588
    {  1.10 x 3.50   28 x 89     }
 
589
       DJP_PSI_LABEL_STANDARD = 57;
 
590
    {  3.98 x 2.13  101 x 54     }
 
591
       DJP_PSI_LABEL_SHIPPING = 58;
 
592
    {  2.76 x 2.13   70 x 54     }
 
593
       DJP_PSI_LABEL_DISK = 59;
 
594
    {  3.50 x 1.42   89 x 36     }
 
595
       DJP_PSI_LABEL_EURO = 60;
 
596
    {                            }
 
597
       DJP_PSI_CARD_OUFUKU_HAGAKI = 61;
 
598
    {                            }
 
599
       DJP_PSI_B0 = 62;
 
600
    {                            }
 
601
       DJP_PSI_B1 = 63;
 
602
    {                            }
 
603
       DJP_PSI_B2 = 64;
 
604
    {                            }
 
605
       DJP_PSI_B3 = 65;
 
606
    {                            }
 
607
       DJP_PSI_B6 = 66;
 
608
    {                            }
 
609
       DJP_PSI_B7 = 67;
 
610
    {                            }
 
611
       DJP_PSI_B8 = 68;
 
612
    {                            }
 
613
       DJP_PSI_B9 = 69;
 
614
    {                            }
 
615
       DJP_PSI_B10 = 70;
 
616
    {                            }
 
617
       DJP_PSI_B0_JIS = 71;
 
618
    {                            }
 
619
       DJP_PSI_B1_JIS = 72;
 
620
    {                            }
 
621
       DJP_PSI_B2_JIS = 73;
 
622
    {                            }
 
623
       DJP_PSI_B3_JIS = 74;
 
624
    {                            }
 
625
       DJP_PSI_B4_JIS = 75;
 
626
    {                            }
 
627
       DJP_PSI_B5_JIS = 76;
 
628
    {                            }
 
629
       DJP_PSI_B6_JIS = 77;
 
630
    {                            }
 
631
       DJP_PSI_B7_JIS = 78;
 
632
    {                            }
 
633
       DJP_PSI_B8_JIS = 79;
 
634
    {                            }
 
635
       DJP_PSI_B9_JIS = 80;
 
636
    {                            }
 
637
       DJP_PSI_B10_JIS = 81;
 
638
       DJP_PSI_LAST = DJP_PSI_B10_JIS;
 
639
 
 
640
    type
 
641
 
 
642
       TDJPT_PAPERSIZE = Longint;
 
643
 
 
644
       TPDJPT_PAPERSIZE = Longint;
 
645
    { -----------------------------------------------------------------
 
646
          DJP_SJ_TRAYTYPE
 
647
 
 
648
          Note: it is recommended to use DJP_CJ_FORM to chage the tray type.
 
649
        }
 
650
 
 
651
    const
 
652
       DJP_TRY_NONE = 0;
 
653
       DJP_TRY_UPPER = 1;
 
654
       DJP_TRY_ONLYONE = DJP_TRY_UPPER;
 
655
       DJP_TRY_LOWER = 2;
 
656
       DJP_TRY_MIDDLE = 3;
 
657
       DJP_TRY_MANUAL = 4;
 
658
       DJP_TRY_ENVELOPE = 5;
 
659
       DJP_TRY_ENVMANUAL = 6;
 
660
       DJP_TRY_AUTO = 7;
 
661
       DJP_TRY_TRACTOR = 8;
 
662
       DJP_TRY_SMALLFMT = 9;
 
663
       DJP_TRY_LARGEFMT = 10;
 
664
       DJP_TRY_LARGECAPACITY = 11;
 
665
       DJP_TRY_CASSETTE = 12;
 
666
       DJP_TRY_LAST = DJP_TRY_CASSETTE;
 
667
 
 
668
    type
 
669
 
 
670
       TDJPT_TRAYTYPE = Cardinal;
 
671
 
 
672
       TPDJPT_TRAYTYPE = Cardinal;
 
673
    { -----------------------------------------------------------------
 
674
          DJP_SJ_MEDIA
 
675
 
 
676
          Note: it is recommended to use DJP_CJ_FORM to chage the media type.
 
677
        }
 
678
 
 
679
    const
 
680
       DJP_MED_NONE = 0;
 
681
       DJP_MED_PLAIN = 1;
 
682
       DJP_MED_TRANSPARENCY = 2;
 
683
       DJP_MED_GLOSSY = 3;
 
684
       DJP_MED_SPECIAL = 4;
 
685
       DJP_MED_COATED = 5;
 
686
       DJP_MED_BACKPRINT = 6;
 
687
       DJP_MED_CLOTH = 7;
 
688
       DJP_MED_THICK = 8;
 
689
       DJP_MED_STATIONARY = 9;
 
690
       DJP_MED_ENVELOPE = 10;
 
691
       DJP_MED_CONTINUOUS_LONG = 11;
 
692
       DJP_MED_CONTINUOUS_SHORT = 12;
 
693
       DJP_MED_TAB_STOCK = 13;
 
694
       DJP_MED_MULTI_PART_FORM = 14;
 
695
       DJP_MED_LABELS = 15;
 
696
       DJP_MED_LAST = DJP_MED_LABELS;
 
697
 
 
698
    type
 
699
 
 
700
       TDJPT_MEDIA = Cardinal;
 
701
 
 
702
       TPDJPT_MEDIA = Cardinal;
 
703
    { -----------------------------------------------------------------
 
704
          DJP_SJ_MEDIA_COLOR
 
705
 
 
706
          Select the media color (for the same media types).
 
707
        }
 
708
 
 
709
    const
 
710
       DJP_MDC_BLUE = 1;
 
711
       DJP_MDC_BLUFF = 2;
 
712
       DJP_MDC_GOLDENROD = 3;
 
713
       DJP_MDC_GREEN = 4;
 
714
       DJP_MDC_PINK = 5;
 
715
       DJP_MDC_TRANSPARENT = 6;
 
716
       DJP_MDC_WHITE = 7;
 
717
       DJP_MDC_YELLOW = 8;
 
718
       DJP_MDC_LAST = DJP_MDC_YELLOW;
 
719
 
 
720
    type
 
721
 
 
722
       TDJPT_MEDIA_COLOR = Cardinal;
 
723
 
 
724
       TPDJPT_MEDIA_COLOR = Cardinal;
 
725
    { -----------------------------------------------------------------
 
726
          DJP_CJ_FORM
 
727
 
 
728
          Setting will match all three fields.  If szTrayname or szMedianame
 
729
             is null then it will be defaulted to the first one found.
 
730
 
 
731
          Querying will return all fields filled in.
 
732
        }
 
733
    { djpFRM  }
 
734
    { System Form name                   }
 
735
    { System Tray name                   }
 
736
    { System Media name                  }
 
737
    {                      v-= Informational only =-v                           }
 
738
    { Corresponding hard copy info       }
 
739
    { Display Form name  (translated)    }
 
740
    { Display Tray name  (translated)    }
 
741
    { Display Media name (translated)    }
 
742
    { Simple form id  (if not DJP_NONE)  }
 
743
    { Simple tray id  (if not DJP_NONE)  }
 
744
    { Simple media id (if not DJP_NONE)  }
 
745
 
 
746
       TdjpForm = record
 
747
            szFormname : Str32;
 
748
            szTrayname : Str32;
 
749
            szMedianame : Str32;
 
750
            ahcInfo : HCINFO;
 
751
            szDisplayFormname : Str64;
 
752
            szDisplayTrayname : Str64;
 
753
            szDisplayMedianame : Str64;
 
754
            djppsFormID : TDJPT_PAPERSIZE;
 
755
            djpttTrayID : TDJPT_TRAYTYPE;
 
756
            djpmdMediaID : TDJPT_MEDIA;
 
757
         end;
 
758
       TDJPT_FORM = TdjpForm;
 
759
       TPDJPT_FORM = ^TdjpForm;
 
760
    { -----------------------------------------------------------------
 
761
          DJP_CJ_MIXEDFORMS
 
762
 
 
763
          This is unique in that both setting and querying can have multiple
 
764
          elements.  Both the first page and the last page are DJP_MXF_INFINITY
 
765
          (which is the separator for individual elements).
 
766
          Some examples are:
 
767
 
 
768
          - Only one form (form1) for the entire job.
 
769
            (DJP_MXF_INFINITY, DJP_MXF_INFINITY, form1)
 
770
 
 
771
          - Page 1 has form1, then pages 2 ... n have form2.
 
772
            (DJP_MXF_INFINITY, 1, form1) (2, DJP_MXF_INFINITY, form2)
 
773
 
 
774
          - Even pages have form1 and odd pages have form2
 
775
            (DJP_MXF_INFINITY, DJP_MXF_ODD, form1) (DJP_MXF_EVEN, DJP_MXF_INFINITY, form2)
 
776
            or (DJP_MXF_INFINITY, DJP_MXF_EVEN, form2) (DJP_MXF_ODD, DJP_MXF_INFINITY, form1)
 
777
 
 
778
          - First page has form1, even pages have form2 and odd pages have form3
 
779
            (DJP_MXF_INFINITY, 1, form1) (DJP_MXF_ODD, DJP_MXF_ODD, form1) (DJP_MXF_EVEN, DJP_MXF_INFINITY, form2)
 
780
            or (DJP_MXF_INFINITY, 1, form1) (DJP_MXF_EVEN, DJP_MXF_EVEN, form2) (DJP_MXF_ODD, DJP_MXF_INFINITY, form1)
 
781
 
 
782
        }
 
783
 
 
784
    const
 
785
       DJP_MXF_INFINITY = -(1);
 
786
       DJP_MXF_ODD = -(2);
 
787
       DJP_MXF_EVEN = -(3);
 
788
    { djpMXF  }
 
789
    { Starting page number            }
 
790
    { Ending page number              }
 
791
    { Form associated with the range  }
 
792
 
 
793
    type
 
794
 
 
795
       TdjpMixedForms = record
 
796
            lStartRange : Longint;
 
797
            lEndRange : Longint;
 
798
            djpfmForm : TDJPT_FORM;
 
799
         end;
 
800
       TDJPT_MIXEDFORMS = TdjpMixedForms;
 
801
       TPDJPT_MIXEDFORMS = ^TdjpMixedForms;
 
802
    { -----------------------------------------------------------------
 
803
          DJP_SJ_FONTDOWNLOADING
 
804
        }
 
805
    { Device does not support downloading }
 
806
 
 
807
    const
 
808
       DJP_FDL_NONE = 0;
 
809
    { Download fonts to printer           }
 
810
       DJP_FDL_DOWNLOAD = 1;
 
811
    { Rasterize fonts                     }
 
812
       DJP_FDL_BITMAP = 2;
 
813
    { Substitute device fonts for system  }
 
814
       DJP_FDL_SUBSTITUTE = 3;
 
815
 
 
816
    type
 
817
 
 
818
       TDJPT_FONTDOWNLOADING = Cardinal;
 
819
 
 
820
       TPDJPT_FONTDOWNLOADING = Cardinal;
 
821
    { -----------------------------------------------------------------
 
822
          DJP_SJ_DUPLEX
 
823
        }
 
824
    { Device does not support duplex      }
 
825
 
 
826
    const
 
827
       DJP_DUP_NONE = 0;
 
828
    { Duplex is turned off                }
 
829
       DJP_DUP_OFF = 1;
 
830
       DJP_DUP_BOOK = 2;
 
831
       DJP_DUP_FLIP = 3;
 
832
 
 
833
    type
 
834
 
 
835
       TDJPT_DUPLEX = Cardinal;
 
836
 
 
837
       TPDJPT_DUPLEX = Cardinal;
 
838
    { -----------------------------------------------------------------
 
839
          DJP_SJ_COLLATE
 
840
        }
 
841
    { Device does not support collation   }
 
842
 
 
843
    const
 
844
       DJP_COL_NONE = 0;
 
845
       DJP_COL_OFF = 1;
 
846
       DJP_COL_ON = 2;
 
847
    { more for printer dialogs than       }
 
848
       DJP_COL_PRINTER_SETTING = 3;
 
849
    { programmatic control.  Use          }
 
850
    { the setting on the printer panel.   }
 
851
 
 
852
    type
 
853
 
 
854
       TDJPT_COLLATE = Cardinal;
 
855
 
 
856
       TPDJPT_COLLATE = Cardinal;
 
857
    { -----------------------------------------------------------------
 
858
          DJP_SJ_FEED
 
859
        }
 
860
 
 
861
    const
 
862
       DJP_FED_MANUAL = 1;
 
863
       DJP_FED_AUTOMATIC = 2;
 
864
 
 
865
    type
 
866
 
 
867
       TDJPT_FEED = Cardinal;
 
868
 
 
869
       TPDJPT_FEED = Cardinal;
 
870
    { -----------------------------------------------------------------
 
871
          DJP_SJ_COPIES
 
872
 
 
873
          This is the number of copies on a per page basis.  This is not
 
874
          enumerateable.
 
875
        }
 
876
 
 
877
       TDJPT_COPIES = Cardinal;
 
878
 
 
879
       TPDJPT_COPIES = Cardinal;
 
880
    { -----------------------------------------------------------------
 
881
          DJP_SJ_SCALING
 
882
 
 
883
          This is a percentage value.  This is not enumerateable.
 
884
        }
 
885
 
 
886
       TDJPT_SCALING = Longint;
 
887
 
 
888
       TPDJPT_SCALING = Longint;
 
889
    { -----------------------------------------------------------------
 
890
          DJP_SJ_FORMFEEDCONTROL
 
891
 
 
892
          This is a property that effects raw data jobs (print from the
 
893
          command line, DOS print jobs, Windows print jobs). This checks
 
894
          the very last byte of the data stream to see if it is a form
 
895
          feed control character.
 
896
        }
 
897
    { Never add         }
 
898
 
 
899
    const
 
900
       DJP_FFC_NONE = 1;
 
901
    { Add if not seen   }
 
902
       DJP_FFC_CONDITIONAL = 2;
 
903
    { Always add        }
 
904
       DJP_FFC_COMPULSORY = 3;
 
905
 
 
906
    type
 
907
 
 
908
       TDJPT_FORMFEEDCONTROL = Cardinal;
 
909
 
 
910
       TPDJPT_FORMFEEDCONTROL = Cardinal;
 
911
    { -----------------------------------------------------------------
 
912
          DJP_SJ_N_UP
 
913
 
 
914
          Number of logical pages per physical page (ex: 2-up, 4-up)
 
915
        }
 
916
 
 
917
       TDJPT_NUP = Longint;
 
918
 
 
919
       TPDJPT_NUP = Longint;
 
920
    { -----------------------------------------------------------------
 
921
          DJP_CJ_OUTPUTBIN
 
922
 
 
923
          Setting will only use szBinname.
 
924
 
 
925
          Querying will return all fields filled in.
 
926
        }
 
927
    { djpOBN  }
 
928
    { System Bin name                    }
 
929
    {                      v-= Informational only =-v                           }
 
930
    { Display Bin name  (translated)     }
 
931
    { Bin id # (-1 for no id)            }
 
932
 
 
933
       TdjpOutputBin = record
 
934
            szBinname : Str32;
 
935
            szDisplayBinname : Str64;
 
936
            lBinId : Longint;
 
937
         end;
 
938
       TDJPT_OUTPUTBIN = TdjpOutputBin;
 
939
       TPDJPT_OUTPUTBIN = ^TdjpOutputBin;
 
940
    { -----------------------------------------------------------------
 
941
          DJP_CJ_TRAYNAME
 
942
 
 
943
          Setting will match only szTrayname.  The perfered way to set which
 
944
          tray to use is DJP_CJ_FORM.  Otherwise, you are not guaranteed a
 
945
          unique match for all three form, tray, and media possibilities.
 
946
 
 
947
          Querying will return all fields filled in.
 
948
        }
 
949
    { djpTry  }
 
950
    { System Tray name                   }
 
951
    {                      v-= Informational only =-v                           }
 
952
    { Display Tray name  (translated)    }
 
953
    { Simple tray id  (if not DJP_NONE)  }
 
954
 
 
955
       TdjpInputTray = record
 
956
            szTrayname : Str32;
 
957
            szDisplayTrayname : Str64;
 
958
            djpttTrayID : TDJPT_TRAYTYPE;
 
959
         end;
 
960
       TDJPT_TRAYNAME = TdjpInputTray;
 
961
       TPDJPT_TRAYNAME = ^TdjpInputTray;
 
962
 
 
963
 
 
964
function DevOpenDC(ahab: HAB; lType: Longint; pszToken: PChar; lCount: Longint; var pdopData: DevOpenStruc; hdcComp: cardinal): cardinal; cdecl;
 
965
function DevCloseDC(ahdc: cardinal): cardinal; cdecl;
 
966
function DevEscape(ahdc: cardinal; lCode, lInCount: Longint; var pbInData; var plOutCount: Longint; var pbOutData): Longint; cdecl;
 
967
function DevQueryCaps(ahdc: cardinal; lStart, lCount: Longint; var alArray: Longint): Longbool; cdecl;
 
968
function DevQueryDeviceNames(ahab: HAB; pszDriverName: PChar; var pldn: Longint; aDeviceName: Str32; aDeviceDesc: Str64; var pldt: Longint; aDataType: Str16): Longbool; cdecl;
 
969
function DevQueryHardcopyCaps(ahdc: cardinal; lStartForm, lForms: Longint; var phciHcInfo: HCInfo): Longint; cdecl;
 
970
function DevPostDeviceModes(ahab: HAB; var pdrivDriverData: DrivData; pszDriverName, pszDeviceName, pszName: PChar; flOptions: cardinal): Longint; cdecl;
 
971
 
 
972
implementation
 
973
 
 
974
function DevOpenDC(ahab: HAB; lType: Longint; pszToken: PChar; lCount: Longint; var pdopData: DevOpenStruc; hdcComp: cardinal): cardinal; cdecl;
 
975
    external 'PMGPI' index 610;
 
976
function DevCloseDC(ahdc: cardinal): cardinal; cdecl;
 
977
    external 'PMGPI' index 604;
 
978
function DevEscape(ahdc: cardinal; lCode, lInCount: Longint; var pbInData; var plOutCount: Longint; var pbOutData): Longint; cdecl;
 
979
    external 'PMGPI' index 605;
 
980
function DevQueryCaps(ahdc: cardinal; lStart, lCount: Longint;var alArray: Longint): Longbool; cdecl;
 
981
    external 'PMGPI' index 606;
 
982
function DevQueryDeviceNames(ahab: HAB; pszDriverName: PChar; var pldn: Longint; aDeviceName: Str32; aDeviceDesc: Str64; var pldt: Longint; aDataType: Str16): Longbool; cdecl;
 
983
    external 'PMGPI' index 607;
 
984
function DevQueryHardcopyCaps(ahdc: cardinal; lStartForm, lForms: Longint; var phciHcInfo: HCInfo): Longint; cdecl;
 
985
    external 'PMGPI' index 608;
 
986
function DevPostDeviceModes(ahab: HAB; var pdrivDriverData: DrivData; pszDriverName, pszDeviceName, pszName: PChar; flOptions: cardinal): Longint; cdecl;
 
987
    external 'PMGPI' index 609;
 
988
 
 
989
    { was
 
990
   #define QUERYSIZE_HEADER_SIZE  (sizeof (QUERYSIZE) - sizeof (((PQUERYSIZE)NULL)->aTuples))
 
991
    }
 
992
//    function QUERYSIZE_HEADER_SIZE : longint;
 
993
//        { return type might be wrong }
 
994
//        begin
 
995
//           QUERYSIZE_HEADER_SIZE:=(sizeof(QUERYSIZE)) - (sizeof((TPQUERYSIZE(NULL))^.aTuples));
 
996
//        end;
 
997
 
 
998
//   #define DJP_HEADER_SIZE        (sizeof (DJP_ITEM) - sizeof (((PDJP_ITEM)NULL)->ulValue))
 
999
//   #define DJP_NEXT_STRUCTP(p)    ((PDJP_ITEM)((PBYTE)(p) + (p)->cb))
 
1000
//   #define DJP_ELEMENTP(s,t)      ((t*)&((s).ulValue))
 
1001
//   #define DJP_SET_ELEMENT(s,t,e) (*DJP_ELEMENTP (s,t) = (e))
 
1002
 
 
1003
    { was #define dname def_expr }
 
1004
//    function DJP_HEADER_SIZE : longint;
 
1005
//        { return type might be wrong }
 
1006
//        begin
 
1007
//           DJP_HEADER_SIZE:=(sizeof(DJP_ITEM)) - (sizeof((TPDJP_ITEM(NULL))^.ulValue));
 
1008
//        end;
 
1009
 
 
1010
    { was #define dname(params) para_def_expr }
 
1011
    { argument types are unknown }
 
1012
//    function DJP_NEXT_STRUCTP(p : longint) : TPDJP_ITEM;
 
1013
//      begin
 
1014
//         DJP_NEXT_STRUCTP:=TPDJP_ITEM((TPBYTE(p)) + (p^.cb));
 
1015
//      end;
 
1016
 
 
1017
    { was #define dname(params) para_def_expr }
 
1018
    { argument types are unknown }
 
1019
//    function DJP_ELEMENTP(s,t : longint) : ^Tt;
 
1020
//      begin
 
1021
//         DJP_ELEMENTP:=^Tt(@(s.ulValue));
 
1022
//      end;
 
1023
 
 
1024
end.