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

Unified Diff: printing/printing_context_win.h

Issue 3610013: Printing: Convert PrintingContext into an interface implemented by the separate (Closed)
Patch Set: Comment cleanup only. Created 10 years, 2 months 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
« no previous file with comments | « printing/printing_context_mac.mm ('k') | printing/printing_context_win.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: printing/printing_context_win.h
diff --git a/printing/printing_context_win.h b/printing/printing_context_win.h
new file mode 100644
index 0000000000000000000000000000000000000000..90fc7384a6e7acc9b545240357ab35348730c69c
--- /dev/null
+++ b/printing/printing_context_win.h
@@ -0,0 +1,97 @@
+// Copyright (c) 2010 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_PRINTING_CONTEXT_WIN_H_
+#define PRINTING_PRINTING_CONTEXT_WIN_H_
+
+#include <ocidl.h>
+#include <commdlg.h>
+
+#include <string>
+
+#include "base/scoped_ptr.h"
+#include "build/build_config.h"
+#include "gfx/native_widget_types.h"
+#include "printing/printing_context.h"
+
+namespace printing {
+
+class PrintingContextWin : public PrintingContext {
+ public:
+ PrintingContextWin();
+ ~PrintingContextWin();
+
+ // PrintingContext implementation.
+ virtual void AskUserForSettings(gfx::NativeView parent_view,
+ int max_pages,
+ bool has_selection,
+ PrintSettingsCallback* callback);
+ virtual Result UseDefaultSettings();
+ virtual Result InitWithSettings(const PrintSettings& settings);
+ virtual Result NewDocument(const string16& document_name);
+ virtual Result NewPage();
+ virtual Result PageDone();
+ virtual Result DocumentDone();
+ virtual void Cancel();
+ virtual void DismissDialog();
+ virtual void ReleaseContext();
+ virtual gfx::NativeDrawingContext context() const;
+
+#if defined(UNIT_TEST)
+ // Sets a fake PrintDlgEx function pointer in tests.
+ void SetPrintDialog(HRESULT (__stdcall *print_dialog_func)(LPPRINTDLGEX)) {
+ print_dialog_func_ = print_dialog_func;
+ }
+#endif // defined(UNIT_TEST)
+
+ // Allocates the HDC for a specific DEVMODE.
+ static bool AllocateContext(const std::wstring& printer_name,
+ const DEVMODE* dev_mode,
+ gfx::NativeDrawingContext* context);
+
+ // Retrieves the content of a GetPrinter call.
+ static void GetPrinterHelper(HANDLE printer, int level,
+ scoped_array<uint8>* buffer);
+
+ private:
+ // Class that manages the PrintDlgEx() callbacks. This is meant to be a
+ // temporary object used during the Print... dialog display.
+ class CallbackHandler;
+
+ // Used in response to the user canceling the printing.
+ static BOOL CALLBACK AbortProc(HDC hdc, int nCode);
+
+ // Reads the settings from the selected device context. Updates settings_ and
+ // its margins.
+ bool InitializeSettings(const DEVMODE& dev_mode,
+ const std::wstring& new_device_name,
+ const PRINTPAGERANGE* ranges,
+ int number_ranges,
+ bool selection_only);
+
+ // Retrieves the printer's default low-level settings. On Windows, context_ is
+ // allocated with this call.
+ bool GetPrinterSettings(HANDLE printer,
+ const std::wstring& device_name);
+
+ // Parses the result of a PRINTDLGEX result.
+ Result ParseDialogResultEx(const PRINTDLGEX& dialog_options);
+ Result ParseDialogResult(const PRINTDLG& dialog_options);
+
+ // The selected printer context.
+ HDC context_;
+
+ // The dialog box for the time it is shown.
+ volatile HWND dialog_box_;
+
+ // Function pointer that defaults to PrintDlgEx. It can be changed using
+ // SetPrintDialog() in tests.
+ HRESULT (__stdcall *print_dialog_func_)(LPPRINTDLGEX);
+
+ DISALLOW_COPY_AND_ASSIGN(PrintingContextWin);
+};
+
+} // namespace printing
+
+#endif // PRINTING_PRINTING_CONTEXT_WIN_H_
« no previous file with comments | « printing/printing_context_mac.mm ('k') | printing/printing_context_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698