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
14extern "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