1 /**
2  * This file is part of the mingw-w64 runtime package.
3  * No warranty is given; refer to the file DISCLAIMER within this package.
4  */
5 
6 #ifndef _MXDC_H_
7 #define _MXDC_H_
8 
9 #include <winapifamily.h>
10 
11 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
12 
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16 
17 #include <pshpack1.h>
18 
19   typedef enum tagMxdcS0PageEnums {
20     MXDC_RESOURCE_TTF = 0,
21     MXDC_RESOURCE_JPEG = 1,
22     MXDC_RESOURCE_PNG = 2,
23     MXDC_RESOURCE_TIFF = 3,
24     MXDC_RESOURCE_WDP = 4,
25     MXDC_RESOURCE_DICTIONARY = 5,
26     MXDC_RESOURCE_ICC_PROFILE = 6,
27     MXDC_RESOURCE_JPEG_THUMBNAIL = 7,
28     MXDC_RESOURCE_PNG_THUMBNAIL = 8,
29     MXDC_RESOURCE_MAX
30   } MXDC_S0_PAGE_ENUMS;
31 
32 #if NTDDI_VERSION >= 0x06000100
33   typedef enum tagMxdcLandscapeRotationEnums {
34     MXDC_LANDSCAPE_ROTATE_NONE = 0,
35     MXDC_LANDSCAPE_ROTATE_COUNTERCLOCKWISE_90_DEGREES = 90,
36     MXDC_LANDSCAPE_ROTATE_COUNTERCLOCKWISE_270_DEGREES = -90
37   } MXDC_LANDSCAPE_ROTATION_ENUMS;
38 
39   typedef enum tagMxdcImageTypeEnums {
40     MXDC_IMAGETYPE_JPEGHIGH_COMPRESSION = 1,
41     MXDC_IMAGETYPE_JPEGMEDIUM_COMPRESSION = 2,
42     MXDC_IMAGETYPE_JPEGLOW_COMPRESSION = 3,
43     MXDC_IMAGETYPE_PNG = 4
44   } MXDC_IMAGE_TYPE_ENUMS;
45 #endif
46 
47   typedef struct tagMxdcEscapeHeader {
48     ULONG cbInput;
49     ULONG cbOutput;
50     ULONG opCode;
51   } MXDC_ESCAPE_HEADER_T, *P_MXDC_ESCAPE_HEADER_T;
52 
53   typedef struct tagMxdcGetFileNameData {
54     ULONG cbOutput;
55     wchar_t wszData[1];
56   } MXDC_GET_FILENAME_DATA_T, *P_MXDC_GET_FILENAME_DATA_T;
57 
58   typedef struct tagMxdcS0PageData {
59     DWORD dwSize;
60     BYTE bData[1];
61   } MXDC_S0PAGE_DATA_T, *P_MXDC_S0PAGE_DATA_T;
62 
63   typedef struct tagMxdcXpsS0PageResource {
64     DWORD dwSize;
65     DWORD dwResourceType;
66     BYTE szUri[MAX_PATH];
67     DWORD dwDataSize;
68     BYTE bData[1];
69   } MXDC_XPS_S0PAGE_RESOURCE_T, *P_MXDC_XPS_S0PAGE_RESOURCE_T;
70 
71   typedef struct tagMxdcPrintTicketPassthrough {
72     DWORD dwDataSize;
73     BYTE bData[1];
74   } MXDC_PRINTTICKET_DATA_T, *P_MXDC_PRINTTICKET_DATA_T;
75 
76   typedef struct tagMxdcPrintTicketEscape {
77     MXDC_ESCAPE_HEADER_T mxdcEscape;
78     MXDC_PRINTTICKET_DATA_T printTicketData;
79   } MXDC_PRINTTICKET_ESCAPE_T, *P_MXDC_PRINTTICKET_ESCAPE_T;
80 
81   typedef struct tagMxdcS0PagePassthroughEscape {
82     MXDC_ESCAPE_HEADER_T mxdcEscape;
83     MXDC_S0PAGE_DATA_T xpsS0PageData;
84   } MXDC_S0PAGE_PASSTHROUGH_ESCAPE_T, *P_MXDC_S0PAGE_PASSTHROUGH_ESCAPE_T;
85 
86   typedef struct tagMxdcS0PageResourceEscape {
87     MXDC_ESCAPE_HEADER_T mxdcEscape;
88     MXDC_XPS_S0PAGE_RESOURCE_T xpsS0PageResourcePassthrough;
89   } MXDC_S0PAGE_RESOURCE_ESCAPE_T, *P_MXDC_S0PAGE_RESOURCE_ESCAPE_T;
90 
91 #include <poppack.h>
92 
93 #define MXDC_ESCAPE 4122
94 
95 #define MXDCOP_GET_FILENAME 14
96 #define MXDCOP_PRINTTICKET_FIXED_DOC_SEQ 22
97 #define MXDCOP_PRINTTICKET_FIXED_DOC 24
98 #define MXDCOP_PRINTTICKET_FIXED_PAGE 26
99 #define MXDCOP_SET_S0PAGE 28
100 #define MXDCOP_SET_S0PAGE_RESOURCE 30
101 #define MXDCOP_SET_XPSPASSTHRU_MODE 32
102 
103 #if NTDDI_VERSION >= 0x06000100
104 #define MXDC_IMAGEABLE_AREA_PROP_NAME_WSTR (L"MxdcImageableArea")
105 #define MXDC_IMAGE_COMPRESSION_TYPE_PROP_NAME_WSTR (L"MxdcImageCompressionType")
106 #define MXDC_DOTS_PER_INCH_PROP_NAME_WSTR (L"MxdcDotsPerInch")
107 #define MXDC_LANDSCAPE_ROTATION_PROP_NAME_WSTR (L"MxdcLandscapeRotation")
108 #endif
109 
110 #if NTDDI_VERSION >= 0x06000100
111   HRESULT WINAPI MxdcGetPDEVAdjustment (HANDLE hPrinter, ULONG cbDevMode, const DEVMODE *pDevMode, ULONG cbIn, const VOID *pvIn, ULONG cbPrintPropertiesCollection, PrintPropertiesCollection *pPrintPropertiesCollection);
112 #endif
113 
114 #ifdef __cplusplus
115 }
116 #endif
117 
118 #endif
119 #endif
120