blob: 8978afa08d3a7ebcd313b1ab0b573f2e6f14f2ec [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);
20
21 /** 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