blob: 3f4f36f5529b2c85c515b575b06c0a18b48cd58a [file] [log] [blame]
rileya@google.com589708b2012-07-26 20:04:23 +00001/*
2 * Copyright 2012 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#ifndef SkLinearGradient_DEFINED
9#define SkLinearGradient_DEFINED
10
11#include "SkGradientShaderPriv.h"
12
13class SkLinearGradient : public SkGradientShaderBase {
14public:
reedaddf2ed2014-08-11 08:28:24 -070015 SkLinearGradient(const SkPoint pts[2], const Descriptor&);
rileya@google.com589708b2012-07-26 20:04:23 +000016
mtklein36352bf2015-03-25 18:17:31 -070017 size_t contextSize() const override;
commit-bot@chromium.org87fcd952014-04-23 19:10:51 +000018
19 class LinearGradientContext : public SkGradientShaderBase::GradientShaderBaseContext {
20 public:
commit-bot@chromium.orge901b6d2014-05-01 19:31:31 +000021 LinearGradientContext(const SkLinearGradient&, const ContextRec&);
commit-bot@chromium.org87fcd952014-04-23 19:10:51 +000022 ~LinearGradientContext() {}
23
mtklein36352bf2015-03-25 18:17:31 -070024 void shadeSpan(int x, int y, SkPMColor dstC[], int count) override;
25 void shadeSpan16(int x, int y, uint16_t dstC[], int count) override;
commit-bot@chromium.org87fcd952014-04-23 19:10:51 +000026
27 private:
28 typedef SkGradientShaderBase::GradientShaderBaseContext INHERITED;
29 };
30
mtklein36352bf2015-03-25 18:17:31 -070031 BitmapType asABitmap(SkBitmap*, SkMatrix*, TileMode*) const override;
32 GradientType asAGradient(GradientInfo* info) const override;
joshualitt5531d512014-12-17 15:50:11 -080033 virtual bool asFragmentProcessor(GrContext*, const SkPaint&, const SkMatrix& viewM,
34 const SkMatrix*,
mtklein36352bf2015-03-25 18:17:31 -070035 GrColor*, GrFragmentProcessor**) const override;
rileya@google.com589708b2012-07-26 20:04:23 +000036
commit-bot@chromium.org0f10f7b2014-03-13 18:02:17 +000037 SK_TO_STRING_OVERRIDE()
rileya@google.com589708b2012-07-26 20:04:23 +000038 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkLinearGradient)
39
40protected:
commit-bot@chromium.org8b0e8ac2014-01-30 18:58:24 +000041 SkLinearGradient(SkReadBuffer& buffer);
mtklein36352bf2015-03-25 18:17:31 -070042 void flatten(SkWriteBuffer& buffer) const override;
43 Context* onCreateContext(const ContextRec&, void* storage) const override;
rileya@google.com589708b2012-07-26 20:04:23 +000044
45private:
reed9fa60da2014-08-21 07:59:51 -070046 friend class SkGradientShader;
rileya@google.com589708b2012-07-26 20:04:23 +000047 typedef SkGradientShaderBase INHERITED;
48 const SkPoint fStart;
49 const SkPoint fEnd;
50};
51
rileya@google.com589708b2012-07-26 20:04:23 +000052#endif