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#ifndef SkShape_DEFINED
9#define SkShape_DEFINED
10
11#include "SkFlattenable.h"
12
13class SkCanvas;
14class SkMatrix;
15class SkWStream;
16
17class SkShape : public SkFlattenable {
18public:
19    SkShape();
20    virtual ~SkShape();
21
22    void draw(SkCanvas*);
23
24    /** Draw the shape translated by (dx,dy), which is applied before the
25        shape's matrix (if any).
26     */
27    void drawXY(SkCanvas*, SkScalar dx, SkScalar dy);
28
29    /** Draw the shape with the specified matrix, applied before the shape's
30        matrix (if any).
31     */
32    void drawMatrix(SkCanvas*, const SkMatrix&);
33
34    // overrides
35    virtual Factory getFactory();
36    virtual void flatten(SkFlattenableWriteBuffer&);
37
38    // public for Registrar
39    static SkFlattenable* CreateProc(SkFlattenableReadBuffer&);
40
41    SK_DECLARE_FLATTENABLE_REGISTRAR()
42
43protected:
44    virtual void onDraw(SkCanvas*);
45
46    SkShape(SkFlattenableReadBuffer&);
47
48private:
49
50    typedef SkFlattenable INHERITED;
51};
52
53#endif
54