Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / third_party / skia / src / animator / SkPaintPart.h
1 /*
2  * Copyright 2006 The Android Open Source Project
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7
8 #ifndef SkPaintPart_DEFINED
9 #define SkPaintPart_DEFINED
10
11 #include "SkDisplayable.h"
12 #include "SkMemberInfo.h"
13 #include "SkPaint.h"
14 #include "SkShader.h"
15 #include "SkTypeface.h"
16 #include "SkXfermode.h"
17
18 class SkDrawPaint;
19 class SkDrawMatrix;
20
21 class SkPaintPart : public SkDisplayable {
22 public:
23     SkPaintPart();
24     virtual bool add() = 0;
25     virtual SkDisplayable* getParent() const;
26     virtual bool setParent(SkDisplayable* parent);
27 #ifdef SK_DEBUG
28     virtual bool isPaintPart() const { return true; }
29 #endif
30 protected:
31     SkDrawPaint* fPaint;
32 };
33
34 class SkDrawMaskFilter : public SkPaintPart {
35     DECLARE_EMPTY_MEMBER_INFO(MaskFilter);
36     virtual SkMaskFilter* getMaskFilter();
37 protected:
38     virtual bool add();
39 };
40
41 class SkDrawPathEffect : public SkPaintPart {
42     DECLARE_EMPTY_MEMBER_INFO(PathEffect);
43     virtual SkPathEffect* getPathEffect();
44 protected:
45     virtual bool add();
46 };
47
48 class SkDrawShader : public SkPaintPart {
49     DECLARE_DRAW_MEMBER_INFO(Shader);
50     SkDrawShader();
51     virtual SkShader* getShader();
52 protected:
53     virtual bool add();
54     SkMatrix* getMatrix(); // returns NULL if matrix is NULL
55     SkDrawMatrix* matrix;
56     int /*SkShader::TileMode*/ tileMode;
57 };
58
59 class SkDrawTypeface  : public SkPaintPart {
60     DECLARE_DRAW_MEMBER_INFO(Typeface);
61     SkDrawTypeface();
62 #ifdef SK_DUMP_ENABLED
63     virtual void dump(SkAnimateMaker *);
64 #endif
65     SkTypeface* getTypeface() {
66         return SkTypeface::CreateFromName(fontName.c_str(), style); }
67 protected:
68     virtual bool add();
69     SkString fontName;
70     SkTypeface::Style style;
71 };
72
73 #endif // SkPaintPart_DEFINED