pmdev.pas 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303
  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. Str8 = Array[0..7] of Char;
  203. Str16= Array[0..15] of Char;
  204. Str32= Array[0..31] of Char;
  205. Str64= Array[0..63] of Char;
  206. //return code for DevQueryHardcopyCaps
  207. const
  208. DQHC_ERROR =-1;
  209. //codes for DevQueryHardcopyCaps
  210. const
  211. HCAPS_CURRENT =1;
  212. HCAPS_SELECTABLE =2;
  213. //structure for DevQueryHardcopyCaps
  214. type
  215. PHCInfo=^HCInfo;
  216. HCInfo=record
  217. szFormname: Array[0..31] of Char;
  218. cx: Longint;
  219. cy: Longint;
  220. xLeftClip: Longint;
  221. yBottomClip: Longint;
  222. xRightClip: Longint;
  223. yTopClip: Longint;
  224. xPels: Longint;
  225. yPels: Longint;
  226. flAttributes: Longint;
  227. end;
  228. function DevOpenDC(ahab: HAB; lType: Longint; pszToken: PChar; lCount: Longint; var pdopData: DevOpenStruc; hdcComp: cardinal): cardinal; cdecl;
  229. function DevCloseDC(ahdc: cardinal): cardinal; cdecl;
  230. function DevEscape(ahdc: cardinal; lCode, lInCount: Longint; var pbInData; var plOutCount: Longint; var pbOutData): Longint; cdecl;
  231. function DevQueryCaps(ahdc: cardinal; lStart, lCount: Longint; var alArray: Longint): Longbool; cdecl;
  232. function DevQueryDeviceNames(ahab: HAB; pszDriverName: PChar; var pldn: Longint; aDeviceName: Str32; aDeviceDesc: Str64; var pldt: Longint; aDataType: Str16): Longbool; cdecl;
  233. function DevQueryHardcopyCaps(ahdc: cardinal; lStartForm, lForms: Longint; var phciHcInfo: HCInfo): Longint; cdecl;
  234. function DevPostDeviceModes(ahab: HAB; var pdrivDriverData: DrivData; pszDriverName, pszDeviceName, pszName: PChar; flOptions: cardinal): Longint; cdecl;
  235. implementation
  236. function DevOpenDC(ahab: HAB; lType: Longint; pszToken: PChar; lCount: Longint; var pdopData: DevOpenStruc; hdcComp: cardinal): cardinal; cdecl;
  237. external 'PMGPI' index 610;
  238. function DevCloseDC(ahdc: cardinal): cardinal; cdecl;
  239. external 'PMGPI' index 604;
  240. function DevEscape(ahdc: cardinal; lCode, lInCount: Longint; var pbInData; var plOutCount: Longint; var pbOutData): Longint; cdecl;
  241. external 'PMGPI' index 605;
  242. function DevQueryCaps(ahdc: cardinal; lStart, lCount: Longint;var alArray: Longint): Longbool; cdecl;
  243. external 'PMGPI' index 606;
  244. function DevQueryDeviceNames(ahab: HAB; pszDriverName: PChar; var pldn: Longint; aDeviceName: Str32; aDeviceDesc: Str64; var pldt: Longint; aDataType: Str16): Longbool; cdecl;
  245. external 'PMGPI' index 607;
  246. function DevQueryHardcopyCaps(ahdc: cardinal; lStartForm, lForms: Longint; var phciHcInfo: HCInfo): Longint; cdecl;
  247. external 'PMGPI' index 608;
  248. function DevPostDeviceModes(ahab: HAB; var pdrivDriverData: DrivData; pszDriverName, pszDeviceName, pszName: PChar; flOptions: cardinal): Longint; cdecl;
  249. external 'PMGPI' index 609;
  250. end.
  251. {
  252. $Log$
  253. Revision 1.1 2002-10-18 18:08:52 hajny
  254. + first version
  255. }