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

Unified Diff: chrome/renderer/print_web_view_helper_win.cc

Issue 2859040: Implement limited paged media support for win. (Closed)
Patch Set: the comment fix Created 10 years, 6 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 | « chrome/renderer/print_web_view_helper.cc ('k') | printing/page_overlays_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/renderer/print_web_view_helper_win.cc
diff --git a/chrome/renderer/print_web_view_helper_win.cc b/chrome/renderer/print_web_view_helper_win.cc
index 396edb56b5c31813d956384983730596a7441ee2..3ceb8eee1a51a44b3f67bb9d896cc30c0ca4a354 100644
--- a/chrome/renderer/print_web_view_helper_win.cc
+++ b/chrome/renderer/print_web_view_helper_win.cc
@@ -11,9 +11,12 @@
#include "gfx/size.h"
#include "grit/generated_resources.h"
#include "printing/native_metafile.h"
+#include "printing/units.h"
#include "skia/ext/vector_canvas.h"
#include "third_party/WebKit/WebKit/chromium/public/WebFrame.h"
+using printing::ConvertUnitDouble;
+using printing::kPointsPerInch;
using WebKit::WebFrame;
using WebKit::WebString;
@@ -27,12 +30,30 @@ void PrintWebViewHelper::PrintPage(const ViewMsg_PrintPage_Params& params,
HDC hdc = metafile.hdc();
DCHECK(hdc);
skia::PlatformDevice::InitializeDC(hdc);
+
+ double content_width_in_points;
+ double content_height_in_points;
+ double margin_top_in_points;
+ double margin_right_in_points;
+ double margin_bottom_in_points;
+ double margin_left_in_points;
+ GetPageSizeAndMarginsInPoints(frame,
+ params.page_number,
+ params.params,
+ &content_width_in_points,
+ &content_height_in_points,
+ &margin_top_in_points,
+ &margin_right_in_points,
+ &margin_bottom_in_points,
+ &margin_left_in_points);
+
// Since WebKit extends the page width depending on the magical shrink
// factor we make sure the canvas covers the worst case scenario
// (x2.0 currently). PrintContext will then set the correct clipping region.
- int size_x = static_cast<int>(canvas_size.width() * params.params.max_shrink);
- int size_y = static_cast<int>(canvas_size.height() *
- params.params.max_shrink);
+ int size_x = static_cast<int>(content_width_in_points *
+ params.params.max_shrink);
+ int size_y = static_cast<int>(content_height_in_points *
+ params.params.max_shrink);
// Calculate the dpi adjustment.
float shrink = static_cast<float>(canvas_size.width()) /
params.params.printable_size.width();
@@ -94,6 +115,26 @@ void PrintWebViewHelper::PrintPage(const ViewMsg_PrintPage_Params& params,
page_params.page_number = params.page_number;
page_params.document_cookie = params.params.document_cookie;
page_params.actual_shrink = shrink;
+ page_params.page_size = gfx::Size(
+ static_cast<int>(ConvertUnitDouble(
+ content_width_in_points +
+ margin_left_in_points + margin_right_in_points,
+ kPointsPerInch, params.params.dpi)),
+ static_cast<int>(ConvertUnitDouble(
+ content_height_in_points +
+ margin_top_in_points + margin_bottom_in_points,
+ kPointsPerInch, params.params.dpi)));
+ page_params.content_area = gfx::Rect(
+ static_cast<int>(ConvertUnitDouble(
+ margin_left_in_points, kPointsPerInch, params.params.dpi)),
+ static_cast<int>(ConvertUnitDouble(
+ margin_top_in_points, kPointsPerInch, params.params.dpi)),
+ static_cast<int>(ConvertUnitDouble(
+ content_width_in_points, kPointsPerInch, params.params.dpi)),
+ static_cast<int>(ConvertUnitDouble(
+ content_height_in_points, kPointsPerInch, params.params.dpi)));
+ page_params.has_visible_overlays =
+ frame->isPageBoxVisible(params.page_number);
base::SharedMemory shared_buf;
// http://msdn2.microsoft.com/en-us/library/ms535522.aspx
@@ -125,4 +166,3 @@ void PrintWebViewHelper::PrintPage(const ViewMsg_PrintPage_Params& params,
Send(new ViewHostMsg_DidPrintPage(routing_id(), page_params));
}
}
-
« no previous file with comments | « chrome/renderer/print_web_view_helper.cc ('k') | printing/page_overlays_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698