Divide Framework 0.1
A free and open-source 3D Framework under heavy development
Loading...
Searching...
No Matches
Divide::vkTexture Class Referencefinal

#include <vkTexture.h>

+ Inheritance diagram for Divide::vkTexture:

Classes

struct  CachedImageView
 
struct  Mip
 

Public Types

enum class  TransitionType : U8 {
  UNDEFINED_TO_COLOUR_ATTACHMENT = 0u , UNDEFINED_TO_COLOUR_RESOLVE_ATTACHMENT , UNDEFINED_TO_DEPTH_ATTACHMENT , UNDEFINED_TO_DEPTH_RESOLVE_ATTACHMENT ,
  UNDEFINED_TO_DEPTH_STENCIL_ATTACHMENT , UNDEFINED_TO_DEPTH_STENCIL_RESOLVE_ATTACHMENT , SHADER_READ_TO_COLOUR_ATTACHMENT , SHADER_READ_TO_COLOUR_RESOLVE_ATTACHMENT ,
  SHADER_READ_TO_DEPTH_ATTACHMENT , SHADER_READ_TO_DEPTH_RESOLVE_ATTACHMENT , SHADER_READ_TO_DEPTH_STENCIL_ATTACHMENT , SHADER_READ_TO_DEPTH_STENCIL_RESOLVE_ATTACHMENT ,
  COLOUR_ATTACHMENT_TO_SHADER_READ , COLOUR_RESOLVE_ATTACHMENT_TO_SHADER_READ , DEPTH_ATTACHMENT_TO_SHADER_READ , DEPTH_RESOLVE_ATTACHMENT_TO_SHADER_READ ,
  DEPTH_STENCIL_ATTACHMENT_TO_SHADER_READ , DEPTH_STENCIL_RESOLVE_ATTACHMENT_TO_SHADER_READ , COLOUR_ATTACHMENT_TO_SHADER_WRITE , DEPTH_ATTACHMENT_TO_SHADER_WRITE ,
  DEPTH_STENCIL_ATTACHMENT_TO_SHADER_WRITE , COLOUR_ATTACHMENT_TO_SHADER_READ_WRITE , DEPTH_ATTACHMENT_TO_SHADER_READ_WRITE , DEPTH_STENCIL_ATTACHMENT_TO_SHADER_READ_WRITE ,
  UNDEFINED_TO_SHADER_READ_COLOUR , UNDEFINED_TO_SHADER_READ_DEPTH , UNDEFINED_TO_SHADER_READ_WRITE , GENERAL_TO_SHADER_READ_COLOUR ,
  GENERAL_TO_SHADER_READ_DEPTH , UNDEFINED_TO_GENERAL , SHADER_READ_COLOUR_TO_GENERAL , SHADER_READ_DEPTH_TO_GENERAL ,
  SHADER_READ_COLOUR_TO_SHADER_READ_WRITE , SHADER_READ_DEPTH_TO_SHADER_READ_WRITE , SHADER_READ_WRITE_TO_SHADER_READ_COLOUR , SHADER_READ_WRITE_TO_SHADER_READ_DEPTH ,
  SHADER_READ_TO_BLIT_READ_COLOUR , SHADER_READ_TO_BLIT_WRITE_COLOUR , BLIT_READ_TO_SHADER_READ_COLOUR , BLIT_WRITE_TO_SHADER_READ_COLOUR ,
  SHADER_READ_TO_BLIT_READ_DEPTH , SHADER_READ_TO_BLIT_WRITE_DEPTH , BLIT_READ_TO_SHADER_READ_DEPTH , BLIT_WRITE_TO_SHADER_READ_DEPTH ,
  SHADER_READ_TO_COPY_WRITE_COLOUR , SHADER_READ_TO_COPY_WRITE_DEPTH , SHADER_READ_TO_COPY_READ_COLOUR , SHADER_READ_TO_COPY_READ_DEPTH ,
  COPY_READ_TO_SHADER_READ_COLOUR , COPY_READ_TO_SHADER_READ_DEPTH , COPY_WRITE_TO_SHADER_READ_COLOUR , COPY_WRITE_TO_SHADER_READ_DEPTH ,
  SHADER_READ_WRITE_TO_COPY_READ , GENERAL_TO_COPY_READ , GENERAL_TO_COPY_WRITE , COPY_READ_TO_GENERAL ,
  COPY_WRITE_TO_GENERAL , COPY_WRITE_TO_COPY_READ , COUNT
}
 
