Torch
Loading...
Searching...
No Matches
BackgroundFactory.h
1#pragma once
2
3#include "factories/BaseFactory.h"
4#include "utils/TextureUtils.h"
5
6// Parsed background data: raster (CI8) + palette(s) + metadata
7struct PM64BackgroundData : public IParsedData {
8 uint16_t width;
9 uint16_t height;
10 uint16_t startX;
11 uint16_t startY;
12 uint32_t palCount;
13 std::vector<uint8_t> raster; // CI8 pixel indices
14 std::vector<std::vector<uint8_t>> palettes; // Each palette is 512 bytes (256 × RGBA16)
15
16 PM64BackgroundData(uint16_t w, uint16_t h, uint16_t sx, uint16_t sy, std::vector<uint8_t> raster,
17 std::vector<std::vector<uint8_t>> palettes)
18 : width(w), height(h), startX(sx), startY(sy), palCount(palettes.size()), raster(std::move(raster)),
19 palettes(std::move(palettes)) {
20 }
21};
22
24 ExportResult Export(std::ostream& write, std::shared_ptr<IParsedData> data, std::string& entryName, YAML::Node& node, std::string* replacement) override;
25};
26
28 ExportResult Export(std::ostream& write, std::shared_ptr<IParsedData> data, std::string& entryName, YAML::Node& node, std::string* replacement) override;
29};
30
32public:
33 std::optional<std::shared_ptr<IParsedData>> parse(std::vector<uint8_t>& buffer, YAML::Node& data) override;
34 inline std::unordered_map<ExportType, std::shared_ptr<BaseExporter>> GetExporters() override {
35 return {
36 REGISTER(Header, PM64BackgroundHeaderExporter)
37 REGISTER(Binary, PM64BackgroundBinaryExporter)
38 };
39 }
40};
Definition BaseFactory.h:96
Definition BaseFactory.h:102
Definition BaseFactory.h:88
Definition BackgroundFactory.h:23
Definition BackgroundFactory.h:31
Definition BackgroundFactory.h:27