LibTMJ 1.4.0
A library for loading JSON Tiled maps
Loading...
Searching...
No Matches
tmj.h
Go to the documentation of this file.
1#ifndef LIBTMJ_API
2#define LIBTMJ_API
3
4#include <stdbool.h>
5#include <stdint.h>
6
7#include <jansson.h>
8
9#ifdef __cplusplus
10extern "C" {
11#endif
12
24typedef struct Property {
25 char* name;
27 char* type;
28
29 union {
37 };
39
43typedef struct Chunk {
44 int height;
45 int width;
46 int x;
47 int y;
48
50 size_t data_count;
51
52 union {
53 char* data_str;
54 unsigned int* data_uint;
55 };
57
61typedef struct Point {
62 double x;
63 double y;
65
69typedef struct Text {
70 bool bold;
71 bool italic;
72 bool kerning;
75 bool wrap;
76
77 char* color;
79 char* halign;
80 char* text;
81 char* valign;
82
85
89typedef struct Object {
90 bool ellipse;
91 bool point;
92 bool visible;
93
94 char* name;
95 char* template;
96 char* type; // Optional
97
98 int gid;
99 int id;
100
101 double height;
102 double rotation;
103 double width;
104 double x;
105 double y;
106
108
109 union {
112 };
113 union {
116 };
117
120
123
127typedef struct Layer {
128 bool locked;
129 bool repeatx; // Imagelayer only
130 bool repeaty; // Imagelayer only
132
133 char* class; // Optional
134 char* compression; // tilelayer only
135 char* draworder; // objectgroup only
136 char* encoding; // tilelayer only
137 char* image; // imagelayer only
138 char* name;
139 char* tintcolor; // Optional
140 char* transparentcolor; // Optional, imagelayer only
141 char* type;
142
145 union {
146 unsigned int* data_uint;
147 char* data_str;
148 }; // tilelayer only
149
150 int height; // tilelayer only
151 int id;
152 int imageheight; // imagelayer only
153 int imagewidth; // imagelayer only
156 int width; // tilelayer only
157 int x;
158 int y;
159
160 double offsetx;
161 double offsety;
162 double opacity;
163 double parallaxx;
164 double parallaxy;
165
167 Chunk* chunks; // Optional, tilelayer only
168
170 struct Layer* layers; // group only
171
173 Object* objects; // objectgroup only
174
178
188
192typedef struct Terrain {
193 char* name;
194
195 int tile;
196
200
204typedef struct Frame {
208
212typedef struct Tile {
213 char* image; // Optional
214 char* type; // Optional
215
216 int id;
219 int x;
220 int y;
221 int width;
223
224 double probability; // Optional
225
228
229 int terrain[4]; // Optional
230
233
234 Layer* objectgroup; // Optional
236
240typedef struct WangTile {
242
243 unsigned char wangid[8];
245
249typedef struct WangColor {
250 char* class;
251 char* color;
252 char* name;
253
254 int tile;
255
257
261
265typedef struct WangSet {
266 char* class; // Optional
267 char* name;
268 char* type;
269
270 int tile;
271
274
277
281
285typedef struct Grid {
287
289 int width;
291
295typedef struct TileOffset {
296 int x;
297 int y;
299
305typedef struct Tileset {
310 json_t* root; // NULL for embedded tilesets; only set for external tilesets
311
312 char* backgroundcolor; // Optional
313 char* class; // Optional
314 char* fillmode;
315 char* image;
316 char* name;
318 char* source;
321 char* transparentcolor; // Optional
322 char* type;
323 char* version;
324
334
337
339 Terrain* terrains; // Optional
340
342 Tile* tiles; // Optional
343
346
347 Grid* grid; // Optional
348
349 TileOffset* tileoffset; // Optional
350
353
357typedef struct Map {
362 json_t* root;
363
365
366 char* backgroundcolor; // Optional
367 char* class; // Optional
369 char* renderorder; // Orthogonal maps only
370 char* staggeraxis; // Staggered/hexagonal maps only
371 char* staggerindex; // Staggered/hexagonal maps only
373 char* type;
374 char* version;
375
378 int hexsidelength; // Hexagonal maps only
383 int width;
384
387
388 // Layer tree
391
394
398
402typedef struct ObjectTemplate {
403 char* type;
404
405 Tileset* tileset; // Optional
408
428Map* tmj_map_loadf(const char* path, bool check_extension);
429
446Map* tmj_map_load(const char* map, const char* name);
447
460Tileset* tmj_tileset_loadf(const char* path, bool check_extension);
461
473Tileset* tmj_tileset_load(const char* tileset);
474
484void tmj_map_free(Map* map);
485
493void tmj_tileset_free(Tileset* tileset);
494
505
515void tmj_log_regcb(bool debug, void (*callback)(tmj_log_priority, const char*));
516
518// * @defgroup util Util
519// *
520// * Helper functions.
521// */
522
530extern const unsigned int TMJ_VERSION_MAJOR;
531
539extern const unsigned int TMJ_VERSION_MINOR;
540
548extern const unsigned int TMJ_VERSION_PATCH;
549
556extern const char* const TMJ_VERSION;
557
572uint32_t* tmj_decode_layer(const char* data, const char* encoding, const char* compression, size_t* size);
573
574#ifdef __cplusplus
575}
576#endif
577
578#endif
uint32_t * tmj_decode_layer(const char *data, const char *encoding, const char *compression, size_t *size)
Decodes layer data from a Tiled map layer.
Definition util.c:15
Map * tmj_map_loadf(const char *path, bool check_extension)
Loads the Tiled map from the file at the given path.
Definition map.c:1094
Tileset * tmj_tileset_loadf(const char *path, bool check_extension)
Loads the Tiled tileset at the given path.
Definition tileset.c:588
const char *const TMJ_VERSION
The full library version.
Definition util.c:13
enum TMJ_LOG_PRIORITY tmj_log_priority
void tmj_log_regcb(bool debug, void(*callback)(tmj_log_priority, const char *))
Registers a callback function to handle logging events.
Definition log.c:18
void tmj_map_free(Map *map)
Frees the memory associated with the given map.
Definition map.c:1140
const unsigned int TMJ_VERSION_MINOR
The library minor version.
Definition util.c:11
TMJ_LOG_PRIORITY
Definition tmj.h:498
void tmj_tileset_free(Tileset *tileset)
Frees the memory associated with the given tileset.
Definition tileset.c:671
Tileset * tmj_tileset_load(const char *tileset)
Loads the Tiled tileset from the given JSON object string.
Definition tileset.c:638
Map * tmj_map_load(const char *map, const char *name)
Loads the Tiled map from the given JSON object string.
Definition map.c:1126
const unsigned int TMJ_VERSION_PATCH
The library patch version.
Definition util.c:12
const unsigned int TMJ_VERSION_MAJOR
‍**
Definition util.c:10
@ TMJ_LOG_WARNING
Definition tmj.h:501
@ TMJ_LOG_INFO
Definition tmj.h:500
@ TMJ_LOG_ERR
Definition tmj.h:502
@ TMJ_LOG_DEBUG
Definition tmj.h:499
@ TMJ_LOG_CRIT
Definition tmj.h:503
https://doc.mapeditor.org/en/stable/reference/json-map-format/#chunk
Definition tmj.h:43
int y
Definition tmj.h:47
unsigned int * data_uint
Definition tmj.h:54
int x
Definition tmj.h:46
bool data_is_str
Definition tmj.h:49
char * data_str
Definition tmj.h:53
int width
Definition tmj.h:45
size_t data_count
Definition tmj.h:50
int height
Definition tmj.h:44
https://doc.mapeditor.org/en/stable/reference/json-map-format/#frame
Definition tmj.h:204
int tileid
Definition tmj.h:206
int duration
Definition tmj.h:205
https://doc.mapeditor.org/en/stable/reference/json-map-format/#grid
Definition tmj.h:285
int height
Definition tmj.h:288
int width
Definition tmj.h:289
char * orientation
Definition tmj.h:286
https://doc.mapeditor.org/en/stable/reference/json-map-format/#layer
Definition tmj.h:127
char * encoding
Definition tmj.h:136
int startx
Definition tmj.h:154
unsigned int * data_uint
Definition tmj.h:146
size_t property_count
Definition tmj.h:175
int x
Definition tmj.h:157
char * tintcolor
Definition tmj.h:139
char * draworder
Definition tmj.h:135
Property * properties
Definition tmj.h:176
double offsetx
Definition tmj.h:160
double parallaxy
Definition tmj.h:164
Object * objects
Definition tmj.h:173
char * transparentcolor
Definition tmj.h:140
int imageheight
Definition tmj.h:152
size_t layer_count
Definition tmj.h:169
size_t chunk_count
Definition tmj.h:166
double opacity
Definition tmj.h:162
int starty
Definition tmj.h:155
size_t data_count
Definition tmj.h:144
double parallaxx
Definition tmj.h:163
char * type
Definition tmj.h:141
int height
Definition tmj.h:150
char * image
Definition tmj.h:137
int width
Definition tmj.h:156
char * data_str
Definition tmj.h:147
char * compression
Definition tmj.h:134
bool locked
Definition tmj.h:128
bool repeaty
Definition tmj.h:130
Chunk * chunks
Definition tmj.h:167
bool data_is_str
Definition tmj.h:143
bool repeatx
Definition tmj.h:129
int y
Definition tmj.h:158
struct Layer * layers
Definition tmj.h:170
size_t object_count
Definition tmj.h:172
char * name
Definition tmj.h:138
int imagewidth
Definition tmj.h:153
int id
Definition tmj.h:151
double offsety
Definition tmj.h:161
bool visible
Definition tmj.h:131
https://doc.mapeditor.org/en/stable/reference/json-map-format/#json-map-format
Definition tmj.h:357
int nextlayerid
Definition tmj.h:379
int height
Definition tmj.h:377
char * backgroundcolor
Definition tmj.h:366
char * staggeraxis
Definition tmj.h:370
char * renderorder
Definition tmj.h:369
char * staggerindex
Definition tmj.h:371
Property * properties
Definition tmj.h:393
size_t property_count
Definition tmj.h:392
int hexsidelength
Definition tmj.h:378
double parallaxoriginy
Definition tmj.h:386
json_t * root
The root object returned by jansson after parsing.
Definition tmj.h:362
double parallaxoriginx
Definition tmj.h:385
char * type
Definition tmj.h:373
Layer * layers
Definition tmj.h:390
int compressionlevel
Definition tmj.h:376
char * version
Definition tmj.h:374
char * orientation
Definition tmj.h:368
size_t tileset_count
Definition tmj.h:395
int width
Definition tmj.h:383
bool infinite
Definition tmj.h:364
int tileheight
Definition tmj.h:381
char * tiledversion
Definition tmj.h:372
size_t layer_count
Definition tmj.h:389
int tilewidth
Definition tmj.h:382
Tileset * tilesets
Definition tmj.h:396
int nextobjectid
Definition tmj.h:380
https://doc.mapeditor.org/en/stable/reference/json-map-format/#object-template
Definition tmj.h:402
Tileset * tileset
Definition tmj.h:405
char * type
Definition tmj.h:403
Object * object
Definition tmj.h:406
https://doc.mapeditor.org/en/stable/reference/json-map-format/#object
Definition tmj.h:89
double x
Definition tmj.h:104
char * name
Definition tmj.h:94
double width
Definition tmj.h:103
double y
Definition tmj.h:105
size_t property_count
Definition tmj.h:118
int gid
Definition tmj.h:98
double height
Definition tmj.h:101
Point * polygon
Definition tmj.h:114
bool ellipse
Definition tmj.h:90
int id
Definition tmj.h:99
bool point
Definition tmj.h:91
Text * text
Definition tmj.h:121
bool is_polygon
Definition tmj.h:107
size_t polygon_point_count
Definition tmj.h:110
bool visible
Definition tmj.h:92
char * type
Definition tmj.h:96
size_t polyline_point_count
Definition tmj.h:111
Point * polyline
Definition tmj.h:115
Property * properties
Definition tmj.h:119
double rotation
Definition tmj.h:102
https://doc.mapeditor.org/en/stable/reference/json-map-format/#point
Definition tmj.h:61
double x
Definition tmj.h:62
double y
Definition tmj.h:63
https://doc.mapeditor.org/en/stable/reference/json-map-format/#property
Definition tmj.h:24
int value_object
Definition tmj.h:36
char * type
Definition tmj.h:27
char * propertytype
Definition tmj.h:26
char * value_string
Definition tmj.h:30
double value_float
Definition tmj.h:32
int value_int
Definition tmj.h:31
char * value_color
Definition tmj.h:34
char * value_file
Definition tmj.h:35
bool value_bool
Definition tmj.h:33
char * name
Definition tmj.h:25
https://doc.mapeditor.org/en/stable/reference/json-map-format/#terrain
Definition tmj.h:192
Property * properties
Definition tmj.h:198
char * name
Definition tmj.h:193
int tile
Definition tmj.h:195
size_t property_count
Definition tmj.h:197
https://doc.mapeditor.org/en/stable/reference/json-map-format/#text
Definition tmj.h:69
bool wrap
Definition tmj.h:75
bool underline
Definition tmj.h:74
char * fontfamily
Definition tmj.h:78
bool bold
Definition tmj.h:70
bool strikeout
Definition tmj.h:73
char * color
Definition tmj.h:77
bool kerning
Definition tmj.h:72
char * valign
Definition tmj.h:81
char * halign
Definition tmj.h:79
bool italic
Definition tmj.h:71
char * text
Definition tmj.h:80
int pixelsize
Definition tmj.h:83
https://doc.mapeditor.org/en/stable/reference/json-map-format/#tile-offset
Definition tmj.h:295
int y
Definition tmj.h:297
int x
Definition tmj.h:296
https://doc.mapeditor.org/en/stable/reference/json-map-format/#tile-definition
Definition tmj.h:212
Frame * animation
Definition tmj.h:227
int height
Definition tmj.h:222
double probability
Definition tmj.h:224
int y
Definition tmj.h:220
int id
Definition tmj.h:216
char * image
Definition tmj.h:213
char * type
Definition tmj.h:214
int x
Definition tmj.h:219
size_t animation_count
Definition tmj.h:226
int imageheight
Definition tmj.h:217
Property * properties
Definition tmj.h:232
Layer * objectgroup
Definition tmj.h:234
int imagewidth
Definition tmj.h:218
size_t property_count
Definition tmj.h:231
int width
Definition tmj.h:221
https://doc.mapeditor.org/en/stable/reference/json-map-format/#tileset
Definition tmj.h:305
char * fillmode
Definition tmj.h:314
size_t tile_count
Definition tmj.h:341
char * transparentcolor
Definition tmj.h:321
int tileheight
Definition tmj.h:332
char * name
Definition tmj.h:316
char * image
Definition tmj.h:315
Grid * grid
Definition tmj.h:347
int imagewidth
Definition tmj.h:328
size_t wang_set_count
Definition tmj.h:344
char * tiledversion
Definition tmj.h:319
char * objectalignment
Definition tmj.h:317
char * source
Definition tmj.h:318
int firstgid
Definition tmj.h:326
TileOffset * tileoffset
Definition tmj.h:349
int tilewidth
Definition tmj.h:333
char * tilerendersize
Definition tmj.h:320
size_t property_count
Definition tmj.h:335
size_t terrain_count
Definition tmj.h:338
int margin
Definition tmj.h:329
WangSet * wangsets
Definition tmj.h:345
Property * properties
Definition tmj.h:336
json_t * root
The root object returned by jansson after parsing.
Definition tmj.h:310
int tilecount
Definition tmj.h:331
char * backgroundcolor
Definition tmj.h:312
int columns
Definition tmj.h:325
char * version
Definition tmj.h:323
Transformations * transformations
Definition tmj.h:351
Tile * tiles
Definition tmj.h:342
Terrain * terrains
Definition tmj.h:339
int spacing
Definition tmj.h:330
char * type
Definition tmj.h:322
int imageheight
Definition tmj.h:327
https://doc.mapeditor.org/en/stable/reference/json-map-format/#transformations
Definition tmj.h:182
bool preferuntransformed
Definition tmj.h:184
bool hflip
Definition tmj.h:183
bool rotate
Definition tmj.h:185
bool vflip
Definition tmj.h:186
https://doc.mapeditor.org/en/stable/reference/json-map-format/#wang-color
Definition tmj.h:249
double probability
Definition tmj.h:256
char * color
Definition tmj.h:251
size_t property_count
Definition tmj.h:258
Property * properties
Definition tmj.h:259
int tile
Definition tmj.h:254
char * name
Definition tmj.h:252
https://doc.mapeditor.org/en/stable/reference/json-map-format/#wang-set
Definition tmj.h:265
size_t property_count
Definition tmj.h:275
Property * properties
Definition tmj.h:276
char * name
Definition tmj.h:267
size_t wangtile_count
Definition tmj.h:278
int tile
Definition tmj.h:270
WangTile * wangtiles
Definition tmj.h:279
WangColor * colors
Definition tmj.h:273
size_t color_count
Definition tmj.h:272
char * type
Definition tmj.h:268
https://doc.mapeditor.org/en/stable/reference/json-map-format/#wang-tile
Definition tmj.h:240
int tileid
Definition tmj.h:241