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 13static int gShapeCounter; 14static void inc_shape(const SkShape* s) { 15 SkDebugf("inc %d\n", gShapeCounter); 16 gShapeCounter += 1; 17} 18static 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 29void SkShape::draw(SkCanvas* canvas) { 30 int saveCount = canvas->getSaveCount(); 31 this->onDraw(canvas); 32 canvas->restoreToCount(saveCount); 33} 34 35void 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 42void 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 51SkShape::SkShape() { 52 inc_shape(this); 53} 54 55SkShape::~SkShape() { 56 dec_shape(this); 57} 58 59SkShape::SkShape(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) { 60 inc_shape(this); 61} 62 63SkFlattenable* SkShape::CreateProc(SkFlattenableReadBuffer& buffer) { 64 return SkNEW_ARGS(SkShape, (buffer)); 65} 66 67SkFlattenable::Factory SkShape::getFactory() { 68 return CreateProc; 69} 70 71void SkShape::flatten(SkFlattenableWriteBuffer& buffer) { 72 this->INHERITED::flatten(buffer); 73} 74 75void SkShape::onDraw(SkCanvas*) {} 76 77SK_DEFINE_FLATTENABLE_REGISTRAR(SkShape) 78