summaryrefslogtreecommitdiffstats
path: root/printing
diff options
context:
space:
mode:
authorvandebo@chromium.org <vandebo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-18 03:41:22 +0000
committervandebo@chromium.org <vandebo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-18 03:41:22 +0000
commit063f8db1c4ec940c6391a36f85c9bcb124fbed9a (patch)
tree62be78e0e699429c27ea0f1797c16ed0bdb2aacd /printing
parent2aba747f04b9466ec85ff659285192da21195c32 (diff)
downloadchromium_src-063f8db1c4ec940c6391a36f85c9bcb124fbed9a.zip
chromium_src-063f8db1c4ec940c6391a36f85c9bcb124fbed9a.tar.gz
chromium_src-063f8db1c4ec940c6391a36f85c9bcb124fbed9a.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 Review URL: http://codereview.chromium.org/6665046 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@78662 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'printing')
-rw-r--r--printing/emf_win.cc13
-rw-r--r--printing/emf_win.h4
-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.cc13
-rw-r--r--printing/pdf_ps_metafile_cairo.h3
7 files changed, 55 insertions, 0 deletions
diff --git a/printing/emf_win.cc b/printing/emf_win.cc
index 6fea291..dd9d8d6 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"
@@ -410,6 +411,18 @@ 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) {
+ DCHECK_EQ(1.0f, scale_factor); // We don't support scaling here.
+ if (!StartPage())
+ return NULL;
+
+ return skia::VectorPlatformDeviceFactory::CreateDevice(page_size.width(),
+ page_size.height(),
+ true, hdc_);
+}
+
bool Emf::StartPage() {
DCHECK(hdc_);
if (!hdc_)
diff --git a/printing/emf_win.h b/printing/emf_win.h
index 5150356..241b4e4 100644
--- a/printing/emf_win.h
+++ b/printing/emf_win.h
@@ -15,6 +15,7 @@
class FilePath;
namespace gfx {
+class Point;
class Rect;
}
@@ -33,6 +34,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);
virtual bool StartPage();
virtual bool FinishPage();
virtual bool Close();
diff --git a/printing/native_metafile.h b/printing/native_metafile.h
index a076b32..ce43740 100644
--- a/printing/native_metafile.h
+++ b/printing/native_metafile.h
@@ -26,6 +26,10 @@ class Size;
class Point;
}
+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;
+
#if defined(OS_WIN)
// Inserts a custom GDICOMMENT records indicating StartPage/EndPage calls
// (since StartPage and EndPage do not work in a metafile DC). Only valid
diff --git a/printing/pdf_metafile_mac.cc b/printing/pdf_metafile_mac.cc
index 6c53de9..157950c 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;
+}
+
CGContextRef PdfMetafile::StartPage(const gfx::Size& page_size,
const gfx::Point& content_origin, const float& scale_factor) {
DCHECK(context_.get());
diff --git a/printing/pdf_metafile_mac.h b/printing/pdf_metafile_mac.h
index d1dbbef..728ae10 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.
+ skia::PlatformDevice* StartPageForVectorCanvas(
+ const gfx::Size& page_size, const gfx::Point& content_origin,
+ const float& scale_factor);
virtual CGContextRef 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 cfa89e4..9f59eca 100644
--- a/printing/pdf_ps_metafile_cairo.cc
+++ b/printing/pdf_ps_metafile_cairo.cc
@@ -145,6 +145,19 @@ 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) {
+ DCHECK_EQ(1.0f, scale_factor); // We don't yet support scale_factor.
+ if (!StartPage(page_size, content_origin.y(), content_origin.x()))
+ return NULL;
+
+ return skia::VectorPlatformDeviceFactory::CreateDevice(context_,
+ page_size.width(),
+ page_size.height(),
+ true);
+}
+
cairo_t* PdfPsMetafile::StartPage(const gfx::Size& page_size,
double margin_top_in_points,
double margin_left_in_points) {
diff --git a/printing/pdf_ps_metafile_cairo.h b/printing/pdf_ps_metafile_cairo.h
index 1294862..faacdb0 100644
--- a/printing/pdf_ps_metafile_cairo.h
+++ b/printing/pdf_ps_metafile_cairo.h
@@ -25,6 +25,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 cairo_t* StartPage(const gfx::Size& page_size,
double margin_top_in_points,
double margin_left_in_points);