summaryrefslogtreecommitdiff
path: root/print/XPSDrvSmpl/src/common/cmintpthndlr.cpp
diff options
context:
space:
mode:
authorDave Wilson <[email protected]>2015-04-29 09:48:49 -0700
committerDave Wilson <[email protected]>2015-04-29 10:47:29 -0700
commitd40232638faaab19de557e70a3ee938da7a35295 (patch)
tree14e61c973745949af186b7940e3a53d25322f5de /print/XPSDrvSmpl/src/common/cmintpthndlr.cpp
parent02e5b090a6131a7cc1b90f4a9373117c9e3c7088 (diff)
samples update for //build
Diffstat (limited to 'print/XPSDrvSmpl/src/common/cmintpthndlr.cpp')
-rw-r--r--print/XPSDrvSmpl/src/common/cmintpthndlr.cpp156
1 files changed, 156 insertions, 0 deletions
diff --git a/print/XPSDrvSmpl/src/common/cmintpthndlr.cpp b/print/XPSDrvSmpl/src/common/cmintpthndlr.cpp
new file mode 100644
index 00000000..d23fffb6
--- /dev/null
+++ b/print/XPSDrvSmpl/src/common/cmintpthndlr.cpp
@@ -0,0 +1,156 @@
+/*++
+
+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:
+
+ cmintpthndlr.cpp
+
+Abstract:
+
+ PageICMRenderingIntent PrintTicket handler implementation. Derived from
+ CPTHandler, this provides PageICMRenderingIntent specific Get and Set methods
+ acting on the PrintTicket (as a DOM document) passed.
+
+--*/
+
+#include "precomp.h"
+#include "debug.h"
+#include "globals.h"
+#include "xdexcept.h"
+#include "cmintpthndlr.h"
+
+using XDPrintSchema::PageICMRenderingIntent::PageICMRenderingIntentData;
+using XDPrintSchema::PageICMRenderingIntent::EICMIntentOption;
+using XDPrintSchema::PageICMRenderingIntent::EICMIntentOptionMin;
+using XDPrintSchema::PageICMRenderingIntent::BusinessGraphics;
+using XDPrintSchema::PageICMRenderingIntent::EICMIntentOptionMax;
+using XDPrintSchema::PageICMRenderingIntent::ICMINTENT_FEATURE;
+using XDPrintSchema::PageICMRenderingIntent::ICMINTENT_OPTIONS;
+
+/*++
+
+Routine Name:
+
+ CColorManageIntentsPTHandler::CColorManageIntentsPTHandler
+
+Routine Description:
+
+ CColorManageIntentsPTHandler class constructor
+
+Arguments:
+
+ pPrintTicket - Pointer to the DOM document representation of the PrintTicket
+
+Return Value:
+
+ None
+
+--*/
+CColorManageIntentsPTHandler::CColorManageIntentsPTHandler(
+ _In_ IXMLDOMDocument2* pPrintTicket
+ ) :
+ CPTHandler(pPrintTicket)
+{
+}
+
+/*++
+
+Routine Name:
+
+ CColorManageIntentsPTHandler::~CColorManageIntentsPTHandler
+
+Routine Description:
+
+ CColorManageIntentsPTHandler class destructor
+
+Arguments:
+
+ None
+
+Return Value:
+
+ None
+
+--*/
+CColorManageIntentsPTHandler::~CColorManageIntentsPTHandler()
+{
+}
+
+/*++
+
+Routine Name:
+
+ CColorManageIntentsPTHandler::GetData
+
+Routine Description:
+
+ The routine fills the data structure passed in with color intent data retrieved
+ from the PrintTicket passed to the class constructor.
+
+Arguments:
+
+ pCmData - Pointer to the color intent data structure to be filled in
+
+Return Value:
+
+ HRESULT
+ S_OK - On success
+ E_ELEMENT_NOT_FOUND - Feature not present in PrintTicket
+ E_* - On error
+
+--*/
+HRESULT
+CColorManageIntentsPTHandler::GetData(
+ _Inout_ PageICMRenderingIntentData* pCmData
+ )
+{
+ HRESULT hr = S_OK;
+
+ if (SUCCEEDED(hr = CHECK_POINTER(pCmData, E_POINTER)))
+ {
+ CComBSTR bstrCMOption;
+
+ if (SUCCEEDED(hr = GetFeatureOption(CComBSTR(ICMINTENT_FEATURE), &bstrCMOption)))
+ {
+ //
+ // Get the profile type
+ //
+ for (EICMIntentOption cmOption = EICMIntentOptionMin;
+ cmOption < EICMIntentOptionMax;
+ cmOption = static_cast<EICMIntentOption>(cmOption + 1))
+ {
+ if (bstrCMOption == ICMINTENT_OPTIONS[cmOption])
+ {
+ pCmData->cmOption = cmOption;
+ break;
+ }
+ }
+
+ if (SUCCEEDED(hr))
+ {
+ if (pCmData->cmOption < EICMIntentOptionMin ||
+ pCmData->cmOption >= EICMIntentOptionMax)
+ {
+ hr = E_FAIL;
+ }
+ }
+ }
+ else
+ {
+ pCmData->cmOption = BusinessGraphics;
+ hr = S_OK;
+ }
+ }
+
+ ERR_ON_HR_EXC(hr, E_ELEMENT_NOT_FOUND);
+ return hr;
+}
+