diff options
Diffstat (limited to 'experimental/svg/SkSVGDevice.h')
-rw-r--r-- | experimental/svg/SkSVGDevice.h | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/experimental/svg/SkSVGDevice.h b/experimental/svg/SkSVGDevice.h new file mode 100644 index 0000000000..d6c48e2c0f --- /dev/null +++ b/experimental/svg/SkSVGDevice.h @@ -0,0 +1,72 @@ +/* + * Copyright 2015 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkSVGDevice_DEFINED +#define SkSVGDevice_DEFINED + +#include "SkDevice.h" + +class SkWStream; +class SkXMLWriter; + +class SkSVGDevice : public SkBaseDevice { +public: + static SkBaseDevice* Create(const SkISize& size, SkWStream* wstream); + + virtual SkImageInfo imageInfo() const SK_OVERRIDE; + +protected: + virtual void drawPaint(const SkDraw&, const SkPaint& paint) SK_OVERRIDE; + virtual void drawPoints(const SkDraw&, SkCanvas::PointMode mode, size_t count, + const SkPoint[], const SkPaint& paint) SK_OVERRIDE; + virtual void drawRect(const SkDraw&, const SkRect& r, const SkPaint& paint) SK_OVERRIDE; + virtual void drawOval(const SkDraw&, const SkRect& oval, const SkPaint& paint) SK_OVERRIDE; + virtual void drawRRect(const SkDraw&, const SkRRect& rr, const SkPaint& paint) SK_OVERRIDE; + virtual void drawPath(const SkDraw&, const SkPath& path, + const SkPaint& paint, + const SkMatrix* prePathMatrix = NULL, + bool pathIsMutable = false) SK_OVERRIDE; + + virtual void drawBitmap(const SkDraw&, const SkBitmap& bitmap, + const SkMatrix& matrix, const SkPaint& paint) SK_OVERRIDE; + virtual void drawSprite(const SkDraw&, const SkBitmap& bitmap, + int x, int y, const SkPaint& paint) SK_OVERRIDE; + virtual void drawBitmapRect(const SkDraw&, const SkBitmap&, + const SkRect* srcOrNull, const SkRect& dst, + const SkPaint& paint, + SkCanvas::DrawBitmapRectFlags flags) SK_OVERRIDE; + + virtual void drawText(const SkDraw&, const void* text, size_t len, + SkScalar x, SkScalar y, const SkPaint& paint) SK_OVERRIDE; + virtual void drawPosText(const SkDraw&, const void* text, size_t len, + const SkScalar pos[], int scalarsPerPos, + const SkPoint& offset, const SkPaint& paint) SK_OVERRIDE; + virtual void drawTextOnPath(const SkDraw&, const void* text, size_t len, + const SkPath& path, const SkMatrix* matrix, + const SkPaint& paint) SK_OVERRIDE; + virtual void drawVertices(const SkDraw&, SkCanvas::VertexMode, int vertexCount, + const SkPoint verts[], const SkPoint texs[], + const SkColor colors[], SkXfermode* xmode, + const uint16_t indices[], int indexCount, + const SkPaint& paint) SK_OVERRIDE; + + virtual void drawDevice(const SkDraw&, SkBaseDevice*, int x, int y, + const SkPaint&) SK_OVERRIDE; + virtual const SkBitmap& onAccessBitmap() SK_OVERRIDE; + +private: + SkSVGDevice(const SkISize& size, SkWStream* wstream); + virtual ~SkSVGDevice(); + + void addPaint(const SkPaint& paint); + void addTransform(const SkMatrix& t); + + SkXMLWriter* fWriter; + SkBitmap fLegacyBitmap; +}; + +#endif // SkSVGDevice_DEFINED |