- Public Types inherited from Divide::GraphicsResource
enum class  Type : U8 {
  RENDER_TARGET , SHADER_BUFFER , BUFFER , SHADER ,
  SHADER_PROGRAM , TEXTURE , COUNT
}
 

Public Member Functions

 vkTexture (PlatformContext &context, const ResourceDescriptor< Texture > &descriptor)
 
virtual ~vkTexture () override
 
bool unload () override
 
void clearData (VkCommandBuffer cmdBuffer, const UColour4 &clearColour, SubRange layerRange, U8 mipLevel) const noexcept
 
void generateMipmaps (VkCommandBuffer cmdBuffer, U16 baseLevel, U16 baseLayer, U16 layerCount, ImageUsage crtUsage)
 
 PROPERTY_R (AllocatedImage_uptr, image, nullptr)
 
 PROPERTY_R_IW (VkImageType, vkType, VK_IMAGE_TYPE_MAX_ENUM)
 
 PROPERTY_R_IW (VkFormat, vkFormat, VK_FORMAT_MAX_ENUM)
 
 PROPERTY_R_IW (VkSampleCountFlagBits, sampleFlagBits, VK_SAMPLE_COUNT_1_BIT)
 
ImageReadbackData readData (U8 mipLevel, const PixelAlignment &pixelPackAlignment) const noexcept override
 
ImageReadbackData readData (VkCommandBuffer cmdBuffer, U8 mipLevel, const PixelAlignment &pixelPackAlignment) const noexcept
 
VkImageView getImageView (const CachedImageView::Descriptor &descriptor) const
 
- Public Member Functions inherited from Divide::Texture
 Texture (PlatformContext &context, const ResourceDescriptor< Texture > &descriptor)
 
virtual ~Texture () override
 
void createWithData (const ImageTools::ImageData &imageData, const PixelAlignment &pixelUnpackAlignment)
 API-dependent loading function that uploads ptr data to the GPU using the specified parameters.
 
void createWithData (const Byte *data, size_t dataSize, const vec2< U16 > &dimensions, const PixelAlignment &pixelUnpackAlignment)
 
void createWithData (const Byte *data, size_t dataSize, const vec3< U16 > &dimensions, const PixelAlignment &pixelUnpackAlignment)
 
void replaceData (const Byte *data, size_t dataSize, const vec3< U16 > &offset, const vec3< U16 > &range, const PixelAlignment &pixelUnpackAlignment)
 
void setSampleCount (U8 newSampleCount)
 Change the number of MSAA samples for this current texture.
 
ImageView getView () const noexcept
 
ImageView getView (TextureType targetType) const noexcept
 
ImageView getView (SubRange mipRange) const noexcept
 
ImageView getView (SubRange mipRange, SubRange layerRange) const noexcept
 
ImageView getView (TextureType targetType, SubRange mipRange) const noexcept
 
ImageView getView (TextureType targetType, SubRange mipRange, SubRange layerRange) const noexcept
 
virtual ImageReadbackData readData (U8 mipLevel, const PixelAlignment &pixelPackAlignment) const =0
 
 PROPERTY_R (TextureDescriptor, descriptor)
 
 PROPERTY_R (U16, mipCount, 1u)
 Get the number of mips.
 
 PROPERTY_R (U16, width, 0u)
 Texture width as returned by STB/DDS loader.
 
 PROPERTY_R (U16, height, 0u)
 Texture height as returned by STB/DDS loader.
 
 PROPERTY_R (U16, depth, 1u)
 Depth for TEXTURE_3D, layer count for TEXTURE_1/2D/CUBE_ARRAY. For cube arrays, numSlices = depth * 6u.
 
 PROPERTY_R (bool, hasTranslucency, false)
 If the texture has an alpha channel and at least one pixel is translucent, return true.
 
 PROPERTY_R (bool, hasTransparency, false)
 If the texture has an alpha channel and at least on pixel is fully transparent and no pixels are partially transparent, return true.
 
 PROPERTY_R (bool, loadedFromFile, false)
 
U8 numChannels () const noexcept
 
bool load (PlatformContext &context) override
 Loading and unloading interface.
 
