Torch
Loading...
Searching...
No Matches
BKTexture.h
1#pragma once
2
3#include "BKImage.h"
4#include "utils/TextureUtils.h"
5
6#include <cstddef>
7#include <cstdint>
8#include <string>
9#include <vector>
10
11namespace BK64 {
12
13// A texel format sprites or models use, by the name Torch's texture yaml gives it.
15 const char* name;
16 int bits;
17 TextureType texture;
18};
19
20const TexelFormat* FindTexelFormat(const std::string& name);
21// A BKTextureInfo type, by its lowest bit set.
22const TexelFormat* ModelTextureFormat(uint16_t type);
23
24bool IsIndexed(const TexelFormat& format);
25size_t TlutColors(const TexelFormat& format);
26size_t TexelBytes(const TexelFormat& format, int width, int height);
27uint32_t ReadTexel(const TexelFormat& format, const std::vector<uint8_t>& texels, size_t i);
28void WriteTexel(const TexelFormat& format, std::vector<uint8_t>& texels, size_t i, uint32_t value);
29void TexelRgba(const TexelFormat& format, uint32_t value, const std::vector<uint8_t>& tlut, uint8_t* out);
30bool OpaqueTexel(const TexelFormat& format, uint32_t value, const std::vector<uint8_t>& tlut);
31// For CI it also fills the TLUT, from the image's own palette when that fits.
32std::vector<uint32_t> ImageTexels(const TexelFormat& format, const RgbaImage& image, const IndexedImage* source,
33 std::vector<uint8_t>& tlut);
34
35RgbaImage TexelsImage(const TexelFormat& format, int width, int height, const std::vector<uint8_t>& texels,
36 const std::vector<uint8_t>& tlut);
37// CI keeps its TLUT as the palette, I goes gray and IA gray with alpha. A value under 0 is a pixel left clear.
38std::vector<uint8_t> TexelsPng(const TexelFormat& format, const std::vector<int64_t>& values, int width, int height,
39 const std::vector<uint8_t>& tlut);
40
41std::vector<uint8_t> TextureResource(const TexelFormat& format, uint32_t width, uint32_t height,
42 const std::vector<uint8_t>& data);
43// RGBA16, its colors wide and one high.
44std::vector<uint8_t> TlutResource(const std::vector<uint8_t>& tlut);
45// format is null for a type no sprite or model uses.
46bool ReadTextureResource(const std::vector<uint8_t>& resource, const TexelFormat*& format, uint32_t& width,
47 uint32_t& height, std::vector<uint8_t>& data);
48
49} // namespace BK64
Definition BKImage.h:27
Definition BKImage.h:10
Definition BKTexture.h:14