pmdev.pas 32 KB

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