Skip to main content

Image

The Image class provides a comprehensive set of methods for working with images, supporting various image types (2D, 3D, Cube) and formats. It allows the creation, manipulation, and conversion of images, with functionality for operations like loading, saving, resizing, flipping, rotating, and comparing images. The class supports a variety of image flags to control behavior (e.g., mipmaps, compression), as well as different image filters for resizing and minification. It offers methods for querying image properties such as dimensions, format, components, and layout, and includes the ability to manipulate image slices, regions, and components. The class also provides advanced features like handling image metadata, creating mipmaps, and obtaining the raw image data for processing or manipulation. Additionally, it supports asynchronous operations for optimized performance when dealing with large image data.

#include <format/TellusimImage.h>

Constructors

Image()
explicit Image(const char *name, Flags flags = FlagNone, uint32_t offset = 0)
explicit Image(Stream &stream, Flags flags = FlagNone, uint32_t offset = 0)
Image(Type type, Format format, Size size, Flags flags = FlagNone)
Image(Type type, Format format, Size size, uint32_t layers, Flags flags = FlagNone)

Methods

Clear image.

void clear()

Check image.

bool isLoaded() const
bool isAllocated() const

Image type.

Type getType() const
static const char *getTypeName(Type type)
const char *getTypeName() const
bool is2DType() const
bool is3DType() const
bool isCubeType() const

Image format.

Format getFormat() const
const char *getFormatName() const
bool isColorFormat() const
bool isDepthFormat() const
bool isPixelFormat() const
bool isPlainFormat() const
bool isMixedFormat() const
bool isBlockFormat() const
bool isStencilFormat() const
bool isNormFormat() const
bool isSRGBFormat() const
bool isFloatFormat() const
bool isSignedFormat() const
bool isUnsignedFormat() const
bool isIntegerFormat() const
bool isi8Format() const
bool isu8Format() const
bool is8BitFormat() const
bool isi16Format() const
bool isu16Format() const
bool isf16Format() const
bool is16BitFormat() const
bool isi32Format() const
bool isu32Format() const
bool isf32Format() const
bool is32BitFormat() const
bool isi64Format() const
bool isu64Format() const
bool isf64Format() const
bool is64BitFormat() const
bool isBC15Format() const
bool isBC67Format() const
bool isETC2Format() const
bool isASTCFormat() const
uint32_t getComponents() const
uint32_t getPixelSize() const
uint32_t getBlockSize() const
uint32_t getBlockWidth() const
uint32_t getBlockHeight() const

Image dimension.

uint32_t getWidth() const
uint32_t getHeight() const
uint32_t getDepth() const
uint32_t getFaces() const
uint32_t getLayers() const
uint32_t getMipmaps() const
uint32_t findMipmap(Size size) const
uint32_t getWidth(uint32_t mipmap) const
uint32_t getHeight(uint32_t mipmap) const
uint32_t getDepth(uint32_t mipmap) const
bool hasLayers() const
bool hasMipmaps() const
Size getSize() const
Region getRegion() const
Slice getSlice() const
Size getSize(uint32_t mipmap) const
Region getRegion(uint32_t mipmap) const
Slice getSlice(uint32_t mipmap) const

Image meta info.

void setMetaInfo(const String &str)
String getMetaInfo() const

Image description.

String getDescription() const

Image layout.

size_t getOffset(Slice slice, uint32_t alignment = 1) const
size_t getStride(uint32_t mipmap = 0, uint32_t alignment = 1) const
size_t getMipmapSize(uint32_t mipmap, uint32_t alignment = 1) const
size_t getLayerSize(uint32_t alignment = 1) const
size_t getDataSize(uint32_t alignment = 1) const

Create image.

bool create(Type type, Format format, Size size, Flags flags = FlagNone)
bool create(Type type, Format format, Size size, uint32_t layers, Flags flags = FlagNone)
bool create2D(Format format, uint32_t size, Flags flags = FlagNone)
bool create3D(Format format, uint32_t size, Flags flags = FlagNone)
bool createCube(Format format, uint32_t size, Flags flags = FlagNone)
bool create2D(Format format, uint32_t width, uint32_t height, Flags flags = FlagNone)
bool create3D(Format format, uint32_t width, uint32_t height, uint32_t depth, Flags flags = FlagNone)
bool create2D(Format format, uint32_t width, uint32_t height, uint32_t layers, Flags flags = FlagNone)
bool createCube(Format format, uint32_t size, uint32_t layers, Flags flags = FlagNone)

Info image.

