summaryrefslogtreecommitdiffstats
path: root/printing
diff options
context:
space:
mode:
authorvandebo@chromium.org <vandebo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-21 06:02:41 +0000
committervandebo@chromium.org <vandebo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-21 06:02:41 +0000
commitd03154499968cd317de9fc722ed2b39563bf3265 (patch)
tree0fb574bcd9e01309badae3090af29ace9ccad5ba /printing
parent89b5fab4ba1bdfe3a958e3b94a1860bfdeed1e3b (diff)
downloadchromium_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.cc14
-rw-r--r--printing/emf_win.h3
-rw-r--r--printing/native_metafile.h11
-rw-r--r--printing/pdf_metafile_mac.cc7
-rw-r--r--printing/pdf_metafile_mac.h4
-rw-r--r--printing/pdf_ps_metafile_cairo.cc12
-rw-r--r--printing/pdf_ps_metafile_cairo.h3
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);