| // Copyright 2013 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef FLUTTER_LIB_UI_PAINTING_GRADIENT_H_ |
| #define FLUTTER_LIB_UI_PAINTING_GRADIENT_H_ |
| |
| #include "flutter/display_list/effects/dl_color_source.h" |
| #include "flutter/lib/ui/painting/matrix.h" |
| #include "flutter/lib/ui/painting/shader.h" |
| #include "third_party/tonic/typed_data/typed_list.h" |
| |
| namespace flutter { |
| |
| class CanvasGradient : public Shader { |
| DEFINE_WRAPPERTYPEINFO(); |
| FML_FRIEND_MAKE_REF_COUNTED(CanvasGradient); |
| |
| public: |
| ~CanvasGradient() override; |
| static void Create(Dart_Handle wrapper); |
| |
| void initLinear(const tonic::Float32List& end_points, |
| const tonic::Int32List& colors, |
| const tonic::Float32List& color_stops, |
| DlTileMode tile_mode, |
| const tonic::Float64List& matrix4); |
| |
| void initRadial(double center_x, |
| double center_y, |
| double radius, |
| const tonic::Int32List& colors, |
| const tonic::Float32List& color_stops, |
| DlTileMode tile_mode, |
| const tonic::Float64List& matrix4); |
| |
| void initSweep(double center_x, |
| double center_y, |
| const tonic::Int32List& colors, |
| const tonic::Float32List& color_stops, |
| DlTileMode tile_mode, |
| double start_angle, |
| double end_angle, |
| const tonic::Float64List& matrix4); |
| |
| void initTwoPointConical(double start_x, |
| double start_y, |
| double start_radius, |
| double end_x, |
| double end_y, |
| double end_radius, |
| const tonic::Int32List& colors, |
| const tonic::Float32List& color_stops, |
| DlTileMode tile_mode, |
| const tonic::Float64List& matrix4); |
| |
| std::shared_ptr<DlColorSource> shader(DlImageSampling sampling) override { |
| // Gradient color sources do not have image sampling variants... |
| return dl_shader_; |
| } |
| |
| private: |
| CanvasGradient(); |
| std::shared_ptr<DlColorSource> dl_shader_; |
| }; |
| |
| } // namespace flutter |
| |
| #endif // FLUTTER_LIB_UI_PAINTING_GRADIENT_H_ |