SkNWayCanvas.h revision 6c924ad46c89955e78e071c792ef00df9910b42f
16c924ad46c89955e78e071c792ef00df9910b42freed@android.com
26c924ad46c89955e78e071c792ef00df9910b42freed@android.com#ifndef SkNWayCanvas_DEFINED
36c924ad46c89955e78e071c792ef00df9910b42freed@android.com#define SkNWayCanvas_DEFINED
46c924ad46c89955e78e071c792ef00df9910b42freed@android.com
56c924ad46c89955e78e071c792ef00df9910b42freed@android.com#include "SkCanvas.h"
66c924ad46c89955e78e071c792ef00df9910b42freed@android.com
76c924ad46c89955e78e071c792ef00df9910b42freed@android.comclass SkNWayCanvas : public SkCanvas {
86c924ad46c89955e78e071c792ef00df9910b42freed@android.compublic:
96c924ad46c89955e78e071c792ef00df9910b42freed@android.com    SkNWayCanvas();
106c924ad46c89955e78e071c792ef00df9910b42freed@android.com    virtual ~SkNWayCanvas();
116c924ad46c89955e78e071c792ef00df9910b42freed@android.com
126c924ad46c89955e78e071c792ef00df9910b42freed@android.com    void addCanvas(SkCanvas*);
136c924ad46c89955e78e071c792ef00df9910b42freed@android.com    void removeCanvas(SkCanvas*);
146c924ad46c89955e78e071c792ef00df9910b42freed@android.com    void removeAll();
156c924ad46c89955e78e071c792ef00df9910b42freed@android.com
166c924ad46c89955e78e071c792ef00df9910b42freed@android.com    ///////////////////////////////////////////////////////////////////////////
176c924ad46c89955e78e071c792ef00df9910b42freed@android.com    // These are forwarded to the N canvases we're referencing
186c924ad46c89955e78e071c792ef00df9910b42freed@android.com
196c924ad46c89955e78e071c792ef00df9910b42freed@android.com    virtual int save(SaveFlags flags = kMatrixClip_SaveFlag);
206c924ad46c89955e78e071c792ef00df9910b42freed@android.com    virtual int saveLayer(const SkRect* bounds, const SkPaint* paint,
216c924ad46c89955e78e071c792ef00df9910b42freed@android.com                          SaveFlags flags = kARGB_ClipLayer_SaveFlag);
226c924ad46c89955e78e071c792ef00df9910b42freed@android.com    virtual void restore();
236c924ad46c89955e78e071c792ef00df9910b42freed@android.com    virtual bool translate(SkScalar dx, SkScalar dy);
246c924ad46c89955e78e071c792ef00df9910b42freed@android.com    virtual bool scale(SkScalar sx, SkScalar sy);
256c924ad46c89955e78e071c792ef00df9910b42freed@android.com    virtual bool rotate(SkScalar degrees);
266c924ad46c89955e78e071c792ef00df9910b42freed@android.com    virtual bool skew(SkScalar sx, SkScalar sy);
276c924ad46c89955e78e071c792ef00df9910b42freed@android.com    virtual bool concat(const SkMatrix& matrix);
286c924ad46c89955e78e071c792ef00df9910b42freed@android.com    virtual void setMatrix(const SkMatrix& matrix);
296c924ad46c89955e78e071c792ef00df9910b42freed@android.com    virtual bool clipRect(const SkRect& rect,
306c924ad46c89955e78e071c792ef00df9910b42freed@android.com                          SkRegion::Op op = SkRegion::kIntersect_Op);
316c924ad46c89955e78e071c792ef00df9910b42freed@android.com    virtual bool clipPath(const SkPath& path,
326c924ad46c89955e78e071c792ef00df9910b42freed@android.com                          SkRegion::Op op = SkRegion::kIntersect_Op);
336c924ad46c89955e78e071c792ef00df9910b42freed@android.com    virtual bool clipRegion(const SkRegion& deviceRgn,
346c924ad46c89955e78e071c792ef00df9910b42freed@android.com                            SkRegion::Op op = SkRegion::kIntersect_Op);
356c924ad46c89955e78e071c792ef00df9910b42freed@android.com
366c924ad46c89955e78e071c792ef00df9910b42freed@android.com    virtual void drawPaint(const SkPaint& paint);
376c924ad46c89955e78e071c792ef00df9910b42freed@android.com    virtual void drawPoints(PointMode mode, size_t count, const SkPoint pts[],
386c924ad46c89955e78e071c792ef00df9910b42freed@android.com                            const SkPaint& paint);
396c924ad46c89955e78e071c792ef00df9910b42freed@android.com    virtual void drawRect(const SkRect& rect, const SkPaint& paint);
406c924ad46c89955e78e071c792ef00df9910b42freed@android.com    virtual void drawPath(const SkPath& path, const SkPaint& paint);
416c924ad46c89955e78e071c792ef00df9910b42freed@android.com    virtual void drawBitmap(const SkBitmap& bitmap, SkScalar left, SkScalar top,
426c924ad46c89955e78e071c792ef00df9910b42freed@android.com                            const SkPaint* paint = NULL);
436c924ad46c89955e78e071c792ef00df9910b42freed@android.com    virtual void drawBitmapRect(const SkBitmap& bitmap, const SkIRect* src,
446c924ad46c89955e78e071c792ef00df9910b42freed@android.com                                const SkRect& dst, const SkPaint* paint = NULL);
456c924ad46c89955e78e071c792ef00df9910b42freed@android.com    virtual void drawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& m,
466c924ad46c89955e78e071c792ef00df9910b42freed@android.com                                  const SkPaint* paint = NULL);
476c924ad46c89955e78e071c792ef00df9910b42freed@android.com    virtual void drawSprite(const SkBitmap& bitmap, int left, int top,
486c924ad46c89955e78e071c792ef00df9910b42freed@android.com                            const SkPaint* paint = NULL);
496c924ad46c89955e78e071c792ef00df9910b42freed@android.com    virtual void drawText(const void* text, size_t byteLength, SkScalar x,
506c924ad46c89955e78e071c792ef00df9910b42freed@android.com                          SkScalar y, const SkPaint& paint);
516c924ad46c89955e78e071c792ef00df9910b42freed@android.com    virtual void drawPosText(const void* text, size_t byteLength,
526c924ad46c89955e78e071c792ef00df9910b42freed@android.com                             const SkPoint pos[], const SkPaint& paint);
536c924ad46c89955e78e071c792ef00df9910b42freed@android.com    virtual void drawPosTextH(const void* text, size_t byteLength,
546c924ad46c89955e78e071c792ef00df9910b42freed@android.com                              const SkScalar xpos[], SkScalar constY,
556c924ad46c89955e78e071c792ef00df9910b42freed@android.com                              const SkPaint& paint);
566c924ad46c89955e78e071c792ef00df9910b42freed@android.com    virtual void drawTextOnPath(const void* text, size_t byteLength,
576c924ad46c89955e78e071c792ef00df9910b42freed@android.com                                const SkPath& path, const SkMatrix* matrix,
586c924ad46c89955e78e071c792ef00df9910b42freed@android.com                                const SkPaint& paint);
596c924ad46c89955e78e071c792ef00df9910b42freed@android.com    virtual void drawPicture(SkPicture& picture);
606c924ad46c89955e78e071c792ef00df9910b42freed@android.com    virtual void drawVertices(VertexMode vmode, int vertexCount,
616c924ad46c89955e78e071c792ef00df9910b42freed@android.com                              const SkPoint vertices[], const SkPoint texs[],
626c924ad46c89955e78e071c792ef00df9910b42freed@android.com                              const SkColor colors[], SkXfermode* xmode,
636c924ad46c89955e78e071c792ef00df9910b42freed@android.com                              const uint16_t indices[], int indexCount,
646c924ad46c89955e78e071c792ef00df9910b42freed@android.com                              const SkPaint& paint);
656c924ad46c89955e78e071c792ef00df9910b42freed@android.com
666c924ad46c89955e78e071c792ef00df9910b42freed@android.com    virtual SkBounder* setBounder(SkBounder* bounder);
676c924ad46c89955e78e071c792ef00df9910b42freed@android.com    virtual SkDrawFilter* setDrawFilter(SkDrawFilter* filter);
686c924ad46c89955e78e071c792ef00df9910b42freed@android.com
696c924ad46c89955e78e071c792ef00df9910b42freed@android.comprivate:
706c924ad46c89955e78e071c792ef00df9910b42freed@android.com    SkTDArray<SkCanvas*> fList;
716c924ad46c89955e78e071c792ef00df9910b42freed@android.com
726c924ad46c89955e78e071c792ef00df9910b42freed@android.com    class Iter;
736c924ad46c89955e78e071c792ef00df9910b42freed@android.com
746c924ad46c89955e78e071c792ef00df9910b42freed@android.com    typedef SkCanvas INHERITED;
756c924ad46c89955e78e071c792ef00df9910b42freed@android.com};
766c924ad46c89955e78e071c792ef00df9910b42freed@android.com
776c924ad46c89955e78e071c792ef00df9910b42freed@android.com
786c924ad46c89955e78e071c792ef00df9910b42freed@android.com#endif
796c924ad46c89955e78e071c792ef00df9910b42freed@android.com
80