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

Side by Side Diff: chrome/renderer/print_web_view_helper_linux.cc

Issue 3619002: Printing: Temporary fix on Linux using dummy print settings until we get the ... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: add comment 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | printing/print_settings.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 #include "chrome/renderer/print_web_view_helper.h" 5 #include "chrome/renderer/print_web_view_helper.h"
6 6
7 #include "base/file_descriptor_posix.h" 7 #include "base/file_descriptor_posix.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "chrome/common/render_messages.h" 9 #include "chrome/common/render_messages.h"
10 #include "chrome/common/render_messages_params.h" 10 #include "chrome/common/render_messages_params.h"
11 #include "printing/native_metafile.h" 11 #include "printing/native_metafile.h"
12 #include "printing/units.h"
13 #include "skia/ext/vector_canvas.h" 12 #include "skia/ext/vector_canvas.h"
14 #include "third_party/WebKit/WebKit/chromium/public/WebFrame.h" 13 #include "third_party/WebKit/WebKit/chromium/public/WebFrame.h"
15 #include "third_party/WebKit/WebKit/chromium/public/WebSize.h" 14 #include "third_party/WebKit/WebKit/chromium/public/WebSize.h"
16 15
17 using printing::NativeMetafile; 16 using printing::NativeMetafile;
18 using WebKit::WebFrame; 17 using WebKit::WebFrame;
19 using WebKit::WebSize; 18 using WebKit::WebSize;
20 19
21 static void FillDefaultPrintParams(ViewMsg_Print_Params* params) {
22 // TODO(myhuang): Get printing parameters via IPC
23 // using the print_web_view_helper.cc version of Print.
24 // For testing purpose, we hard-coded printing parameters here.
25
26 // The paper size is US Letter (8.5 in. by 11 in.).
27 double page_width_in_pixel = 8.5 * printing::kPixelsPerInch;
28 double page_height_in_pixel = 11.0 * printing::kPixelsPerInch;
29 params->page_size = gfx::Size(
30 static_cast<int>(page_width_in_pixel),
31 static_cast<int>(page_height_in_pixel));
32 params->printable_size = gfx::Size(
33 static_cast<int>(
34 page_width_in_pixel -
35 (NativeMetafile::kLeftMarginInInch +
36 NativeMetafile::kRightMarginInInch) * printing::kPixelsPerInch),
37 static_cast<int>(
38 page_height_in_pixel -
39 (NativeMetafile::kTopMarginInInch +
40 NativeMetafile::kBottomMarginInInch) * printing::kPixelsPerInch));
41 params->margin_top = static_cast<int>(
42 NativeMetafile::kTopMarginInInch * printing::kPixelsPerInch);
43 params->margin_left = static_cast<int>(
44 NativeMetafile::kLeftMarginInInch * printing::kPixelsPerInch);
45 params->dpi = printing::kPixelsPerInch;
46 params->desired_dpi = params->dpi;
47 }
48
49 void PrintWebViewHelper::PrintPages(const ViewMsg_PrintPages_Params& params, 20 void PrintWebViewHelper::PrintPages(const ViewMsg_PrintPages_Params& params,
50 WebFrame* frame) { 21 WebFrame* frame) {
51 PrepareFrameAndViewForPrint prep_frame_view(params.params, 22 PrepareFrameAndViewForPrint prep_frame_view(params.params,
52 frame, 23 frame,
53 frame->view()); 24 frame->view());
54 int page_count = prep_frame_view.GetExpectedPageCount(); 25 int page_count = prep_frame_view.GetExpectedPageCount();
55 26
56 // TODO(myhuang): Send ViewHostMsg_DidGetPrintedPagesCount. 27 // TODO(myhuang): Send ViewHostMsg_DidGetPrintedPagesCount.
57 28
58 if (page_count == 0) 29 if (page_count == 0)
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 return; 68 return;
98 69
99 // Tell the browser we've finished writing the file. 70 // Tell the browser we've finished writing the file.
100 Send(new ViewHostMsg_TempFileForPrintingWritten(fd_in_browser)); 71 Send(new ViewHostMsg_TempFileForPrintingWritten(fd_in_browser));
101 } 72 }
102 73
103 void PrintWebViewHelper::PrintPage(const ViewMsg_PrintPage_Params& params, 74 void PrintWebViewHelper::PrintPage(const ViewMsg_PrintPage_Params& params,
104 const gfx::Size& canvas_size, 75 const gfx::Size& canvas_size,
105 WebFrame* frame, 76 WebFrame* frame,
106 printing::NativeMetafile* metafile) { 77 printing::NativeMetafile* metafile) {
107 ViewMsg_Print_Params default_params;
108 FillDefaultPrintParams(&default_params);
109
110 double content_width_in_points; 78 double content_width_in_points;
111 double content_height_in_points; 79 double content_height_in_points;
112 double margin_top_in_points; 80 double margin_top_in_points;
113 double margin_right_in_points; 81 double margin_right_in_points;
114 double margin_bottom_in_points; 82 double margin_bottom_in_points;
115 double margin_left_in_points; 83 double margin_left_in_points;
116 GetPageSizeAndMarginsInPoints(frame, 84 GetPageSizeAndMarginsInPoints(frame,
117 params.page_number, 85 params.page_number,
118 default_params, 86 params.params,
119 &content_width_in_points, 87 &content_width_in_points,
120 &content_height_in_points, 88 &content_height_in_points,
121 &margin_top_in_points, 89 &margin_top_in_points,
122 &margin_right_in_points, 90 &margin_right_in_points,
123 &margin_bottom_in_points, 91 &margin_bottom_in_points,
124 &margin_left_in_points); 92 &margin_left_in_points);
125 93
126 cairo_t* cairo_context = 94 cairo_t* cairo_context =
127 metafile->StartPage(content_width_in_points, 95 metafile->StartPage(content_width_in_points,
128 content_height_in_points, 96 content_height_in_points,
129 margin_top_in_points, 97 margin_top_in_points,
130 margin_right_in_points, 98 margin_right_in_points,
131 margin_bottom_in_points, 99 margin_bottom_in_points,
132 margin_left_in_points); 100 margin_left_in_points);
133 if (!cairo_context) 101 if (!cairo_context)
134 return; 102 return;
135 103
136 skia::VectorCanvas canvas(cairo_context, 104 skia::VectorCanvas canvas(cairo_context,
137 canvas_size.width(), canvas_size.height()); 105 canvas_size.width(), canvas_size.height());
138 frame->printPage(params.page_number, &canvas); 106 frame->printPage(params.page_number, &canvas);
139 107
140 // TODO(myhuang): We should handle transformation for paper margins. 108 // TODO(myhuang): We should handle transformation for paper margins.
141 // TODO(myhuang): We should render the header and the footer. 109 // TODO(myhuang): We should render the header and the footer.
142 110
143 // Done printing. Close the device context to retrieve the compiled metafile. 111 // Done printing. Close the device context to retrieve the compiled metafile.
144 if (!metafile->FinishPage()) 112 if (!metafile->FinishPage())
145 NOTREACHED() << "metafile failed"; 113 NOTREACHED() << "metafile failed";
146 } 114 }
OLDNEW
« no previous file with comments | « no previous file | printing/print_settings.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698