blob: abe4e268af2636efb31c2ce9dbe28b6452bf0781 [file] [log] [blame]
reed@android.comf76bacf2009-05-13 14:00:33 +00001#ifndef SkShape_DEFINED
2#define SkShape_DEFINED
3
4#include "SkFlattenable.h"
reed@android.comf76bacf2009-05-13 14:00:33 +00005
6class SkCanvas;
reed@android.comf48f2812009-05-18 04:20:55 +00007class SkMatrix;
reed@android.comf76bacf2009-05-13 14:00:33 +00008class SkWStream;
9
10class SkShape : public SkFlattenable {
11public:
reed@android.comf48f2812009-05-18 04:20:55 +000012 SkShape() {}
reed@android.comf76bacf2009-05-13 14:00:33 +000013
14 void draw(SkCanvas*);
15
16 /** Draw the shape translated by (dx,dy), which is applied before the
17 shape's matrix (if any).
18 */
19 void drawXY(SkCanvas*, SkScalar dx, SkScalar dy);
reed@android.com89bb83a2009-05-29 21:30:42 +000020
reed@android.comf76bacf2009-05-13 14:00:33 +000021 /** Draw the shape with the specified matrix, applied before the shape's
22 matrix (if any).
23 */
24 void drawMatrix(SkCanvas*, const SkMatrix&);
25
26 // overrides
27 virtual void flatten(SkFlattenableWriteBuffer&);
28
29protected:
30 virtual void onDraw(SkCanvas*) = 0;
31
reed@android.comf48f2812009-05-18 04:20:55 +000032 SkShape(SkFlattenableReadBuffer&) {}
reed@android.comf76bacf2009-05-13 14:00:33 +000033
34private:
reed@android.comf76bacf2009-05-13 14:00:33 +000035 static SkFlattenable* CreateProc(SkFlattenableReadBuffer&);
36
37 typedef SkFlattenable INHERITED;
38};
39
40#endif