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

Side by Side Diff: webkit/plugins/ppapi/ppapi_plugin_instance.cc

Issue 6826027: Connect the right metafiles for print preview on Linux and Windows. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix compile problems Created 9 years, 8 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 | « skia/ext/vector_platform_device_skia.h ('k') | no next file » | 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "webkit/plugins/ppapi/ppapi_plugin_instance.h" 5 #include "webkit/plugins/ppapi/ppapi_plugin_instance.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 #include "webkit/plugins/ppapi/ppb_graphics_2d_impl.h" 52 #include "webkit/plugins/ppapi/ppb_graphics_2d_impl.h"
53 #include "webkit/plugins/ppapi/ppb_image_data_impl.h" 53 #include "webkit/plugins/ppapi/ppb_image_data_impl.h"
54 #include "webkit/plugins/ppapi/ppb_surface_3d_impl.h" 54 #include "webkit/plugins/ppapi/ppb_surface_3d_impl.h"
55 #include "webkit/plugins/ppapi/ppb_url_loader_impl.h" 55 #include "webkit/plugins/ppapi/ppb_url_loader_impl.h"
56 #include "webkit/plugins/ppapi/ppb_url_request_info_impl.h" 56 #include "webkit/plugins/ppapi/ppb_url_request_info_impl.h"
57 #include "webkit/plugins/ppapi/ppp_pdf.h" 57 #include "webkit/plugins/ppapi/ppp_pdf.h"
58 #include "webkit/plugins/ppapi/string.h" 58 #include "webkit/plugins/ppapi/string.h"
59 #include "webkit/plugins/ppapi/var.h" 59 #include "webkit/plugins/ppapi/var.h"
60 #include "webkit/plugins/sad_plugin.h" 60 #include "webkit/plugins/sad_plugin.h"
61 61
62 #if defined(OS_POSIX)
63 #include "printing/native_metafile.h"
64 #endif
65
66 #if defined(OS_MACOSX) 62 #if defined(OS_MACOSX)
67 #include "base/mac/mac_util.h" 63 #include "base/mac/mac_util.h"
68 #include "base/mac/scoped_cftyperef.h" 64 #include "base/mac/scoped_cftyperef.h"
69 #include "printing/native_metafile_factory.h" 65 #include "printing/metafile_impl.h"
70 #endif 66 #endif
71 67
72 #if defined(OS_LINUX) 68 #if defined(OS_LINUX)
73 #include "printing/native_metafile_skia_wrapper.h" 69 #include "printing/metafile.h"
70 #include "printing/metafile_skia_wrapper.h"
74 #endif 71 #endif
75 72
76 #if defined(OS_WIN) 73 #if defined(OS_WIN)
77 #include "skia/ext/vector_platform_device_emf_win.h" 74 #include "skia/ext/vector_platform_device_emf_win.h"
78 #include "ui/gfx/codec/jpeg_codec.h" 75 #include "ui/gfx/codec/jpeg_codec.h"
79 #include "ui/gfx/gdi_util.h" 76 #include "ui/gfx/gdi_util.h"
80 #endif 77 #endif
81 78
82 using WebKit::WebBindings; 79 using WebKit::WebBindings;
83 using WebKit::WebCanvas; 80 using WebKit::WebCanvas;
(...skipping 1111 matching lines...) Expand 10 before | Expand all | Expand 10 after
1195 return false; 1192 return false;
1196 RenderPDFPageToDCProc render_proc = 1193 RenderPDFPageToDCProc render_proc =
1197 reinterpret_cast<RenderPDFPageToDCProc>( 1194 reinterpret_cast<RenderPDFPageToDCProc>(
1198 GetProcAddress(pdf_module, "RenderPDFPageToDC")); 1195 GetProcAddress(pdf_module, "RenderPDFPageToDC"));
1199 if (!render_proc) 1196 if (!render_proc)
1200 return false; 1197 return false;
1201 #endif // defined(OS_WIN) 1198 #endif // defined(OS_WIN)
1202 1199
1203 bool ret = false; 1200 bool ret = false;
1204 #if defined(OS_LINUX) 1201 #if defined(OS_LINUX)
1205 // On Linux we just set the final bits in the native metafile. 1202 // On Linux we just set the final bits in the native metafile
1206 printing::NativeMetafile* metafile = 1203 // (NativeMetafile and PreviewMetafile must have compatible formats,
1207 printing::NativeMetafileSkiaWrapper::GetMetafileFromCanvas(canvas); 1204 // i.e. both PDF for this to work).
1205 printing::Metafile* metafile =
1206 printing::MetafileSkiaWrapper::GetMetafileFromCanvas(canvas);
1208 DCHECK(metafile != NULL); 1207 DCHECK(metafile != NULL);
1209 if (metafile) 1208 if (metafile)
1210 ret = metafile->InitFromData(buffer->mapped_buffer(), buffer->size()); 1209 ret = metafile->InitFromData(buffer->mapped_buffer(), buffer->size());
1211 #elif defined(OS_MACOSX) 1210 #elif defined(OS_MACOSX)
1211 printing::NativeMetafile metafile;
1212 // Create a PDF metafile and render from there into the passed in context. 1212 // Create a PDF metafile and render from there into the passed in context.
1213 scoped_ptr<printing::NativeMetafile> metafile( 1213 if (metafile.InitFromData(buffer->mapped_buffer(), buffer->size())) {
1214 printing::NativeMetafileFactory::CreateFromData(buffer->mapped_buffer(),
1215 buffer->size()));
1216 if (metafile.get() != NULL) {
1217 // Flip the transform. 1214 // Flip the transform.
1218 CGContextSaveGState(canvas); 1215 CGContextSaveGState(canvas);
1219 CGContextTranslateCTM(canvas, 0, 1216 CGContextTranslateCTM(canvas, 0,
1220 current_print_settings_.printable_area.size.height); 1217 current_print_settings_.printable_area.size.height);
1221 CGContextScaleCTM(canvas, 1.0, -1.0); 1218 CGContextScaleCTM(canvas, 1.0, -1.0);
1222 CGRect page_rect; 1219 CGRect page_rect;
1223 page_rect.origin.x = current_print_settings_.printable_area.point.x; 1220 page_rect.origin.x = current_print_settings_.printable_area.point.x;
1224 page_rect.origin.y = current_print_settings_.printable_area.point.y; 1221 page_rect.origin.y = current_print_settings_.printable_area.point.y;
1225 page_rect.size.width = current_print_settings_.printable_area.size.width; 1222 page_rect.size.width = current_print_settings_.printable_area.size.width;
1226 page_rect.size.height = current_print_settings_.printable_area.size.height; 1223 page_rect.size.height = current_print_settings_.printable_area.size.height;
1227 1224
1228 ret = metafile->RenderPage(1, canvas, page_rect, true, false, true, true); 1225 ret = metafile.RenderPage(1, canvas, page_rect, true, false, true, true);
1229 CGContextRestoreGState(canvas); 1226 CGContextRestoreGState(canvas);
1230 } 1227 }
1231 #elif defined(OS_WIN) 1228 #elif defined(OS_WIN)
1232 // On Windows, we now need to render the PDF to the DC that backs the 1229 // On Windows, we now need to render the PDF to the DC that backs the
1233 // supplied canvas. 1230 // supplied canvas.
1234 HDC dc = skia::BeginPlatformPaint(canvas); 1231 HDC dc = skia::BeginPlatformPaint(canvas);
1235 gfx::Size size_in_pixels; 1232 gfx::Size size_in_pixels;
1236 size_in_pixels.set_width( 1233 size_in_pixels.set_width(
1237 printing::ConvertUnit(current_print_settings_.printable_area.size.width, 1234 printing::ConvertUnit(current_print_settings_.printable_area.size.width,
1238 static_cast<int>(printing::kPointsPerInch), 1235 static_cast<int>(printing::kPointsPerInch),
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after
1468 return found->second; 1465 return found->second;
1469 } 1466 }
1470 1467
1471 bool PluginInstance::IsFullPagePlugin() const { 1468 bool PluginInstance::IsFullPagePlugin() const {
1472 WebFrame* frame = container()->element().document().frame(); 1469 WebFrame* frame = container()->element().document().frame();
1473 return frame->view()->mainFrame()->document().isPluginDocument(); 1470 return frame->view()->mainFrame()->document().isPluginDocument();
1474 } 1471 }
1475 1472
1476 } // namespace ppapi 1473 } // namespace ppapi
1477 } // namespace webkit 1474 } // namespace webkit
OLDNEW
« no previous file with comments | « skia/ext/vector_platform_device_skia.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698