Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(894)

Unified Diff: printing/backend/printing_info_win.h

Issue 11530005: Wrapers for PRINTER_INFO_* and DRIVER_INFO_*. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: printing/backend/printing_info_win.h
diff --git a/printing/backend/printing_info_win.h b/printing/backend/printing_info_win.h
new file mode 100644
index 0000000000000000000000000000000000000000..f0f3ecfc142c5cf9e12d43ed49f0359d7fb79f49
--- /dev/null
+++ b/printing/backend/printing_info_win.h
@@ -0,0 +1,91 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef PRINTING_BACKEND_PRINTING_INFO_WIN_H_
+#define PRINTING_BACKEND_PRINTING_INFO_WIN_H_
+
+#include <objidl.h>
+#include <winspool.h>
+
+#include "base/memory/scoped_ptr.h"
+#include "printing/printing_export.h"
+
+namespace printing {
+
+namespace internal {
+
+PRINTING_EXPORT uint8* GetDriverInfo(HANDLE printer, int level);
+PRINTING_EXPORT uint8* GetPrinterInfo(HANDLE printer, int level);
+
+// This class is designed to work with PRINTER_INFO_X structures
+// and calls GetPrinter internally with correctly allocated buffer.
+template <typename PrinterInfoType, int level>
+class PrinterInfo {
+ public:
+ bool Init(HANDLE printer) {
+ buffer_.reset(GetPrinterInfo(printer, level));
+ return buffer_;
+ }
+
+ const PrinterInfoType* get() const {
+ return reinterpret_cast<const PrinterInfoType*>(buffer_.get());
+ }
+
+ private:
+ scoped_array<uint8> buffer_;
+};
+
+// This class is designed to work with DRIVER_INFO_X structures
+// and calls GetDriverInfo internally with correctly allocated buffer.
+template <typename DriverInfoType, int level>
+class DriverInfo {
+ public:
+ bool Init(HANDLE printer) {
+ buffer_.reset(GetDriverInfo(printer, level));
+ return buffer_;
+ }
+
+ const DriverInfoType* get() const {
+ return reinterpret_cast<const DriverInfoType*>(buffer_.get());
+ }
+
+ private:
+ scoped_array<uint8> buffer_;
+};
+
+} // namespace internal
+
+typedef internal::PrinterInfo<PRINTER_INFO_2, 2> PrinterInfo2;
+typedef internal::PrinterInfo<PRINTER_INFO_5, 5> PrinterInfo5;
+typedef internal::PrinterInfo<PRINTER_INFO_8, 8> PrinterInfo8;
+typedef internal::PrinterInfo<PRINTER_INFO_9, 9> PrinterInfo9;
+
+typedef internal::DriverInfo<DRIVER_INFO_6, 6> DriverInfo6;
+
+// Retrieves DEVMODE from PRINTER_INFO_* structures.
+// Requests in following order:
+// 9 (user-default),
+// 8 (admin-default),
+// 2 (printer-default).
+class PRINTING_EXPORT DevMode {
gene 2012/12/11 18:03:31 This class name is confusing. It sounds like a wra
Vitaly Buka (NO REVIEWS) 2012/12/11 19:24:24 Done.
+ public:
+ DevMode();
+ ~DevMode();
+
+ bool Init(HANDLE printer);
+
+ const DEVMODE* get() const {
+ return dev_mode_;
+ }
+
+ private:
+ PrinterInfo2 info_2_;
+ PrinterInfo8 info_8_;
+ PrinterInfo9 info_9_;
+ const DEVMODE* dev_mode_;
+};
+
+} // namespace printing
+
+#endif // PRINTING_BACKEND_PRINTING_INFO_WIN_H_

Powered by Google App Engine
This is Rietveld 408576698