532faa9021
* linear gradient support (based on shawcroft@google.com's CL) * generic paint resources reorg * opacity support R=reed@google.com,mtklein@google.com,halcanary@google.com Review URL: https://codereview.chromium.org/892973002
75 lines
3.3 KiB
C++
75 lines
3.3 KiB
C++
/*
|
|
* 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();
|
|
|
|
class AutoElement;
|
|
class ResourceBucket;
|
|
|
|
SkAutoTDelete<SkXMLWriter> fWriter;
|
|
SkAutoTDelete<AutoElement> fRootElement;
|
|
SkAutoTDelete<ResourceBucket> fResourceBucket;
|
|
SkBitmap fLegacyBitmap;
|
|
};
|
|
|
|
#endif // SkSVGDevice_DEFINED
|