summaryrefslogtreecommitdiff
path: root/print/XPSDrvSmpl/src/ui/uiproperties.h
blob: 7fe0ab856df926df1a45e40e028017763d725592 (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
/*++

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:

   uiproperties.h

Abstract:

   This class encapsulates all handling of GPD and OEM private devmode settings
   used in the XPSDrv feature sample UI.

--*/

#pragma once

#include "devmode.h"

extern PCSTR g_pszPSScaleWidth;
extern PCSTR g_pszPSScaleHeight;
extern PCSTR g_pszOffsetWidth;
extern PCSTR g_pszOffsetHeight;
extern PCSTR g_pszWMTransparency;
extern PCSTR g_pszWMAngle;
extern PCSTR g_pszWMOffsetWidth;
extern PCSTR g_pszWMOffsetHeight;
extern PCSTR g_pszWMSizeWidth;
extern PCSTR g_pszWMSizeHeight;
extern PCSTR g_pszWMFontSize;
extern PCSTR g_pszWMFontColor;
extern PCSTR g_pszWMText;

//
// Forward declaration
//
class CUIProperties;

typedef VOID UIProperty;

typedef pair<SIZE_T, SIZE_T> UIPropertyPair;
typedef map<CStringXDA, UIPropertyPair> UIPropertyMap;

typedef vector<CStringXDA> UIOptItemList;

class CUIProperties
{
public:
    CUIProperties();

    CUIProperties(POEMDEV pOEMDev);

    virtual ~CUIProperties();

    HRESULT
    GetItem(
        _In_                 PCSTR       pFeatureName,
        _Out_writes_bytes_(cbSize) UIProperty* pUIProperty,
        _In_                 SIZE_T      cbSize
        );

    HRESULT
    SetItem(
        _In_                      PCSTR        pFeatureName,
        _In_reads_bytes_(cbSize) CONST UIProperty*  pUIProperty,
        _In_                      SIZE_T       cbSize
        );

    HRESULT
    SetDefaults();

    HRESULT
    Validate();

    HRESULT
    Convert(
        _In_ CUIProperties* pUIProperties
        );

    HRESULT
    GetOptItem(
        _In_            POEMCUIPPARAM pOemCUIPParam,
        _In_            PCSTR         pFeatureName,
        _Outptr_result_maybenull_ POPTITEM*     ppOptItem
        );

    HRESULT
    HideOptItems(
        _In_ POEMCUIPPARAM pOemCUIPParam
        );

private:
    HRESULT SetHeader();

    HRESULT InitialiseMap();

private:
    POEMDEV         m_pOEMDev;

    UIPropertyMap   m_PropertyMap;

    UIOptItemList   m_OptItemList;
};