bool info(const char *name, Flags flags = FlagNone, uint32_t offset = 0, Async *async = nullptr)
bool info(const String &name, Flags flags = FlagNone, uint32_t offset = 0, Async *async = nullptr)
bool info(Stream &stream, Flags flags = FlagNone, uint32_t offset = 0, Async *async = nullptr)
bool info(const char *name, Async *async)
bool info(const String &name, Async *async)
bool info(Stream &stream, Async *async)

Load image.

bool load(const char *name, Flags flags = FlagNone, uint32_t offset = 0, Async *async = nullptr)
bool load(const String &name, Flags flags = FlagNone, uint32_t offset = 0, Async *async = nullptr)
bool load(Stream &stream, Flags flags = FlagNone, uint32_t offset = 0, Async *async = nullptr)
bool load(const char *name, Async *async)
bool load(const String &name, Async *async)
bool load(Stream &stream, Async *async)

Save image.

bool save(const char *name, Flags flags = FlagNone, uint32_t quality = 95) const
bool save(const String &name, Flags flags = FlagNone, uint32_t quality = 95) const
bool save(Stream &stream, Flags flags = FlagNone, uint32_t quality = 95) const

Image components.

bool swap(uint32_t component_0, uint32_t component_1)
bool copy(const Image &src, uint32_t dest_component, uint32_t src_component)

Flip horizontally.

bool flipX(Region region, Slice slice)
bool flipX(Region region)
bool flipX()

Flip vertically.

bool flipY(Region region, Slice slice)
bool flipY(Region region)
bool flipY()

Copy image.

bool copy(const Image &src, Origin dest_origin, Region src_region, Slice dest_slice, Slice src_slice)
bool copy(const Image &src, Origin dest_origin, Region src_region)
bool copy(const Image &src, Origin dest_origin, Slice dest_slice)
bool copy(const Image &src, Slice dest_slice, Slice src_slice)
bool copy(const Image &src, Origin dest_origin)
bool copy(const Image &src, Slice dest_slice)

Convert image to type.

Image toType(Type type, Flags flags, Async *async = nullptr) const
Image toType(Type type, Async *async = nullptr) const

Convert image to format.

Image toFormat(Format format, Flags flags, Async *async = nullptr) const
Image toFormat(Format format, Async *async = nullptr) const

Get image slice.

Image getSlice(Slice slice) const

Get image component.

Image getComponent(uint32_t component) const

Get image region.

Image getRegion(Region region, Slice slice) const
Image getRegion(Region region) const

Get rotated image.

Image getRotated(int32_t angle, Slice slice) const
Image getRotated(int32_t angle) const

Get resized image.

Image getResized(Size size, Filter min, Filter mag, Flags flags, Async *async = nullptr) const
Image getResized(Size size, Filter min, Filter mag = FilterCubic, Async *async = nullptr) const
Image getResized(Size size, Async *async = nullptr) const

Get mipmapped image.

Image getMipmapped(Filter filter, Flags flags, Async *async = nullptr) const
Image getMipmapped(Filter filter, Async *async = nullptr) const
Image getMipmapped(Async *async = nullptr) const

Compare images.

int32_t compare(const Image &image) const

Image data.

const uint8_t *getData(Slice slice = Slice()) const
uint8_t *getData(Slice slice = Slice())
const uint8_t *getData(Origin origin, Slice slice = Slice()) const
uint8_t *getData(Origin origin, Slice slice = Slice())
bool setData(const void *src, Slice slice = Slice(), uint32_t alignment = 1, size_t stride = 0)
bool getData(void *dest, Slice slice = Slice(), uint32_t alignment = 1, size_t stride = 0) const

Memory usage.

size_t getMemory() const

Enums

Type

Image types.

NameValue
TypeUnknown0
Type2D1
Type3D2
TypeCube3
NumTypes4

Flags

Image flags.

NameValueDescription
FlagNone0
FlagMipmaps(1 << 0)Create mipmaps.
FlagNoClear(1 << 1)Do not clear.
FlagNoAllocate(1 << 2)Do not allocate.
FlagFast(1 << 3)Fast compression.
FlagBest(1 << 4)Best compression.
FlagPerceptual(1 << 5)Perceptual block encoding.
FlagPanorama(1 << 6)Cube to panorama type conversion.
FlagNormalize(1 << 7)Normalize format conversion.
FlagGamma(1 << 8)Gamma format conversion.
FlagSRGB(1 << 9)SRGB format conversion.
NumFlags10

Filter

Image filters.

NameValueDescription
FilterUnknown0
FilterPoint1Point filter.
FilterLinear2Linear magnification filter.
FilterCubic3Cubic magnification filter.
FilterSinc4Sinc minification filter.
FilterBox5Box minification filter.
FilterMax6Max minification filter.
FilterMin7Min minification filter.
FilterMip8Mip minification filter.
FilterCR9Catmull-Rom filter.
NumFilters10