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 SkDrawGradient_DEFINED
11#define SkDrawGradient_DEFINED
12
13#include "SkDrawColor.h"
14#include "SkDrawShader.h"
15#include "SkIntArray.h"
16
17class SkUnitMapper;
18
19class SkDrawGradient : public SkDrawShader {
20    DECLARE_PRIVATE_MEMBER_INFO(DrawGradient);
21    SkDrawGradient();
22    virtual ~SkDrawGradient();
23    virtual bool addChild(SkAnimateMaker& , SkDisplayable* child) SK_OVERRIDE;
24#ifdef SK_DUMP_ENABLED
25    virtual void dumpRest(SkAnimateMaker*);
26#endif
27    virtual void onEndElement(SkAnimateMaker& );
28protected:
29    SkTDScalarArray offsets;
30    SkString unitMapper;
31    SkTDColorArray fColors;
32    SkTDDrawColorArray fDrawColors;
33    SkUnitMapper* fUnitMapper;
34    int addPrelude();
35private:
36    typedef SkDrawShader INHERITED;
37};
38
39class SkDrawLinearGradient : public SkDrawGradient {
40    DECLARE_MEMBER_INFO(DrawLinearGradient);
41    SkDrawLinearGradient();
42    virtual void onEndElement(SkAnimateMaker& );
43#ifdef SK_DUMP_ENABLED
44    virtual void dump(SkAnimateMaker*);
45#endif
46    virtual SkShader* getShader();
47protected:
48    SkTDScalarArray points;
49private:
50    typedef SkDrawGradient INHERITED;
51};
52
53class SkDrawRadialGradient : public SkDrawGradient {
54    DECLARE_MEMBER_INFO(DrawRadialGradient);
55    SkDrawRadialGradient();
56#ifdef SK_DUMP_ENABLED
57    virtual void dump(SkAnimateMaker*);
58#endif
59    virtual SkShader* getShader();
60protected:
61    SkPoint center;
62    SkScalar radius;
63private:
64    typedef SkDrawGradient INHERITED;
65};
66
67#endif // SkDrawGradient_DEFINED
68