| Flutter Impeller |

Public Member Functions | Public Attributes | List of all members
impeller::Snapshot Struct Reference

Represents a texture and its intended draw transform/sampler configuration. More...

`#include <snapshot.h>`

## Public Member Functions
std::optional< Rect > | GetCoverage () const
std::optional< Matrix > | GetUVTransform () const
| Get the transform that converts screen space coordinates to the UV space of this snapshot. More...
std::optional< std::array< Point, 4 > > | GetCoverageUVs (const Rect &coverage) const
| Map a coverage rect to this filter input's UV space. Result order: Top left, top right, bottom left, bottom right. More...

## Public Attributes
std::shared_ptr< Texture > | texture
Matrix | transform
| The transform that should be applied to this texture for rendering. More...
SamplerDescriptor | sampler_descriptor
Scalar | opacity = 1.0f

## Detailed Description

Represents a texture and its intended draw transform/sampler configuration.

Definition at line 25 of file snapshot.h.

## Member Function Documentation

## ◆ GetCoverage()

std::optional< Rect > impeller::Snapshot::GetCoverage | ( |  | ) | const

Definition at line 11 of file snapshot.cc.

11 {
12 if (!texture) {
13 return std::nullopt;
14 }
15 return Rect::MakeSize(texture->GetSize()).TransformBounds(transform);
16 }

References impeller::TRect< Scalar >::MakeSize(), texture, transform, and impeller::TRect< T >::TransformBounds().

## ◆ GetCoverageUVs()

std::optional< std::array< Point, 4 > > impeller::Snapshot::GetCoverageUVs | ( | const Rect & | coverage | ) | const

Map a coverage rect to this filter input's UV space. Result order: Top left, top right, bottom left, bottom right.

Definition at line 26 of file snapshot.cc.

27 {
28 auto uv_transform = GetUVTransform();
29 if (!uv_transform.has_value()) {
30 return std::nullopt;
31 }
32 return coverage.GetTransformedPoints(uv_transform.value());
33 }

References impeller::TRect< T >::GetTransformedPoints(), and GetUVTransform().

## ◆ GetUVTransform()

std::optional< Matrix > impeller::Snapshot::GetUVTransform | ( |  | ) | const

Get the transform that converts screen space coordinates to the UV space of this snapshot.

Definition at line 18 of file snapshot.cc.

18 {
19 if (!texture || texture->GetSize().IsEmpty()) {
20 return std::nullopt;
21 }
22 return Matrix::MakeScale(1 / Vector2(texture->GetSize())) *
23 transform.Invert();
24 }

References impeller::Matrix::Invert(), impeller::Matrix::MakeScale(), texture, and transform.

Referenced by GetCoverageUVs().

## Member Data Documentation

## ◆ opacity

Scalar impeller::Snapshot::opacity = 1.0f

Definition at line 36 of file snapshot.h.

Referenced by impeller::Entity::FromSnapshot().

## ◆ sampler_descriptor

SamplerDescriptor impeller::Snapshot::sampler_descriptor

Initial value:
=
SamplerDescriptor("Default Snapshot Sampler",
MinMagFilter::kLinear,
MinMagFilter::kLinear,
MipFilter::kNearest)

Definition at line 30 of file snapshot.h.

Referenced by impeller::Entity::FromSnapshot().

## ◆ texture

std::shared_ptr<Texture> impeller::Snapshot::texture

Definition at line 26 of file snapshot.h.

Referenced by impeller::AdvancedBlend(), impeller::Entity::FromSnapshot(), GetCoverage(), impeller::TextureFilterInput::GetSnapshot(), GetUVTransform(), impeller::PipelineBlend(), impeller::TiledTextureContents::RenderToSnapshot(), impeller::TextureContents::RenderToSnapshot(), impeller::Contents::RenderToSnapshot(), and impeller::Picture::Snapshot().

## ◆ transform

Matrix impeller::Snapshot::transform

The transform that should be applied to this texture for rendering.

Definition at line 28 of file snapshot.h.

Referenced by impeller::Entity::FromSnapshot(), GetCoverage(), and GetUVTransform().

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

- impeller/renderer/snapshot.h
- impeller/renderer/snapshot.cc

impeller::TRect::TransformBounds
constexpr TRect TransformBounds(const Matrix &transform) const
Creates a new bounding box that contains this transformed rectangle.
Definition: rect.h:405
impeller::Vector2
Point Vector2
Definition: point.h:320
impeller::MipFilter::kNearest
@ kNearest
Sample from the nearest mip level.
impeller::Snapshot::transform
Matrix transform
The transform that should be applied to this texture for rendering.
Definition: snapshot.h:28
impeller::MinMagFilter::kLinear
@ kLinear
impeller::Snapshot::GetUVTransform
std::optional< Matrix > GetUVTransform() const
Get the transform that converts screen space coordinates to the UV space of this snapshot.
Definition: snapshot.cc:18
impeller::Matrix::Invert
Matrix Invert() const
Definition: matrix.cc:97
impeller::TRect< Scalar >::MakeSize
constexpr static TRect MakeSize(const TSize< U > &size)
Definition: rect.h:146
impeller::Snapshot::texture
std::shared_ptr< Texture > texture
Definition: snapshot.h:26
impeller::Matrix::MakeScale
static constexpr Matrix MakeScale(const Vector3 &s)
Definition: matrix.h:104