diff options
author | vandebo@chromium.org <vandebo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-21 06:02:41 +0000 |
---|---|---|
committer | vandebo@chromium.org <vandebo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-21 06:02:41 +0000 |
commit | d03154499968cd317de9fc722ed2b39563bf3265 (patch) | |
tree | 0fb574bcd9e01309badae3090af29ace9ccad5ba /printing | |
parent | 89b5fab4ba1bdfe3a958e3b94a1860bfdeed1e3b (diff) | |
download | chromium_src-d03154499968cd317de9fc722ed2b39563bf3265.zip chromium_src-d03154499968cd317de9fc722ed2b39563bf3265.tar.gz chromium_src-d03154499968cd317de9fc722ed2b39563bf3265.tar.bz2 |
Unfork VectorPlatformCanvas.
Unfork VectorPlatformCanvas by making NativeMetafile know how to create an appropriate VectorPlatformDevice. This will also be useful when we have multiple NativeMetafile implemenations (each requiring a different VectorPlatformDevices).
BUG=NONE
TEST=NONE
Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=78662
Reverted: http://src.chromium.org/viewvc/chrome?view=rev&revision=78663
Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=78812
Reverted: http://src.chromium.org/viewvc/chrome?view=rev&revision=78815
Review URL: http://codereview.chromium.org/6665046
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@78859 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'printing')
-rw-r--r-- | printing/emf_win.cc | 14 | ||||
-rw-r--r-- | printing/emf_win.h | 3 | ||||
-rw-r--r-- | printing/native_metafile.h | 11 | ||||
-rw-r--r-- | printing/pdf_metafile_mac.cc | 7 | ||||
-rw-r--r-- | printing/pdf_metafile_mac.h | 4 | ||||
-rw-r--r-- | printing/pdf_ps_metafile_cairo.cc | 12 | ||||
-rw-r--r-- | printing/pdf_ps_metafile_cairo.h | 3 |
7 files changed, 53 insertions, 1 deletions
diff --git a/printing/emf_win.cc b/printing/emf_win.cc index de652f1..8609c34 100644 --- a/printing/emf_win.cc +++ b/printing/emf_win.cc @@ -9,6 +9,7 @@ #include "base/metrics/histogram.h" #include "base/scoped_ptr.h" #include "base/time.h" +#include "skia/ext/vector_platform_device_win.h" #include "third_party/skia/include/core/SkBitmap.h" #include "ui/gfx/codec/jpeg_codec.h" #include "ui/gfx/codec/png_codec.h" @@ -412,10 +413,21 @@ bool Emf::Record::SafePlayback(const XFORM* base_matrix) const { return res; } +skia::PlatformDevice* Emf::StartPageForVectorCanvas( + const gfx::Size& page_size, const gfx::Point& content_origin, + const float& scale_factor) { + if (!StartPage(page_size, content_origin, scale_factor)) + return NULL; + + return skia::VectorPlatformDeviceFactory::CreateDevice(page_size.width(), + page_size.height(), + true, hdc_); +} + bool Emf::StartPage(const gfx::Size& /*page_size*/, const gfx::Point& /*content_origin*/, const float& scale_factor) { - DCHECK_EQ(scale_factor, 1); + DCHECK_EQ(1.0f, scale_factor); // We don't support scaling here. DCHECK(hdc_); if (!hdc_) return false; diff --git a/printing/emf_win.h b/printing/emf_win.h index e3a0a8e..f2ccffd 100644 --- a/printing/emf_win.h +++ b/printing/emf_win.h @@ -35,6 +35,9 @@ class Emf : public NativeMetafile { virtual bool Init() { return true; } virtual bool InitFromData(const void* src_buffer, uint32 src_buffer_size); + virtual skia::PlatformDevice* StartPageForVectorCanvas( + const gfx::Size& page_size, const gfx::Point& content_origin, + const float& scale_factor); // Inserts a custom GDICOMMENT records indicating StartPage/EndPage calls // (since StartPage and EndPage do not work in a metafile DC). Only valid // when hdc_ is non-NULL. |page_size| and |content_origin| are ignored. diff --git a/printing/native_metafile.h b/printing/native_metafile.h index ef1e546..742ee27 100644 --- a/printing/native_metafile.h +++ b/printing/native_metafile.h @@ -26,6 +26,10 @@ class Rect; class Size; } +namespace skia { +class PlatformDevice; +} + #if defined(OS_CHROMEOS) namespace base { class FileDescriptor; @@ -50,6 +54,13 @@ class NativeMetafile { // Note: It should only be called from within the browser process. virtual bool InitFromData(const void* src_buffer, uint32 src_buffer_size) = 0; + // This method calls StartPage and then returns an appropriate + // VectorPlatformDevice implementation bound to the context created by + // StartPage or NULL on error. + virtual skia::PlatformDevice* StartPageForVectorCanvas( + const gfx::Size& page_size, const gfx::Point& content_origin, + const float& scale_factor) = 0; + // Prepares a context for rendering a new page at the specified // |content_origin| with the given |page_size| and a |scale_factor| to use for // the drawing. The units are in points (=1/72 in). Returns true on success. diff --git a/printing/pdf_metafile_mac.cc b/printing/pdf_metafile_mac.cc index f5a36f8..913f6aa 100644 --- a/printing/pdf_metafile_mac.cc +++ b/printing/pdf_metafile_mac.cc @@ -62,6 +62,13 @@ bool PdfMetafile::InitFromData(const void* src_buffer, uint32 src_buffer_size) { return true; } +skia::PlatformDevice* PdfMetafile::StartPageForVectorCanvas( + const gfx::Size& page_size, const gfx::Point& content_origin, + const float& scale_factor) { + NOTIMPLEMENTED(); + return NULL; +} + bool PdfMetafile::StartPage(const gfx::Size& page_size, const gfx::Point& content_origin, const float& scale_factor) { diff --git a/printing/pdf_metafile_mac.h b/printing/pdf_metafile_mac.h index c5a2a4a..496b275 100644 --- a/printing/pdf_metafile_mac.h +++ b/printing/pdf_metafile_mac.h @@ -33,6 +33,10 @@ class PdfMetafile : public NativeMetafile { virtual bool Init(); virtual bool InitFromData(const void* src_buffer, uint32 src_buffer_size); + // Not implemented on mac. + virtual skia::PlatformDevice* StartPageForVectorCanvas( + const gfx::Size& page_size, const gfx::Point& content_origin, + const float& scale_factor); virtual bool StartPage(const gfx::Size& page_size, const gfx::Point& content_origin, const float& scale_factor); diff --git a/printing/pdf_ps_metafile_cairo.cc b/printing/pdf_ps_metafile_cairo.cc index 6c42bd4..4a8a1ff 100644 --- a/printing/pdf_ps_metafile_cairo.cc +++ b/printing/pdf_ps_metafile_cairo.cc @@ -145,6 +145,18 @@ bool PdfPsMetafile::SetRawData(const void* src_buffer, return true; } +skia::PlatformDevice* PdfPsMetafile::StartPageForVectorCanvas( + const gfx::Size& page_size, const gfx::Point& content_origin, + const float& scale_factor) { + if (!StartPage(page_size, content_origin, scale_factor)) + return NULL; + + return skia::VectorPlatformDeviceFactory::CreateDevice(context_, + page_size.width(), + page_size.height(), + true); +} + bool PdfPsMetafile::StartPage(const gfx::Size& page_size, const gfx::Point& content_origin, const float& scale_factor) { diff --git a/printing/pdf_ps_metafile_cairo.h b/printing/pdf_ps_metafile_cairo.h index 5ff59db..3e1e811 100644 --- a/printing/pdf_ps_metafile_cairo.h +++ b/printing/pdf_ps_metafile_cairo.h @@ -31,6 +31,9 @@ class PdfPsMetafile : public NativeMetafile { virtual bool Init(); virtual bool InitFromData(const void* src_buffer, uint32 src_buffer_size); + virtual skia::PlatformDevice* StartPageForVectorCanvas( + const gfx::Size& page_size, const gfx::Point& content_origin, + const float& scale_factor); virtual bool StartPage(const gfx::Size& page_size, const gfx::Point& content_origin, const float& scale_factor); |