1 #include "SkCanvas.h"
2 #include "SkShape.h"
3 #include "SkMatrix.h"
4
5 #if 0
6 static int gShapeCounter;
7 static void inc_shape(const SkShape* s) {
8 SkDebugf("inc %d\n", gShapeCounter);
9 gShapeCounter += 1;
10 }
11 static void dec_shape(const SkShape* s) {
12 --gShapeCounter;
13 SkDebugf("dec %d\n", gShapeCounter);
14 }
15 #else
16 #define inc_shape(s)
17 #define dec_shape(s)
18 #endif
19
20 ///////////////////////////////////////////////////////////////////////////////
21
draw(SkCanvas * canvas)22 void SkShape::draw(SkCanvas* canvas) {
23 int saveCount = canvas->getSaveCount();
24 this->onDraw(canvas);
25 canvas->restoreToCount(saveCount);
26 }
27
drawXY(SkCanvas * canvas,SkScalar dx,SkScalar dy)28 void SkShape::drawXY(SkCanvas* canvas, SkScalar dx, SkScalar dy) {
29 int saveCount = canvas->save(SkCanvas::kMatrix_SaveFlag);
30 canvas->translate(dx, dy);
31 this->onDraw(canvas);
32 canvas->restoreToCount(saveCount);
33 }
34
drawMatrix(SkCanvas * canvas,const SkMatrix & matrix)35 void SkShape::drawMatrix(SkCanvas* canvas, const SkMatrix& matrix) {
36 int saveCount = canvas->save(SkCanvas::kMatrix_SaveFlag);
37 canvas->concat(matrix);
38 this->onDraw(canvas);
39 canvas->restoreToCount(saveCount);
40 }
41
42 ///////////////////////////////////////////////////////////////////////////////
43
SkShape()44 SkShape::SkShape() {
45 inc_shape(this);
46 }
47
~SkShape()48 SkShape::~SkShape() {
49 dec_shape(this);
50 }
51
SkShape(SkFlattenableReadBuffer & buffer)52 SkShape::SkShape(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) {
53 inc_shape(this);
54 }
55
CreateProc(SkFlattenableReadBuffer & buffer)56 SkFlattenable* SkShape::CreateProc(SkFlattenableReadBuffer& buffer) {
57 return SkNEW_ARGS(SkShape, (buffer));
58 }
59
getFactory()60 SkFlattenable::Factory SkShape::getFactory() {
61 return CreateProc;
62 }
63
flatten(SkFlattenableWriteBuffer & buffer)64 void SkShape::flatten(SkFlattenableWriteBuffer& buffer) {
65 this->INHERITED::flatten(buffer);
66 }
67
onDraw(SkCanvas *)68 void SkShape::onDraw(SkCanvas*) {}
69
70 static SkFlattenable::Registrar gReg("SkShape", SkShape::CreateProc);
71