yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
indexed_png.h
Go to the documentation of this file.
1#ifndef YAZE_UTIL_INDEXED_PNG_H
2#define YAZE_UTIL_INDEXED_PNG_H
3
4#include <array>
5#include <cstdint>
6#include <string>
7#include <vector>
8
9#include "absl/status/statusor.h"
10
11namespace yaze::util {
12
21struct PngImage {
22 int width = 0;
23 int height = 0;
24 bool indexed = false;
25 // indexed: one palette index per pixel.
26 std::vector<uint8_t> indices;
27 // indexed: PLTE entries with tRNS alpha (255 when absent).
28 std::vector<std::array<uint8_t, 4>> palette;
29 // not indexed: 4 bytes (RGBA) per pixel.
30 std::vector<uint8_t> rgba;
31};
32
35absl::StatusOr<std::vector<uint8_t>> EncodeIndexedPng(
36 int width, int height, const std::vector<uint8_t>& indices,
37 const std::vector<std::array<uint8_t, 4>>& palette);
38
39absl::StatusOr<PngImage> DecodePng(const std::vector<uint8_t>& bytes);
40
41absl::StatusOr<std::vector<uint8_t>> ReadBinaryFile(const std::string& path);
42absl::Status WriteBinaryFile(const std::string& path,
43 const std::vector<uint8_t>& bytes);
44
45} // namespace yaze::util
46
47#endif // YAZE_UTIL_INDEXED_PNG_H
absl::Status WriteBinaryFile(const std::string &path, const std::vector< uint8_t > &bytes)
absl::StatusOr< std::vector< uint8_t > > ReadBinaryFile(const std::string &path)
absl::StatusOr< std::vector< uint8_t > > EncodeIndexedPng(int width, int height, const std::vector< uint8_t > &indices, const std::vector< std::array< uint8_t, 4 > > &palette)
absl::StatusOr< PngImage > DecodePng(const std::vector< uint8_t > &bytes)
A decoded PNG: palette indices for indexed files, RGBA otherwise.
Definition indexed_png.h:21
std::vector< std::array< uint8_t, 4 > > palette
Definition indexed_png.h:28
std::vector< uint8_t > indices
Definition indexed_png.h:26
std::vector< uint8_t > rgba
Definition indexed_png.h:30