SourcePP
Several modern C++20 libraries for sanely parsing Valve's formats.
Loading...
Searching...
No Matches
PSFrames.h
Go to the documentation of this file.
1#pragma once
2
3#include <filesystem>
4#include <span>
5#include <vector>
6
8
9namespace vtfpp {
10
12class PSFrames {
13protected:
14 struct Frame {
15 //uint16_t palettePixelCount;
16 //uint16_t palettePixelBits;
17 uint16_t width;
18 uint16_t height;
19 //uint8_t paletteIndexBits;
20 //uint16_t decodedPixelBits;
21
22 std::span<std::byte> paletteData;
23 std::span<std::byte> imageData;
24 };
25
26public:
27 explicit PSFrames(std::vector<std::byte>&& psFramesData);
28
29 explicit PSFrames(std::span<const std::byte> psFramesData);
30
31 explicit PSFrames(const std::filesystem::path& psFramesPath);
32
33 [[nodiscard]] explicit operator bool() const;
34
35 [[nodiscard]] uint32_t getFrameCount() const;
36
37 [[nodiscard]] uint32_t getFPS() const;
38
39 [[nodiscard]] uint16_t getWidth(uint32_t frame) const;
40
41 [[nodiscard]] uint16_t getHeight(uint32_t frame) const;
42
43 [[nodiscard]] std::span<const std::byte> getPaletteDataRaw(uint32_t frame) const;
44
45 [[nodiscard]] std::span<std::byte> getPaletteDataRaw(uint32_t frame);
46
47 [[nodiscard]] std::vector<std::byte> getPaletteDataAs(ImageFormat newFormat, uint32_t frame) const;
48
49 [[nodiscard]] std::span<const std::byte> getImageDataRaw(uint32_t frame) const;
50
51 [[nodiscard]] std::span<std::byte> getImageDataRaw(uint32_t frame);
52
53 [[nodiscard]] std::vector<std::byte> getImageDataAs(ImageFormat newFormat, uint32_t frame) const;
54
55 [[nodiscard]] std::vector<std::byte> getImageDataAsBGR888(uint32_t frame) const;
56
57protected:
58 bool opened;
59
60 uint32_t frameCount = 0;
61 uint32_t fps = 0;
62
63 std::vector<std::byte> data;
64 std::vector<Frame> frames;
65};
66
67} // namespace vtfpp
uint32_t getFPS() const
Definition PSFrames.cpp:63
uint32_t getFrameCount() const
Definition PSFrames.cpp:59
std::span< const std::byte > getImageDataRaw(uint32_t frame) const
Definition PSFrames.cpp:87
std::vector< std::byte > data
Definition PSFrames.h:63
uint32_t fps
Definition PSFrames.h:61
uint16_t getHeight(uint32_t frame) const
Definition PSFrames.cpp:71
std::span< const std::byte > getPaletteDataRaw(uint32_t frame) const
Definition PSFrames.cpp:75
std::vector< Frame > frames
Definition PSFrames.h:64
std::vector< std::byte > getImageDataAsBGR888(uint32_t frame) const
Definition PSFrames.cpp:100
std::vector< std::byte > getPaletteDataAs(ImageFormat newFormat, uint32_t frame) const
Definition PSFrames.cpp:83
uint16_t getWidth(uint32_t frame) const
Definition PSFrames.cpp:67
std::vector< std::byte > getImageDataAs(ImageFormat newFormat, uint32_t frame) const
Definition PSFrames.cpp:95
PSFrames(std::vector< std::byte > &&psFramesData)
Definition PSFrames.cpp:13
uint32_t frameCount
Definition PSFrames.h:60
std::span< std::byte > paletteData
Definition PSFrames.h:22
std::span< std::byte > imageData
Definition PSFrames.h:23