SourcePP
Several modern C++20 libraries for sanely parsing Valve's formats.
Loading...
Searching...
No Matches
TTX.h
Go to the documentation of this file.
1#pragma once
2
3#include <tuple>
4
5#include "VTF.h"
6
7namespace vtfpp {
8
10
11class TTX {
12public:
13 explicit TTX(VTF&& vtf_);
14
15 explicit TTX(std::span<const std::byte> tthData, std::span<const std::byte> ttzData = {});
16
17 explicit TTX(const std::string& tthPath, const std::string& ttzPath = "");
18
19 [[nodiscard]] explicit operator bool() const;
20
21 [[nodiscard]] uint8_t getMajorVersion() const;
22
23 [[nodiscard]] uint8_t getMinorVersion() const;
24
25 void setVersion(uint8_t newMajorVersion, uint8_t newMinorVersion);
26
27 void setMajorVersion(uint8_t newMajorVersion);
28
29 void setMinorVersion(uint8_t newMinorVersion);
30
31 [[nodiscard]] uint8_t getAspectRatioType() const;
32
33 void setAspectRatioType(uint8_t newAspectRatioType);
34
35 [[nodiscard]] const std::vector<uint64_t>& getMipFlags() const;
36
37 [[nodiscard]] std::vector<uint64_t>& getMipFlags();
38
39 [[nodiscard]] const VTF& getVTF() const;
40
41 [[nodiscard]] VTF& getVTF();
42
43 [[nodiscard]] int16_t getCompressionLevel() const;
44
45 void setCompressionLevel(int16_t newCompressionLevel);
46
47 [[nodiscard]] std::pair<std::vector<std::byte>, std::vector<std::byte>> bake() const;
48
49 bool bake(const std::string& tthPath, const std::string& ttzPath) const; // NOLINT(*-use-nodiscard)
50
51protected:
52 bool opened = false;
53 int16_t compressionLevel = -1;
54
56
57 uint8_t majorVersion = 1;
58 uint8_t minorVersion = 0;
59 uint8_t aspectRatioType{};
60 std::vector<uint64_t> mipFlags;
61};
62
63} // namespace vtfpp
Definition: TTX.h:11
const VTF & getVTF() const
Definition: TTX.cpp:105
const std::vector< uint64_t > & getMipFlags() const
Definition: TTX.cpp:97
uint8_t getMinorVersion() const
Definition: TTX.cpp:72
std::vector< uint64_t > mipFlags
Definition: TTX.h:60
uint8_t aspectRatioType
Definition: TTX.h:59
VTF vtf
Definition: TTX.h:55
bool opened
Definition: TTX.h:52
uint8_t minorVersion
Definition: TTX.h:58
uint8_t getMajorVersion() const
Definition: TTX.cpp:68
uint8_t getAspectRatioType() const
Definition: TTX.cpp:89
void setVersion(uint8_t newMajorVersion, uint8_t newMinorVersion)
Definition: TTX.cpp:76
void setMinorVersion(uint8_t newMinorVersion)
Definition: TTX.cpp:85
int16_t getCompressionLevel() const
Definition: TTX.cpp:113
void setAspectRatioType(uint8_t newAspectRatioType)
Definition: TTX.cpp:93
std::pair< std::vector< std::byte >, std::vector< std::byte > > bake() const
Definition: TTX.cpp:121
void setCompressionLevel(int16_t newCompressionLevel)
Definition: TTX.cpp:117
int16_t compressionLevel
Definition: TTX.h:53
void setMajorVersion(uint8_t newMajorVersion)
Definition: TTX.cpp:81
uint8_t majorVersion
Definition: TTX.h:57
consteval uint32_t makeFourCC(const char fourCC[4])
Creates a FourCC identifier from a string of 4 characters.
Definition: Binary.h:18
constexpr uint32_t TTH_SIGNATURE
Definition: TTX.h:9