bool postLoad () override
 
- Public Member Functions inherited from Divide::CachedResource
 CachedResource (const ResourceDescriptorBase &descriptor, std::string_view typeName)
 
virtual bool load (PlatformContext &context)
 Loading and unloading interface.
 
virtual bool postLoad ()
 
virtual bool unload ()
 
void setState (ResourceState currentState) final
 
- Public Member Functions inherited from Divide::Resource
 Resource (std::string_view resourceName, std::string_view typeName)
 
ResourceState getState () const noexcept
 
 PROPERTY_R (Str< 32 >, typeName)
 
 PROPERTY_R (Str< 256 >, resourceName)
 
- Public Member Functions inherited from Divide::GUIDWrapper
 GUIDWrapper () noexcept
 
 GUIDWrapper (const GUIDWrapper &old) noexcept
 
 GUIDWrapper (GUIDWrapper &&old) noexcept
 
virtual ~GUIDWrapper ()=default
 
FORCE_INLINE I64 getGUID () const noexcept
 
GUIDWrapperoperator= (const GUIDWrapper &old)=delete
 
GUIDWrapperoperator= (GUIDWrapper &&other)=delete
 
- Public Member Functions inherited from Divide::GraphicsResource
virtual ~GraphicsResource ()
 
GFXDevicecontext () const noexcept
 
U64 nameHash () const noexcept
 
- Public Member Functions inherited from Divide::NonCopyable
 NonCopyable (const NonCopyable &)=delete
 
NonCopyableoperator= (const NonCopyable &)=delete
 
 NonCopyable (NonCopyable &&)=default
 
NonCopyableoperator= (NonCopyable &&)=default
 
- Public Member Functions inherited from Divide::NonMovable
 NonMovable (NonMovable &&)=delete
 
NonMovableoperator= (NonMovable &&)=delete
 
 NonMovable (const NonMovable &)=default
 
NonMovableoperator= (const NonMovable &)=default
 

Static Public Member Functions

static VkImageAspectFlags GetAspectFlags (const TextureDescriptor &descriptor) noexcept
 
static void Copy (VkCommandBuffer cmdBuffer, const vkTexture *source, const U8 sourceSamples, const vkTexture *destination, const U8 destinationSamples, CopyTexParams params)
 
static void TransitionTexture (TransitionType type, const VkImageSubresourceRange &subresourceRange, VkImage image, VkImageMemoryBarrier2 &memBarrier)
 
- Static Public Member Functions inherited from Divide::Texture
static void OnStartup (GFXDevice &gfx)
 
static void OnShutdown () noexcept
 
static bool UseTextureDDSCache () noexcept
 
static Handle< TextureDefaultTexture2D () noexcept
 
static Handle< TextureDefaultTexture2DArray () noexcept
 
static const SamplerDescriptor DefaultSampler () noexcept
 
static U8 GetBytesPerPixel (GFXDataFormat format, GFXImageFormat baseFormat, GFXImagePacking packing) noexcept
 
- Static Public Member Functions inherited from Divide::GUIDWrapper
static I64 generateGUID () noexcept
 

Private Member Functions

void loadDataInternal (const ImageTools::ImageData &imageData, const vec3< U16 > &offset, const PixelAlignment &pixelUnpackAlignment) override
 
void loadDataInternal (const Byte *data, size_t size, U8 targetMip, const vec3< U16 > &offset, const vec3< U16 > &dimensions, const PixelAlignment &pixelUnpackAlignment) override
 
void prepareTextureData (U16 width, U16 height, U16 depth, bool emptyAllocation) override
 
void clearDataInternal (const UColour4 &clearColour, U8 level, bool clearRect, const vec4< I32 > &rectToClear, vec2< I32 > depthRange) const
 
void clearImageViewCache ()
 
void loadDataInternal (const Byte *data, size_t size, U8 targetMip, const vec3< U16 > &offset, const vec3< U16 > &dimensions, const PixelAlignment &pixelUnpackAlignment, bool emptyAllocation)
 

Private Attributes

hashMap< size_t, CachedImageView_imageViewCache
 
VMABuffer_uptr _stagingBuffer
 
VkDeviceSize _stagingBufferSize { 0u }
 
vector< Mip_mipData
 
U8 _testRefreshCounter { 0u }
 

Additional Inherited Members

