1589708bf7c706348b763e8277004cb160b202bdbrileya@google.com
2589708bf7c706348b763e8277004cb160b202bdbrileya@google.com/*
3589708bf7c706348b763e8277004cb160b202bdbrileya@google.com * Copyright 2012 Google Inc.
4589708bf7c706348b763e8277004cb160b202bdbrileya@google.com *
5589708bf7c706348b763e8277004cb160b202bdbrileya@google.com * Use of this source code is governed by a BSD-style license that can be
6589708bf7c706348b763e8277004cb160b202bdbrileya@google.com * found in the LICENSE file.
7589708bf7c706348b763e8277004cb160b202bdbrileya@google.com */
8589708bf7c706348b763e8277004cb160b202bdbrileya@google.com
9589708bf7c706348b763e8277004cb160b202bdbrileya@google.com#ifndef SkRadialGradient_DEFINED
10589708bf7c706348b763e8277004cb160b202bdbrileya@google.com#define SkRadialGradient_DEFINED
11589708bf7c706348b763e8277004cb160b202bdbrileya@google.com
12589708bf7c706348b763e8277004cb160b202bdbrileya@google.com#include "SkGradientShaderPriv.h"
13589708bf7c706348b763e8277004cb160b202bdbrileya@google.com
14589708bf7c706348b763e8277004cb160b202bdbrileya@google.comclass SkRadialGradient : public SkGradientShaderBase {
15589708bf7c706348b763e8277004cb160b202bdbrileya@google.compublic:
169c9005a347e9996f357bd79591bd34f74f8bbc66commit-bot@chromium.org    SkRadialGradient(const SkPoint& center, SkScalar radius, const Descriptor&,
179c9005a347e9996f357bd79591bd34f74f8bbc66commit-bot@chromium.org                     const SkMatrix* localMatrix);
1887fcd950198a16211b3988610beebb5ca5bcf323commit-bot@chromium.org
1987fcd950198a16211b3988610beebb5ca5bcf323commit-bot@chromium.org    virtual size_t contextSize() const SK_OVERRIDE;
2087fcd950198a16211b3988610beebb5ca5bcf323commit-bot@chromium.org
2187fcd950198a16211b3988610beebb5ca5bcf323commit-bot@chromium.org    class RadialGradientContext : public SkGradientShaderBase::GradientShaderBaseContext {
2287fcd950198a16211b3988610beebb5ca5bcf323commit-bot@chromium.org    public:
23e901b6de3ef8dea842008a08fc81e92fb1478d61commit-bot@chromium.org        RadialGradientContext(const SkRadialGradient&, const ContextRec&);
2487fcd950198a16211b3988610beebb5ca5bcf323commit-bot@chromium.org
2587fcd950198a16211b3988610beebb5ca5bcf323commit-bot@chromium.org        virtual void shadeSpan(int x, int y, SkPMColor dstC[], int count) SK_OVERRIDE;
2687fcd950198a16211b3988610beebb5ca5bcf323commit-bot@chromium.org        virtual void shadeSpan16(int x, int y, uint16_t dstC[], int count) SK_OVERRIDE;
2787fcd950198a16211b3988610beebb5ca5bcf323commit-bot@chromium.org
2887fcd950198a16211b3988610beebb5ca5bcf323commit-bot@chromium.org    private:
2987fcd950198a16211b3988610beebb5ca5bcf323commit-bot@chromium.org        typedef SkGradientShaderBase::GradientShaderBaseContext INHERITED;
3087fcd950198a16211b3988610beebb5ca5bcf323commit-bot@chromium.org    };
3187fcd950198a16211b3988610beebb5ca5bcf323commit-bot@chromium.org
32589708bf7c706348b763e8277004cb160b202bdbrileya@google.com    virtual BitmapType asABitmap(SkBitmap* bitmap,
33589708bf7c706348b763e8277004cb160b202bdbrileya@google.com                                 SkMatrix* matrix,
34589708bf7c706348b763e8277004cb160b202bdbrileya@google.com                                 TileMode* xy) const SK_OVERRIDE;
35589708bf7c706348b763e8277004cb160b202bdbrileya@google.com    virtual GradientType asAGradient(GradientInfo* info) const SK_OVERRIDE;
369de5b514d38c5b36066bcdc14fba2f7e5196d372dandov    virtual bool asNewEffect(GrContext*, const SkPaint&, const SkMatrix*, GrColor*, GrEffectRef**) const SK_OVERRIDE;
37589708bf7c706348b763e8277004cb160b202bdbrileya@google.com
380f10f7bf1fb43ca6346dc220a076773b1f19a367commit-bot@chromium.org    SK_TO_STRING_OVERRIDE()
39589708bf7c706348b763e8277004cb160b202bdbrileya@google.com    SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkRadialGradient)
40589708bf7c706348b763e8277004cb160b202bdbrileya@google.com
41589708bf7c706348b763e8277004cb160b202bdbrileya@google.comprotected:
428b0e8ac5f582de80356019406e2975079bf0829dcommit-bot@chromium.org    SkRadialGradient(SkReadBuffer& buffer);
438b0e8ac5f582de80356019406e2975079bf0829dcommit-bot@chromium.org    virtual void flatten(SkWriteBuffer& buffer) const SK_OVERRIDE;
44ce56d965069c1649afe14319cb239e6ad670682acommit-bot@chromium.org    virtual Context* onCreateContext(const ContextRec&, void* storage) const SK_OVERRIDE;
45589708bf7c706348b763e8277004cb160b202bdbrileya@google.com
46589708bf7c706348b763e8277004cb160b202bdbrileya@google.comprivate:
47589708bf7c706348b763e8277004cb160b202bdbrileya@google.com    typedef SkGradientShaderBase INHERITED;
48589708bf7c706348b763e8277004cb160b202bdbrileya@google.com    const SkPoint fCenter;
49589708bf7c706348b763e8277004cb160b202bdbrileya@google.com    const SkScalar fRadius;
50589708bf7c706348b763e8277004cb160b202bdbrileya@google.com};
51589708bf7c706348b763e8277004cb160b202bdbrileya@google.com
52589708bf7c706348b763e8277004cb160b202bdbrileya@google.com#endif
53