summaryrefslogtreecommitdiff
path: root/print/XPSDrvSmpl/src/common/pimagepthndlr.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/pimagepthndlr.cpp
parent02e5b090a6131a7cc1b90f4a9373117c9e3c7088 (diff)
samples update for //build
Diffstat (limited to 'print/XPSDrvSmpl/src/common/pimagepthndlr.cpp')
-rw-r--r--print/XPSDrvSmpl/src/common/pimagepthndlr.cpp171
1 files changed, 171 insertions, 0 deletions
diff --git a/print/XPSDrvSmpl/src/common/pimagepthndlr.cpp b/print/XPSDrvSmpl/src/common/pimagepthndlr.cpp
new file mode 100644
index 00000000..23013810
--- /dev/null
+++ b/print/XPSDrvSmpl/src/common/pimagepthndlr.cpp
@@ -0,0 +1,171 @@
+/*++
+
+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:
+
+ pimagepthndlr.cpp
+
+Abstract:
+
+ This class is responsible for retrieving the PageImageableSize properties from a
+ PrintCapabilities document.
+
+--*/
+
+#include "precomp.h"
+#include "debug.h"
+#include "globals.h"
+#include "xdexcept.h"
+#include "ptquerybld.h"
+#include "pimagepthndlr.h"
+
+using XDPrintSchema::PageImageableSize::PageImageableData;
+using XDPrintSchema::PageImageableSize::ImageableSizeWidth;
+using XDPrintSchema::PageImageableSize::ImageableSizeHeight;
+using XDPrintSchema::PageImageableSize::ImageableArea;
+using XDPrintSchema::PageImageableSize::EPageImageablePropsMax;
+using XDPrintSchema::PageImageableSize::OriginWidth;
+using XDPrintSchema::PageImageableSize::OriginHeight;
+using XDPrintSchema::PageImageableSize::ExtentWidth;
+using XDPrintSchema::PageImageableSize::ExtentHeight;
+using XDPrintSchema::PageImageableSize::PAGE_IMAGEABLE_PROPERTY;
+using XDPrintSchema::PageImageableSize::PAGE_IMAGEABLE_PROPS;
+using XDPrintSchema::PageImageableSize::PAGE_IMAGEABLE_PROPS_AREA;
+
+/*++
+
+Routine Name:
+
+ CPageImageablePCHandler::CPageImageablePCHandler
+
+Routine Description:
+
+ CPageImageablePCHandler class constructor
+
+Arguments:
+
+ pPrintCapabilities - Pointer to the DOM document representation of the PrintCapabilities
+
+Return Value:
+
+ None
+
+--*/
+CPageImageablePCHandler::CPageImageablePCHandler(
+ _In_ IXMLDOMDocument2* pPrintCapabilities
+ ) :
+ CPCHandler(pPrintCapabilities)
+{
+}
+
+/*++
+
+Routine Name:
+
+ CPageImageablePCHandler::~CPageImageablePCHandler
+
+Routine Description:
+
+ CPageImageablePCHandler class destructor
+
+Arguments:
+
+ None
+
+Return Value:
+
+ None
+
+--*/
+CPageImageablePCHandler::~CPageImageablePCHandler()
+{
+}
+
+/*++
+
+Routine Name:
+
+ CPageImageablePCHandler::GetData
+
+Routine Description:
+
+ The routine fills the data structure passed in with page imageable size
+ data retrieved from the PrintCapabilities passed to the class constructor.
+
+Arguments:
+
+ pPageImageableData - Pointer to the page imageable size data structure to be filled in
+
+Return Value:
+
+ HRESULT
+ S_OK - On success
+ E_ELEMENT_NOT_FOUND - Feature not present in PrintCapabilities
+ E_* - On error
+
+--*/
+HRESULT
+CPageImageablePCHandler::GetData(
+ _Inout_ PageImageableData* pPageImageableData
+ )
+{
+ HRESULT hr = S_OK;
+
+ if (SUCCEEDED(hr = CHECK_POINTER(pPageImageableData, E_POINTER)))
+ {
+ CComBSTR bstrQuery;
+ CPTQueryBuilder queryImageableArea(m_bstrFrameworkPrefix);
+
+ if (SUCCEEDED(hr = queryImageableArea.AddProperty(m_bstrKeywordsPrefix, CComBSTR(PAGE_IMAGEABLE_PROPERTY))) &&
+ SUCCEEDED(hr = queryImageableArea.GetQuery(&bstrQuery)) &&
+ SUCCEEDED(hr = QueryNode(bstrQuery)))
+ {
+ CPTQueryBuilder queryImageableSizeWidth(queryImageableArea);
+ CPTQueryBuilder queryImageableSizeHeight(queryImageableArea);
+
+ if (SUCCEEDED(hr = queryImageableSizeWidth.AddProperty(m_bstrKeywordsPrefix, CComBSTR(PAGE_IMAGEABLE_PROPS[ImageableSizeWidth]))) &&
+ SUCCEEDED(hr = queryImageableSizeHeight.AddProperty(m_bstrKeywordsPrefix, CComBSTR(PAGE_IMAGEABLE_PROPS[ImageableSizeHeight]))) &&
+ SUCCEEDED(hr = queryImageableSizeWidth.GetQuery(&bstrQuery)) &&
+ SUCCEEDED(hr = QueryNodeValue(bstrQuery, &pPageImageableData->imageableSizeWidth)) &&
+ SUCCEEDED(hr = queryImageableSizeHeight.GetQuery(&bstrQuery)) &&
+ SUCCEEDED(hr = QueryNodeValue(bstrQuery, &pPageImageableData->imageableSizeHeight)))
+ {
+ CPTQueryBuilder queryOriginWidth(queryImageableArea);
+ CPTQueryBuilder queryOriginHeight(queryImageableArea);
+ CPTQueryBuilder queryExtentWidth(queryImageableArea);
+ CPTQueryBuilder queryExtentHeight(queryImageableArea);
+
+ if (SUCCEEDED(hr = queryOriginWidth.AddProperty(m_bstrKeywordsPrefix, CComBSTR(PAGE_IMAGEABLE_PROPS[ImageableArea]))) &&
+ SUCCEEDED(hr = queryOriginWidth.AddProperty(m_bstrKeywordsPrefix, CComBSTR(PAGE_IMAGEABLE_PROPS_AREA[OriginWidth]))) &&
+ SUCCEEDED(hr = queryOriginHeight.AddProperty(m_bstrKeywordsPrefix, CComBSTR(PAGE_IMAGEABLE_PROPS[ImageableArea]))) &&
+ SUCCEEDED(hr = queryOriginHeight.AddProperty(m_bstrKeywordsPrefix, CComBSTR(PAGE_IMAGEABLE_PROPS_AREA[OriginHeight]))) &&
+ SUCCEEDED(hr = queryExtentWidth.AddProperty(m_bstrKeywordsPrefix, CComBSTR(PAGE_IMAGEABLE_PROPS[ImageableArea]))) &&
+ SUCCEEDED(hr = queryExtentWidth.AddProperty(m_bstrKeywordsPrefix, CComBSTR(PAGE_IMAGEABLE_PROPS_AREA[ExtentWidth]))) &&
+ SUCCEEDED(hr = queryExtentHeight.AddProperty(m_bstrKeywordsPrefix, CComBSTR(PAGE_IMAGEABLE_PROPS[ImageableArea]))) &&
+ SUCCEEDED(hr = queryExtentHeight.AddProperty(m_bstrKeywordsPrefix, CComBSTR(PAGE_IMAGEABLE_PROPS_AREA[ExtentHeight]))) &&
+ SUCCEEDED(hr = queryOriginWidth.GetQuery(&bstrQuery)) &&
+ SUCCEEDED(hr = QueryNodeValue(bstrQuery, &pPageImageableData->originWidth)) &&
+ SUCCEEDED(hr = queryOriginHeight.GetQuery(&bstrQuery)) &&
+ SUCCEEDED(hr = QueryNodeValue(bstrQuery, &pPageImageableData->originHeight)) &&
+ SUCCEEDED(hr = queryExtentWidth.GetQuery(&bstrQuery)) &&
+ SUCCEEDED(hr = QueryNodeValue(bstrQuery, &pPageImageableData->extentWidth)) &&
+ SUCCEEDED(hr = queryExtentHeight.GetQuery(&bstrQuery)))
+ {
+ hr = QueryNodeValue(bstrQuery, &pPageImageableData->extentHeight);
+ }
+ }
+ }
+ }
+
+ ERR_ON_HR_EXC(hr, E_ELEMENT_NOT_FOUND);
+ return hr;
+}
+