diff options
author | sverrir@google.com <sverrir@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-06 15:25:50 +0000 |
---|---|---|
committer | sverrir@google.com <sverrir@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-06 15:25:50 +0000 |
commit | 0e0fca32b226a29a774728b642848bfdd732f791 (patch) | |
tree | 70547f886163e2a364ed47a8d5c85765d48f0e12 /chrome/renderer | |
parent | d09e2889c21d0a420b70680291906e4a17fb8503 (diff) | |
download | chromium_src-0e0fca32b226a29a774728b642848bfdd732f791.zip chromium_src-0e0fca32b226a29a774728b642848bfdd732f791.tar.gz chromium_src-0e0fca32b226a29a774728b642848bfdd732f791.tar.bz2 |
Move Emf class to the printing library. Also creates a platform agnostic NativeMetafile definition to ease platform porting.
BUG=none
TEST=none (No functional change)
Review URL: http://codereview.chromium.org/149181
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@19943 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer')
-rw-r--r-- | chrome/renderer/mock_printer.cc | 2 | ||||
-rw-r--r-- | chrome/renderer/mock_printer_driver_win.cc | 6 | ||||
-rw-r--r-- | chrome/renderer/print_web_view_helper.cc | 38 | ||||
-rw-r--r-- | chrome/renderer/webplugin_delegate_proxy.cc | 11 |
4 files changed, 27 insertions, 30 deletions
diff --git a/chrome/renderer/mock_printer.cc b/chrome/renderer/mock_printer.cc index 1b0dcc5..2454a0c 100644 --- a/chrome/renderer/mock_printer.cc +++ b/chrome/renderer/mock_printer.cc @@ -113,7 +113,7 @@ void MockPrinter::PrintPage(const ViewHostMsg_DidPrintPage_Params& params) { // We duplicate the given file handle when creating a base::SharedMemory // instance so that its destructor closes the copy. EXPECT_GT(params.data_size, 0U); - base::SharedMemory emf_data(params.emf_data_handle, true, + base::SharedMemory emf_data(params.metafile_data_handle, true, GetCurrentProcess()); emf_data.Map(params.data_size); MockPrinterPage* page_data = driver_.LoadSource(emf_data.memory(), diff --git a/chrome/renderer/mock_printer_driver_win.cc b/chrome/renderer/mock_printer_driver_win.cc index 051838b..8fefd8e 100644 --- a/chrome/renderer/mock_printer_driver_win.cc +++ b/chrome/renderer/mock_printer_driver_win.cc @@ -6,7 +6,7 @@ #include "base/gfx/gdi_util.h" #include "base/logging.h" -#include "chrome/common/gfx/emf.h" +#include "printing/emf_win.h" #include "chrome/renderer/mock_printer.h" #include "skia/ext/platform_device.h" @@ -57,7 +57,7 @@ class EmfRenderer { } } - const void* Create(int width, int height, const gfx::Emf* emf) { + const void* Create(int width, int height, const printing::Emf* emf) { CHECK(!dc_ && !bitmap_); BITMAPV4HEADER header; @@ -98,7 +98,7 @@ MockPrinterPage* MockPrinterDriverWin::LoadSource(const void* source_data, size_t source_size) { // This code is mostly copied from the Image::LoadEMF() function in // "src/chrome/browser/printing/printing_layout_uitest.cc". - gfx::Emf emf; + printing::Emf emf; emf.CreateFromData(source_data, source_size); gfx::Rect rect(emf.GetBounds()); diff --git a/chrome/renderer/print_web_view_helper.cc b/chrome/renderer/print_web_view_helper.cc index d5389af..f53709e 100644 --- a/chrome/renderer/print_web_view_helper.cc +++ b/chrome/renderer/print_web_view_helper.cc @@ -10,6 +10,7 @@ #include "chrome/common/render_messages.h" #include "chrome/renderer/render_view.h" #include "grit/generated_resources.h" +#include "printing/native_metafile.h" #include "printing/units.h" #include "webkit/api/public/WebConsoleMessage.h" #include "webkit/api/public/WebScreenInfo.h" @@ -19,7 +20,6 @@ #include "webkit/glue/webframe.h" #if defined(OS_WIN) -#include "chrome/common/gfx/emf.h" #include "skia/ext/vector_canvas.h" #endif @@ -283,12 +283,11 @@ void PrintWebViewHelper::PrintPage(const ViewMsg_PrintPage_Params& params, const gfx::Size& canvas_size, WebFrame* frame) { #if defined(OS_WIN) - // Generate a memory-based EMF file. The EMF will use the current screen's - // DPI. - gfx::Emf emf; + // Generate a memory-based metafile. It will use the current screen's DPI. + printing::NativeMetafile metafile; - emf.CreateDc(NULL, NULL); - HDC hdc = emf.hdc(); + metafile.CreateDc(NULL, NULL); + HDC hdc = metafile.hdc(); DCHECK(hdc); skia::PlatformDevice::InitializeDC(hdc); // Since WebKit extends the page width depending on the magical shrink @@ -344,17 +343,17 @@ void PrintWebViewHelper::PrintPage(const ViewMsg_PrintPage_Params& params, } #endif - // Done printing. Close the device context to retrieve the compiled EMF. - if (!emf.CloseDc()) { - NOTREACHED() << "EMF failed"; + // Done printing. Close the device context to retrieve the compiled metafile. + if (!metafile.CloseDc()) { + NOTREACHED() << "metafile failed"; } - // Get the size of the compiled EMF. - unsigned buf_size = emf.GetDataSize(); + // Get the size of the compiled metafile. + unsigned buf_size = metafile.GetDataSize(); DCHECK_GT(buf_size, 128u); ViewHostMsg_DidPrintPage_Params page_params; page_params.data_size = 0; - page_params.emf_data_handle = NULL; + page_params.metafile_data_handle = NULL; page_params.page_number = params.page_number; page_params.document_cookie = params.params.document_cookie; page_params.actual_shrink = shrink; @@ -364,12 +363,12 @@ void PrintWebViewHelper::PrintPage(const ViewMsg_PrintPage_Params& params, // Windows 2000/XP: When a page in a spooled file exceeds approximately 350 // MB, it can fail to print and not send an error message. if (buf_size < 350*1024*1024) { - // Allocate a shared memory buffer to hold the generated EMF data. + // Allocate a shared memory buffer to hold the generated metafile data. if (shared_buf.Create(L"", false, false, buf_size) && shared_buf.Map(buf_size)) { // Copy the bits into shared memory. - if (emf.GetData(shared_buf.memory(), buf_size)) { - page_params.emf_data_handle = shared_buf.handle(); + if (metafile.GetData(shared_buf.memory(), buf_size)) { + page_params.metafile_data_handle = shared_buf.handle(); page_params.data_size = buf_size; } else { NOTREACHED() << "GetData() failed"; @@ -381,10 +380,11 @@ void PrintWebViewHelper::PrintPage(const ViewMsg_PrintPage_Params& params, } else { NOTREACHED() << "Buffer too large: " << buf_size; } - emf.CloseEmf(); - if (Send(new ViewHostMsg_DuplicateSection(routing_id(), - page_params.emf_data_handle, - &page_params.emf_data_handle))) { + metafile.CloseEmf(); + if (Send(new ViewHostMsg_DuplicateSection( + routing_id(), + page_params.metafile_data_handle, + &page_params.metafile_data_handle))) { Send(new ViewHostMsg_DidPrintPage(routing_id(), page_params)); } #else // defined(OS_WIN) diff --git a/chrome/renderer/webplugin_delegate_proxy.cc b/chrome/renderer/webplugin_delegate_proxy.cc index 8117acf..b98b728 100644 --- a/chrome/renderer/webplugin_delegate_proxy.cc +++ b/chrome/renderer/webplugin_delegate_proxy.cc @@ -29,6 +29,7 @@ #include "googleurl/src/gurl.h" #include "grit/generated_resources.h" #include "net/base/mime_util.h" +#include "printing/native_metafile.h" #include "webkit/api/public/WebDragData.h" #include "webkit/api/public/WebString.h" #include "webkit/api/public/WebVector.h" @@ -37,10 +38,6 @@ #include "webkit/glue/webplugin.h" #include "webkit/glue/webview.h" -#if defined(OS_WIN) -#include "chrome/common/gfx/emf.h" -#endif - #if defined(OS_POSIX) #include "chrome/common/ipc_channel_posix.h" #endif @@ -579,13 +576,13 @@ void WebPluginDelegateProxy::Print(gfx::NativeDrawingContext context) { } #if defined(OS_WIN) - gfx::Emf emf; - if (!emf.CreateFromData(memory.memory(), size)) { + printing::NativeMetafile metafile; + if (!metafile.CreateFromData(memory.memory(), size)) { NOTREACHED(); return; } // Playback the buffer. - emf.Playback(context, NULL); + metafile.Playback(context, NULL); #else // TODO(port): plugin printing. NOTIMPLEMENTED(); |