diff options
author | vandebo@chromium.org <vandebo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-07 22:34:36 +0000 |
---|---|---|
committer | vandebo@chromium.org <vandebo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-07 22:34:36 +0000 |
commit | 1e44a9a4adccf4f31d817177e2ee47b58c93f40d (patch) | |
tree | 26ec83a404b1dd4deceb479ca3ef3540141de75e /skia | |
parent | 1e14033b64fcacbd29ef345d63b6e7ed2c576f2d (diff) | |
download | chromium_src-1e44a9a4adccf4f31d817177e2ee47b58c93f40d.zip chromium_src-1e44a9a4adccf4f31d817177e2ee47b58c93f40d.tar.gz chromium_src-1e44a9a4adccf4f31d817177e2ee47b58c93f40d.tar.bz2 |
Revert 80841 - + This CL pulls in all the PDF code (i.e. we are now compiling the PDF backend on Chrome).+ Add a Metafile to contain Skia PDF content.+ Add a VectorPlatformDevice for use with the Skia PDF backend.BUG=62889TEST=NONEReview URL: http://codereview.chromium.org/6499024
TBR=vandebo@chromium.org
Review URL: http://codereview.chromium.org/6814028
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@80857 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'skia')
-rw-r--r-- | skia/config/SkUserConfig.h | 27 | ||||
-rw-r--r-- | skia/ext/vector_platform_device_skia.cc | 254 | ||||
-rw-r--r-- | skia/ext/vector_platform_device_skia.h | 106 | ||||
-rw-r--r-- | skia/skia.gyp | 36 |
4 files changed, 0 insertions, 423 deletions
diff --git a/skia/config/SkUserConfig.h b/skia/config/SkUserConfig.h index a7d830a..d9746b7 100644 --- a/skia/config/SkUserConfig.h +++ b/skia/config/SkUserConfig.h @@ -113,33 +113,6 @@ */ //#define SK_USE_RUNTIME_GLOBALS -/* If zlib is available and you want to support the flate compression - algorithm (used in PDF generation), define SK_ZLIB_INCLUDE to be the - include path. - */ -//#define SK_ZLIB_INCLUDE <zlib.h> -#if defined(USE_SYSTEM_ZLIB) -#define SK_ZLIB_INCLUDE <zlib.h> -#else -#define SK_ZLIB_INCLUDE "third_party/zlib/zlib.h" -#define MOZ_Z_inflate inflate -#define MOZ_Z_inflateInit_ inflateInit_ -#define MOZ_Z_inflateEnd inflateEnd -#define MOZ_Z_deflate deflate -#define MOZ_Z_deflateInit_ deflateInit_ -#define MOZ_Z_deflateEnd deflateEnd -#endif - -/* Define this to allow PDF scalars above 32k. The PDF/A spec doesn't allow - them, but modern PDF interpreters should handle them just fine. - */ -//#define SK_ALLOW_LARGE_PDF_SCALARS - -/* Define this to remove dimension checks on bitmaps. Not all blits will be - correct yet, so this is mostly for debugging the implementation. - */ -//#define SK_ALLOW_OVER_32K_BITMAPS - /* To write debug messages to a console, skia will call SkDebugf(...) following printf conventions (e.g. const char* format, ...). If you want to redirect diff --git a/skia/ext/vector_platform_device_skia.cc b/skia/ext/vector_platform_device_skia.cc deleted file mode 100644 index 8c064cb..0000000 --- a/skia/ext/vector_platform_device_skia.cc +++ /dev/null @@ -1,254 +0,0 @@ -// Copyright (c) 2009 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. - -#include "skia/ext/vector_platform_device_skia.h" - -#include "skia/ext/bitmap_platform_device.h" -#include "third_party/skia/include/core/SkClipStack.h" -#include "third_party/skia/include/core/SkDraw.h" -#include "third_party/skia/include/core/SkRect.h" -#include "third_party/skia/include/core/SkRegion.h" -#include "third_party/skia/include/core/SkScalar.h" - -namespace skia { - -SkDevice* VectorPlatformDeviceSkiaFactory::newDevice(SkCanvas* noUsed, - SkBitmap::Config config, - int width, int height, - bool isOpaque, - bool isForLayer) { - SkASSERT(config == SkBitmap::kARGB_8888_Config); - SkPDFDevice::OriginTransform flip = SkPDFDevice::kFlip_OriginTransform; - if (isForLayer) - flip = SkPDFDevice::kNoFlip_OriginTransform; - return new VectorPlatformDeviceSkia(width, height, flip); -} - -static inline SkBitmap makeABitmap(int width, int height) { - SkBitmap bitmap; - bitmap.setConfig(SkBitmap::kNo_Config, width, height); - return bitmap; -} - -VectorPlatformDeviceSkia::VectorPlatformDeviceSkia( - int width, int height, SkPDFDevice::OriginTransform flip) - : PlatformDevice(makeABitmap(width, height)), - pdf_device_(new SkPDFDevice(width, height, flip)) { - pdf_device_->unref(); // SkRefPtr and new both took a reference. - base_transform_.reset(); -} - -VectorPlatformDeviceSkia::~VectorPlatformDeviceSkia() { -} - -bool VectorPlatformDeviceSkia::IsVectorial() { - return true; -} - -bool VectorPlatformDeviceSkia::IsNativeFontRenderingAllowed() { - return false; -} - -PlatformDevice::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 - // and return the context from it, then layer on the raster data as an - // image in EndPlatformPaint. - DCHECK(raster_surface_ == NULL); -#if defined(OS_WIN) - raster_surface_ = BitmapPlatformDevice::create(pdf_device_->width(), - pdf_device_->height(), - false, /* not opaque */ - NULL); -#elif defined(OS_LINUX) - raster_surface_ = BitmapPlatformDevice::Create(pdf_device_->width(), - pdf_device_->height(), - false /* not opaque */); -#endif - raster_surface_->unref(); // SkRefPtr and create both took a reference. - - SkCanvas canvas(raster_surface_.get()); - SkPaint black; - black.setColor(SK_ColorBLACK); - canvas.drawPaint(black); - return raster_surface_->BeginPlatformPaint(); -} - -void VectorPlatformDeviceSkia::EndPlatformPaint() { - DCHECK(raster_surface_ != NULL); - SkPaint paint; - pdf_device_->drawSprite(SkDraw(), - raster_surface_->accessBitmap(false), - base_transform_.getTranslateX(), - base_transform_.getTranslateY(), - paint); - raster_surface_ = NULL; -} - -SkDeviceFactory* VectorPlatformDeviceSkia::getDeviceFactory() { - return SkNEW(VectorPlatformDeviceSkiaFactory); -} - -uint32_t VectorPlatformDeviceSkia::getDeviceCapabilities() { - return 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) { - SkMatrix transform = base_transform_; - transform.preConcat(matrix); - - DCHECK(SkMatrix::kTranslate_Mask == base_transform_.getType() || - SkMatrix::kIdentity_Mask == base_transform_.getType()); - SkRegion clip = region; - clip.translate(base_transform_.getTranslateX(), - base_transform_.getTranslateY()); - - pdf_device_->setMatrixClip(transform, clip, 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); - real_device = vector_device->pdf_device_.get(); - } - pdf_device_->drawDevice(draw, real_device, x, y, paint); -} - -#if defined(OS_WIN) -void VectorPlatformDeviceSkia::drawToHDC(HDC dc, - int x, - int y, - const RECT* src_rect) { - SkASSERT(false); -} -#endif - -void VectorPlatformDeviceSkia::setInitialTransform(int xOffset, int yOffset, - float scale_factor) { - // TODO(vandebo) Supporting a scale factor is some work because we have to - // transform both matrices and clips that come in, but Region only supports - // translation. Instead, we could change SkPDFDevice to include it in the - // initial transform. Delay that work until we would use it. Also checked - // in setMatrixClip. - DCHECK_EQ(1.0f, scale_factor); - - base_transform_.setTranslate(xOffset, yOffset); - SkScalar scale = SkFloatToScalar(scale_factor); - base_transform_.postScale(scale, scale); - - SkMatrix matrix; - matrix.reset(); - SkRegion region; - SkClipStack stack; - setMatrixClip(matrix, region, stack); -} - -} // namespace skia diff --git a/skia/ext/vector_platform_device_skia.h b/skia/ext/vector_platform_device_skia.h deleted file mode 100644 index 38cf0c5..0000000 --- a/skia/ext/vector_platform_device_skia.h +++ /dev/null @@ -1,106 +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_VECTOR_PLATFORM_DEVICE_SKIA_H_ -#define SKIA_EXT_VECTOR_PLATFORM_DEVICE_SKIA_H_ -#pragma once - -#include "base/basictypes.h" -#include "base/logging.h" -#include "skia/ext/platform_device.h" -#include "third_party/skia/include/core/SkMatrix.h" -#include "third_party/skia/include/core/SkRefCnt.h" -#include "third_party/skia/include/core/SkTScopedPtr.h" -#include "third_party/skia/include/pdf/SkPDFDevice.h" - -class SkClipStack; -struct SkIRect; -struct SkRect; - -namespace skia { - -class BitmapPlatformDevice; - -class VectorPlatformDeviceSkiaFactory : public SkDeviceFactory { - public: - virtual SkDevice* newDevice(SkCanvas* notUsed, SkBitmap::Config config, - int width, int height, bool isOpaque, - bool isForLayer); -}; - -class VectorPlatformDeviceSkia : public PlatformDevice { - public: - VectorPlatformDeviceSkia(int width, int height, - SkPDFDevice::OriginTransform flip); - - ~VectorPlatformDeviceSkia(); - - SkPDFDevice* PdfDevice() { return pdf_device_.get(); } - - // PlatformDevice methods. - virtual bool IsVectorial(); - virtual bool IsNativeFontRenderingAllowed(); - - virtual PlatformSurface BeginPlatformPaint(); - virtual void EndPlatformPaint(); - - // SkDevice methods. - virtual SkDeviceFactory* getDeviceFactory(); - 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&); - -#if defined(OS_WIN) - virtual void drawToHDC(HDC dc, int x, int y, const RECT* src_rect); -#endif - - // Our own methods. - - // This needs to be called before anything is drawn. - void setInitialTransform(int xOffset, int yOffset, float scale_factor); - - private: - SkRefPtr<SkPDFDevice> pdf_device_; - SkMatrix base_transform_; - SkRefPtr<BitmapPlatformDevice> raster_surface_; - - DISALLOW_COPY_AND_ASSIGN(VectorPlatformDeviceSkia); -}; - -} // namespace skia - -#endif // SKIA_EXT_VECTOR_PLATFORM_DEVICE_SKIA_H_ diff --git a/skia/skia.gyp b/skia/skia.gyp index c42d7ff..45d2a9a 100644 --- a/skia/skia.gyp +++ b/skia/skia.gyp @@ -325,7 +325,6 @@ '../third_party/skia/src/core/SkFP.h', '../third_party/skia/src/core/SkFilterProc.cpp', '../third_party/skia/src/core/SkFilterProc.h', - '../third_party/skia/src/core/SkFlate.cpp', '../third_party/skia/src/core/SkFlattenable.cpp', '../third_party/skia/src/core/SkFloat.cpp', '../third_party/skia/src/core/SkFloat.h', @@ -463,19 +462,6 @@ '../third_party/skia/src/opts/opts_check_SSE2.cpp', - '../third_party/skia/src/pdf/SkPDFCatalog.cpp', - '../third_party/skia/src/pdf/SkPDFDevice.cpp', - '../third_party/skia/src/pdf/SkPDFDocument.cpp', - '../third_party/skia/src/pdf/SkPDFFont.cpp', - '../third_party/skia/src/pdf/SkPDFFormXObject.cpp', - '../third_party/skia/src/pdf/SkPDFGraphicState.cpp', - '../third_party/skia/src/pdf/SkPDFImage.cpp', - '../third_party/skia/src/pdf/SkPDFPage.cpp', - '../third_party/skia/src/pdf/SkPDFShader.cpp', - '../third_party/skia/src/pdf/SkPDFStream.cpp', - '../third_party/skia/src/pdf/SkPDFTypes.cpp', - '../third_party/skia/src/pdf/SkPDFUtils.cpp', - #'../third_party/skia/src/ports/SkFontHost_FONTPATH.cpp', '../third_party/skia/src/ports/SkFontHost_FreeType.cpp', #'../third_party/skia/src/ports/SkFontHost_android.cpp', @@ -535,7 +521,6 @@ '../third_party/skia/include/core/SkEndian.h', '../third_party/skia/include/core/SkFDot6.h', '../third_party/skia/include/core/SkFixed.h', - '../third_party/skia/include/core/SkFlate.h', '../third_party/skia/include/core/SkFlattenable.h', '../third_party/skia/include/core/SkFloatBits.h', '../third_party/skia/include/core/SkFloatingPoint.h', @@ -620,19 +605,6 @@ '../third_party/skia/include/gpu/SkGr.h', '../third_party/skia/include/gpu/SkGrTexturePixelRef.h', - '../third_party/skia/include/pdf/SkPDFCatalog.h', - '../third_party/skia/include/pdf/SkPDFDevice.h', - '../third_party/skia/include/pdf/SkPDFDocument.h', - '../third_party/skia/include/pdf/SkPDFFont.h', - '../third_party/skia/include/pdf/SkPDFFormXObject.h', - '../third_party/skia/include/pdf/SkPDFGraphicState.h', - '../third_party/skia/include/pdf/SkPDFImage.h', - '../third_party/skia/include/pdf/SkPDFPage.h', - '../third_party/skia/include/pdf/SkPDFShader.h', - '../third_party/skia/include/pdf/SkPDFStream.h', - '../third_party/skia/include/pdf/SkPDFTypes.h', - '../third_party/skia/include/pdf/SkPDFUtils.h', - '../third_party/skia/include/ports/SkStream_Win.h', '../third_party/skia/include/ports/SkTypeface_win.h', @@ -682,8 +654,6 @@ 'ext/vector_platform_device_cairo_linux.h', 'ext/vector_platform_device_emf_win.cc', 'ext/vector_platform_device_emf_win.h', - 'ext/vector_platform_device_skia.cc', - 'ext/vector_platform_device_skia.h', ], 'include_dirs': [ '..', @@ -693,7 +663,6 @@ '../third_party/skia/include/effects', '../third_party/skia/include/gpu', '../third_party/skia/include/images', - '../third_party/skia/include/pdf', '../third_party/skia/include/ports', '../third_party/skia/include/utils', '../third_party/skia/gpu/include', @@ -783,10 +752,6 @@ 'defines': [ 'SK_BUILD_FOR_MAC', ], - 'sources/': [ - ['exclude', '/pdf/'], - ['exclude', 'ext/vector_platform_device_skia\\.(cc|h)'], - ], 'include_dirs': [ '../third_party/skia/include/utils/mac', ], @@ -838,7 +803,6 @@ '../third_party/skia/include/config', '../third_party/skia/include/core', '../third_party/skia/include/effects', - '../third_party/skia/include/pdf', '../third_party/skia/include/gpu', '../third_party/skia/include/ports', '../third_party/skia/gpu/include', |