home *** CD-ROM | disk | FTP | other *** search
/ C Programming Starter Kit 2.0 / SamsPublishing-CProgrammingStarterKit-v2.0-Win31.iso / bc45 / inc.pak / PRINT.H < prev    next >
Text File  |  1997-07-23  |  11KB  |  321 lines

  1. /*****************************************************************************\
  2. *                                                                             *
  3. * print.h -     Printing helper functions, types, and definitions             *
  4. *                                                                             *
  5. *******************************************************************************
  6. *
  7. *  PRINTDRIVER       - For inclusion with a printer driver
  8. *  NOPQ              - Prevent inclusion of priority queue APIs
  9. *
  10. \*****************************************************************************/
  11.  
  12. /*
  13.  *      C/C++ Run Time Library - Version 6.5
  14.  *
  15.  *      Copyright (c) 1987, 1994 by Borland International
  16.  *      All Rights Reserved.
  17.  *
  18.  */
  19.  
  20. #ifndef __PRINT_H       /* prevent multiple includes */
  21. #define __PRINT_H
  22.  
  23. #ifndef __WINDOWS_H
  24. #ifdef PRINTDRIVER
  25. #define NORASTEROPS
  26. #define NOTEXTMETRICS
  27. #define NOGDICAPMASKS
  28. #define NOGDIOBJ
  29. #define NOBITMAP
  30. #define NOSOUND
  31. #define NOTEXTMETRIC
  32. #define NOCOMM
  33. #define NOKANJI
  34. #include <windows.h>    /* <windows.h> must be included */
  35. #undef NORASTEROPS
  36. #undef NOTEXTMETRICS
  37. #undef NOGDICAPMASKS
  38. #undef NOGDICAPMASKS
  39. #undef NOGDIOBJ
  40. #undef NOBITMAP
  41. #undef NOSOUND
  42. #undef NOTEXTMETRIC
  43. #undef NOCOMM
  44. #undef NOKANJI
  45. #else  /* !PRINTDRIVER */
  46. #include <windows.h>    /* <windows.h> must be included */
  47. #endif  /* PRINTERDRIVER */
  48. #endif  /* __WINDOWS_H */
  49.  
  50. #ifndef RC_INVOKED
  51. #pragma option -a-      /* Assume byte packing throughout */
  52. #endif  /* RC_INVOKED */
  53.  
  54. #ifdef __cplusplus
  55. extern "C" {            /* Assume C declarations for C++ */
  56. #endif  /* __cplusplus */
  57.  
  58. #ifdef PRINTDRIVER
  59.  
  60. #define NOPTRC  /* don't allow gdidefs.inc to redef these */
  61. #define PTTYPE POINT
  62.  
  63. #define PQERROR (-1)
  64.  
  65. #ifndef NOPQ
  66.  
  67. DECLARE_HANDLE(HPQ);
  68.  
  69. HPQ     WINAPI CreatePQ(int);
  70. int     WINAPI MinPQ(HPQ);
  71. int     WINAPI ExtractPQ(HPQ);
  72. int     WINAPI InsertPQ(HPQ, int, int);
  73. int     WINAPI SizePQ(HPQ, int);
  74. void    WINAPI DeletePQ(HPQ);
  75. #endif  /* !NOPQ */
  76.  
  77. /* Spool routines for use by printer drivers */
  78.  
  79. DECLARE_HANDLE(HPJOB);
  80.  
  81. HPJOB   WINAPI OpenJob(LPSTR, LPSTR, HPJOB);
  82. int     WINAPI StartSpoolPage(HPJOB);
  83. int     WINAPI EndSpoolPage(HPJOB);
  84. int     WINAPI WriteSpool(HPJOB, LPSTR, int);
  85. int     WINAPI CloseJob(HPJOB);
  86. int     WINAPI DeleteJob(HPJOB, int);
  87. int     WINAPI WriteDialog(HPJOB, LPSTR, int);
  88. int     WINAPI DeleteSpoolPage(HPJOB);
  89.  
  90. #endif /* PRINTDRIVER */
  91.  
  92. typedef struct tagBANDINFOSTRUCT
  93. {
  94.     BOOL    fGraphics;
  95.     BOOL    fText;
  96.     RECT    rcGraphics;
  97. } BANDINFOSTRUCT, FAR* LPBI;
  98.  
  99. #define USA_COUNTRYCODE 1
  100.  
  101. /*
  102.  *  Printer driver initialization using ExtDeviceMode()
  103.  *  and DeviceCapabilities().
  104.  *  This replaces Drivinit.h
  105.  */
  106.  
  107. /* size of a device name string */
  108. #define CCHDEVICENAME 32
  109. #define CCHPAPERNAME  64
  110.  
  111. /* current version of specification */
  112. #define DM_SPECVERSION 0x30A
  113.  
  114. /* field selection bits */
  115. #define DM_ORIENTATION      0x0000001L
  116. #define DM_PAPERSIZE        0x0000002L
  117. #define DM_PAPERLENGTH      0x0000004L
  118. #define DM_PAPERWIDTH       0x0000008L
  119. #define DM_SCALE            0x0000010L
  120. #define DM_COPIES           0x0000100L
  121. #define DM_DEFAULTSOURCE    0x0000200L
  122. #define DM_PRINTQUALITY     0x0000400L
  123. #define DM_COLOR            0x0000800L
  124. #define DM_DUPLEX           0x0001000L
  125. #define DM_YRESOLUTION      0x0002000L
  126. #define DM_TTOPTION         0x0004000L
  127.  
  128. /* orientation selections */
  129. #define DMORIENT_PORTRAIT   1
  130. #define DMORIENT_LANDSCAPE  2
  131.  
  132. /* paper selections */
  133. /*  Warning: The PostScript driver mistakingly uses DMPAPER_ values between
  134.  *  50 and 56.  Don't use this range when defining new paper sizes.
  135.  */
  136. #define DMPAPER_FIRST       DMPAPER_LETTER
  137. #define DMPAPER_LETTER      1           /* Letter 8 1/2 x 11 in               */
  138. #define DMPAPER_LETTERSMALL 2           /* Letter Small 8 1/2 x 11 in         */
  139. #define DMPAPER_TABLOID     3           /* Tabloid 11 x 17 in                 */
  140. #define DMPAPER_LEDGER      4           /* Ledger 17 x 11 in                  */
  141. #define DMPAPER_LEGAL       5           /* Legal 8 1/2 x 14 in                */
  142. #define DMPAPER_STATEMENT   6           /* Statement 5 1/2 x 8 1/2 in         */
  143. #define DMPAPER_EXECUTIVE   7           /* Executive 7 1/4 x 10 1/2 in        */
  144. #define DMPAPER_A3          8           /* A3 297 x 420 mm                    */
  145. #define DMPAPER_A4          9           /* A4 210 x 297 mm                    */
  146. #define DMPAPER_A4SMALL     10          /* A4 Small 210 x 297 mm              */
  147. #define DMPAPER_A5          11          /* A5 148 x 210 mm                    */
  148. #define DMPAPER_B4          12          /* B4 250 x 354                       */
  149. #define DMPAPER_B5          13          /* B5 182 x 257 mm                    */
  150. #define DMPAPER_FOLIO       14          /* Folio 8 1/2 x 13 in                */
  151. #define DMPAPER_QUARTO      15          /* Quarto 215 x 275 mm                */
  152. #define DMPAPER_10X14       16          /* 10x14 in                           */
  153. #define DMPAPER_11X17       17          /* 11x17 in                           */
  154. #define DMPAPER_NOTE        18          /* Note 8 1/2 x 11 in                 */
  155. #define DMPAPER_ENV_9       19          /* Envelope #9 3 7/8 x 8 7/8          */
  156. #define DMPAPER_ENV_10      20          /* Envelope #10 4 1/8 x 9 1/2         */
  157. #define DMPAPER_ENV_11      21          /* Envelope #11 4 1/2 x 10 3/8        */
  158. #define DMPAPER_ENV_12      22          /* Envelope #12 4 \276 x 11           */
  159. #define DMPAPER_ENV_14      23          /* Envelope #14 5 x 11 1/2            */
  160. #define DMPAPER_CSHEET      24          /* C size sheet                       */
  161. #define DMPAPER_DSHEET      25          /* D size sheet                       */
  162. #define DMPAPER_ESHEET      26          /* E size sheet                       */
  163. #define DMPAPER_ENV_DL      27          /* Envelope DL 110 x 220mm            */
  164. #define DMPAPER_ENV_C5      28          /* Envelope C5 162 x 229 mm           */
  165. #define DMPAPER_ENV_C3      29          /* Envelope C3  324 x 458 mm          */
  166. #define DMPAPER_ENV_C4      30          /* Envelope C4  229 x 324 mm          */
  167. #define DMPAPER_ENV_C6      31          /* Envelope C6  114 x 162 mm          */
  168. #define DMPAPER_ENV_C65     32          /* Envelope C65 114 x 229 mm          */
  169. #define DMPAPER_ENV_B4      33          /* Envelope B4  250 x 353 mm          */
  170. #define DMPAPER_ENV_B5      34          /* Envelope B5  176 x 250 mm          */
  171. #define DMPAPER_ENV_B6      35          /* Envelope B6  176 x 125 mm          */
  172. #define DMPAPER_ENV_ITALY   36          /* Envelope 110 x 230 mm              */
  173. #define DMPAPER_ENV_MONARCH 37          /* Envelope Monarch 3.875 x 7.5 in    */
  174. #define DMPAPER_ENV_PERSONAL 38         /* 6 3/4 Envelope 3 5/8 x 6 1/2 in    */
  175. #define DMPAPER_FANFOLD_US  39          /* US Std Fanfold 14 7/8 x 11 in      */
  176. #define DMPAPER_FANFOLD_STD_GERMAN  40  /* German Std Fanfold 8 1/2 x 12 in   */
  177. #define DMPAPER_FANFOLD_LGL_GERMAN  41  /* German Legal Fanfold 8 1/2 x 13 in */
  178.  
  179. #define DMPAPER_LAST        DMPAPER_FANFOLD_LGL_GERMAN
  180.  
  181. #define DMPAPER_USER        256
  182.  
  183. /* bin selections */
  184. #define DMBIN_FIRST         DMBIN_UPPER
  185. #define DMBIN_UPPER         1
  186. #define DMBIN_ONLYONE       1
  187. #define DMBIN_LOWER         2
  188. #define DMBIN_MIDDLE        3
  189. #define DMBIN_MANUAL        4
  190. #define DMBIN_ENVELOPE      5
  191. #define DMBIN_ENVMANUAL     6
  192. #define DMBIN_AUTO          7
  193. #define DMBIN_TRACTOR       8
  194. #define DMBIN_SMALLFMT      9
  195. #define DMBIN_LARGEFMT      10
  196. #define DMBIN_LARGECAPACITY 11
  197. #define DMBIN_CASSETTE      14
  198. #define DMBIN_LAST          DMBIN_CASSETTE
  199.  
  200. #define DMBIN_USER          256     /* device specific bins start here */
  201.  
  202. /* print qualities */
  203. #define DMRES_DRAFT         (-1)
  204. #define DMRES_LOW           (-2)
  205. #define DMRES_MEDIUM        (-3)
  206. #define DMRES_HIGH          (-4)
  207.  
  208. /* color enable/disable for color printers */
  209. #define DMCOLOR_MONOCHROME  1
  210. #define DMCOLOR_COLOR       2
  211.  
  212. /* duplex enable */
  213. #define DMDUP_SIMPLEX    1
  214. #define DMDUP_VERTICAL   2
  215. #define DMDUP_HORIZONTAL 3
  216.  
  217. /* TrueType options */
  218. #define DMTT_BITMAP     1       /* print TT fonts as graphics */
  219. #define DMTT_DOWNLOAD   2       /* download TT fonts as soft fonts */
  220. #define DMTT_SUBDEV     3       /* substitute device fonts for TT fonts */
  221.  
  222. /* If included with the 3.0 windows.h, define compatible aliases */
  223. #if !defined(WINVER) || (WINVER < 0x030a)
  224. #define CALLBACK    FAR PASCAL
  225. #define HMODULE     HANDLE
  226. #define UINT        WORD
  227. #define WINAPI      FAR PASCAL
  228. #endif  /* WIN3.0 */
  229.  
  230. typedef struct tagDEVMODE
  231. {
  232.     char  dmDeviceName[CCHDEVICENAME];
  233.     UINT  dmSpecVersion;
  234.     UINT  dmDriverVersion;
  235.     UINT  dmSize;
  236.     UINT  dmDriverExtra;
  237.     DWORD dmFields;
  238.     int   dmOrientation;
  239.     int   dmPaperSize;
  240.     int   dmPaperLength;
  241.     int   dmPaperWidth;
  242.     int   dmScale;
  243.     int   dmCopies;
  244.     int   dmDefaultSource;
  245.     int   dmPrintQuality;
  246.     int   dmColor;
  247.     int   dmDuplex;
  248.     int   dmYResolution;
  249.     int   dmTTOption;
  250. } DEVMODE;
  251.  
  252. typedef DEVMODE* PDEVMODE, NEAR* NPDEVMODE, FAR* LPDEVMODE;
  253.  
  254. /* mode selections for the device mode function */
  255. #define DM_UPDATE           1
  256. #define DM_COPY             2
  257. #define DM_PROMPT           4
  258. #define DM_MODIFY           8
  259.  
  260. #define DM_IN_BUFFER        DM_MODIFY
  261. #define DM_IN_PROMPT        DM_PROMPT
  262. #define DM_OUT_BUFFER       DM_COPY
  263. #define DM_OUT_DEFAULT      DM_UPDATE
  264.  
  265. /* device capabilities indices */
  266. #define DC_FIELDS           1
  267. #define DC_PAPERS           2
  268. #define DC_PAPERSIZE        3
  269. #define DC_MINEXTENT        4
  270. #define DC_MAXEXTENT        5
  271. #define DC_BINS             6
  272. #define DC_DUPLEX           7
  273. #define DC_SIZE             8
  274. #define DC_EXTRA            9
  275. #define DC_VERSION          10
  276. #define DC_DRIVER           11
  277. #define DC_BINNAMES         12
  278. #define DC_ENUMRESOLUTIONS  13
  279. #define DC_FILEDEPENDENCIES 14
  280. #define DC_TRUETYPE         15
  281. #define DC_PAPERNAMES       16
  282. #define DC_ORIENTATION      17
  283. #define DC_COPIES           18
  284.  
  285. /* bit fields of the return value (DWORD) for DC_TRUETYPE */
  286. #define DCTT_BITMAP         0x0000001L
  287. #define DCTT_DOWNLOAD       0x0000002L
  288. #define DCTT_SUBDEV         0x0000004L
  289.  
  290. /* export ordinal definitions */
  291. #define PROC_EXTDEVICEMODE      MAKEINTRESOURCE(90)
  292. #define PROC_DEVICECAPABILITIES MAKEINTRESOURCE(91)
  293. #define PROC_OLDDEVICEMODE      MAKEINTRESOURCE(13)
  294.  
  295. /* define types of pointers to ExtDeviceMode() and DeviceCapabilities()
  296.  * functions
  297.  */
  298. typedef UINT   (CALLBACK* LPFNDEVMODE)(HWND, HMODULE, DEVMODE FAR*,
  299.                           LPSTR, LPSTR, DEVMODE FAR*, LPSTR, UINT);
  300.  
  301. typedef DWORD  (CALLBACK* LPFNDEVCAPS)(LPSTR, LPSTR, UINT, LPSTR, DEVMODE FAR*);
  302.  
  303. HDC     WINAPI ResetDC(HDC, const DEVMODE FAR*);
  304.  
  305. /* this structure is used by the GETSETSCREENPARAMS escape */
  306. typedef struct tagSCREENPARAMS
  307. {
  308.    int angle;
  309.    int frequency;
  310. } SCREENPARAMS;
  311.  
  312. #ifdef __cplusplus
  313. }                       /* End of extern "C" { */
  314. #endif  /* __cplusplus */
  315.  
  316. #ifndef RC_INVOKED
  317. #pragma option -a.      /* Revert to default packing */
  318. #endif  /* RC_INVOKED */
  319.  
  320. #endif  /* __PRINT_H */
  321.