/
texture_atlas.h
36 lines (29 loc) · 999 Bytes
/
texture_atlas.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#ifndef TEXTURE_ATLAS_H
#define TEXTURE_ATLAS_H
#include "sf2d.h"
#include "bin_packing_2d.h"
#include "int_htab.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct atlas_htab_entry {
bp2d_rectangle rect;
int bitmap_left;
int bitmap_top;
int advance_x;
int advance_y;
} atlas_htab_entry;
typedef struct texture_atlas {
sf2d_texture *tex;
bp2d_node *bp_root;
int_htab *htab;
} texture_atlas;
texture_atlas *texture_atlas_create(int width, int height, sf2d_texfmt format, sf2d_place place);
void texture_atlas_free(texture_atlas *atlas);
int texture_atlas_insert(texture_atlas *atlas, unsigned int character, const void *image, int width, int height, int bitmap_left, int bitmap_top, int advance_x, int advance_y);
int texture_atlas_exists(texture_atlas *atlas, unsigned int character);
void texture_atlas_get(texture_atlas *atlas, unsigned int character, bp2d_rectangle *rect, int *bitmap_left, int *bitmap_top, int *advance_x, int *advance_y);
#ifdef __cplusplus
}
#endif
#endif