1589708bf7c706348b763e8277004cb160b202bdbrileya@google.com/*
2589708bf7c706348b763e8277004cb160b202bdbrileya@google.com * Copyright 2012 Google Inc.
3589708bf7c706348b763e8277004cb160b202bdbrileya@google.com *
4589708bf7c706348b763e8277004cb160b202bdbrileya@google.com * Use of this source code is governed by a BSD-style license that can be
5589708bf7c706348b763e8277004cb160b202bdbrileya@google.com * found in the LICENSE file.
6589708bf7c706348b763e8277004cb160b202bdbrileya@google.com */
7589708bf7c706348b763e8277004cb160b202bdbrileya@google.com
8589708bf7c706348b763e8277004cb160b202bdbrileya@google.com#ifndef SkSweepGradient_DEFINED
9589708bf7c706348b763e8277004cb160b202bdbrileya@google.com#define SkSweepGradient_DEFINED
10589708bf7c706348b763e8277004cb160b202bdbrileya@google.com
11589708bf7c706348b763e8277004cb160b202bdbrileya@google.com#include "SkGradientShaderPriv.h"
12589708bf7c706348b763e8277004cb160b202bdbrileya@google.com
13589708bf7c706348b763e8277004cb160b202bdbrileya@google.comclass SkSweepGradient : public SkGradientShaderBase {
14589708bf7c706348b763e8277004cb160b202bdbrileya@google.compublic:
15addf2edf3da20f053daa3897cfe2c52d7369a7b1reed    SkSweepGradient(SkScalar cx, SkScalar cy, const Descriptor&);
1687fcd950198a16211b3988610beebb5ca5bcf323commit-bot@chromium.org
1787fcd950198a16211b3988610beebb5ca5bcf323commit-bot@chromium.org    class SweepGradientContext : public SkGradientShaderBase::GradientShaderBaseContext {
1887fcd950198a16211b3988610beebb5ca5bcf323commit-bot@chromium.org    public:
19e901b6de3ef8dea842008a08fc81e92fb1478d61commit-bot@chromium.org        SweepGradientContext(const SkSweepGradient& shader, const ContextRec&);
2087fcd950198a16211b3988610beebb5ca5bcf323commit-bot@chromium.org
2136352bf5e38f45a70ee4f4fc132a38048d38206dmtklein        void shadeSpan(int x, int y, SkPMColor dstC[], int count) override;
2287fcd950198a16211b3988610beebb5ca5bcf323commit-bot@chromium.org
2387fcd950198a16211b3988610beebb5ca5bcf323commit-bot@chromium.org    private:
2487fcd950198a16211b3988610beebb5ca5bcf323commit-bot@chromium.org        typedef SkGradientShaderBase::GradientShaderBaseContext INHERITED;
2587fcd950198a16211b3988610beebb5ca5bcf323commit-bot@chromium.org    };
26589708bf7c706348b763e8277004cb160b202bdbrileya@google.com
2736352bf5e38f45a70ee4f4fc132a38048d38206dmtklein    GradientType asAGradient(GradientInfo* info) const override;
28589708bf7c706348b763e8277004cb160b202bdbrileya@google.com
29c21b09eec91c9e263cb0b88467ea44e348ed4962bsalomon#if SK_SUPPORT_GPU
30839345d63466a4209a0985654ec033624821fd78brianosman    sk_sp<GrFragmentProcessor> asFragmentProcessor(const AsFPArgs&) const override;
31c21b09eec91c9e263cb0b88467ea44e348ed4962bsalomon#endif
32589708bf7c706348b763e8277004cb160b202bdbrileya@google.com
330f10f7bf1fb43ca6346dc220a076773b1f19a367commit-bot@chromium.org    SK_TO_STRING_OVERRIDE()
34589708bf7c706348b763e8277004cb160b202bdbrileya@google.com    SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkSweepGradient)
35589708bf7c706348b763e8277004cb160b202bdbrileya@google.com
36589708bf7c706348b763e8277004cb160b202bdbrileya@google.comprotected:
3736352bf5e38f45a70ee4f4fc132a38048d38206dmtklein    void flatten(SkWriteBuffer& buffer) const override;
3883e939bcb79790f5ae3b28c398fbcf034675a6e5Herb Derby    Context* onMakeContext(const ContextRec&, SkArenaAlloc*) const override;
39589708bf7c706348b763e8277004cb160b202bdbrileya@google.com
40589708bf7c706348b763e8277004cb160b202bdbrileya@google.comprivate:
416e5671d8c9b2d9885e351b631b1dfbb4ed403789commit-bot@chromium.org    const SkPoint fCenter;
4287fcd950198a16211b3988610beebb5ca5bcf323commit-bot@chromium.org
439fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed    friend class SkGradientShader;
4487fcd950198a16211b3988610beebb5ca5bcf323commit-bot@chromium.org    typedef SkGradientShaderBase INHERITED;
45589708bf7c706348b763e8277004cb160b202bdbrileya@google.com};
46589708bf7c706348b763e8277004cb160b202bdbrileya@google.com
47589708bf7c706348b763e8277004cb160b202bdbrileya@google.com#endif
48