| 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 24 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(Size(texture->GetSize())).TransformBounds(transform);
16 }

References 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().IsZero()) {
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 35 of file snapshot.h.

## ◆ sampler_descriptor

SamplerDescriptor impeller::Snapshot::sampler_descriptor

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

Definition at line 29 of file snapshot.h.

## ◆ texture

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

Definition at line 25 of file snapshot.h.

Referenced by impeller::AdvancedBlend(), 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 27 of file snapshot.h.

Referenced by 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:204
impeller::Vector2
Point Vector2
Definition: point.h:310
impeller::Size
TSize< Scalar > Size
Definition: size.h:135
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:27
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::Rect
TRect< Scalar > Rect
Definition: rect.h:306
impeller::Matrix::Invert
Matrix Invert() const
Definition: matrix.cc:97
impeller::Snapshot::texture
std::shared_ptr< Texture > texture
Definition: snapshot.h:25
impeller::Matrix::MakeScale
static constexpr Matrix MakeScale(const Vector3 &s)
Definition: matrix.h:103