diff options
22 files changed, 237 insertions, 529 deletions
diff --git a/printing/pdf_metafile_skia.cc b/printing/pdf_metafile_skia.cc index bc44131..0ec540e 100644 --- a/printing/pdf_metafile_skia.cc +++ b/printing/pdf_metafile_skia.cc @@ -61,17 +61,14 @@ SkDevice* PdfMetafileSkia::StartPageForVectorCanvas( transform.preScale(SkFloatToScalar(scale_factor), SkFloatToScalar(scale_factor)); - // TODO(ctguil): Refactor: don't create the PDF device explicitly here. SkISize pdf_page_size = SkISize::Make(page_size.width(), page_size.height()); SkISize pdf_content_size = SkISize::Make(content_area.width(), content_area.height()); SkRefPtr<SkPDFDevice> pdf_device = - new SkPDFDevice(pdf_page_size, pdf_content_size, transform); - pdf_device->unref(); // SkRefPtr and new both took a reference. - skia::VectorPlatformDeviceSkia* device = - new skia::VectorPlatformDeviceSkia(pdf_device.get()); - data_->current_page_ = device->PdfDevice(); - return device; + new skia::VectorPlatformDeviceSkia(pdf_page_size, pdf_content_size, + transform); + data_->current_page_ = pdf_device; + return pdf_device.get(); } bool PdfMetafileSkia::StartPage(const gfx::Size& page_size, diff --git a/skia/ext/bitmap_platform_device_linux.cc b/skia/ext/bitmap_platform_device_linux.cc index 782b78f..3087adc 100644 --- a/skia/ext/bitmap_platform_device_linux.cc +++ b/skia/ext/bitmap_platform_device_linux.cc @@ -120,8 +120,9 @@ BitmapPlatformDevice* BitmapPlatformDevice::Create(int width, int height, BitmapPlatformDevice::BitmapPlatformDevice( const SkBitmap& bitmap, BitmapPlatformDeviceData* data) - : PlatformDevice(bitmap), + : SkDevice(bitmap), data_(data) { + SetPlatformDevice(this, this); } BitmapPlatformDevice::~BitmapPlatformDevice() { @@ -146,6 +147,12 @@ cairo_t* BitmapPlatformDevice::BeginPlatformPaint() { return cairo; } +void BitmapPlatformDevice::DrawToNativeContext( + PlatformSurface surface, int x, int y, const PlatformRect* src_rect) { + // Should never be called on Linux. + SkASSERT(false); +} + void BitmapPlatformDevice::setMatrixClip(const SkMatrix& transform, const SkRegion& region, const SkClipStack&) { diff --git a/skia/ext/bitmap_platform_device_linux.h b/skia/ext/bitmap_platform_device_linux.h index e5e4437..57c12ce 100644 --- a/skia/ext/bitmap_platform_device_linux.h +++ b/skia/ext/bitmap_platform_device_linux.h @@ -7,8 +7,9 @@ #pragma once #include "base/basictypes.h" +#include "base/compiler_specific.h" #include "base/memory/ref_counted.h" -#include "skia/ext/platform_device_linux.h" +#include "skia/ext/platform_device.h" typedef struct _cairo_surface cairo_surface_t; @@ -56,7 +57,7 @@ namespace skia { // shared memory between the renderer and the main process at least. In this // case we'll probably create the buffer from a precreated region of memory. // ----------------------------------------------------------------------------- -class BitmapPlatformDevice : public PlatformDevice { +class BitmapPlatformDevice : public PlatformDevice, public SkDevice { // A reference counted cairo surface class BitmapPlatformDeviceData; @@ -73,22 +74,24 @@ class BitmapPlatformDevice : public PlatformDevice { static BitmapPlatformDevice* Create(int width, int height, bool is_opaque); // This doesn't take ownership of |data| - static BitmapPlatformDevice* Create(int width, int height, - bool is_opaque, uint8_t* data); + static BitmapPlatformDevice* Create(int width, int height, bool is_opaque, + uint8_t* data); - virtual void MakeOpaque(int x, int y, int width, int height); + virtual void MakeOpaque(int x, int y, int width, int height) OVERRIDE; // Overridden from SkDevice: virtual void setMatrixClip(const SkMatrix& transform, const SkRegion& region, - const SkClipStack&); + const SkClipStack&) OVERRIDE; // Overridden from PlatformDevice: - virtual cairo_t* BeginPlatformPaint(); + virtual cairo_t* BeginPlatformPaint() OVERRIDE; + virtual void DrawToNativeContext(PlatformSurface surface, int x, int y, + const PlatformRect* src_rect) OVERRIDE; protected: virtual SkDevice* onCreateCompatibleDevice(SkBitmap::Config, int width, - int height, bool isOpaque, - Usage usage); + int height, bool isOpaque, + Usage usage) OVERRIDE; private: static BitmapPlatformDevice* Create(int width, int height, bool is_opaque, diff --git a/skia/ext/bitmap_platform_device_mac.cc b/skia/ext/bitmap_platform_device_mac.cc index d6bfc50..15bf566 100644 --- a/skia/ext/bitmap_platform_device_mac.cc +++ b/skia/ext/bitmap_platform_device_mac.cc @@ -180,8 +180,9 @@ BitmapPlatformDevice* BitmapPlatformDevice::CreateWithData(uint8_t* data, // data. Therefore, we do not transfer ownership to the SkDevice's bitmap. BitmapPlatformDevice::BitmapPlatformDevice( BitmapPlatformDeviceData* data, const SkBitmap& bitmap) - : PlatformDevice(bitmap), + : SkDevice(bitmap), data_(data) { + SetPlatformDevice(this, this); } BitmapPlatformDevice::~BitmapPlatformDevice() { diff --git a/skia/ext/bitmap_platform_device_mac.h b/skia/ext/bitmap_platform_device_mac.h index fddbaad..da14528 100644 --- a/skia/ext/bitmap_platform_device_mac.h +++ b/skia/ext/bitmap_platform_device_mac.h @@ -7,7 +7,8 @@ #pragma once #include "base/basictypes.h" -#include "skia/ext/platform_device_mac.h" +#include "base/compiler_specific.h" +#include "skia/ext/platform_device.h" namespace skia { @@ -25,7 +26,7 @@ namespace skia { // For us, that other bitmap will become invalid as soon as the device becomes // invalid, which may lead to subtle bugs. Therefore, DO NOT ASSIGN THE // DEVICE'S PIXEL DATA TO ANOTHER BITMAP, make sure you copy instead. -class BitmapPlatformDevice : public PlatformDevice { +class BitmapPlatformDevice : public PlatformDevice, public SkDevice { public: // |context| may be NULL. static BitmapPlatformDevice* Create(CGContextRef context, @@ -42,12 +43,12 @@ class BitmapPlatformDevice : public PlatformDevice { // PlatformDevice overrides virtual CGContextRef GetBitmapContext(); virtual void DrawToNativeContext(CGContextRef context, int x, int y, - const CGRect* src_rect); - virtual void MakeOpaque(int x, int y, int width, int height); + const CGRect* src_rect) OVERRIDE; + virtual void MakeOpaque(int x, int y, int width, int height) OVERRIDE; // SkDevice overrides virtual void setMatrixClip(const SkMatrix& transform, const SkRegion& region, - const SkClipStack&); + const SkClipStack&) OVERRIDE; protected: // Reference counted data that can be shared between multiple devices. This @@ -61,11 +62,11 @@ class BitmapPlatformDevice : public PlatformDevice { // Flushes the CoreGraphics context so that the pixel data can be accessed // directly by Skia. Overridden from SkDevice, this is called when Skia // starts accessing pixel data. - virtual void onAccessBitmap(SkBitmap*); + virtual void onAccessBitmap(SkBitmap*) OVERRIDE; virtual SkDevice* onCreateCompatibleDevice(SkBitmap::Config, int width, int height, bool isOpaque, - Usage usage); + Usage usage) OVERRIDE; // Data associated with this device, guaranteed non-null. We hold a reference // to this object. diff --git a/skia/ext/bitmap_platform_device_win.cc b/skia/ext/bitmap_platform_device_win.cc index f1345fa..3a2a5b4 100644 --- a/skia/ext/bitmap_platform_device_win.cc +++ b/skia/ext/bitmap_platform_device_win.cc @@ -165,10 +165,11 @@ BitmapPlatformDevice* BitmapPlatformDevice::create(int width, BitmapPlatformDevice::BitmapPlatformDevice( BitmapPlatformDeviceData* data, const SkBitmap& bitmap) - : PlatformDevice(bitmap), + : SkDevice(bitmap), data_(data) { // The data object is already ref'ed for us by create(). SkDEBUGCODE(begin_paint_count_ = 0); + SetPlatformDevice(this, this); } BitmapPlatformDevice::~BitmapPlatformDevice() { @@ -262,4 +263,3 @@ SkDevice* BitmapPlatformDevice::onCreateCompatibleDevice( } } // namespace skia - diff --git a/skia/ext/bitmap_platform_device_win.h b/skia/ext/bitmap_platform_device_win.h index 270dc08..5a5e466 100644 --- a/skia/ext/bitmap_platform_device_win.h +++ b/skia/ext/bitmap_platform_device_win.h @@ -7,7 +7,8 @@ #pragma once #include "base/basictypes.h" -#include "skia/ext/platform_device_win.h" +#include "base/compiler_specific.h" +#include "skia/ext/platform_device.h" namespace skia { @@ -25,7 +26,7 @@ namespace skia { // For us, that other bitmap will become invalid as soon as the device becomes // invalid, which may lead to subtle bugs. Therefore, DO NOT ASSIGN THE // DEVICE'S PIXEL DATA TO ANOTHER BITMAP, make sure you copy instead. -class SK_API BitmapPlatformDevice : public PlatformDevice { +class SK_API BitmapPlatformDevice : public PlatformDevice, public SkDevice { public: // Factory function. The screen DC is used to create the bitmap, and will not // be stored beyond this function. is_opaque should be set if the caller @@ -34,16 +35,11 @@ class SK_API BitmapPlatformDevice : public PlatformDevice { // The shared_section parameter is optional (pass NULL for default behavior). // If shared_section is non-null, then it must be a handle to a file-mapping // object returned by CreateFileMapping. See CreateDIBSection for details. - static BitmapPlatformDevice* create(HDC screen_dc, - int width, - int height, - bool is_opaque, - HANDLE shared_section); + static BitmapPlatformDevice* create(HDC screen_dc, int width, int height, + bool is_opaque, HANDLE shared_section); // This version is the same as above but will get the screen DC itself. - static BitmapPlatformDevice* create(int width, - int height, - bool is_opaque, + static BitmapPlatformDevice* create(int width, int height, bool is_opaque, HANDLE shared_section); virtual ~BitmapPlatformDevice(); @@ -51,26 +47,27 @@ class SK_API BitmapPlatformDevice : public PlatformDevice { // PlatformDevice overrides // Retrieves the bitmap DC, which is the memory DC for our bitmap data. The // bitmap DC is lazy created. - virtual PlatformSurface BeginPlatformPaint(); - virtual void EndPlatformPaint(); + virtual PlatformSurface BeginPlatformPaint() OVERRIDE; + virtual void EndPlatformPaint() OVERRIDE; - virtual void DrawToNativeContext(HDC dc, int x, int y, const RECT* src_rect); - virtual void MakeOpaque(int x, int y, int width, int height); + virtual void DrawToNativeContext(HDC dc, int x, int y, + const RECT* src_rect) OVERRIDE; + virtual void MakeOpaque(int x, int y, int width, int height) OVERRIDE; // Loads the given transform and clipping region into the HDC. This is // overridden from SkDevice. virtual void setMatrixClip(const SkMatrix& transform, const SkRegion& region, - const SkClipStack&); + const SkClipStack&) OVERRIDE; protected: // Flushes the Windows device context so that the pixel data can be accessed // directly by Skia. Overridden from SkDevice, this is called when Skia // starts accessing pixel data. - virtual void onAccessBitmap(SkBitmap* bitmap); + virtual void onAccessBitmap(SkBitmap* bitmap) OVERRIDE; virtual SkDevice* onCreateCompatibleDevice(SkBitmap::Config, int width, int height, bool isOpaque, - Usage usage); + Usage usage) OVERRIDE; private: // Reference counted data that can be shared between multiple devices. This @@ -96,4 +93,3 @@ class SK_API BitmapPlatformDevice : public PlatformDevice { } // namespace skia #endif // SKIA_EXT_BITMAP_PLATFORM_DEVICE_WIN_H_ - diff --git a/skia/ext/platform_device.cc b/skia/ext/platform_device.cc index 4bfde0f..9e1dde7 100644 --- a/skia/ext/platform_device.cc +++ b/skia/ext/platform_device.cc @@ -27,5 +27,12 @@ PlatformDevice* GetPlatformDevice(SkDevice* device) { return NULL; } -} // namespace skia +bool PlatformDevice::IsNativeFontRenderingAllowed() { + return true; +} +bool PlatformDevice::AlphaBlendUsed() const { + return false; +} + +} // namespace skia diff --git a/skia/ext/platform_device.h b/skia/ext/platform_device.h index 6b3afb1..55ef1f8 100644 --- a/skia/ext/platform_device.h +++ b/skia/ext/platform_device.h @@ -6,24 +6,28 @@ #define SKIA_EXT_PLATFORM_DEVICE_H_ #pragma once -// This file provides an easy way to include the appropriate PlatformDevice -// header file for your platform. +#include "build/build_config.h" -#if defined(WIN32) +#if defined(OS_WIN) #include <windows.h> +#include <vector> #endif #include "third_party/skia/include/core/SkPreConfig.h" +#include "third_party/skia/include/core/SkDevice.h" #include "third_party/skia/include/core/SkColor.h" +class SkMatrix; +class SkPath; +class SkRegion; -class SkDevice; struct SkIRect; -#if defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__sun) +#if defined(OS_LINUX) || defined(OS_OPENBSD) || defined(OS_FREEBSD) \ + || defined(OS_SUN) typedef struct _cairo cairo_t; typedef struct _cairo_rectangle cairo_rectangle_t; -#elif defined(__APPLE__) +#elif defined(OS_MACOSX) typedef struct CGContext* CGContextRef; typedef struct CGRect CGRect; #endif @@ -32,13 +36,14 @@ namespace skia { class PlatformDevice; -#if defined(WIN32) +#if defined(OS_WIN) typedef HDC PlatformSurface; typedef RECT PlatformRect; -#elif defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__sun) +#elif defined(OS_LINUX) || defined(OS_OPENBSD) || defined(OS_FREEBSD) \ + || defined(OS_SUN) typedef cairo_t* PlatformSurface; typedef cairo_rectangle_t PlatformRect; -#elif defined(__APPLE__) +#elif defined(OS_MACOSX) typedef CGContextRef PlatformSurface; typedef CGRect PlatformRect; #endif @@ -59,15 +64,106 @@ SK_API void SetPlatformDevice(SkDevice* device, PlatformDevice* platform_device); SK_API PlatformDevice* GetPlatformDevice(SkDevice* device); -} // namespace skia -#if defined(WIN32) -#include "skia/ext/platform_device_win.h" -#elif defined(__APPLE__) -#include "skia/ext/platform_device_mac.h" -#elif defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__) || \ - defined(__sun) -#include "skia/ext/platform_device_linux.h" +#if defined(OS_WIN) +// Initializes the default settings and colors in a device context. +SK_API void InitializeDC(HDC context); +#elif defined (OS_MACOSX) +// Returns the CGContext that backing the SkDevice. Forwards to the bound +// PlatformDevice. Returns NULL if no PlatformDevice is bound. +SK_API CGContextRef GetBitmapContext(SkDevice* device); +#endif + +// A SkDevice is basically a wrapper around SkBitmap that provides a surface for +// SkCanvas to draw into. PlatformDevice provides a surface Windows can also +// write to. It also provides functionality to play well with GDI drawing +// functions. This class is abstract and must be subclassed. It provides the +// basic interface to implement it either with or without a bitmap backend. +// +// PlatformDevice provides an interface which sub-classes of SkDevice can also +// provide to allow for drawing by the native platform into the device. +class SK_API PlatformDevice { + public: + virtual ~PlatformDevice() {} + +#if defined(OS_MACOSX) + // The CGContext that corresponds to the bitmap, used for CoreGraphics + // operations drawing into the bitmap. This is possibly heavyweight, so it + // should exist only during one pass of rendering. + virtual CGContextRef GetBitmapContext() = 0; #endif + // The DC that corresponds to the bitmap, used for GDI operations drawing + // into the bitmap. This is possibly heavyweight, so it should be existant + // only during one pass of rendering. + virtual PlatformSurface BeginPlatformPaint(); + + // Finish a previous call to beginPlatformPaint. + virtual void EndPlatformPaint(); + + // Draws to the given screen DC, if the bitmap DC doesn't exist, this will + // temporarily create it. However, if you have created the bitmap DC, it will + // be more efficient if you don't free it until after this call so it doesn't + // have to be created twice. If src_rect is null, then the entirety of the + // source device will be copied. + virtual void DrawToNativeContext(PlatformSurface surface, int x, int y, + const PlatformRect* src_rect) = 0; + + // Sets the opacity of each pixel in the specified region to be opaque. + virtual void MakeOpaque(int x, int y, int width, int height) { } + + // Returns if GDI is allowed to render text to this device. + virtual bool IsNativeFontRenderingAllowed(); + + // True if AlphaBlend() was called during a + // BeginPlatformPaint()/EndPlatformPaint() pair. + // Used by the printing subclasses. See |VectorPlatformDeviceEmf|. + virtual bool AlphaBlendUsed() const; + +#if defined(OS_WIN) + // Loads a SkPath into the GDI context. The path can there after be used for + // clipping or as a stroke. Returns false if the path failed to be loaded. + static bool LoadPathToDC(HDC context, const SkPath& path); + + // Loads a SkRegion into the GDI context. + static void LoadClippingRegionToDC(HDC context, const SkRegion& region, + const SkMatrix& transformation); +#elif defined(OS_MACOSX) + // Loads a SkPath into the CG context. The path can there after be used for + // clipping or as a stroke. + static void LoadPathToCGContext(CGContextRef context, const SkPath& path); + + // Initializes the default settings and colors in a device context. + static void InitializeCGContext(CGContextRef context); + + // Loads a SkRegion into the CG context. + static void LoadClippingRegionToCGContext(CGContextRef context, + const SkRegion& region, + const SkMatrix& transformation); +#endif + + protected: +#if defined(OS_WIN) + // Arrays must be inside structures. + struct CubicPoints { + SkPoint p[4]; + }; + typedef std::vector<CubicPoints> CubicPath; + typedef std::vector<CubicPath> CubicPaths; + + // Loads the specified Skia transform into the device context, excluding + // perspective (which GDI doesn't support). + static void LoadTransformToDC(HDC dc, const SkMatrix& matrix); + + // Transforms SkPath's paths into a series of cubic path. + static bool SkPathToCubicPaths(CubicPaths* paths, const SkPath& skpath); +#elif defined(OS_MACOSX) + // Loads the specified Skia transform into the device context + static void LoadTransformToCGContext(CGContextRef context, + const SkMatrix& matrix); +#endif +}; + +} // namespace skia + #endif diff --git a/skia/ext/platform_device_linux.cc b/skia/ext/platform_device_linux.cc index f633758..f72e614 100644 --- a/skia/ext/platform_device_linux.cc +++ b/skia/ext/platform_device_linux.cc @@ -6,23 +6,12 @@ namespace skia { -PlatformDevice::PlatformDevice(const SkBitmap& bitmap) - : SkDevice(bitmap) { - SetPlatformDevice(this, this); -} - -bool PlatformDevice::IsNativeFontRenderingAllowed() { - return true; +PlatformSurface PlatformDevice::BeginPlatformPaint() { + return NULL; } void PlatformDevice::EndPlatformPaint() { // We don't need to do anything on Linux here. } -void PlatformDevice::DrawToNativeContext(PlatformSurface surface, int x, int y, - const PlatformRect* src_rect) { - // Should never be called on Linux. - SkASSERT(false); -} - } // namespace skia diff --git a/skia/ext/platform_device_linux.h b/skia/ext/platform_device_linux.h deleted file mode 100644 index 51c292f..0000000 --- a/skia/ext/platform_device_linux.h +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef SKIA_EXT_PLATFORM_DEVICE_LINUX_H_ -#define SKIA_EXT_PLATFORM_DEVICE_LINUX_H_ -#pragma once - -#include "skia/ext/platform_device.h" -#include "third_party/skia/include/core/SkDevice.h" - -namespace skia { - -// Blindly copying the mac hierarchy. -class PlatformDevice : public SkDevice { - public: - typedef cairo_t* PlatformSurface; - - // Returns if native platform APIs are allowed to render text to this device. - virtual bool IsNativeFontRenderingAllowed(); - - virtual PlatformSurface BeginPlatformPaint() = 0; - virtual void EndPlatformPaint(); - - virtual void DrawToNativeContext(PlatformSurface surface, int x, int y, - const PlatformRect* src_rect ); - - // Sets the opacity of each pixel in the specified region to be opaque. - virtual void MakeOpaque(int x, int y, int width, int height) { } - - protected: - // Forwards |bitmap| to SkDevice's constructor. - explicit PlatformDevice(const SkBitmap& bitmap); -}; - -} // namespace skia - -#endif // SKIA_EXT_PLATFORM_DEVICE_LINUX_H_ diff --git a/skia/ext/platform_device_mac.cc b/skia/ext/platform_device_mac.cc index 9d2695f..6ff017d 100644 --- a/skia/ext/platform_device_mac.cc +++ b/skia/ext/platform_device_mac.cc @@ -22,15 +22,6 @@ CGContextRef GetBitmapContext(SkDevice* device) { return NULL; } -PlatformDevice::PlatformDevice(const SkBitmap& bitmap) - : SkDevice(bitmap) { - SetPlatformDevice(this, this); -} - -bool PlatformDevice::IsNativeFontRenderingAllowed() { - return true; -} - CGContextRef PlatformDevice::BeginPlatformPaint() { return GetBitmapContext(); } @@ -162,4 +153,3 @@ void PlatformDevice::LoadClippingRegionToCGContext( } } // namespace skia - diff --git a/skia/ext/platform_device_mac.h b/skia/ext/platform_device_mac.h deleted file mode 100644 index 610f07f..0000000 --- a/skia/ext/platform_device_mac.h +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef SKIA_EXT_PLATFORM_DEVICE_MAC_H_ -#define SKIA_EXT_PLATFORM_DEVICE_MAC_H_ -#pragma once - -#include "third_party/skia/include/core/SkDevice.h" - -typedef struct CGContext* CGContextRef; -typedef struct CGRect CGRect; - -class SkMatrix; -class SkPath; -class SkRegion; - -namespace skia { - -// Returns the CGContext that backing the SkDevice. Forwards to the bound -// PlatformDevice. Returns NULL if no PlatformDevice is bound. -SK_API CGContextRef GetBitmapContext(SkDevice* device); - -// A device is basically a wrapper around SkBitmap that provides a surface for -// SkCanvas to draw into. Our device provides a surface CoreGraphics can also -// write to. It also provides functionality to play well with CG drawing -// functions. -// This class is abstract and must be subclassed. It provides the basic -// interface to implement it either with or without a bitmap backend. -class PlatformDevice : public SkDevice { - public: - typedef CGContextRef PlatformSurface; - - // The CGContext that corresponds to the bitmap, used for CoreGraphics - // operations drawing into the bitmap. This is possibly heavyweight, so it - // should exist only during one pass of rendering. - virtual CGContextRef GetBitmapContext() = 0; - - // Draws to the given graphics context. If the bitmap context doesn't exist, - // this will temporarily create it. However, if you have created the bitmap - // context, it will be more efficient if you don't free it until after this - // call so it doesn't have to be created twice. If src_rect is null, then - // the entirety of the source device will be copied. - virtual void DrawToNativeContext(CGContextRef context, int x, int y, - const CGRect* src_rect) = 0; - - // Sets the opacity of each pixel in the specified region to be opaque. - virtual void MakeOpaque(int x, int y, int width, int height) { } - - // Returns if native platform APIs are allowed to render text to this device. - virtual bool IsNativeFontRenderingAllowed(); - - virtual PlatformSurface BeginPlatformPaint(); - virtual void EndPlatformPaint(); - - // Initializes the default settings and colors in a device context. - static void InitializeCGContext(CGContextRef context); - - // Loads a SkPath into the CG context. The path can there after be used for - // clipping or as a stroke. - static void LoadPathToCGContext(CGContextRef context, const SkPath& path); - - // Loads a SkRegion into the CG context. - static void LoadClippingRegionToCGContext(CGContextRef context, - const SkRegion& region, - const SkMatrix& transformation); - - protected: - // Forwards |bitmap| to SkDevice's constructor. - PlatformDevice(const SkBitmap& bitmap); - - // Loads the specified Skia transform into the device context - static void LoadTransformToCGContext(CGContextRef context, - const SkMatrix& matrix); -}; - -} // namespace skia - -#endif // SKIA_EXT_PLATFORM_DEVICE_MAC_H_ - diff --git a/skia/ext/platform_device_win.cc b/skia/ext/platform_device_win.cc index ea72165..100a811 100644 --- a/skia/ext/platform_device_win.cc +++ b/skia/ext/platform_device_win.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -51,9 +51,8 @@ void InitializeDC(HDC context) { SkASSERT(res != 0); } -PlatformDevice::PlatformDevice(const SkBitmap& bitmap) - : SkDevice(bitmap) { - SetPlatformDevice(this, this); +PlatformSurface PlatformDevice::BeginPlatformPaint() { + return 0; } void PlatformDevice::EndPlatformPaint() { @@ -61,6 +60,10 @@ void PlatformDevice::EndPlatformPaint() { // Flushing will be done in onAccessBitmap. } +void PlatformDevice::DrawToNativeContext(PlatformSurface surface, int x, int y, + const PlatformRect* src_rect) { +} + // static bool PlatformDevice::LoadPathToDC(HDC context, const SkPath& path) { switch (path.getFillType()) { @@ -233,4 +236,3 @@ void PlatformDevice::LoadClippingRegionToDC(HDC context, } } // namespace skia - diff --git a/skia/ext/platform_device_win.h b/skia/ext/platform_device_win.h deleted file mode 100644 index f21ca1f..0000000 --- a/skia/ext/platform_device_win.h +++ /dev/null @@ -1,90 +0,0 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef SKIA_EXT_PLATFORM_DEVICE_WIN_H_ -#define SKIA_EXT_PLATFORM_DEVICE_WIN_H_ -#pragma once - -#include <windows.h> - -#include <vector> - -#include "third_party/skia/include/core/SkDevice.h" - -class SkMatrix; -class SkPath; -class SkRegion; - -namespace skia { - -// Initializes the default settings and colors in a device context. -SK_API void InitializeDC(HDC context); - -// A device is basically a wrapper around SkBitmap that provides a surface for -// SkCanvas to draw into. Our device provides a surface Windows can also write -// to. It also provides functionality to play well with GDI drawing functions. -// This class is abstract and must be subclassed. It provides the basic -// interface to implement it either with or without a bitmap backend. -class SK_API PlatformDevice : public SkDevice { - public: - typedef HDC PlatformSurface; - - // The DC that corresponds to the bitmap, used for GDI operations drawing - // into the bitmap. This is possibly heavyweight, so it should be existant - // only during one pass of rendering. - virtual PlatformSurface BeginPlatformPaint() = 0; - - // Finish a previous call to beginPlatformPaint. - virtual void EndPlatformPaint(); - - // Draws to the given screen DC, if the bitmap DC doesn't exist, this will - // temporarily create it. However, if you have created the bitmap DC, it will - // be more efficient if you don't free it until after this call so it doesn't - // have to be created twice. If src_rect is null, then the entirety of the - // source device will be copied. - virtual void DrawToNativeContext(HDC dc, int x, int y, - const RECT* src_rect) = 0; - - // Sets the opacity of each pixel in the specified region to be opaque. - virtual void MakeOpaque(int x, int y, int width, int height) { } - - // Returns if GDI is allowed to render text to this device. - virtual bool IsNativeFontRenderingAllowed() { return true; } - - // True if AlphaBlend() was called during a - // BeginPlatformPaint()/EndPlatformPaint() pair. - // Used by the printing subclasses. See |VectorPlatformDeviceEmf|. - virtual bool AlphaBlendUsed() const { return false; } - - // Loads a SkPath into the GDI context. The path can there after be used for - // clipping or as a stroke. Returns false if the path failed to be loaded. - static bool LoadPathToDC(HDC context, const SkPath& path); - - // Loads a SkRegion into the GDI context. - static void LoadClippingRegionToDC(HDC context, const SkRegion& region, - const SkMatrix& transformation); - - protected: - // Arrays must be inside structures. - struct CubicPoints { - SkPoint p[4]; - }; - typedef std::vector<CubicPoints> CubicPath; - typedef std::vector<CubicPath> CubicPaths; - - // Forwards |bitmap| to SkDevice's constructor. - PlatformDevice(const SkBitmap& bitmap); - - // Loads the specified Skia transform into the device context, excluding - // perspective (which GDI doesn't support). - static void LoadTransformToDC(HDC dc, const SkMatrix& matrix); - - // Transforms SkPath's paths into a series of cubic path. - static bool SkPathToCubicPaths(CubicPaths* paths, const SkPath& skpath); -}; - -} // namespace skia - -#endif // SKIA_EXT_PLATFORM_DEVICE_WIN_H_ - diff --git a/skia/ext/vector_platform_device_cairo_linux.cc b/skia/ext/vector_platform_device_cairo_linux.cc index f4a4e0b..1d31cf6 100644 --- a/skia/ext/vector_platform_device_cairo_linux.cc +++ b/skia/ext/vector_platform_device_cairo_linux.cc @@ -69,9 +69,8 @@ bool IsContextValid(cairo_t* context) { namespace skia { // static -PlatformDevice* VectorPlatformDeviceCairo::CreateDevice(cairo_t* context, - int width, int height, - bool isOpaque) { +SkDevice* VectorPlatformDeviceCairo::CreateDevice(cairo_t* context, int width, + int height, bool isOpaque) { // TODO(myhuang): Here we might also have similar issues as those on Windows // (vector_canvas_win.cc, http://crbug.com/18382 & http://crbug.com/18383). // Please note that is_opaque is true when we use this class for printing. @@ -92,10 +91,12 @@ PlatformDevice* VectorPlatformDeviceCairo::CreateDevice(cairo_t* context, VectorPlatformDeviceCairo::VectorPlatformDeviceCairo(PlatformSurface context, const SkBitmap& bitmap) - : PlatformDevice(bitmap), + : SkDevice(bitmap), context_(context) { SkASSERT(bitmap.getConfig() == SkBitmap::kARGB_8888_Config); + SetPlatformDevice(this, this); + // Increase the reference count to keep the context alive. cairo_reference(context_); @@ -107,11 +108,16 @@ VectorPlatformDeviceCairo::~VectorPlatformDeviceCairo() { cairo_destroy(context_); } -PlatformDevice::PlatformSurface -VectorPlatformDeviceCairo::BeginPlatformPaint() { +PlatformSurface VectorPlatformDeviceCairo::BeginPlatformPaint() { return context_; } +void VectorPlatformDeviceCairo::DrawToNativeContext( + PlatformSurface surface, int x, int y, const PlatformRect* src_rect) { + // Should never be called on Linux. + SkASSERT(false); +} + SkDevice* VectorPlatformDeviceCairo::onCreateCompatibleDevice( SkBitmap::Config config, int width, int height, diff --git a/skia/ext/vector_platform_device_cairo_linux.h b/skia/ext/vector_platform_device_cairo_linux.h index 72a90f6..36be0c76 100644 --- a/skia/ext/vector_platform_device_cairo_linux.h +++ b/skia/ext/vector_platform_device_cairo_linux.h @@ -19,12 +19,13 @@ namespace skia { // cooresponding Cairo APIs and outputs to a Cairo surface. Please NOTE that // since it is completely vectorial, the bitmap content in it is thus // meaningless. -class SK_API VectorPlatformDeviceCairo : public PlatformDevice { +class SK_API VectorPlatformDeviceCairo : public PlatformDevice, + public SkDevice { public: virtual ~VectorPlatformDeviceCairo(); - static PlatformDevice* CreateDevice(cairo_t* context, int width, int height, - bool isOpaque); + static SkDevice* CreateDevice(cairo_t* context, int width, int height, + bool isOpaque); // Clean up cached fonts. It is an error to call this while some // VectorPlatformDeviceCairo callee is still using fonts created for it by @@ -67,17 +68,19 @@ class SK_API VectorPlatformDeviceCairo : public PlatformDevice { const SkPaint&) OVERRIDE; virtual void setMatrixClip(const SkMatrix& transform, const SkRegion& region, - const SkClipStack&); + const SkClipStack&) OVERRIDE; // Overridden from PlatformDevice - virtual PlatformSurface BeginPlatformPaint(); + virtual PlatformSurface BeginPlatformPaint() OVERRIDE; + virtual void DrawToNativeContext(PlatformSurface surface, int x, int y, + const PlatformRect* src_rect) OVERRIDE; protected: VectorPlatformDeviceCairo(PlatformSurface context, const SkBitmap& bitmap); virtual SkDevice* onCreateCompatibleDevice(SkBitmap::Config, int width, int height, bool isOpaque, - Usage usage); + Usage usage) OVERRIDE; private: // Apply paint's color in the context. diff --git a/skia/ext/vector_platform_device_emf_win.cc b/skia/ext/vector_platform_device_emf_win.cc index eac7977..9741a83 100644 --- a/skia/ext/vector_platform_device_emf_win.cc +++ b/skia/ext/vector_platform_device_emf_win.cc @@ -15,9 +15,8 @@ namespace skia { //static -PlatformDevice* VectorPlatformDeviceEmf::CreateDevice(int width, int height, - bool is_opaque, - HANDLE shared_section) { +SkDevice* VectorPlatformDeviceEmf::CreateDevice( + int width, int height, bool is_opaque, HANDLE shared_section) { if (!is_opaque) { // TODO(maruel): http://crbug.com/18382 When restoring a semi-transparent // layer, i.e. merging it, we need to rasterize it because GDI doesn't @@ -40,7 +39,7 @@ PlatformDevice* VectorPlatformDeviceEmf::CreateDevice(int width, int height, // SkScalarRound(value) as SkScalarRound(value * 10). Safari is already // doing the same for text rendering. SkASSERT(shared_section); - PlatformDevice* device = VectorPlatformDeviceEmf::create( + SkDevice* device = VectorPlatformDeviceEmf::create( reinterpret_cast<HDC>(shared_section), width, height); return device; } @@ -59,9 +58,7 @@ static void FillBitmapInfoHeader(int width, int height, BITMAPINFOHEADER* hdr) { hdr->biClrImportant = 0; } -VectorPlatformDeviceEmf* VectorPlatformDeviceEmf::create(HDC dc, - int width, - int height) { +SkDevice* VectorPlatformDeviceEmf::create(HDC dc, int width, int height) { InitializeDC(dc); // Link the SkBitmap to the current selected bitmap in the device context. @@ -96,12 +93,13 @@ VectorPlatformDeviceEmf* VectorPlatformDeviceEmf::create(HDC dc, } VectorPlatformDeviceEmf::VectorPlatformDeviceEmf(HDC dc, const SkBitmap& bitmap) - : PlatformDevice(bitmap), + : SkDevice(bitmap), hdc_(dc), previous_brush_(NULL), previous_pen_(NULL), alpha_blend_used_(false) { transform_.reset(); + SetPlatformDevice(this, this); } VectorPlatformDeviceEmf::~VectorPlatformDeviceEmf() { @@ -865,4 +863,3 @@ void VectorPlatformDeviceEmf::InternalDrawBitmap(const SkBitmap& bitmap, } } // namespace skia - diff --git a/skia/ext/vector_platform_device_emf_win.h b/skia/ext/vector_platform_device_emf_win.h index 61283ff..1d7e5a9a 100644 --- a/skia/ext/vector_platform_device_emf_win.h +++ b/skia/ext/vector_platform_device_emf_win.h @@ -18,14 +18,13 @@ namespace skia { // SkCanvas to draw into. This specific device is not not backed by a surface // and is thus unreadable. This is because the backend is completely vectorial. // This device is a simple wrapper over a Windows device context (HDC) handle. -class VectorPlatformDeviceEmf : public PlatformDevice { +class VectorPlatformDeviceEmf : public PlatformDevice, public SkDevice { public: - SK_API static PlatformDevice* CreateDevice(int width, int height, - bool isOpaque, - HANDLE shared_section); + SK_API static SkDevice* CreateDevice(int width, int height, bool isOpaque, + HANDLE shared_section); // Factory function. The DC is kept as the output context. - static VectorPlatformDeviceEmf* create(HDC dc, int width, int height); + static SkDevice* create(HDC dc, int width, int height); VectorPlatformDeviceEmf(HDC dc, const SkBitmap& bitmap); virtual ~VectorPlatformDeviceEmf(); @@ -137,4 +136,3 @@ class VectorPlatformDeviceEmf : public PlatformDevice { } // namespace skia #endif // SKIA_EXT_VECTOR_PLATFORM_DEVICE_EMF_WIN_H_ - diff --git a/skia/ext/vector_platform_device_skia.cc b/skia/ext/vector_platform_device_skia.cc index 0971d1a..a320526 100644 --- a/skia/ext/vector_platform_device_skia.cc +++ b/skia/ext/vector_platform_device_skia.cc @@ -19,9 +19,12 @@ static inline SkBitmap makeABitmap(int width, int height) { return bitmap; } -VectorPlatformDeviceSkia::VectorPlatformDeviceSkia(SkPDFDevice* pdf_device) - : PlatformDevice(makeABitmap(pdf_device->width(), pdf_device->height())), - pdf_device_(pdf_device) { +VectorPlatformDeviceSkia::VectorPlatformDeviceSkia( + const SkISize& pageSize, + const SkISize& contentSize, + const SkMatrix& initialTransform) + : SkPDFDevice(pageSize, contentSize, initialTransform) { + SetPlatformDevice(this, this); } VectorPlatformDeviceSkia::~VectorPlatformDeviceSkia() { @@ -31,7 +34,7 @@ bool VectorPlatformDeviceSkia::IsNativeFontRenderingAllowed() { return false; } -PlatformDevice::PlatformSurface VectorPlatformDeviceSkia::BeginPlatformPaint() { +PlatformSurface VectorPlatformDeviceSkia::BeginPlatformPaint() { // Even when drawing a vector representation of the page, we have to // provide a raster surface for plugins to render into - they don't have // a vector interface. Therefore we create a BitmapPlatformDevice here @@ -39,13 +42,13 @@ PlatformDevice::PlatformSurface VectorPlatformDeviceSkia::BeginPlatformPaint() { // image in EndPlatformPaint. DCHECK(raster_surface_ == NULL); #if defined(OS_WIN) - raster_surface_ = BitmapPlatformDevice::create(pdf_device_->width(), - pdf_device_->height(), + raster_surface_ = BitmapPlatformDevice::create(width(), + height(), false, /* not opaque */ NULL); #elif defined(OS_POSIX) && !defined(OS_MACOSX) - raster_surface_ = BitmapPlatformDevice::Create(pdf_device_->width(), - pdf_device_->height(), + raster_surface_ = BitmapPlatformDevice::Create(width(), + height(), false /* not opaque */); #endif raster_surface_->unref(); // SkRefPtr and create both took a reference. @@ -60,143 +63,14 @@ void VectorPlatformDeviceSkia::EndPlatformPaint() { // SkPDFDevice checks the passed SkDraw for an empty clip (only). Fake // it out by setting a non-empty clip. SkDraw draw; - SkRegion clip(SkIRect::MakeWH(pdf_device_->width(), pdf_device_->height())); + SkRegion clip(SkIRect::MakeWH(width(), height())); draw.fClip=&clip; - pdf_device_->drawSprite(draw, raster_surface_->accessBitmap(false), 0, 0, - paint); + drawSprite(draw, raster_surface_->accessBitmap(false), 0, 0, paint); // BitmapPlatformDevice matches begin and end calls. raster_surface_->EndPlatformPaint(); raster_surface_ = NULL; } -uint32_t VectorPlatformDeviceSkia::getDeviceCapabilities() { - return SkDevice::getDeviceCapabilities() | kVector_Capability; -} - -int VectorPlatformDeviceSkia::width() const { - return pdf_device_->width(); -} - -int VectorPlatformDeviceSkia::height() const { - return pdf_device_->height(); -} - -void VectorPlatformDeviceSkia::setMatrixClip(const SkMatrix& matrix, - const SkRegion& region, - const SkClipStack& stack) { - pdf_device_->setMatrixClip(matrix, region, stack); -} - -bool VectorPlatformDeviceSkia::readPixels(const SkIRect& srcRect, - SkBitmap* bitmap) { - return false; -} - -void VectorPlatformDeviceSkia::drawPaint(const SkDraw& draw, - const SkPaint& paint) { - pdf_device_->drawPaint(draw, paint); -} - -void VectorPlatformDeviceSkia::drawPoints(const SkDraw& draw, - SkCanvas::PointMode mode, - size_t count, const SkPoint pts[], - const SkPaint& paint) { - pdf_device_->drawPoints(draw, mode, count, pts, paint); -} - -void VectorPlatformDeviceSkia::drawRect(const SkDraw& draw, - const SkRect& rect, - const SkPaint& paint) { - pdf_device_->drawRect(draw, rect, paint); -} - -void VectorPlatformDeviceSkia::drawPath(const SkDraw& draw, - const SkPath& path, - const SkPaint& paint, - const SkMatrix* prePathMatrix, - bool pathIsMutable) { - pdf_device_->drawPath(draw, path, paint, prePathMatrix, pathIsMutable); -} - -void VectorPlatformDeviceSkia::drawBitmap(const SkDraw& draw, - const SkBitmap& bitmap, - const SkIRect* srcRectOrNull, - const SkMatrix& matrix, - const SkPaint& paint) { - pdf_device_->drawBitmap(draw, bitmap, srcRectOrNull, matrix, paint); -} - -void VectorPlatformDeviceSkia::drawSprite(const SkDraw& draw, - const SkBitmap& bitmap, - int x, int y, - const SkPaint& paint) { - pdf_device_->drawSprite(draw, bitmap, x, y, paint); -} - -void VectorPlatformDeviceSkia::drawText(const SkDraw& draw, - const void* text, - size_t byteLength, - SkScalar x, - SkScalar y, - const SkPaint& paint) { - pdf_device_->drawText(draw, text, byteLength, x, y, paint); -} - -void VectorPlatformDeviceSkia::drawPosText(const SkDraw& draw, - const void* text, - size_t len, - const SkScalar pos[], - SkScalar constY, - int scalarsPerPos, - const SkPaint& paint) { - pdf_device_->drawPosText(draw, text, len, pos, constY, scalarsPerPos, paint); -} - -void VectorPlatformDeviceSkia::drawTextOnPath(const SkDraw& draw, - const void* text, - size_t len, - const SkPath& path, - const SkMatrix* matrix, - const SkPaint& paint) { - pdf_device_->drawTextOnPath(draw, text, len, path, matrix, paint); -} - -void VectorPlatformDeviceSkia::drawVertices(const SkDraw& draw, - SkCanvas::VertexMode vmode, - int vertexCount, - const SkPoint vertices[], - const SkPoint texs[], - const SkColor colors[], - SkXfermode* xmode, - const uint16_t indices[], - int indexCount, - const SkPaint& paint) { - pdf_device_->drawVertices(draw, vmode, vertexCount, vertices, texs, colors, - xmode, indices, indexCount, paint); -} - -void VectorPlatformDeviceSkia::drawDevice(const SkDraw& draw, - SkDevice* device, - int x, - int y, - const SkPaint& paint) { - SkDevice* real_device = device; - if ((device->getDeviceCapabilities() & kVector_Capability)) { - // Assume that a vectorial device means a VectorPlatformDeviceSkia, we need - // to unwrap the embedded SkPDFDevice. - VectorPlatformDeviceSkia* vector_device = - static_cast<VectorPlatformDeviceSkia*>(device); - vector_device->pdf_device_->setOrigin(vector_device->getOrigin().fX, - vector_device->getOrigin().fY); - real_device = vector_device->pdf_device_.get(); - } - pdf_device_->drawDevice(draw, real_device, x, y, paint); -} - -void VectorPlatformDeviceSkia::setDrawingArea(SkPDFDevice::DrawingArea area) { - pdf_device_->setDrawingArea(area); -} - #if defined(OS_WIN) void VectorPlatformDeviceSkia::DrawToNativeContext(HDC dc, int x, @@ -214,16 +88,12 @@ CGContextRef VectorPlatformDeviceSkia::GetBitmapContext() { SkASSERT(false); return NULL; } - -#endif - -SkDevice* VectorPlatformDeviceSkia::onCreateCompatibleDevice( - SkBitmap::Config config, int width, int height, bool isOpaque, - Usage /*usage*/) { - SkAutoTUnref<SkDevice> dev(pdf_device_->createCompatibleDevice(config, width, - height, - isOpaque)); - return new VectorPlatformDeviceSkia(static_cast<SkPDFDevice*>(dev.get())); +#elif defined(OS_LINUX) +void VectorPlatformDeviceSkia::DrawToNativeContext( + PlatformSurface surface, int x, int y, const PlatformRect* src_rect) { + // Should never be called on Linux. + SkASSERT(false); } +#endif } // namespace skia diff --git a/skia/ext/vector_platform_device_skia.h b/skia/ext/vector_platform_device_skia.h index 238996b..005d798 100644 --- a/skia/ext/vector_platform_device_skia.h +++ b/skia/ext/vector_platform_device_skia.h @@ -22,13 +22,13 @@ namespace skia { class BitmapPlatformDevice; -class VectorPlatformDeviceSkia : public PlatformDevice { +class VectorPlatformDeviceSkia : public PlatformDevice, public SkPDFDevice { public: - SK_API VectorPlatformDeviceSkia(SkPDFDevice* pdf_device); + SK_API VectorPlatformDeviceSkia(const SkISize& pageSize, + const SkISize& contentSize, + const SkMatrix& initialTransform); virtual ~VectorPlatformDeviceSkia(); - SkPDFDevice* PdfDevice() { return pdf_device_.get(); } - // PlatformDevice methods. virtual bool IsNativeFontRenderingAllowed(); @@ -40,56 +40,12 @@ class VectorPlatformDeviceSkia : public PlatformDevice { virtual void DrawToNativeContext(CGContext* context, int x, int y, const CGRect* src_rect); virtual CGContextRef GetBitmapContext(); +#elif defined(OS_LINUX) + virtual void DrawToNativeContext(PlatformSurface surface, int x, int y, + const PlatformRect* src_rect); #endif - // SkDevice methods. - virtual uint32_t getDeviceCapabilities(); - virtual int width() const; - virtual int height() const; - virtual void setMatrixClip(const SkMatrix& matrix, const SkRegion& region, - const SkClipStack& stack); - virtual bool readPixels(const SkIRect& srcRect, SkBitmap* bitmap); - - virtual void drawPaint(const SkDraw& draw, const SkPaint& paint); - virtual void drawPoints(const SkDraw& draw, SkCanvas::PointMode mode, - size_t count, const SkPoint[], const SkPaint& paint); - virtual void drawRect(const SkDraw& draw, const SkRect& rect, - const SkPaint& paint); - virtual void drawPath(const SkDraw& draw, const SkPath& path, - const SkPaint& paint, const SkMatrix* prePathMatrix, - bool pathIsMutable); - virtual void drawBitmap(const SkDraw& draw, const SkBitmap& bitmap, - const SkIRect* srcRectOrNull, const SkMatrix& matrix, - const SkPaint& paint); - virtual void drawSprite(const SkDraw& draw, const SkBitmap& bitmap, - int x, int y, const SkPaint& paint); - virtual void drawText(const SkDraw& draw, const void* text, size_t len, - SkScalar x, SkScalar y, const SkPaint& paint); - virtual void drawPosText(const SkDraw& draw, const void* text, size_t len, - const SkScalar pos[], SkScalar constY, - int scalarsPerPos, const SkPaint& paint); - virtual void drawTextOnPath(const SkDraw& draw, const void* text, size_t len, - const SkPath& path, const SkMatrix* matrix, - const SkPaint& paint); - virtual void drawVertices(const SkDraw& draw, SkCanvas::VertexMode, - int vertexCount, const SkPoint verts[], - const SkPoint texs[], const SkColor colors[], - SkXfermode* xmode, const uint16_t indices[], - int indexCount, const SkPaint& paint); - virtual void drawDevice(const SkDraw& draw, SkDevice*, int x, int y, - const SkPaint&); - - // Sets the drawing area for the device. Subsequent draw calls are - // directed to the specific drawing area (margin or content area). - SK_API void setDrawingArea(SkPDFDevice::DrawingArea area); - - protected: - virtual SkDevice* onCreateCompatibleDevice(SkBitmap::Config, int width, - int height, bool isOpaque, - Usage usage); - private: - SkRefPtr<SkPDFDevice> pdf_device_; SkRefPtr<BitmapPlatformDevice> raster_surface_; DISALLOW_COPY_AND_ASSIGN(VectorPlatformDeviceSkia); diff --git a/skia/skia.gyp b/skia/skia.gyp index 076df75..f83c360 100644 --- a/skia/skia.gyp +++ b/skia/skia.gyp @@ -685,11 +685,8 @@ 'ext/platform_device.cc', 'ext/platform_device.h', 'ext/platform_device_linux.cc', - 'ext/platform_device_linux.h', 'ext/platform_device_mac.cc', - 'ext/platform_device_mac.h', 'ext/platform_device_win.cc', - 'ext/platform_device_win.h', 'ext/SkMemory_new_handler.cpp', 'ext/skia_utils_mac.mm', 'ext/skia_utils_mac.h', |