| Flutter Impeller |

Public Member Functions | List of all members
impeller::SweepGradientContents Class Referencefinal

`#include <sweep_gradient_contents.h>`

Inheritance diagram for impeller::SweepGradientContents:

## Public Member Functions
| SweepGradientContents ()
| ~SweepGradientContents () override
bool | IsOpaque (const Matrix &transform) const override
| Whether this Contents only emits opaque source colors from the fragment stage. This value does not account for any entity properties (e.g. the blend mode), clips/visibility culling, or inherited opacity. More...
bool | Render (const ContentContext &renderer, const Entity &entity, RenderPass &pass) const override
bool | ApplyColorFilter (const ColorFilterProc &color_filter_proc) override
| If possible, applies a color filter to this contents inputs on the CPU. More...
void | SetCenterAndAngles (Point center, Degrees start_angle, Degrees end_angle)
void | SetColors (std::vector< Color > colors)
void | SetStops (std::vector< Scalar > stops)
void | SetTileMode (Entity::TileMode tile_mode)
const std::vector< Color > & | GetColors () const
const std::vector< Scalar > & | GetStops () const
Public Member Functions inherited from impeller::ColorSourceContents
| ColorSourceContents ()
| ~ColorSourceContents () override
void | SetGeometry (const Geometry *geometry)
| Set the geometry that this contents will use to render. More...
const Geometry * | GetGeometry () const
| Get the geometry that this contents will use to render. More...
void | SetEffectTransform (Matrix matrix)
| Set the effect transform for this color source. More...
const Matrix & | GetInverseEffectTransform () const
| Set the inverted effect transform for this color source. More...
void | SetOpacityFactor (Scalar opacity)
| Set the opacity factor for this color source. More...
Scalar | GetOpacityFactor () const
| Get the opacity factor for this color source. More...
virtual bool | IsSolidColor () const
std::optional< Rect > | GetCoverage (const Entity &entity) const override
| Get the area of the render pass that will be affected when this contents is rendered. More...
void | SetInheritedOpacity (Scalar opacity) override
| Inherit the provided opacity. More...
Public Member Functions inherited from impeller::Contents
| Contents ()
virtual | ~Contents ()
void | SetCoverageHint (std::optional< Rect > coverage_hint)
| Hint that specifies the coverage area of this Contents that will actually be used during rendering. This is for optimization purposes only and can not be relied on as a clip. May optionally affect the result of `GetCoverage()`. More...
const std::optional< Rect > & | GetCoverageHint () const
virtual std::optional< Snapshot > | RenderToSnapshot (const ContentContext &renderer, const Entity &entity, std::optional< Rect > coverage_limit=std::nullopt, const std::optional< SamplerDescriptor > &sampler_descriptor=std::nullopt, bool msaa_enabled=true, int32_t mip_count=1, std::string_view label="Snapshot") const
| Render this contents to a snapshot, respecting the entity's transform, path, clip depth, and blend mode. The result texture size is always the size of `GetCoverage(entity)`. More...
std::optional< Size > | GetColorSourceSize () const
| Return the color source's intrinsic size, if available. More...
void | SetColorSourceSize (Size size)
virtual std::optional< Color > | AsBackgroundColor (const Entity &entity, ISize target_size) const
| Returns a color if this Contents will flood the given `target_size` with a color. This output color is the "Source" color that will be used for the Entity's blend operation. More...

## Additional Inherited Members
Public Types inherited from impeller::ColorSourceContents
using | BindFragmentCallback = std::function< bool(RenderPass &pass)>
using | PipelineBuilderCallback = std::function< PipelineRef(ContentContextOptions)>
using | CreateGeometryCallback = std::function< GeometryResult(const ContentContext &renderer, const Entity &entity, RenderPass &pass, const Geometry *geom)>
Public Types inherited from impeller::Contents
using | ColorFilterProc = std::function< Color(Color)>
using | RenderProc = std::function< bool(const ContentContext &renderer, const Entity &entity, RenderPass &pass)>
using | CoverageProc = std::function< std::optional< Rect >(const Entity &entity)>
Static Public Member Functions inherited from impeller::ColorSourceContents
template<typename VertexShaderT >
static bool | DrawGeometry (const Contents *contents, const Geometry *geometry, const ContentContext &renderer, const Entity &entity, RenderPass &pass, const PipelineBuilderCallback &pipeline_callback, typename VertexShaderT::FrameInfo frame_info, const BindFragmentCallback &bind_fragment_callback, bool force_stencil=false, const CreateGeometryCallback &create_geom_callback=DefaultCreateGeometryCallback)
Static Public Member Functions inherited from impeller::Contents
static std::shared_ptr< Contents > | MakeAnonymous (RenderProc render_proc, CoverageProc coverage_proc)
Protected Member Functions inherited from impeller::ColorSourceContents
bool | AppliesAlphaForStrokeCoverage (const Matrix &transform) const
| Whether the entity should be treated as non-opaque due to stroke geometry requiring alpha for coverage. More...
template<typename VertexShaderT >
bool | DrawGeometry (const ContentContext &renderer, const Entity &entity, RenderPass &pass, const PipelineBuilderCallback &pipeline_callback, typename VertexShaderT::FrameInfo frame_info, const BindFragmentCallback &bind_fragment_callback, bool force_stencil=false, const CreateGeometryCallback &create_geom_callback=DefaultCreateGeometryCallback) const
Static Protected Member Functions inherited from impeller::ColorSourceContents
static GeometryResult | DefaultCreateGeometryCallback (const ContentContext &renderer, const Entity &entity, RenderPass &pass, const Geometry *geom)

## Detailed Description

Definition at line 18 of file sweep_gradient_contents.h.

## Constructor & Destructor Documentation

## ◆ SweepGradientContents()

