Flutter Impeller
impeller::Texture Class Referenceabstract

#include <texture.h>

Inheritance diagram for impeller::Texture:
impeller::TextureGLES impeller::TextureMTL impeller::TextureVK

Public Member Functions

virtual ~Texture ()
 
virtual void SetLabel (std::string_view label)=0
 
bool SetContents (const uint8_t *contents, size_t length, size_t slice=0, bool is_opaque=false)
 
bool SetContents (std::shared_ptr< const fml::Mapping > mapping, size_t slice=0, bool is_opaque=false)
 
virtual bool IsValid () const =0
 
virtual ISize GetSize () const =0
 
bool IsOpaque () const
 
size_t GetMipCount () const
 
const TextureDescriptorGetTextureDescriptor () const
 
void SetCoordinateSystem (TextureCoordinateSystem coordinate_system)
 
TextureCoordinateSystem GetCoordinateSystem () const
 
virtual Scalar GetYCoordScale () const
 
bool NeedsMipmapGeneration () const
 

Protected Member Functions

 Texture (TextureDescriptor desc)
 
virtual bool OnSetContents (const uint8_t *contents, size_t length, size_t slice)=0
 
virtual bool OnSetContents (std::shared_ptr< const fml::Mapping > mapping, size_t slice)=0
 

Protected Attributes

bool mipmap_generated_ = false
 

Detailed Description

Definition at line 17 of file texture.h.

Constructor & Destructor Documentation

◆ ~Texture()

impeller::Texture::~Texture ( )
virtualdefault

◆ Texture()

impeller::Texture::Texture ( TextureDescriptor  desc)
explicitprotected

Definition at line 11 of file texture.cc.

11 : desc_(desc) {}

Member Function Documentation

◆ GetCoordinateSystem()

TextureCoordinateSystem impeller::Texture::GetCoordinateSystem ( ) const

Definition at line 77 of file texture.cc.

77  {
78  return coordinate_system_;
79 }

◆ GetMipCount()

size_t impeller::Texture::GetMipCount ( ) const

Definition at line 53 of file texture.cc.

53  {
55 }

References GetTextureDescriptor(), and impeller::TextureDescriptor::mip_count.

◆ GetSize()

virtual ISize impeller::Texture::GetSize ( ) const
pure virtual

◆ GetTextureDescriptor()

◆ GetYCoordScale()

Scalar impeller::Texture::GetYCoordScale ( ) const
virtual

Definition at line 81 of file texture.cc.

81  {
82  return 1.0;
83 }

◆ IsOpaque()

bool impeller::Texture::IsOpaque ( ) const

Definition at line 49 of file texture.cc.

49  {
50  return is_opaque_;
51 }

◆ IsValid()

virtual bool impeller::Texture::IsValid ( ) const
pure virtual

Referenced by impeller::Bind().

◆ NeedsMipmapGeneration()

bool impeller::Texture::NeedsMipmapGeneration ( ) const

Definition at line 85 of file texture.cc.

85  {
86  return !mipmap_generated_ && desc_.mip_count > 1;
87 }

References impeller::TextureDescriptor::mip_count, and mipmap_generated_.

Referenced by impeller::Bind(), and impeller::SamplerGLES::ConfigureBoundTexture().

◆ OnSetContents() [1/2]

virtual bool impeller::Texture::OnSetContents ( const uint8_t *  contents,
size_t  length,
size_t  slice 
)
protectedpure virtual

Referenced by SetContents().

◆ OnSetContents() [2/2]

virtual bool impeller::Texture::OnSetContents ( std::shared_ptr< const fml::Mapping >  mapping,
size_t  slice 
)
protectedpure virtual

◆ SetContents() [1/2]

bool impeller::Texture::SetContents ( const uint8_t *  contents,
size_t  length,
size_t  slice = 0,
bool  is_opaque = false 
)

Definition at line 15 of file texture.cc.

18  {
19  if (!IsSliceValid(slice)) {
20  VALIDATION_LOG << "Invalid slice for texture.";
21  return false;
22  }
23  if (!OnSetContents(contents, length, slice)) {
24  return false;
25  }
26  coordinate_system_ = TextureCoordinateSystem::kUploadFromHost;
27  is_opaque_ = is_opaque;
28  return true;
29 }

References impeller::kUploadFromHost, OnSetContents(), and VALIDATION_LOG.

◆ SetContents() [2/2]

bool impeller::Texture::SetContents ( std::shared_ptr< const fml::Mapping >  mapping,
size_t  slice = 0,
bool  is_opaque = false 
)

Definition at line 31 of file texture.cc.

33  {
34  if (!IsSliceValid(slice)) {
35  VALIDATION_LOG << "Invalid slice for texture.";
36  return false;
37  }
38  if (!mapping) {
39  return false;
40  }
41  if (!OnSetContents(std::move(mapping), slice)) {
42  return false;
43  }
44  coordinate_system_ = TextureCoordinateSystem::kUploadFromHost;
45  is_opaque_ = is_opaque;
46  return true;
47 }

References impeller::kUploadFromHost, OnSetContents(), and VALIDATION_LOG.

◆ SetCoordinateSystem()

void impeller::Texture::SetCoordinateSystem ( TextureCoordinateSystem  coordinate_system)

Definition at line 73 of file texture.cc.

73  {
74  coordinate_system_ = coordinate_system;
75 }

◆ SetLabel()

virtual void impeller::Texture::SetLabel ( std::string_view  label)
pure virtual

Member Data Documentation

◆ mipmap_generated_

bool impeller::Texture::mipmap_generated_ = false
protected

The documentation for this class was generated from the following files:
impeller::Texture::GetTextureDescriptor
const TextureDescriptor & GetTextureDescriptor() const
Definition: texture.cc:57
impeller::TextureDescriptor::mip_count
size_t mip_count
Definition: texture_descriptor.h:44
impeller::TextureCoordinateSystem::kUploadFromHost
@ kUploadFromHost
impeller::Texture::mipmap_generated_
bool mipmap_generated_
Definition: texture.h:61
VALIDATION_LOG
#define VALIDATION_LOG
Definition: validation.h:60
impeller::Texture::OnSetContents
virtual bool OnSetContents(const uint8_t *contents, size_t length, size_t slice)=0