- Protected Member Functions inherited from Divide::Texture
bool loadFile (const ResourcePath &path, std::string_view name, ImageTools::ImageData &fileData)
 Use STB to load a file into a Texture Object.
 
bool checkTransparency (const ResourcePath &path, std::string_view name, ImageTools::ImageData &fileData)
 
bool loadInternal ()
 Load texture data using the specified file name.
 
void validateDescriptor ()
 
virtual void loadDataInternal (const ImageTools::ImageData &imageData, const vec3< U16 > &offset, const PixelAlignment &pixelUnpackAlignment)=0
 
virtual void loadDataInternal (const Byte *data, size_t size, U8 targetMip, const vec3< U16 > &offset, const vec3< U16 > &dimensions, const PixelAlignment &pixelUnpackAlignment)=0
 
virtual void prepareTextureData (U16 width, U16 height, U16 depth, bool emptyAllocation)
 
virtual void submitTextureData ()
 
- Protected Member Functions inherited from Divide::CachedResource
 PROPERTY_RW (ResourcePath, assetLocation)
 
 PROPERTY_RW (Str< 256 >, assetName)
 
 PROPERTY_R (size_t, descriptorHash)
 
virtual void setState (ResourceState currentState)
 
- Protected Member Functions inherited from Divide::GraphicsResource
 GraphicsResource (GFXDevice &context, Type type, I64 GUID, U64 nameHash)
 
- Protected Member Functions inherited from Divide::NonCopyable
 NonCopyable ()=default
 
 ~NonCopyable ()=default
 
- Protected Member Functions inherited from Divide::NonMovable
 NonMovable ()=default
 
 ~NonMovable ()=default
 
- Protected Attributes inherited from Divide::CachedResource
Mutex _callbackLock {}
 
- Protected Attributes inherited from Divide::Resource
std::atomic< ResourceState_resourceState
 
- Protected Attributes inherited from Divide::GUIDWrapper
const I64 _guid
 
- Protected Attributes inherited from Divide::GraphicsResource
GFXDevice_context
 
- Static Protected Attributes inherited from Divide::Texture
static bool s_useDDSCache = true
 
static SamplerDescriptor s_defaultSampler
 
static Handle< Textures_defaultTexture2D = INVALID_HANDLE<Texture>
 
static Handle< Textures_defaultTexture2DArray = INVALID_HANDLE<Texture>
 
static Str< 64 > s_missingTextureFileName
 

Detailed Description

Definition at line 53 of file vkTexture.h.

Member Enumeration Documentation

◆ TransitionType

