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 SkDrawPaint_DEFINED
11 #define SkDrawPaint_DEFINED
12 
13 #include "SkADrawable.h"
14 #include "SkIntArray.h"
15 #include "SkMemberInfo.h"
16 #include "SkPaint.h"
17 #include "SkXfermode.h"
18 
19 class SkDrawMaskFilter;
20 class SkDrawPathEffect;
21 class SkDrawShader;
22 class SkTransferMode;
23 class SkDrawTypeface;
24 
25 class SkDrawPaint : public SkADrawable {
26     DECLARE_DRAW_MEMBER_INFO(Paint);
27     SkDrawPaint();
28     virtual ~SkDrawPaint();
29     virtual bool add(SkAnimateMaker* , SkDisplayable* child);
30     SkDisplayable* deepCopy(SkAnimateMaker* ) override;
31     bool draw(SkAnimateMaker& ) override;
32 #ifdef SK_DUMP_ENABLED
33     void dump(SkAnimateMaker* ) override;
34 #endif
35     void executeFunction(SkDisplayable* target, int index,
36         SkTDArray<SkScriptValue>& parameters, SkDisplayTypes type,
37         SkScriptValue* ) override;
38     const SkFunctionParamType* getFunctionsParameters() override;
39     bool getProperty(int index, SkScriptValue* value) const override;
40     bool resolveIDs(SkAnimateMaker& maker, SkDisplayable* original, SkApply* apply) override;
41 protected:
42     static const SkFunctionParamType fFunctionParameters[];
43     void setupPaint(SkPaint* paint) const;
44 public:
45     SkBool antiAlias;
46     SkDrawColor* color;
47     SkBool fakeBold;
48     SkBool filterBitmap;
49     SkBool linearText;
50     SkDrawMaskFilter* maskFilter;
51     SkDrawPathEffect* pathEffect;
52     SkDrawShader* shader;
53     SkBool strikeThru;
54     SkBool stroke;
55     int /*SkPaint::Cap*/ strokeCap;
56     int /*SkPaint::Join */ strokeJoin;
57     SkScalar strokeMiter;
58     SkScalar strokeWidth;
59     int /* SkPaint::Style */ style;
60     int /* SkPaint::Align */ textAlign;
61     SkScalar textScaleX;
62     SkScalar textSize;
63     SkScalar textSkewX;
64     SkDrawTypeface* typeface;
65     SkBool underline;
66     int /*SkXfermode::Modes*/ xfermode;
67     SkBool8 fOwnsColor;
68     SkBool8 fOwnsMaskFilter;
69     SkBool8 fOwnsPathEffect;
70     SkBool8 fOwnsShader;
71     SkBool8 fOwnsTransferMode;
72     SkBool8 fOwnsTypeface;
73 private:
74     typedef SkADrawable INHERITED;
75     friend class SkTextToPath;
76     friend class SkSaveLayer;
77 };
78 
79 #endif // SkDrawPaint_DEFINED
80