blob: 21d1ba6ea4e0ee5b15ab3d0ea941c38e4ca8f8db [file] [log] [blame]
reed@android.com6c924ad2009-03-31 03:48:49 +00001
2#ifndef SkNWayCanvas_DEFINED
3#define SkNWayCanvas_DEFINED
4
5#include "SkCanvas.h"
6
7class SkNWayCanvas : public SkCanvas {
8public:
9 SkNWayCanvas();
10 virtual ~SkNWayCanvas();
11
12 void addCanvas(SkCanvas*);
13 void removeCanvas(SkCanvas*);
14 void removeAll();
15
16 ///////////////////////////////////////////////////////////////////////////
17 // These are forwarded to the N canvases we're referencing
18
19 virtual int save(SaveFlags flags = kMatrixClip_SaveFlag);
20 virtual int saveLayer(const SkRect* bounds, const SkPaint* paint,
21 SaveFlags flags = kARGB_ClipLayer_SaveFlag);
22 virtual void restore();
23 virtual bool translate(SkScalar dx, SkScalar dy);
24 virtual bool scale(SkScalar sx, SkScalar sy);
25 virtual bool rotate(SkScalar degrees);
26 virtual bool skew(SkScalar sx, SkScalar sy);
27 virtual bool concat(const SkMatrix& matrix);
28 virtual void setMatrix(const SkMatrix& matrix);
29 virtual bool clipRect(const SkRect& rect,
30 SkRegion::Op op = SkRegion::kIntersect_Op);
31 virtual bool clipPath(const SkPath& path,
32 SkRegion::Op op = SkRegion::kIntersect_Op);
33 virtual bool clipRegion(const SkRegion& deviceRgn,
34 SkRegion::Op op = SkRegion::kIntersect_Op);
35
36 virtual void drawPaint(const SkPaint& paint);
37 virtual void drawPoints(PointMode mode, size_t count, const SkPoint pts[],
38 const SkPaint& paint);
39 virtual void drawRect(const SkRect& rect, const SkPaint& paint);
40 virtual void drawPath(const SkPath& path, const SkPaint& paint);
41 virtual void drawBitmap(const SkBitmap& bitmap, SkScalar left, SkScalar top,
42 const SkPaint* paint = NULL);
43 virtual void drawBitmapRect(const SkBitmap& bitmap, const SkIRect* src,
44 const SkRect& dst, const SkPaint* paint = NULL);
45 virtual void drawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& m,
46 const SkPaint* paint = NULL);
47 virtual void drawSprite(const SkBitmap& bitmap, int left, int top,
48 const SkPaint* paint = NULL);
49 virtual void drawText(const void* text, size_t byteLength, SkScalar x,
50 SkScalar y, const SkPaint& paint);
51 virtual void drawPosText(const void* text, size_t byteLength,
52 const SkPoint pos[], const SkPaint& paint);
53 virtual void drawPosTextH(const void* text, size_t byteLength,
54 const SkScalar xpos[], SkScalar constY,
55 const SkPaint& paint);
56 virtual void drawTextOnPath(const void* text, size_t byteLength,
57 const SkPath& path, const SkMatrix* matrix,
58 const SkPaint& paint);
reed@android.comf76bacf2009-05-13 14:00:33 +000059 virtual void drawPicture(SkPicture&);
reed@android.com6c924ad2009-03-31 03:48:49 +000060 virtual void drawVertices(VertexMode vmode, int vertexCount,
61 const SkPoint vertices[], const SkPoint texs[],
62 const SkColor colors[], SkXfermode* xmode,
63 const uint16_t indices[], int indexCount,
64 const SkPaint& paint);
65
66 virtual SkBounder* setBounder(SkBounder* bounder);
67 virtual SkDrawFilter* setDrawFilter(SkDrawFilter* filter);
68
69private:
70 SkTDArray<SkCanvas*> fList;
71
72 class Iter;
73
74 typedef SkCanvas INHERITED;
75};
76
77
78#endif
79