Flutter Impeller
impeller::DlImageImpeller Class Referencefinal

#include <dl_image_impeller.h>

Inheritance diagram for impeller::DlImageImpeller:

Public Member Functions

 ~DlImageImpeller () override
 
sk_sp< SkImage > skia_image () const override
 
std::shared_ptr< impeller::Textureimpeller_texture () const override
 
bool isOpaque () const override
 
bool isTextureBacked () const override
 
bool isUIThreadSafe () const override
 
SkISize dimensions () const override
 
size_t GetApproximateByteSize () const override
 
OwningContext owning_context () const override
 

Static Public Member Functions

static sk_sp< DlImageImpellerMake (std::shared_ptr< Texture > texture, OwningContext owning_context=OwningContext::kIO)
 
static sk_sp< DlImageImpellerMakeFromYUVTextures (AiksContext *aiks_context, std::shared_ptr< Texture > y_texture, std::shared_ptr< Texture > uv_texture, YUVColorSpace yuv_color_space)
 

Detailed Description

Definition at line 15 of file dl_image_impeller.h.

Constructor & Destructor Documentation

◆ ~DlImageImpeller()

impeller::DlImageImpeller::~DlImageImpeller ( )
overridedefault

Member Function Documentation

◆ dimensions()

SkISize impeller::DlImageImpeller::dimensions ( ) const
override

Definition at line 83 of file dl_image_impeller.cc.

83  {
84  const auto size = texture_ ? texture_->GetSize() : ISize{};
85  return SkISize::Make(size.width, size.height);
86 }

◆ GetApproximateByteSize()

size_t impeller::DlImageImpeller::GetApproximateByteSize ( ) const
override

Definition at line 89 of file dl_image_impeller.cc.

89  {
90  auto size = sizeof(*this);
91  if (texture_) {
92  size += texture_->GetTextureDescriptor().GetByteSizeOfBaseMipLevel();
93  }
94  return size;
95 }

◆ impeller_texture()

std::shared_ptr< impeller::Texture > impeller::DlImageImpeller::impeller_texture ( ) const
override

Definition at line 60 of file dl_image_impeller.cc.

60  {
61  return texture_;
62 }

◆ isOpaque()

bool impeller::DlImageImpeller::isOpaque ( ) const
override

Definition at line 65 of file dl_image_impeller.cc.

65  {
66  // Impeller doesn't currently implement opaque alpha types.
67  return false;
68 }

◆ isTextureBacked()

bool impeller::DlImageImpeller::isTextureBacked ( ) const
override

Definition at line 71 of file dl_image_impeller.cc.

71  {
72  // Impeller textures are always ... textures :/
73  return true;
74 }

◆ isUIThreadSafe()

bool impeller::DlImageImpeller::isUIThreadSafe ( ) const
override

Definition at line 77 of file dl_image_impeller.cc.

77  {
78  // Impeller textures are always thread-safe
79  return true;
80 }

◆ Make()

sk_sp< DlImageImpeller > impeller::DlImageImpeller::Make ( std::shared_ptr< Texture texture,
OwningContext  owning_context = OwningContext::kIO 
)
static

Definition at line 12 of file dl_image_impeller.cc.

13  {
14  if (!texture) {
15  return nullptr;
16  }
17  return sk_sp<DlImageImpeller>(
18  new DlImageImpeller(std::move(texture), owning_context));
19 }

References owning_context().

Referenced by MakeFromYUVTextures(), and impeller::testing::TEST_P().

◆ MakeFromYUVTextures()

sk_sp< DlImageImpeller > impeller::DlImageImpeller::MakeFromYUVTextures ( AiksContext aiks_context,
std::shared_ptr< Texture y_texture,
std::shared_ptr< Texture uv_texture,
YUVColorSpace  yuv_color_space 
)
static

Definition at line 21 of file dl_image_impeller.cc.

25  {
26  if (!aiks_context || !y_texture || !uv_texture) {
27  return nullptr;
28  }
29  auto yuv_to_rgb_filter_contents = FilterContents::MakeYUVToRGBFilter(
30  std::move(y_texture), std::move(uv_texture), yuv_color_space);
31  impeller::Entity entity;
33  auto snapshot = yuv_to_rgb_filter_contents->RenderToSnapshot(
34  aiks_context->GetContentContext(), // renderer
35  entity, // entity
36  std::nullopt, // coverage_limit
37  std::nullopt, // sampler_descriptor
38  true, // msaa_enabled
39  /*mip_count=*/1,
40  "MakeYUVToRGBFilter Snapshot"); // label
41  if (!snapshot.has_value()) {
42  return nullptr;
43  }
44  return impeller::DlImageImpeller::Make(snapshot->texture);
45 }

References impeller::AiksContext::GetContentContext(), impeller::kSource, Make(), impeller::FilterContents::MakeYUVToRGBFilter(), and impeller::Entity::SetBlendMode().

◆ owning_context()

OwningContext impeller::DlImageImpeller::owning_context ( ) const
inlineoverride

Definition at line 52 of file dl_image_impeller.h.

52 { return owning_context_; }

Referenced by Make().

◆ skia_image()

sk_sp< SkImage > impeller::DlImageImpeller::skia_image ( ) const
override

Definition at line 55 of file dl_image_impeller.cc.

55  {
56  return nullptr;
57 };

The documentation for this class was generated from the following files:
impeller::Entity::SetBlendMode
void SetBlendMode(BlendMode blend_mode)
Definition: entity.cc:130
impeller::BlendMode::kSource
@ kSource
impeller::DlImageImpeller::Make
static sk_sp< DlImageImpeller > Make(std::shared_ptr< Texture > texture, OwningContext owning_context=OwningContext::kIO)
Definition: dl_image_impeller.cc:12
impeller::Entity
Definition: entity.h:21
impeller::DlImageImpeller::owning_context
OwningContext owning_context() const override
Definition: dl_image_impeller.h:52
impeller::FilterContents::MakeYUVToRGBFilter
static std::shared_ptr< FilterContents > MakeYUVToRGBFilter(std::shared_ptr< Texture > y_texture, std::shared_ptr< Texture > uv_texture, YUVColorSpace yuv_color_space)
Definition: filter_contents.cc:106
impeller::ISize
TSize< int64_t > ISize
Definition: size.h:138