![]() |
SourcePP
Several modern C++20 libraries for sanely parsing Valve's formats.
|
Classes | |
| struct | ResizeBounds |
Enumerations | |
| enum class | FileFormat { DEFAULT = 0 , PNG = 1 , JPG = 2 , BMP = 3 , TGA = 4 , HDR = 7 } |
| enum class | ResizeEdge { CLAMP = 0 , REFLECT , WRAP , ZERO } |
| enum class | ResizeFilter { DEFAULT = 0 , BOX , BILINEAR , CUBIC_BSPLINE , CATMULL_ROM , MITCHELL , POINT_SAMPLE , KAISER = 100 , NICE = 101 } |
| enum class | ResizeMethod { NONE , POWER_OF_TWO_BIGGER , POWER_OF_TWO_SMALLER , POWER_OF_TWO_NEAREST } |
Functions | |
| std::vector< std::byte > | convertImageDataToFormat (std::span< const std::byte > imageData, ImageFormat oldFormat, ImageFormat newFormat, uint16_t width, uint16_t height, float quality=DEFAULT_COMPRESSED_QUALITY) |
| Converts an image from one format to another. | |
| std::vector< std::byte > | convertSeveralImageDataToFormat (std::span< const std::byte > imageData, ImageFormat oldFormat, ImageFormat newFormat, uint8_t mipCount, uint16_t frameCount, uint8_t faceCount, uint16_t width, uint16_t height, uint16_t depth, float quality=DEFAULT_COMPRESSED_QUALITY) |
| Converts several images from one format to another. | |
| std::array< std::vector< std::byte >, 6 > | convertHDRIToCubeMap (std::span< const std::byte > imageData, ImageFormat format, uint16_t width, uint16_t height, uint16_t resolution=0, bool bilinear=true) |
| Converts an HDRI into a cubemap. | |
| FileFormat | getDefaultFileFormatForImageFormat (ImageFormat format) |
| PNG for integer formats, EXR for floating point formats (or HDR if EXR support is disabled). | |
| std::vector< std::byte > | convertImageDataToFile (std::span< const std::byte > imageData, ImageFormat format, uint16_t width, uint16_t height, FileFormat fileFormat=FileFormat::DEFAULT) |
| Converts image data to the given file format (PNG or EXR by default). | |
| std::vector< std::byte > | convertFileToImageData (std::span< const std::byte > fileData, ImageFormat &format, int &width, int &height, int &frameCount) |
| uint16_t | getResizedDim (uint16_t n, ResizeMethod method) |
| Get the new image size given a resize method. | |
| void | setResizedDims (uint16_t &width, ResizeMethod widthResize, uint16_t &height, ResizeMethod heightResize) |
| Set the new image dimensions given a resize method. | |
| std::vector< std::byte > | resizeImageData (std::span< const std::byte > imageData, ImageFormat format, uint16_t width, uint16_t newWidth, uint16_t height, uint16_t newHeight, bool srgb, ResizeFilter filter, ResizeEdge edge=ResizeEdge::CLAMP) |
| Resize given image data to the new dimensions. | |
| std::vector< std::byte > | resizeImageDataStrict (std::span< const std::byte > imageData, ImageFormat format, uint16_t width, uint16_t newWidth, uint16_t &widthOut, ResizeMethod widthResize, uint16_t height, uint16_t newHeight, uint16_t &heightOut, ResizeMethod heightResize, bool srgb, ResizeFilter filter, ResizeEdge edge=ResizeEdge::CLAMP) |
| Resize given image data to the new dimensions, where the new width and height are governed by the resize methods. | |
| std::vector< std::byte > | cropImageData (std::span< const std::byte > imageData, ImageFormat format, uint16_t width, uint16_t newWidth, uint16_t xOffset, uint16_t height, uint16_t newHeight, uint16_t yOffset) |
| Crops the given image to the new dimensions. If the image format is compressed it will be converted to its container format before the crop, and converted back before returning. | |
| std::vector< std::byte > | padImageData (std::span< const std::byte > imageData, ImageFormat format, uint16_t width, uint16_t widthPad, uint16_t height, uint16_t heightPad) |
| Pad the given image with pixels that are the same color as the edge. Padding is applied to the right and bottom of the image. | |
| std::vector< std::byte > | gammaCorrectImageData (std::span< const std::byte > imageData, ImageFormat format, uint16_t width, uint16_t height, float gamma) |
| Perform gamma correction on the given image data. Will not perform gamma correction if the input image format is large, console, P8, A8, UV88, UVLX8888, or UVWQ8888. | |
| std::vector< std::byte > | invertGreenChannelForImageData (std::span< const std::byte > imageData, ImageFormat format, uint16_t width, uint16_t height) |
| Invert the green channel. Meant for converting normal maps between OpenGL and DirectX formats. | |
Variables | |
| constexpr float | DEFAULT_COMPRESSED_QUALITY = -1.f |
|
strong |
| Enumerator | |
|---|---|
| DEFAULT | |
| PNG | |
| JPG | |
| BMP | |
| TGA | |
| HDR | |
Definition at line 31 of file ImageConversion.h.
|
strong |
| Enumerator | |
|---|---|
| CLAMP | |
| REFLECT | |
| WRAP | |
| ZERO | |
Definition at line 57 of file ImageConversion.h.
|
strong |
| Enumerator | |
|---|---|
| DEFAULT | |
| BOX | |
| BILINEAR | |
| CUBIC_BSPLINE | |
| CATMULL_ROM | |
| MITCHELL | |
| POINT_SAMPLE | |
| KAISER | |
| NICE | Valve NICE filtering, equivalent to Lanczos-3. |
Definition at line 65 of file ImageConversion.h.
|
strong |
| Enumerator | |
|---|---|
| NONE | |
| POWER_OF_TWO_BIGGER | |
| POWER_OF_TWO_SMALLER | |
| POWER_OF_TWO_NEAREST | |
Definition at line 81 of file ImageConversion.h.
|
nodiscard |
Definition at line 1440 of file ImageConversion.cpp.
|
nodiscard |
Converts an HDRI into a cubemap.
The output image data is in the same image format as the input. The output images have the following order: front, back, left, right, down, up. Resolution is the output size (width, height) of each image slice. 0 leaves it at the input size, the height of the HDRI. Fails (returns empty vectors) if the input data is empty, the given width is not 2x the height, or an error was encountered.
Definition at line 1013 of file ImageConversion.cpp.
|
nodiscard |
Converts image data to the given file format (PNG or EXR by default).
Definition at line 1145 of file ImageConversion.cpp.
|
nodiscard |
Converts an image from one format to another.
Definition at line 905 of file ImageConversion.cpp.
|
nodiscard |
Converts several images from one format to another.
Definition at line 985 of file ImageConversion.cpp.
|
nodiscard |
Crops the given image to the new dimensions. If the image format is compressed it will be converted to its container format before the crop, and converted back before returning.
Definition at line 2087 of file ImageConversion.cpp.
|
nodiscard |
Perform gamma correction on the given image data. Will not perform gamma correction if the input image format is large, console, P8, A8, UV88, UVLX8888, or UVWQ8888.
Definition at line 2143 of file ImageConversion.cpp.
|
nodiscard |
PNG for integer formats, EXR for floating point formats (or HDR if EXR support is disabled).
Definition at line 1136 of file ImageConversion.cpp.
|
nodiscard |
Get the new image size given a resize method.
Definition at line 1985 of file ImageConversion.cpp.
|
nodiscard |
Invert the green channel. Meant for converting normal maps between OpenGL and DirectX formats.
Definition at line 2249 of file ImageConversion.cpp.
|
nodiscard |
Pad the given image with pixels that are the same color as the edge. Padding is applied to the right and bottom of the image.
Definition at line 2106 of file ImageConversion.cpp.
|
nodiscard |
Resize given image data to the new dimensions.
Definition at line 2000 of file ImageConversion.cpp.
|
nodiscard |
Resize given image data to the new dimensions, where the new width and height are governed by the resize methods.
Definition at line 2077 of file ImageConversion.cpp.
| void vtfpp::ImageConversion::setResizedDims | ( | uint16_t & | width, |
| ResizeMethod | widthResize, | ||
| uint16_t & | height, | ||
| ResizeMethod | heightResize ) |
Set the new image dimensions given a resize method.
Definition at line 1995 of file ImageConversion.cpp.
|
constexpr |
Definition at line 17 of file ImageConversion.h.