SourcePP
Several modern C++20 libraries for sanely parsing Valve's formats.
Toggle main menu visibility
Loading...
Searching...
No Matches
PPL.h
Go to the documentation of this file.
1
#pragma once
2
3
#include <filesystem>
4
#include <cstddef>
5
#include <optional>
6
#include <span>
7
#include <unordered_map>
8
#include <vector>
9
10
#include "
ImageConversion.h
"
11
12
namespace
vtfpp
{
13
14
class
PPL
{
15
public
:
16
struct
Image
{
17
uint32_t
width
;
18
uint32_t
height
;
19
std::vector<std::byte>
data
;
20
};
21
22
explicit
PPL
(uint32_t modelChecksum,
ImageFormat
format_ =
ImageFormat::RGB888
, uint32_t version_ = 0);
23
24
explicit
PPL
(std::span<const std::byte> pplData);
25
26
explicit
PPL
(
const
std::filesystem::path& pplPath);
27
28
[[nodiscard]]
explicit
operator
bool()
const
;
29
30
[[nodiscard]] uint32_t
getVersion
()
const
;
31
32
void
setVersion
(uint32_t newVersion);
33
34
[[nodiscard]] uint32_t
getModelChecksum
()
const
;
35
36
void
setModelChecksum
(uint32_t newChecksum);
37
38
[[nodiscard]]
ImageFormat
getFormat
()
const
;
39
40
void
setFormat
(
ImageFormat
newFormat,
float
quality =
ImageConversion::DEFAULT_COMPRESSED_QUALITY
);
41
42
[[nodiscard]]
bool
hasImageForLOD
(uint32_t lod)
const
;
43
44
[[nodiscard]] std::vector<uint32_t>
getImageLODs
()
const
;
45
46
[[nodiscard]]
const
Image
*
getImageRaw
(uint32_t lod = 0)
const
;
47
48
[[nodiscard]] std::optional<Image>
getImageAs
(
ImageFormat
newFormat, uint32_t lod = 0)
const
;
49
50
[[nodiscard]] std::optional<Image>
getImageAsRGB888
(uint32_t lod = 0)
const
;
51
52
bool
setImage
(std::span<const std::byte> imageData,
ImageFormat
format_, uint32_t width, uint32_t height, uint32_t lod = 0,
float
quality =
ImageConversion::DEFAULT_COMPRESSED_QUALITY
);
53
54
bool
setImage
(std::span<const std::byte> imageData,
ImageFormat
format_, uint32_t width, uint32_t height, uint32_t resizedWidth, uint32_t resizedHeight, uint32_t lod = 0,
bool
premultipliedAlpha =
false
,
ImageConversion::ResizeFilter
filter =
ImageConversion::ResizeFilter::DEFAULT
,
float
quality =
ImageConversion::DEFAULT_COMPRESSED_QUALITY
);
55
56
bool
setImage
(
const
std::filesystem::path& imagePath, uint32_t lod = 0,
float
quality =
ImageConversion::DEFAULT_COMPRESSED_QUALITY
);
57
58
bool
setImage
(
const
std::filesystem::path& imagePath, uint32_t resizedWidth, uint32_t resizedHeight, uint32_t lod = 0,
bool
premultipliedAlpha =
false
,
ImageConversion::ResizeFilter
filter =
ImageConversion::ResizeFilter::DEFAULT
,
float
quality =
ImageConversion::DEFAULT_COMPRESSED_QUALITY
);
59
60
bool
removeImage
(uint32_t lod);
61
62
[[nodiscard]] std::vector<std::byte>
saveImageToFile
(uint32_t lod = 0,
ImageConversion::FileFormat
fileFormat =
ImageConversion::FileFormat::DEFAULT
)
const
;
63
64
bool
saveImageToFile
(
const
std::filesystem::path& imagePath, uint32_t lod = 0,
ImageConversion::FileFormat
fileFormat =
ImageConversion::FileFormat::DEFAULT
)
const
;
// NOLINT(*-use-nodiscard)
65
66
[[nodiscard]] std::vector<std::byte>
bake
();
67
68
bool
bake
(
const
std::filesystem::path& pplPath);
69
70
protected
:
71
uint32_t
version
{};
72
uint32_t
checksum
{};
73
ImageFormat
format
{};
74
75
std::unordered_map<uint32_t, Image>
images
;
76
};
77
78
}
// namespace vtfpp
ImageConversion.h
vtfpp::PPL::format
ImageFormat format
Definition
PPL.h:73
vtfpp::PPL::getFormat
ImageFormat getFormat() const
Definition
PPL.cpp:60
vtfpp::PPL::getImageRaw
const Image * getImageRaw(uint32_t lod=0) const
Definition
PPL.cpp:80
vtfpp::PPL::saveImageToFile
std::vector< std::byte > saveImageToFile(uint32_t lod=0, ImageConversion::FileFormat fileFormat=ImageConversion::FileFormat::DEFAULT) const
Definition
PPL.cpp:174
vtfpp::PPL::getImageAsRGB888
std::optional< Image > getImageAsRGB888(uint32_t lod=0) const
Definition
PPL.cpp:99
vtfpp::PPL::hasImageForLOD
bool hasImageForLOD(uint32_t lod) const
Definition
PPL.cpp:71
vtfpp::PPL::bake
std::vector< std::byte > bake()
Definition
PPL.cpp:188
vtfpp::PPL::checksum
uint32_t checksum
Definition
PPL.h:72
vtfpp::PPL::getVersion
uint32_t getVersion() const
Definition
PPL.cpp:44
vtfpp::PPL::version
uint32_t version
Definition
PPL.h:71
vtfpp::PPL::removeImage
bool removeImage(uint32_t lod)
Definition
PPL.cpp:166
vtfpp::PPL::images
std::unordered_map< uint32_t, Image > images
Definition
PPL.h:75
vtfpp::PPL::setFormat
void setFormat(ImageFormat newFormat, float quality=ImageConversion::DEFAULT_COMPRESSED_QUALITY)
Definition
PPL.cpp:64
vtfpp::PPL::PPL
PPL(uint32_t modelChecksum, ImageFormat format_=ImageFormat::RGB888, uint32_t version_=0)
Definition
PPL.cpp:10
vtfpp::PPL::getImageAs
std::optional< Image > getImageAs(ImageFormat newFormat, uint32_t lod=0) const
Definition
PPL.cpp:87
vtfpp::PPL::getImageLODs
std::vector< uint32_t > getImageLODs() const
Definition
PPL.cpp:75
vtfpp::PPL::setVersion
void setVersion(uint32_t newVersion)
Definition
PPL.cpp:48
vtfpp::PPL::setImage
bool setImage(std::span< const std::byte > imageData, ImageFormat format_, uint32_t width, uint32_t height, uint32_t lod=0, float quality=ImageConversion::DEFAULT_COMPRESSED_QUALITY)
Definition
PPL.cpp:103
vtfpp::PPL::getModelChecksum
uint32_t getModelChecksum() const
Definition
PPL.cpp:52
vtfpp::PPL::setModelChecksum
void setModelChecksum(uint32_t newChecksum)
Definition
PPL.cpp:56
vtfpp::ImageConversion::DEFAULT_COMPRESSED_QUALITY
constexpr float DEFAULT_COMPRESSED_QUALITY
Definition
ImageConversion.h:17
vtfpp::ImageConversion::ResizeFilter
ResizeFilter
Definition
ImageConversion.h:78
vtfpp::ImageConversion::ResizeFilter::DEFAULT
@ DEFAULT
Definition
ImageConversion.h:80
vtfpp::ImageConversion::FileFormat
FileFormat
Definition
ImageConversion.h:44
vtfpp::ImageConversion::FileFormat::DEFAULT
@ DEFAULT
Definition
ImageConversion.h:45
vtfpp
Definition
DistanceMapping.h:8
vtfpp::ImageFormat
ImageFormat
Definition
ImageFormats.h:13
vtfpp::ImageFormat::RGB888
@ RGB888
Definition
ImageFormats.h:17
vtfpp::PPL::Image
Definition
PPL.h:16
vtfpp::PPL::Image::width
uint32_t width
Definition
PPL.h:17
vtfpp::PPL::Image::height
uint32_t height
Definition
PPL.h:18
vtfpp::PPL::Image::data
std::vector< std::byte > data
Definition
PPL.h:19
include
vtfpp
PPL.h
Generated on
for SourcePP by
1.17.0