• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 /*
3  * Copyright 2006 The Android Open Source Project
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 
9 
10 #ifndef SkPaintParts_DEFINED
11 #define SkPaintParts_DEFINED
12 
13 #include "SkDisplayable.h"
14 #include "SkMemberInfo.h"
15 #include "SkPaint.h"
16 #include "SkShader.h"
17 #include "SkTypeface.h"
18 #include "SkXfermode.h"
19 
20 class SkDrawPaint;
21 class SkDrawMatrix;
22 
23 class SkPaintPart : public SkDisplayable {
24 public:
25     SkPaintPart();
26     virtual bool add() = 0;
27     virtual SkDisplayable* getParent() const;
28     virtual bool setParent(SkDisplayable* parent);
29 #ifdef SK_DEBUG
isPaintPart()30     virtual bool isPaintPart() const { return true; }
31 #endif
32 protected:
33     SkDrawPaint* fPaint;
34 };
35 
36 class SkDrawMaskFilter : public SkPaintPart {
37     DECLARE_EMPTY_MEMBER_INFO(MaskFilter);
38     virtual SkMaskFilter* getMaskFilter();
39 protected:
40     virtual bool add();
41 };
42 
43 class SkDrawPathEffect : public SkPaintPart {
44     DECLARE_EMPTY_MEMBER_INFO(PathEffect);
45     virtual SkPathEffect* getPathEffect();
46 protected:
47     virtual bool add();
48 };
49 
50 class SkDrawShader : public SkPaintPart {
51     DECLARE_DRAW_MEMBER_INFO(Shader);
52     SkDrawShader();
53     virtual SkShader* getShader();
54 protected:
55     virtual bool add();
56     void addPostlude(SkShader* shader);
57     SkDrawMatrix* matrix;
58     int /*SkShader::TileMode*/ tileMode;
59 };
60 
61 class SkDrawTypeface  : public SkPaintPart {
62     DECLARE_DRAW_MEMBER_INFO(Typeface);
63     SkDrawTypeface();
64 #ifdef SK_DUMP_ENABLED
65     virtual void dump(SkAnimateMaker *);
66 #endif
getTypeface()67     SkTypeface* getTypeface() {
68         return SkTypeface::CreateFromName(fontName.c_str(), style); }
69 protected:
70     virtual bool add();
71     SkString fontName;
72     SkTypeface::Style style;
73 };
74 
75 #endif // SkPaintParts_DEFINED
76