pmdev.pas 32 KB

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