VTFParser
Simple and modern library for parsing the Valve Texture Format
Loading...
Searching...
No Matches
vtf.hpp
1#pragma once
2
3#include "file-format-objects/header.hpp"
4#include <cstdint>
5#include <memory>
6#include <span>
7#include <vector>
8
9namespace VtfParser {
13 class Vtf {
14 public:
22 uint8_t width;
26 uint8_t height;
27 };
28
36 uint16_t width;
40 uint16_t height;
44 uint16_t depth;
45 };
46
51 explicit Vtf(std::shared_ptr<std::vector<std::byte>> data);
52
57 [[nodiscard]] ImageFormat getHighResImageFormat() const;
58
64 [[nodiscard]] HighResImageExtent getHighResImageExtent(uint8_t mipLevel = 0) const;
65
70 [[nodiscard]] uint8_t getFaces() const;
71
76 [[nodiscard]] uint8_t getMipLevels() const;
77
82 [[nodiscard]] uint16_t getFrames() const;
87 [[nodiscard]] uint16_t getFirstFrame() const;
88
93 [[nodiscard]] std::span<const std::byte> getHighResImageData() const;
94
105 [[nodiscard]] size_t getImageSliceOffset(
106 const uint8_t mipLevel = 0, const uint16_t frame = 0, const uint8_t face = 0, const uint16_t depth = 0
107 ) const;
108
114 [[nodiscard]] ImageFormat getLowResImageFormat() const;
115
121 [[nodiscard]] LowResImageExtent getLowResImageExtent() const;
122
127 [[nodiscard]] std::span<const std::byte> getLowResImageData() const;
128
129 private:
130 Header header;
131
132 std::shared_ptr<std::vector<std::byte>> data;
133 std::span<const std::byte> highResImageData;
134 std::span<const std::byte> lowResImageData;
135 };
136}
Definition: vtf.hpp:13
LowResImageExtent getLowResImageExtent() const
Definition: vtf.cpp:248
ImageFormat getHighResImageFormat() const
Definition: vtf.cpp:176
uint16_t getFrames() const
Definition: vtf.cpp:200
std::span< const std::byte > getHighResImageData() const
Definition: vtf.cpp:208
uint8_t getMipLevels() const
Definition: vtf.cpp:196
std::span< const std::byte > getLowResImageData() const
Definition: vtf.cpp:255
HighResImageExtent getHighResImageExtent(uint8_t mipLevel=0) const
Definition: vtf.cpp:180
uint8_t getFaces() const
Definition: vtf.cpp:188
size_t getImageSliceOffset(const uint8_t mipLevel=0, const uint16_t frame=0, const uint8_t face=0, const uint16_t depth=0) const
Definition: vtf.cpp:212
uint16_t getFirstFrame() const
Definition: vtf.cpp:204
ImageFormat getLowResImageFormat() const
Definition: vtf.cpp:244
Definition: VTFParser.hpp:6
ImageFormat
Definition: enums.hpp:10
Definition: header.hpp:125
uint16_t depth
Definition: vtf.hpp:44
uint16_t height
Definition: vtf.hpp:40
uint16_t width
Definition: vtf.hpp:36
Definition: vtf.hpp:18
uint8_t width
Definition: vtf.hpp:22
uint8_t height
Definition: vtf.hpp:26