summaryrefslogtreecommitdiff
path: root/print/XPSDrvSmpl/src/ui/xdsmplui.h
blob: c175de88a39299288f3c69005fb564dd72de1beb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
/*++

Copyright (c) 2005 Microsoft Corporation

All rights reserved.

THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
PARTICULAR PURPOSE.

File Name:

   xdsmplui.h

Abstract:

   Definition of the UI plugin. This is responsible for initialising and maintining
   the property pages used in the XPSDrv feature sample UI.

--*/

#pragma once

#include "cunknown.h"
#include "docppg.h"

typedef std::vector<CDocPropPage*> DocPropertyPageMap;

class CXDSmplUI : public CUnknown<IPrintOemUI>
{
public:
    //
    // Construction and Destruction
    //
    CXDSmplUI();

    virtual ~CXDSmplUI();

    //
    // IPrintOemUI methods
    //
    STDMETHOD(PublishDriverInterface)(THIS_
        _In_ IUnknown* pIUnknown
        );

    STDMETHOD(GetInfo)(THIS_
        _In_  DWORD  dwMode,
        _Out_writes_bytes_(cbSize) PVOID  pBuffer,
        _In_  DWORD  cbSize,
        _Out_ PDWORD pcbNeeded
        );

    STDMETHOD(DevMode)(THIS_
        _In_ DWORD       dwMode,
        _In_ POEMDMPARAM pOemDMParam
        );

    STDMETHOD(CommonUIProp)(THIS_
        _In_ DWORD         dwMode,
        _In_ POEMCUIPPARAM pOemCUIPParam
        );

    STDMETHOD(DocumentPropertySheets)(THIS_
        _In_ PPROPSHEETUI_INFO pPSUIInfo,
        _In_ LPARAM            lParam
        );

    STDMETHOD(DevicePropertySheets)(THIS_
         _In_ PPROPSHEETUI_INFO pPSUIInfo,
         _In_ LPARAM            lParam
         );

    STDMETHOD(DevQueryPrintEx)(THIS_
        _In_ POEMUIOBJ           poemuiobj,
        _In_ PDEVQUERYPRINT_INFO pDQPInfo,
        _In_ PDEVMODE            pPublicDM,
        _In_ PVOID               pOEMDM
        );

    STDMETHOD(DeviceCapabilities)(THIS_
        _In_   POEMUIOBJ poemuiobj,
        _In_   HANDLE    hPrinter,
        _In_z_ PWSTR     pDeviceName,
        _In_   WORD      wCapability,
        _In_   PVOID     pOutput,
        _In_   PDEVMODE  pPublicDM,
        _In_   PVOID     pOEMDM,
        _In_   DWORD     dwOld,
        _In_   DWORD*    dwResult
        );

    STDMETHOD(UpgradePrinter)(THIS_
        _In_ DWORD dwLevel,
        _In_ PBYTE pDriverUpgradeInfo
        );

    STDMETHOD(PrinterEvent)(THIS_
        _In_   PWSTR  pPrinterName,
        _In_   INT    iDriverEvent,
        _In_   DWORD  dwFlags,
        _In_   LPARAM lParam
        );

    STDMETHOD(DriverEvent)(THIS_
        _In_ DWORD  dwDriverEvent,
        _In_ DWORD  dwLevel,
        _In_reads_(_Inexpressible_("varies")) PBYTE  pDriverInfo,
        _In_ LPARAM lParam
        );

    STDMETHOD(QueryColorProfile)(THIS_
        _In_    HANDLE    hPrinter,
        _In_    POEMUIOBJ poemuiobj,
        _In_    PDEVMODE  pPublicDM,
        _In_    PVOID     pOEMDM,
        _In_    ULONG     ulReserved,
        _Out_writes_(*pcbProfileData) VOID*     pvProfileData,
        _Inout_ ULONG*    pcbProfileData,
        _Out_   FLONG*    pflProfileData
        );

    STDMETHOD(FontInstallerDlgProc)(THIS_
        _In_ HWND    hWnd,
        _In_ UINT    usMsg,
        _In_ WPARAM  wParam,
        _In_ LPARAM  lParam
        );

    STDMETHOD(UpdateExternalFonts)(THIS_
        _In_   HANDLE hPrinter,
        _In_   HANDLE hHeap,
        _In_z_ PWSTR  pwstrCartridges
        );

private:
    HRESULT
    CreatePropertyPages(
        VOID
        );

    HRESULT
    AddPropPage(
        _In_opt_ __drv_aliasesMem CDocPropPage* pPropPage
        );

    inline VOID
    DestroyPropPages(
        VOID
        );

private:
    POEMCUIPPARAM                m_pOemCUIPParam;

    CUIProperties*               m_pUIProperties;

    CComPtr<IPrintOemDriverUI>   m_pDriverUIHelp;

    DocPropertyPageMap           m_vectPropPages;
};