Olympe Engine 2.0
2D Game Engine with ECS Architecture
Loading...
Searching...
No Matches
TiledDecoder.h
Go to the documentation of this file.
1/*
2 * TiledDecoder.h - Base64 and compression utilities for Tiled tile data
3 *
4 * Handles decoding of tile layer data encoded as:
5 * - Base64 strings (with optional gzip/zlib compression)
6 * - CSV arrays
7 *
8 * Extracts tile IDs and flip flags from encoded data.
9 */
10
11#pragma once
12
13#include <string>
14#include <vector>
15#include <cstdint>
16
17#define MINIZ_NO_DLLIMPORT
18
19namespace Olympe {
20namespace Tiled {
21
23 {
24 public:
25 // Decode base64 string to raw bytes
26 static std::vector<uint8_t> DecodeBase64(const std::string& encoded);
27
28 // Decompress gzip data
29 static std::vector<uint8_t> DecompressGzip(const std::vector<uint8_t>& compressed);
30
31 // Decompress zlib data
32 static std::vector<uint8_t> DecompressZlib(const std::vector<uint8_t>& compressed);
33
34 // Convert raw bytes to uint32 tile IDs (little-endian)
35 static std::vector<uint32_t> BytesToTileIds(const std::vector<uint8_t>& bytes);
36
37 // Parse CSV string to tile IDs
38 static std::vector<uint32_t> ParseCSV(const std::string& csv);
39
40 // Complete decode pipeline: base64 -> decompress -> tile IDs
41 static std::vector<uint32_t> DecodeTileData(
42 const std::string& data,
43 const std::string& encoding,
44 const std::string& compression);
45
46 private:
47 static const std::string base64_chars;
48 static inline bool IsBase64(unsigned char c)
49 {
50 return (isalnum(c) || (c == '+') || (c == '/'));
51 }
52 };
53
54} // namespace Tiled
55} // namespace Olympe
ComponentTypeID GetComponentTypeID_Static()
Definition ECS_Entity.h:56
static std::vector< uint8_t > DecodeBase64(const std::string &encoded)
static const std::string base64_chars
static bool IsBase64(unsigned char c)
static std::vector< uint32_t > DecodeTileData(const std::string &data, const std::string &encoding, const std::string &compression)
static std::vector< uint8_t > DecompressGzip(const std::vector< uint8_t > &compressed)
static std::vector< uint32_t > ParseCSV(const std::string &csv)
static std::vector< uint32_t > BytesToTileIds(const std::vector< uint8_t > &bytes)
static std::vector< uint8_t > DecompressZlib(const std::vector< uint8_t > &compressed)