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

Side by Side Diff: printing/printing_context.h

Issue 149212: Move printing related stuff to the root printing project from the browser pro... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 5 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_PRINTING_WIN_PRINTING_CONTEXT_H__ 5 #ifndef PRINTING_PRINTING_CONTEXT_H_
6 #define CHROME_BROWSER_PRINTING_WIN_PRINTING_CONTEXT_H__ 6 #define PRINTING_PRINTING_CONTEXT_H_
7 7
8 #include "build/build_config.h"
9
10 #if defined(OS_WIN)
8 #include <ocidl.h> 11 #include <ocidl.h>
9 #include <commdlg.h> 12 #include <commdlg.h>
13 #endif
14
10 #include <string> 15 #include <string>
11 16
12 #include "base/basictypes.h" 17 #include "base/basictypes.h"
13 #include "chrome/browser/printing/print_settings.h" 18 #include "printing/print_settings.h"
14 19
15 namespace printing { 20 namespace printing {
16 21
17 // Describe the user selected printing context for Windows. This includes the 22 // Describe the user selected printing context for Windows. This includes the
18 // OS-dependent UI to ask the user about the print settings. This class directly 23 // OS-dependent UI to ask the user about the print settings. This class directly
19 // talk to the printer and manages the document and pages breaks. 24 // talk to the printer and manages the document and pages breaks.
20 class PrintingContext { 25 class PrintingContext {
21 public: 26 public:
22 // Tri-state result for user behavior-dependent functions. 27 // Tri-state result for user behavior-dependent functions.
23 enum Result { 28 enum Result {
24 OK, 29 OK,
25 CANCEL, 30 CANCEL,
26 FAILED, 31 FAILED,
27 }; 32 };
28 33
29 PrintingContext(); 34 PrintingContext();
30 ~PrintingContext(); 35 ~PrintingContext();
31 36
37 #if defined(OS_WIN)
32 // Asks the user what printer and format should be used to print. Updates the 38 // Asks the user what printer and format should be used to print. Updates the
33 // context with the select device settings. 39 // context with the select device settings.
34 Result AskUserForSettings(HWND window, int max_pages, bool has_selection); 40 Result AskUserForSettings(HWND window, int max_pages, bool has_selection);
41 #endif
35 42
36 // Selects the user's default printer and format. Updates the context with the 43 // Selects the user's default printer and format. Updates the context with the
37 // default device settings. 44 // default device settings.
38 Result UseDefaultSettings(); 45 Result UseDefaultSettings();
39 46
40 // Initializes with predefined settings. 47 // Initializes with predefined settings.
41 Result InitWithSettings(const PrintSettings& settings); 48 Result InitWithSettings(const PrintSettings& settings);
42 49
43 // Reinitializes the settings to uninitialized for object reuse. 50 // Reinitializes the settings to uninitialized for object reuse.
44 void ResetSettings(); 51 void ResetSettings();
45 52
46 // Does platform specific setup of the printer before the printing. Signal the 53 // Does platform specific setup of the printer before the printing. Signal the
47 // printer that a document is about to be spooled. 54 // printer that a document is about to be spooled.
48 // Warning: This function enters a message loop. That may cause side effects 55 // Warning: This function enters a message loop. That may cause side effects
49 // like IPC message processing! Some printers have side-effects on this call 56 // like IPC message processing! Some printers have side-effects on this call
50 // like virtual printers that ask the user for the path of the saved document; 57 // like virtual printers that ask the user for the path of the saved document;
51 // for example a PDF printer. 58 // for example a PDF printer.
52 Result NewDocument(const std::wstring& document_name); 59 Result NewDocument(const std::wstring& document_name);
53 60
54 // Starts a new page. 61 // Starts a new page.
55 Result NewPage(); 62 Result NewPage();
56 63
57 // Closes the printed page. 64 // Closes the printed page.
58 Result PageDone(); 65 Result PageDone();
59 66
60 // Closes the printing job. After this call the object is ready to start a new 67 // Closes the printing job. After this call the object is ready to start a new
61 // document. 68 // document.
62 Result DocumentDone(); 69 Result DocumentDone();
63 70
64 // Cancels printing. Can be used in a multithreaded context. Takes effect 71 // Cancels printing. Can be used in a multi-threaded context. Takes effect
65 // immediately. 72 // immediately.
66 void Cancel(); 73 void Cancel();
67 74
68 // Dismiss the Print... dialog box if shown. 75 // Dismiss the Print... dialog box if shown.
69 void DismissDialog(); 76 void DismissDialog();
70 77
78 #if defined(OS_WIN)
71 HDC context() { 79 HDC context() {
72 return hdc_; 80 return hdc_;
73 } 81 }
82 #endif
74 83
75 const PrintSettings& settings() const { 84 const PrintSettings& settings() const {
76 return settings_; 85 return settings_;
77 } 86 }
78 87
79 private: 88 private:
80 // Class that manages the PrintDlgEx() callbacks. This is meant to be a 89 // Class that manages the PrintDlgEx() callbacks. This is meant to be a
81 // temporary object used during the Print... dialog display. 90 // temporary object used during the Print... dialog display.
82 class CallbackHandler; 91 class CallbackHandler;
83 92
84 // Does bookkeeping when an error occurs. 93 // Does bookkeeping when an error occurs.
85 PrintingContext::Result OnError(); 94 PrintingContext::Result OnError();
86 95
96 #if defined(OS_WIN)
87 // Used in response to the user canceling the printing. 97 // Used in response to the user canceling the printing.
88 static BOOL CALLBACK AbortProc(HDC hdc, int nCode); 98 static BOOL CALLBACK AbortProc(HDC hdc, int nCode);
89 99
90 // Reads the settings from the selected device context. Updates settings_ and 100 // Reads the settings from the selected device context. Updates settings_ and
91 // its margins. 101 // its margins.
92 bool InitializeSettings(const DEVMODE& dev_mode, 102 bool InitializeSettings(const DEVMODE& dev_mode,
93 const std::wstring& new_device_name, 103 const std::wstring& new_device_name,
94 const PRINTPAGERANGE* ranges, 104 const PRINTPAGERANGE* ranges,
95 int number_ranges, 105 int number_ranges,
96 bool selection_only); 106 bool selection_only);
97 107
98 // Retrieves the printer's default low-level settings. hdc_ is allocated with 108 // Retrieves the printer's default low-level settings. hdc_ is allocated with
99 // this call. 109 // this call.
100 bool GetPrinterSettings(HANDLE printer, 110 bool GetPrinterSettings(HANDLE printer,
101 const std::wstring& device_name); 111 const std::wstring& device_name);
102 112
103 // Allocates the HDC for a specific DEVMODE. 113 // Allocates the HDC for a specific DEVMODE.
104 bool AllocateContext(const std::wstring& printer_name, 114 bool AllocateContext(const std::wstring& printer_name,
105 const DEVMODE* dev_mode); 115 const DEVMODE* dev_mode);
106 116
107 // Parses the result of a PRINTDLGEX result. 117 // Parses the result of a PRINTDLGEX result.
108 Result ParseDialogResultEx(const PRINTDLGEX& dialog_options); 118 Result ParseDialogResultEx(const PRINTDLGEX& dialog_options);
109 Result ParseDialogResult(const PRINTDLG& dialog_options); 119 Result ParseDialogResult(const PRINTDLG& dialog_options);
110 120
111 // The selected printer context. 121 // The selected printer context.
112 HDC hdc_; 122 HDC hdc_;
123 #endif
113 124
114 // Complete print context settings. 125 // Complete print context settings.
115 PrintSettings settings_; 126 PrintSettings settings_;
116 127
117 #ifndef NDEBUG 128 #ifndef NDEBUG
118 // Current page number in the print job. 129 // Current page number in the print job.
119 int page_number_; 130 int page_number_;
120 #endif 131 #endif
121 132
133 #if defined(OS_WIN)
122 // The dialog box for the time it is shown. 134 // The dialog box for the time it is shown.
123 volatile HWND dialog_box_; 135 volatile HWND dialog_box_;
136 #endif
124 137
125 // The dialog box has been dismissed. 138 // The dialog box has been dismissed.
126 volatile bool dialog_box_dismissed_; 139 volatile bool dialog_box_dismissed_;
127 140
128 // Is a print job being done. 141 // Is a print job being done.
129 volatile bool in_print_job_; 142 volatile bool in_print_job_;
130 143
131 // Did the user cancel the print job. 144 // Did the user cancel the print job.
132 volatile bool abort_printing_; 145 volatile bool abort_printing_;
133 146
134 DISALLOW_EVIL_CONSTRUCTORS(PrintingContext); 147 DISALLOW_EVIL_CONSTRUCTORS(PrintingContext);
135 }; 148 };
136 149
137 } // namespace printing 150 } // namespace printing
138 151
139 #endif // CHROME_BROWSER_PRINTING_WIN_PRINTING_CONTEXT_H__ 152 #endif // PRINTING_PRINTING_CONTEXT_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698