• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 /*
3  * Copyright 2011 Google Inc.
4  *
5  * Use of this source code is governed by a BSD-style license that can be
6  * found in the LICENSE file.
7  */
8 #include "SkCanvas.h"
9 #include "SkShape.h"
10 #include "SkMatrix.h"
11 
12 #if 0
13 static int gShapeCounter;
14 static void inc_shape(const SkShape* s) {
15     SkDebugf("inc %d\n", gShapeCounter);
16     gShapeCounter += 1;
17 }
18 static void dec_shape(const SkShape* s) {
19     --gShapeCounter;
20     SkDebugf("dec %d\n", gShapeCounter);
21 }
22 #else
23 #define inc_shape(s)
24 #define dec_shape(s)
25 #endif
26 
27 ///////////////////////////////////////////////////////////////////////////////
28 
draw(SkCanvas * canvas)29 void SkShape::draw(SkCanvas* canvas) {
30     int saveCount = canvas->getSaveCount();
31     this->onDraw(canvas);
32     canvas->restoreToCount(saveCount);
33 }
34 
drawXY(SkCanvas * canvas,SkScalar dx,SkScalar dy)35 void SkShape::drawXY(SkCanvas* canvas, SkScalar dx, SkScalar dy) {
36     int saveCount = canvas->save(SkCanvas::kMatrix_SaveFlag);
37     canvas->translate(dx, dy);
38     this->onDraw(canvas);
39     canvas->restoreToCount(saveCount);
40 }
41 
drawMatrix(SkCanvas * canvas,const SkMatrix & matrix)42 void SkShape::drawMatrix(SkCanvas* canvas, const SkMatrix& matrix) {
43     int saveCount = canvas->save(SkCanvas::kMatrix_SaveFlag);
44     canvas->concat(matrix);
45     this->onDraw(canvas);
46     canvas->restoreToCount(saveCount);
47 }
48 
49 ///////////////////////////////////////////////////////////////////////////////
50 
SkShape()51 SkShape::SkShape() {
52     inc_shape(this);
53 }
54 
~SkShape()55 SkShape::~SkShape() {
56     dec_shape(this);
57 }
58 
SkShape(SkFlattenableReadBuffer & buffer)59 SkShape::SkShape(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) {
60     inc_shape(this);
61 }
62 
CreateProc(SkFlattenableReadBuffer & buffer)63 SkFlattenable* SkShape::CreateProc(SkFlattenableReadBuffer& buffer) {
64     return SkNEW_ARGS(SkShape, (buffer));
65 }
66 
getFactory()67 SkFlattenable::Factory SkShape::getFactory() {
68     return CreateProc;
69 }
70 
flatten(SkFlattenableWriteBuffer & buffer)71 void SkShape::flatten(SkFlattenableWriteBuffer& buffer) {
72     this->INHERITED::flatten(buffer);
73 }
74 
onDraw(SkCanvas *)75 void SkShape::onDraw(SkCanvas*) {}
76 
77 SK_DEFINE_FLATTENABLE_REGISTRAR(SkShape)
78