Index: skia/ext/vector_platform_device_skia.h |
diff --git a/skia/ext/vector_platform_device_skia.h b/skia/ext/vector_platform_device_skia.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..38cf0c544cae8cca7e28bb881459f73fe2035e6b |
--- /dev/null |
+++ b/skia/ext/vector_platform_device_skia.h |
@@ -0,0 +1,106 @@ |
+// 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_ |