00001
00002 #ifndef SkNWayCanvas_DEFINED
00003 #define SkNWayCanvas_DEFINED
00004
00005 #include "SkCanvas.h"
00006
00007 class SkNWayCanvas : public SkCanvas {
00008 public:
00009 SkNWayCanvas();
00010 virtual ~SkNWayCanvas();
00011
00012 void addCanvas(SkCanvas*);
00013 void removeCanvas(SkCanvas*);
00014 void removeAll();
00015
00017
00018
00019 virtual int save(SaveFlags flags = kMatrixClip_SaveFlag);
00020 virtual int saveLayer(const SkRect* bounds, const SkPaint* paint,
00021 SaveFlags flags = kARGB_ClipLayer_SaveFlag);
00022 virtual void restore();
00023 virtual bool translate(SkScalar dx, SkScalar dy);
00024 virtual bool scale(SkScalar sx, SkScalar sy);
00025 virtual bool rotate(SkScalar degrees);
00026 virtual bool skew(SkScalar sx, SkScalar sy);
00027 virtual bool concat(const SkMatrix& matrix);
00028 virtual void setMatrix(const SkMatrix& matrix);
00029 virtual bool clipRect(const SkRect& rect,
00030 SkRegion::Op op = SkRegion::kIntersect_Op);
00031 virtual bool clipPath(const SkPath& path,
00032 SkRegion::Op op = SkRegion::kIntersect_Op);
00033 virtual bool clipRegion(const SkRegion& deviceRgn,
00034 SkRegion::Op op = SkRegion::kIntersect_Op);
00035
00036 virtual void drawPaint(const SkPaint& paint);
00037 virtual void drawPoints(PointMode mode, size_t count, const SkPoint pts[],
00038 const SkPaint& paint);
00039 virtual void drawRect(const SkRect& rect, const SkPaint& paint);
00040 virtual void drawPath(const SkPath& path, const SkPaint& paint);
00041 virtual void drawBitmap(const SkBitmap& bitmap, SkScalar left, SkScalar top,
00042 const SkPaint* paint = NULL);
00043 virtual void drawBitmapRect(const SkBitmap& bitmap, const SkIRect* src,
00044 const SkRect& dst, const SkPaint* paint = NULL);
00045 virtual void drawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& m,
00046 const SkPaint* paint = NULL);
00047 virtual void drawSprite(const SkBitmap& bitmap, int left, int top,
00048 const SkPaint* paint = NULL);
00049 virtual void drawText(const void* text, size_t byteLength, SkScalar x,
00050 SkScalar y, const SkPaint& paint);
00051 virtual void drawPosText(const void* text, size_t byteLength,
00052 const SkPoint pos[], const SkPaint& paint);
00053 virtual void drawPosTextH(const void* text, size_t byteLength,
00054 const SkScalar xpos[], SkScalar constY,
00055 const SkPaint& paint);
00056 virtual void drawTextOnPath(const void* text, size_t byteLength,
00057 const SkPath& path, const SkMatrix* matrix,
00058 const SkPaint& paint);
00059 virtual void drawPicture(SkPicture&);
00060 virtual void drawShape(SkShape*);
00061 virtual void drawVertices(VertexMode vmode, int vertexCount,
00062 const SkPoint vertices[], const SkPoint texs[],
00063 const SkColor colors[], SkXfermode* xmode,
00064 const uint16_t indices[], int indexCount,
00065 const SkPaint& paint);
00066
00067 virtual SkBounder* setBounder(SkBounder* bounder);
00068 virtual SkDrawFilter* setDrawFilter(SkDrawFilter* filter);
00069
00070 private:
00071 SkTDArray<SkCanvas*> fList;
00072
00073 class Iter;
00074
00075 typedef SkCanvas INHERITED;
00076 };
00077
00078
00079 #endif
00080