impeller::SweepGradientContents::SweepGradientContents | ( |  | ) |
| default

## ◆ ~SweepGradientContents()

impeller::SweepGradientContents::~SweepGradientContents | ( |  | ) |
| override default

## Member Function Documentation

## ◆ ApplyColorFilter()

bool impeller::SweepGradientContents::ApplyColorFilter | ( | const ColorFilterProc & | color_filter_proc | ) |
| override virtual

If possible, applies a color filter to this contents inputs on the CPU.

This method will either fully apply the color filter or perform no action. Partial/incorrect application of the color filter will never occur.

Parameters

  [in] | color_filter_proc | A function that filters a given unpremultiplied color to produce a new unpremultiplied color.

Returns
  True if the color filter was able to be fully applied to all all relevant inputs. Otherwise, this operation is a no-op and false is returned.

Reimplemented from impeller::Contents.

Definition at line 227 of file sweep_gradient_contents.cc.

228 {
229 for (Color& color : colors_) {
230 color = color_filter_proc(color);
231 }
232 decal_border_color_ = color_filter_proc(decal_border_color_);
233 return true;
234 }

## ◆ GetColors()

const std::vector< Color > & impeller::SweepGradientContents::GetColors | ( |  | ) | const

Definition at line 44 of file sweep_gradient_contents.cc.

44 {
45 return colors_;
46 }

## ◆ GetStops()

const std::vector< Scalar > & impeller::SweepGradientContents::GetStops | ( |  | ) | const

Definition at line 48 of file sweep_gradient_contents.cc.

48 {
49 return stops_;
50 }

## ◆ IsOpaque()

bool impeller::SweepGradientContents::IsOpaque | ( | const Matrix & | transform | ) | const
| override virtual

Whether this Contents only emits opaque source colors from the fragment stage. This value does not account for any entity properties (e.g. the blend mode), clips/visibility culling, or inherited opacity.

Parameters

  transform | The current transform matrix of the entity that will render this contents.

Reimplemented from impeller::Contents.

Definition at line 52 of file sweep_gradient_contents.cc.

52 {
53 if (GetOpacityFactor() < 1 || tile_mode_ == Entity::TileMode::kDecal) {
54 return false;
55 }
56 for (auto color : colors_) {
57 if (!color.IsOpaque()) {
58 return false;
59 }
60 }
61 return !AppliesAlphaForStrokeCoverage(transform);
62 }
impeller::ColorSourceContents::GetOpacityFactor
Scalar GetOpacityFactor() const
Get the opacity factor for this color source.
Definition: color_source_contents.cc:28
impeller::ColorSourceContents::AppliesAlphaForStrokeCoverage
bool AppliesAlphaForStrokeCoverage(const Matrix &transform) const
Whether the entity should be treated as non-opaque due to stroke geometry requiring alpha for coverag...
Definition: color_source_contents.cc:53
impeller::Entity::TileMode::kDecal
@ kDecal
transform
Matrix transform
Definition: gaussian_blur_filter_contents.cc:214

References impeller::ColorSourceContents::AppliesAlphaForStrokeCoverage(), impeller::ColorSourceContents::GetOpacityFactor(), impeller::Entity::kDecal, and transform.

## ◆ Render()

bool impeller::SweepGradientContents::Render | ( | const ContentContext & | renderer,
|  | const Entity & | entity,
|  | RenderPass & | pass
| ) |  | const
| override virtual

Implements impeller::Contents.

Definition at line 72 of file sweep_gradient_contents.cc.

74 {
75 if (renderer.GetDeviceCapabilities().SupportsSSBO()) {
76 return RenderSSBO(renderer, entity, pass);
77 }
78 if (colors_.size() <= kMaxUniformGradientStops &&
79 stops_.size() <= kMaxUniformGradientStops) {
80 return RenderUniform(renderer, entity, pass);
81 }
82 return RenderTexture(renderer, entity, pass);
83 }
impeller::kMaxUniformGradientStops
static constexpr uint32_t kMaxUniformGradientStops
Definition: gradient_generator.h:47

References impeller::ContentContext::GetDeviceCapabilities(), impeller::kMaxUniformGradientStops, and impeller::Capabilities::SupportsSSBO().

## ◆ SetCenterAndAngles()

void impeller::SweepGradientContents::SetCenterAndAngles | ( | Point | center,
|  | Degrees | start_angle,
|  | Degrees | end_angle
| ) |  |

Definition at line 21 of file sweep_gradient_contents.cc.

23 {
24 center_ = center;
25 Scalar t0 = start_angle.degrees / 360;
26 Scalar t1 = end_angle.degrees / 360;
27 FML_DCHECK(t0 < t1);
28 bias_ = -t0;
29 scale_ = 1 / (t1 - t0);
30 }
impeller::Scalar
float Scalar
Definition: scalar.h:19

References impeller::Degrees::degrees.

## ◆ SetColors()

void impeller::SweepGradientContents::SetColors | ( | std::vector< Color > | colors | ) |

Definition at line 32 of file sweep_gradient_contents.cc.

32 {
33 colors_ = std::move(colors);
34 }

## ◆ SetStops()

void impeller::SweepGradientContents::SetStops | ( | std::vector< Scalar > | stops | ) |

Definition at line 36 of file sweep_gradient_contents.cc.

36 {
37 stops_ = std::move(stops);
38 }

## ◆ SetTileMode()

void impeller::SweepGradientContents::SetTileMode | ( | Entity::TileMode | tile_mode | ) |

Definition at line 40 of file sweep_gradient_contents.cc.

40 {
41 tile_mode_ = tile_mode;
42 }

The documentation for this class was generated from the following files:

- impeller/entity/contents/sweep_gradient_contents.h
- impeller/entity/contents/sweep_gradient_contents.cc