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
19class SkDrawMaskFilter;
20class SkDrawPathEffect;
21class SkDrawShader;
22class SkTransferMode;
23class SkDrawTypeface;
24
25class 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;
41protected:
42    static const SkFunctionParamType fFunctionParameters[];
43    void setupPaint(SkPaint* paint) const;
44public:
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;
73private:
74    typedef SkADrawable INHERITED;
75    friend class SkTextToPath;
76    friend class SkSaveLayer;
77};
78
79#endif // SkDrawPaint_DEFINED
80