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

Side by Side Diff: win8/metro_driver/print_handler.h

Issue 10875008: Integrate the Windows 8 code into the Chromium tree. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove conflicting OWNERS file. Created 8 years, 3 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
« no previous file with comments | « win8/metro_driver/print_document_source.cc ('k') | win8/metro_driver/print_handler.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2012 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_UI_METRO_DRIVER_PRINT_HANDLER_H_
6 #define CHROME_BROWSER_UI_METRO_DRIVER_PRINT_HANDLER_H_
7
8 #include <windows.media.playto.h>
9 #include <windows.graphics.printing.h>
10 #include <windows.ui.core.h>
11
12 #include "base/synchronization/lock.h"
13 #include "base/threading/thread.h"
14 #include "win8/metro_driver/print_document_source.h"
15 #include "win8/metro_driver/winrt_utils.h"
16
17 namespace base {
18
19 class Lock;
20
21 } // namespace base
22
23 namespace metro_driver {
24
25 // This class handles the print aspect of the devices charm.
26 class PrintHandler {
27 public:
28 PrintHandler();
29 ~PrintHandler();
30
31 HRESULT Initialize(winui::Core::ICoreWindow* window);
32
33 // Called by the exported C functions.
34 static void EnablePrinting(bool printing_enabled);
35 static void SetPageCount(size_t page_count);
36 static void AddPage(size_t page_number, IStream* metafile_stream);
37 static void ShowPrintUI();
38
39 private:
40 // Callbacks from Metro.
41 HRESULT OnPrintRequested(
42 wingfx::Printing::IPrintManager* print_mgr,
43 wingfx::Printing::IPrintTaskRequestedEventArgs* event_args);
44
45 HRESULT OnPrintTaskSourceRequest(
46 wingfx::Printing::IPrintTaskSourceRequestedArgs* args);
47
48 HRESULT OnCompleted(wingfx::Printing::IPrintTask* task,
49 wingfx::Printing::IPrintTaskCompletedEventArgs* args);
50 // Utility methods.
51 void ClearPrintTask();
52 float GetLogicalDpi();
53
54 // Callback from Metro and entry point called on lockable thread.
55 HRESULT LogicalDpiChanged(IInspectable *sender);
56 static void OnLogicalDpiChanged(float dpi);
57
58 // Called on the lockable thread to set/release the doc.
59 static void SetPrintDocumentSource(
60 const mswr::ComPtr<PrintDocumentSource>& print_document_source);
61 static void ReleasePrintDocumentSource();
62
63 // Called on the lockable thread for the exported C functions.
64 static void OnEnablePrinting(bool printing_enabled);
65 static void OnSetPageCount(size_t page_count);
66 static void OnAddPage(size_t page_number,
67 mswr::ComPtr<IStream> metafile_stream);
68
69 // Opens the prit device charm. Must be called from the metro thread.
70 static void OnShowPrintUI();
71
72 mswr::ComPtr<wingfx::Printing::IPrintTask> print_task_;
73 EventRegistrationToken print_requested_token_;
74 EventRegistrationToken print_completed_token_;
75 EventRegistrationToken dpi_change_token_;
76
77 mswr::ComPtr<wingfx::Printing::IPrintManager> print_manager_;
78 PrintDocumentSource::DirectXContext directx_context_;
79
80 // Hack to give access to the Print Document from the C style entry points.
81 // This will go away once we can pass a pointer to this interface down to
82 // the Chrome Browser as we send the command to print.
83 static mswr::ComPtr<PrintDocumentSource> current_document_source_;
84
85 // Another hack to enable/disable printing from an exported C function.
86 // TODO(mad): Find a better way to do this...
87 static bool printing_enabled_;
88
89 // This is also a temporary hack until we can pass down the print document
90 // to Chrome so it can call directly into it. We need to lock the access to
91 // current_document_source_.
92 static base::Lock* lock_;
93
94 // This thread is used to send blocking jobs
95 // out of threads we don't want to block.
96 static base::Thread* thread_;
97 };
98
99 } // namespace metro_driver
100
101 // Exported C functions for Chrome to call into the Metro module.
102 extern "C" __declspec(dllexport)
103 void MetroEnablePrinting(BOOL printing_enabled);
104
105 extern "C" __declspec(dllexport)
106 void MetroSetPrintPageCount(size_t page_count);
107
108 extern "C" __declspec(dllexport)
109 void MetroSetPrintPageContent(size_t current_page,
110 void* data,
111 size_t data_size);
112
113 extern "C" __declspec(dllexport)
114 void MetroShowPrintUI();
115
116 #endif // CHROME_BROWSER_UI_METRO_DRIVER_PRINT_HANDLER_H_
OLDNEW
« no previous file with comments | « win8/metro_driver/print_document_source.cc ('k') | win8/metro_driver/print_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698