| Flutter Impeller |

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

`#include <texture_filter_input.h>`

Inheritance diagram for impeller::TextureFilterInput:

## Public Member Functions
| ~TextureFilterInput () override
std::optional< Snapshot > | GetSnapshot (std::string_view label, const ContentContext &renderer, const Entity &entity, std::optional< Rect > coverage_limit, int32_t mip_count) const override
std::optional< Rect > | GetCoverage (const Entity &entity) const override
Matrix | GetLocalTransform (const Entity &entity) const override
| Get the local transform of this filter input. This transform is relative to the `Entity` transform space. More...
Public Member Functions inherited from impeller::FilterInput
virtual | ~FilterInput ()
std::optional< Rect > | GetLocalCoverage (const Entity &entity) const
virtual std::optional< Rect > | GetSourceCoverage (const Matrix &effect_transform, const Rect &output_limit) const
virtual Matrix | GetTransform (const Entity &entity) const
| Get the transform of this `FilterInput`. This is equivalent to calling `entity.GetTransform() * GetLocalTransform()`. More...
virtual void | SetEffectTransform (const Matrix &matrix)
| Sets the effect transform of filter inputs. More...
virtual void | SetRenderingMode (Entity::RenderingMode rendering_mode)
| Turns on subpass mode for filter inputs. More...

## Additional Inherited Members
Public Types inherited from impeller::FilterInput
using | Ref = std::shared_ptr< FilterInput >
using | Vector = std::vector< FilterInput::Ref >
using | Variant = std::variant< std::shared_ptr< FilterContents >, std::shared_ptr< Contents >, std::shared_ptr< Texture >, Rect >
Static Public Member Functions inherited from impeller::FilterInput
static FilterInput::Ref | Make (Variant input, bool msaa_enabled=true)
static FilterInput::Ref | Make (std::shared_ptr< Texture > input, Matrix local_transform)
static FilterInput::Vector | Make (std::initializer_list< Variant > inputs)

## Detailed Description

Definition at line 14 of file texture_filter_input.h.

## Constructor & Destructor Documentation

## ◆ ~TextureFilterInput()

impeller::TextureFilterInput::~TextureFilterInput | ( |  | ) |
| overridedefault

## Member Function Documentation

## ◆ GetCoverage()

std::optional< Rect > impeller::TextureFilterInput::GetCoverage | ( | const Entity & | entity | ) | const
| overridevirtual

Implements impeller::FilterInput.

Definition at line 34 of file texture_filter_input.cc.

35 {
36 return Rect::MakeSize(texture_->GetSize())
37 .TransformBounds(GetTransform(entity));
38 }
impeller::FilterInput::GetTransform
virtual Matrix GetTransform(const Entity &entity) const
Get the transform of this FilterInput. This is equivalent to calling entity.GetTransform() * GetLocal...
Definition: filter_input.cc:75
impeller::TRect::TransformBounds
constexpr TRect TransformBounds(const Matrix &transform) const
Creates a new bounding box that contains this transformed rectangle.
Definition: rect.h:472
impeller::TRect< Scalar >::MakeSize
constexpr static TRect MakeSize(const TSize< U > &size)
Definition: rect.h:150

## ◆ GetLocalTransform()

Matrix impeller::TextureFilterInput::GetLocalTransform | ( | const Entity & | entity | ) | const
| overridevirtual

Get the local transform of this filter input. This transform is relative to the `Entity` transform space.

Reimplemented from impeller::FilterInput.

Definition at line 40 of file texture_filter_input.cc.

40 {
41 return local_transform_;
42 }

## ◆ GetSnapshot()

std::optional< Snapshot > impeller::TextureFilterInput::GetSnapshot | ( | std::string_view | label,
|  | const ContentContext & | renderer,
|  | const Entity & | entity,
|  | std::optional< Rect > | coverage_limit,
|  | int32_t | mip_count
| ) |  | const
| overridevirtual

Evaluates the filter input and returns a snapshot of the result.

This method renders the input (which could be another filter, contents, or a texture) into a `Snapshot` object, which contains the resulting texture and its transform relative to the current render target.

Implementations are typically lazy and may cache the result, ensuring that the input is only rendered once even if `GetSnapshot` is called multiple times.

Parameters

  [in] | label | A debug label for the rendering operation and the resulting snapshot texture.
  [in] | renderer | The content context providing rendering resources.
  [in] | entity | The entity associated with this filter input, providing transform and other contextual information.
  [in] | coverage_limit | An optional rectangle to limit the area of the input that needs to be rendered. This can be used as an optimization.
  [in] | mip_count | The number of mip levels to generate for the snapshot texture. Defaults to 1 (no mips).

Returns
  A `Snapshot` containing the rendered texture and its transform, or `std::nullopt` if the input cannot be rendered or results in an empty output.

Implements impeller::FilterInput.

Definition at line 19 of file texture_filter_input.cc.

24 {
25 auto snapshot =
26 Snapshot{.texture = texture_, .transform = GetTransform(entity)};
27 if (texture_->GetMipCount() > 1) {
28 snapshot.sampler_descriptor.label = "TextureFilterInput Trilinear Sampler";
29 snapshot.sampler_descriptor.mip_filter = MipFilter::kLinear;
30 }
31 return snapshot;
32 }
impeller::MipFilter::kLinear
@ kLinear
Sample from the two nearest mip levels and linearly interpolate.

References impeller::Snapshot::texture.

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

- impeller/entity/contents/filters/inputs/texture_filter_input.h
- impeller/entity/contents/filters/inputs/texture_filter_input.cc