Enumerator
UNDEFINED_TO_COLOUR_ATTACHMENT 
UNDEFINED_TO_COLOUR_RESOLVE_ATTACHMENT 
UNDEFINED_TO_DEPTH_ATTACHMENT 
UNDEFINED_TO_DEPTH_RESOLVE_ATTACHMENT 
UNDEFINED_TO_DEPTH_STENCIL_ATTACHMENT 
UNDEFINED_TO_DEPTH_STENCIL_RESOLVE_ATTACHMENT 
SHADER_READ_TO_COLOUR_ATTACHMENT 
SHADER_READ_TO_COLOUR_RESOLVE_ATTACHMENT 
SHADER_READ_TO_DEPTH_ATTACHMENT 
SHADER_READ_TO_DEPTH_RESOLVE_ATTACHMENT 
SHADER_READ_TO_DEPTH_STENCIL_ATTACHMENT 
SHADER_READ_TO_DEPTH_STENCIL_RESOLVE_ATTACHMENT 
COLOUR_ATTACHMENT_TO_SHADER_READ 
COLOUR_RESOLVE_ATTACHMENT_TO_SHADER_READ 
DEPTH_ATTACHMENT_TO_SHADER_READ 
DEPTH_RESOLVE_ATTACHMENT_TO_SHADER_READ 
DEPTH_STENCIL_ATTACHMENT_TO_SHADER_READ 
DEPTH_STENCIL_RESOLVE_ATTACHMENT_TO_SHADER_READ 
COLOUR_ATTACHMENT_TO_SHADER_WRITE 
DEPTH_ATTACHMENT_TO_SHADER_WRITE 
DEPTH_STENCIL_ATTACHMENT_TO_SHADER_WRITE 
COLOUR_ATTACHMENT_TO_SHADER_READ_WRITE 
DEPTH_ATTACHMENT_TO_SHADER_READ_WRITE 
DEPTH_STENCIL_ATTACHMENT_TO_SHADER_READ_WRITE 
UNDEFINED_TO_SHADER_READ_COLOUR 
UNDEFINED_TO_SHADER_READ_DEPTH 
UNDEFINED_TO_SHADER_READ_WRITE 
GENERAL_TO_SHADER_READ_COLOUR 
GENERAL_TO_SHADER_READ_DEPTH 
UNDEFINED_TO_GENERAL 
SHADER_READ_COLOUR_TO_GENERAL 
SHADER_READ_DEPTH_TO_GENERAL 
SHADER_READ_COLOUR_TO_SHADER_READ_WRITE 
SHADER_READ_DEPTH_TO_SHADER_READ_WRITE 
SHADER_READ_WRITE_TO_SHADER_READ_COLOUR 
SHADER_READ_WRITE_TO_SHADER_READ_DEPTH 
SHADER_READ_TO_BLIT_READ_COLOUR 
SHADER_READ_TO_BLIT_WRITE_COLOUR 
BLIT_READ_TO_SHADER_READ_COLOUR 
BLIT_WRITE_TO_SHADER_READ_COLOUR 
SHADER_READ_TO_BLIT_READ_DEPTH 
SHADER_READ_TO_BLIT_WRITE_DEPTH 
BLIT_READ_TO_SHADER_READ_DEPTH 
BLIT_WRITE_TO_SHADER_READ_DEPTH 
SHADER_READ_TO_COPY_WRITE_COLOUR 
SHADER_READ_TO_COPY_WRITE_DEPTH 
SHADER_READ_TO_COPY_READ_COLOUR 
SHADER_READ_TO_COPY_READ_DEPTH 
COPY_READ_TO_SHADER_READ_COLOUR 
COPY_READ_TO_SHADER_READ_DEPTH 
COPY_WRITE_TO_SHADER_READ_COLOUR 
COPY_WRITE_TO_SHADER_READ_DEPTH 
SHADER_READ_WRITE_TO_COPY_READ 
GENERAL_TO_COPY_READ 
GENERAL_TO_COPY_WRITE 
COPY_READ_TO_GENERAL 
COPY_WRITE_TO_GENERAL 
COPY_WRITE_TO_COPY_READ 
COUNT 

Definition at line 56 of file vkTexture.h.

Constructor & Destructor Documentation

◆ vkTexture()

Divide::vkTexture::vkTexture ( PlatformContext context,
const ResourceDescriptor< Texture > &  descriptor 
)

Definition at line 186 of file vkTexture.cpp.

◆ ~vkTexture()

Divide::vkTexture::~vkTexture ( )
overridevirtual

Definition at line 191 of file vkTexture.cpp.

Member Function Documentation

◆ clearData()

void Divide::vkTexture::clearData ( VkCommandBuffer  cmdBuffer,
const UColour4 clearColour,
SubRange  layerRange,
U8  mipLevel 
) const
noexcept

Definition at line 722 of file vkTexture.cpp.

◆ clearDataInternal()

void Divide::vkTexture::clearDataInternal ( const UColour4 clearColour,
U8  level,
bool  clearRect,
const vec4< I32 > &  rectToClear,
vec2< I32 depthRange 
) const
private

◆ clearImageViewCache()

void Divide::vkTexture::clearImageViewCache ( )
private

Definition at line 196 of file vkTexture.cpp.

◆ Copy()

void Divide::vkTexture::Copy ( VkCommandBuffer  cmdBuffer,
const vkTexture source,
const U8  sourceSamples,
const vkTexture destination,
const U8  destinationSamples,
CopyTexParams  params 
)
static

Definition at line 969 of file vkTexture.cpp.

◆ generateMipmaps()

void Divide::vkTexture::generateMipmaps ( VkCommandBuffer  cmdBuffer,
U16  baseLevel,
U16  baseLayer,
U16  layerCount,
ImageUsage  crtUsage 
)

Definition at line 217 of file vkTexture.cpp.

◆ GetAspectFlags()

VkImageAspectFlags Divide::vkTexture::GetAspectFlags ( const TextureDescriptor descriptor)
staticnoexcept

