2
0

pmdev.pas 32 KB

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