#ifndef	OGLF_H_
#define	OGLF_H_

#ifdef __cplusplus
extern "C" {
#endif

#define	OGLF_MAX_ASCII	256
#define	OGLF_MAX_LINE	1024
#define	OGLF_MAX_PATH	256

typedef struct oglf_char_t {
	unsigned int x, y, w, h;
	unsigned int x_ofs, y_ofs;
	unsigned int x_advance, page;
} oglf_char_t;

typedef struct oglf_kerninfo_t {
	unsigned short first, second;
	short kerning;
} oglf_kerninfo_t;

typedef struct oglf_font_t {
	float scale;
	int base, line_h, w, h, pages, kerninfo_count;
	unsigned int fontTex;
	int base_list;
	oglf_kerninfo_t *kerninfo;
	oglf_char_t *chars;
	float mmat[16];
} oglf_font_t;

int oglf_load(oglf_font_t *font, const char *bmf_path, unsigned int texture);
int oglf_width(oglf_font_t *font, const char *text);
void oglf_destroy(oglf_font_t *font);

void oglf_begin(oglf_font_t *font, int width, int height);
void oglf_end();

void oglf_print(oglf_font_t *font, float x, float y, const char *text);
void oglf_printf_al(oglf_font_t *font, int align, unsigned int *rect,
		const char *fmt, ...);
void oglf_printf(oglf_font_t *font, int x, int y, const char *fmt, ...);

#ifdef __cplusplus
}
#endif

#endif // _FONT_H_
