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