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

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

Powered by Google App Engine
This is Rietveld 408576698