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