Flutter Impeller
impeller::FilterContentsFilterInput Class Referencefinal

#include <filter_contents_filter_input.h>

Inheritance diagram for impeller::FilterContentsFilterInput:
impeller::FilterInput

Public Member Functions

 ~FilterContentsFilterInput () override
 
std::optional< SnapshotGetSnapshot (std::string_view label, const ContentContext &renderer, const Entity &entity, std::optional< Rect > coverage_limit, int32_t mip_count) const override
 
std::optional< RectGetCoverage (const Entity &entity) const override
 
std::optional< RectGetSourceCoverage (const Matrix &effect_transform, const Rect &output_limit) 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...
 
Matrix GetTransform (const Entity &entity) const override
 Get the transform of this FilterInput. This is equivalent to calling entity.GetTransform() * GetLocalTransform(). More...
 
virtual void SetEffectTransform (const Matrix &matrix) override
 Sets the effect transform of filter inputs. More...
 
virtual void SetRenderingMode (Entity::RenderingMode rendering_mode) override
 Turns on subpass mode for filter inputs. More...
 
- Public Member Functions inherited from impeller::FilterInput
virtual ~FilterInput ()
 
std::optional< RectGetLocalCoverage (const Entity &entity) const
 

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 12 of file filter_contents_filter_input.h.

Constructor & Destructor Documentation

◆ ~FilterContentsFilterInput()

impeller::FilterContentsFilterInput::~FilterContentsFilterInput ( )
overridedefault

Member Function Documentation

◆ GetCoverage()

std::optional< Rect > impeller::FilterContentsFilterInput::GetCoverage ( const Entity entity) const
overridevirtual

Implements impeller::FilterInput.

Definition at line 38 of file filter_contents_filter_input.cc.

39  {
40  return filter_->GetCoverage(entity);
41 }

◆ GetLocalTransform()

Matrix impeller::FilterContentsFilterInput::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 49 of file filter_contents_filter_input.cc.

50  {
51  return filter_->GetLocalTransform(entity.GetTransform());
52 }

References impeller::Entity::GetTransform().

◆ GetSnapshot()

std::optional< Snapshot > impeller::FilterContentsFilterInput::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]labelA debug label for the rendering operation and the resulting snapshot texture.
[in]rendererThe content context providing rendering resources.
[in]entityThe entity associated with this filter input, providing transform and other contextual information.
[in]coverage_limitAn optional rectangle to limit the area of the input that needs to be rendered. This can be used as an optimization.
[in]mip_countThe 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 20 of file filter_contents_filter_input.cc.

25  {
26  if (!snapshot_.has_value()) {
27  snapshot_ = filter_->RenderToSnapshot(renderer, // renderer
28  entity, // entity
29  coverage_limit, // coverage_limit
30  std::nullopt, // sampler_descriptor
31  true, // msaa_enabled
32  /*mip_count=*/mip_count, //
33  label); // label
34  }
35  return snapshot_;
36 }

◆ GetSourceCoverage()

std::optional< Rect > impeller::FilterContentsFilterInput::GetSourceCoverage ( const Matrix effect_transform,
const Rect output_limit 
) const
overridevirtual

Reimplemented from impeller::FilterInput.

Definition at line 43 of file filter_contents_filter_input.cc.

45  {
46  return filter_->GetSourceCoverage(effect_transform, output_limit);
47 }

◆ GetTransform()

Matrix impeller::FilterContentsFilterInput::GetTransform ( const Entity entity) const
overridevirtual

Get the transform of this FilterInput. This is equivalent to calling entity.GetTransform() * GetLocalTransform().

Reimplemented from impeller::FilterInput.

Definition at line 54 of file filter_contents_filter_input.cc.

54  {
55  return filter_->GetTransform(entity.GetTransform());
56 }

References impeller::Entity::GetTransform().

◆ SetEffectTransform()

void impeller::FilterContentsFilterInput::SetEffectTransform ( const Matrix matrix)
overridevirtual

Sets the effect transform of filter inputs.

Reimplemented from impeller::FilterInput.

Definition at line 58 of file filter_contents_filter_input.cc.

58  {
59  filter_->SetEffectTransform(matrix);
60 }

◆ SetRenderingMode()

void impeller::FilterContentsFilterInput::SetRenderingMode ( Entity::RenderingMode  rendering_mode)
overridevirtual

Turns on subpass mode for filter inputs.

Reimplemented from impeller::FilterInput.

Definition at line 62 of file filter_contents_filter_input.cc.

63  {
64  filter_->SetRenderingMode(rendering_mode);
65 }

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