Definition at line 177 of file vkTexture.cpp.

◆ getImageView()

VkImageView Divide::vkTexture::getImageView ( const CachedImageView::Descriptor descriptor) const

Definition at line 914 of file vkTexture.cpp.

◆ loadDataInternal() [1/3]

void Divide::vkTexture::loadDataInternal ( const Byte data,
size_t  size,
U8  targetMip,
const vec3< U16 > &  offset,
const vec3< U16 > &  dimensions,
const PixelAlignment pixelUnpackAlignment 
)
overrideprivatevirtual

Implements Divide::Texture.

Definition at line 455 of file vkTexture.cpp.

◆ loadDataInternal() [2/3]

void Divide::vkTexture::loadDataInternal ( const Byte data,
size_t  size,
U8  targetMip,
const vec3< U16 > &  offset,
const vec3< U16 > &  dimensions,
const PixelAlignment pixelUnpackAlignment,
bool  emptyAllocation 
)
private

Definition at line 461 of file vkTexture.cpp.

◆ loadDataInternal() [3/3]

void Divide::vkTexture::loadDataInternal ( const ImageTools::ImageData imageData,
const vec3< U16 > &  offset,
const PixelAlignment pixelUnpackAlignment 
)
overrideprivatevirtual

Implements Divide::Texture.

Definition at line 593 of file vkTexture.cpp.

◆ prepareTextureData()

void Divide::vkTexture::prepareTextureData ( U16  width,
U16  height,
U16  depth,
bool  emptyAllocation 
)
overrideprivatevirtual

Reimplemented from Divide::Texture.

Definition at line 348 of file vkTexture.cpp.

◆ PROPERTY_R()

Divide::vkTexture::PROPERTY_R ( AllocatedImage_uptr  ,
image  ,
nullptr   
)

◆ PROPERTY_R_IW() [1/3]

Divide::vkTexture::PROPERTY_R_IW ( VkFormat  ,
vkFormat  ,
VK_FORMAT_MAX_ENUM   
)

◆ PROPERTY_R_IW() [2/3]

Divide::vkTexture::PROPERTY_R_IW ( VkImageType  ,
vkType  ,
VK_IMAGE_TYPE_MAX_ENUM   
)

◆ PROPERTY_R_IW() [3/3]

Divide::vkTexture::PROPERTY_R_IW ( VkSampleCountFlagBits  ,
sampleFlagBits  ,
VK_SAMPLE_COUNT_1_BIT   
)

◆ readData() [1/2]

ImageReadbackData Divide::vkTexture::readData ( U8  mipLevel,
const PixelAlignment pixelPackAlignment 
) const
overridevirtualnoexcept

Implements Divide::Texture.

Definition at line 770 of file vkTexture.cpp.

◆ readData() [2/2]

ImageReadbackData Divide::vkTexture::readData ( VkCommandBuffer  cmdBuffer,
U8  mipLevel,
const PixelAlignment pixelPackAlignment 
) const
noexcept

Definition at line 784 of file vkTexture.cpp.

◆ TransitionTexture()

void Divide::vkTexture::TransitionTexture ( TransitionType  type,
const VkImageSubresourceRange &  subresourceRange,
VkImage  image,
VkImageMemoryBarrier2 &  memBarrier 
)
static

Definition at line 1011 of file vkTexture.cpp.

◆ unload()

bool Divide::vkTexture::unload ( )
overridevirtual

Reimplemented from Divide::CachedResource.

Definition at line 211 of file vkTexture.cpp.

Member Data Documentation

◆ _imageViewCache

hashMap<size_t, CachedImageView> Divide::vkTexture::_imageViewCache
mutableprivate

Definition at line 192 of file vkTexture.h.

◆ _mipData

vector<Mip> Divide::vkTexture::_mipData
private

Definition at line 195 of file vkTexture.h.

◆ _stagingBuffer

VMABuffer_uptr Divide::vkTexture::_stagingBuffer
private

Definition at line 193 of file vkTexture.h.

◆ _stagingBufferSize

VkDeviceSize Divide::vkTexture::_stagingBufferSize { 0u }
private

Definition at line 194 of file vkTexture.h.

◆ _testRefreshCounter

U8 Divide::vkTexture::_testRefreshCounter { 0u }
private

Definition at line 196 of file vkTexture.h.


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