116 lines
5.4 KiB
C
116 lines
5.4 KiB
C
|
#ifndef __al_included_allegro5_allegro_font_h
|
||
|
#define __al_included_allegro5_allegro_font_h
|
||
|
|
||
|
#include "allegro5/allegro.h"
|
||
|
|
||
|
#if (defined ALLEGRO_MINGW32) || (defined ALLEGRO_MSVC) || (defined ALLEGRO_BCC32)
|
||
|
#ifndef ALLEGRO_STATICLINK
|
||
|
#ifdef ALLEGRO_FONT_SRC
|
||
|
#define _ALLEGRO_FONT_DLL __declspec(dllexport)
|
||
|
#else
|
||
|
#define _ALLEGRO_FONT_DLL __declspec(dllimport)
|
||
|
#endif
|
||
|
#else
|
||
|
#define _ALLEGRO_FONT_DLL
|
||
|
#endif
|
||
|
#endif
|
||
|
|
||
|
#if defined ALLEGRO_MSVC
|
||
|
#define ALLEGRO_FONT_FUNC(type, name, args) _ALLEGRO_FONT_DLL type __cdecl name args
|
||
|
#define ALLEGRO_FONT_METHOD(type, name, args) type (__cdecl *name) args
|
||
|
#define ALLEGRO_FONT_FUNCPTR(type, name, args) extern _ALLEGRO_FONT_DLL type (__cdecl *name) args
|
||
|
#define ALLEGRO_FONT_PRINTFUNC(type, name, args, a, b) ALLEGRO_FONT_FUNC(type, name, args)
|
||
|
#elif defined ALLEGRO_MINGW32
|
||
|
#define ALLEGRO_FONT_FUNC(type, name, args) extern type name args
|
||
|
#define ALLEGRO_FONT_METHOD(type, name, args) type (*name) args
|
||
|
#define ALLEGRO_FONT_FUNCPTR(type, name, args) extern _ALLEGRO_FONT_DLL type (*name) args
|
||
|
#define ALLEGRO_FONT_PRINTFUNC(type, name, args, a, b) ALLEGRO_FONT_FUNC(type, name, args) __attribute__ ((format (printf, a, b)))
|
||
|
#elif defined ALLEGRO_BCC32
|
||
|
#define ALLEGRO_FONT_FUNC(type, name, args) extern _ALLEGRO_FONT_DLL type name args
|
||
|
#define ALLEGRO_FONT_METHOD(type, name, args) type (*name) args
|
||
|
#define ALLEGRO_FONT_FUNCPTR(type, name, args) extern _ALLEGRO_FONT_DLL type (*name) args
|
||
|
#define ALLEGRO_FONT_PRINTFUNC(type, name, args, a, b) ALLEGRO_FONT_FUNC(type, name, args)
|
||
|
#else
|
||
|
#define ALLEGRO_FONT_FUNC AL_FUNC
|
||
|
#define ALLEGRO_FONT_METHOD AL_METHOD
|
||
|
#define ALLEGRO_FONT_FUNCPTR AL_FUNCPTR
|
||
|
#define ALLEGRO_FONT_PRINTFUNC AL_PRINTFUNC
|
||
|
#endif
|
||
|
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
|
||
|
/* Type: ALLEGRO_FONT
|
||
|
*/
|
||
|
typedef struct ALLEGRO_FONT ALLEGRO_FONT;
|
||
|
typedef struct ALLEGRO_FONT_VTABLE ALLEGRO_FONT_VTABLE;
|
||
|
|
||
|
struct ALLEGRO_FONT
|
||
|
{
|
||
|
void *data;
|
||
|
int height;
|
||
|
ALLEGRO_FONT_VTABLE *vtable;
|
||
|
};
|
||
|
|
||
|
/* text- and font-related stuff */
|
||
|
struct ALLEGRO_FONT_VTABLE
|
||
|
{
|
||
|
ALLEGRO_FONT_METHOD(int, font_height, (const ALLEGRO_FONT *f));
|
||
|
ALLEGRO_FONT_METHOD(int, font_ascent, (const ALLEGRO_FONT *f));
|
||
|
ALLEGRO_FONT_METHOD(int, font_descent, (const ALLEGRO_FONT *f));
|
||
|
ALLEGRO_FONT_METHOD(int, char_length, (const ALLEGRO_FONT *f, int ch));
|
||
|
ALLEGRO_FONT_METHOD(int, text_length, (const ALLEGRO_FONT *f, const ALLEGRO_USTR *text));
|
||
|
ALLEGRO_FONT_METHOD(int, render_char, (const ALLEGRO_FONT *f, ALLEGRO_COLOR color, int ch, float x, float y));
|
||
|
ALLEGRO_FONT_METHOD(int, render, (const ALLEGRO_FONT *f, ALLEGRO_COLOR color, const ALLEGRO_USTR *text, float x, float y));
|
||
|
ALLEGRO_FONT_METHOD(void, destroy, (ALLEGRO_FONT *f));
|
||
|
ALLEGRO_FONT_METHOD(void, get_text_dimensions, (const ALLEGRO_FONT *f,
|
||
|
const ALLEGRO_USTR *text, int *bbx, int *bby, int *bbw, int *bbh));
|
||
|
};
|
||
|
|
||
|
enum {
|
||
|
ALLEGRO_ALIGN_LEFT = 0,
|
||
|
ALLEGRO_ALIGN_CENTRE = 1,
|
||
|
ALLEGRO_ALIGN_CENTER = 1,
|
||
|
ALLEGRO_ALIGN_RIGHT = 2,
|
||
|
ALLEGRO_ALIGN_INTEGER = 4
|
||
|
};
|
||
|
|
||
|
ALLEGRO_FONT_FUNC(bool, al_register_font_loader, (const char *ext, ALLEGRO_FONT *(*load)(const char *filename, int size, int flags)));
|
||
|
ALLEGRO_FONT_FUNC(ALLEGRO_FONT *, al_load_bitmap_font, (const char *filename));
|
||
|
ALLEGRO_FONT_FUNC(ALLEGRO_FONT *, al_load_font, (const char *filename, int size, int flags));
|
||
|
|
||
|
ALLEGRO_FONT_FUNC(ALLEGRO_FONT *, al_grab_font_from_bitmap, (ALLEGRO_BITMAP *bmp, int n, const int ranges[]));
|
||
|
ALLEGRO_FONT_FUNC(ALLEGRO_FONT *, al_create_builtin_font, (void));
|
||
|
|
||
|
ALLEGRO_FONT_FUNC(void, al_draw_ustr, (const ALLEGRO_FONT *font, ALLEGRO_COLOR color, float x, float y, int flags, ALLEGRO_USTR const *ustr));
|
||
|
ALLEGRO_FONT_FUNC(void, al_draw_text, (const ALLEGRO_FONT *font, ALLEGRO_COLOR color, float x, float y, int flags, char const *text));
|
||
|
ALLEGRO_FONT_FUNC(void, al_draw_justified_text, (const ALLEGRO_FONT *font, ALLEGRO_COLOR color, float x1, float x2, float y, float diff, int flags, char const *text));
|
||
|
ALLEGRO_FONT_FUNC(void, al_draw_justified_ustr, (const ALLEGRO_FONT *font, ALLEGRO_COLOR color, float x1, float x2, float y, float diff, int flags, ALLEGRO_USTR const *text));
|
||
|
ALLEGRO_FONT_PRINTFUNC(void, al_draw_textf, (const ALLEGRO_FONT *font, ALLEGRO_COLOR color, float x, float y, int flags, char const *format, ...), 6, 7);
|
||
|
ALLEGRO_FONT_PRINTFUNC(void, al_draw_justified_textf, (const ALLEGRO_FONT *font, ALLEGRO_COLOR color, float x1, float x2, float y, float diff, int flags, char const *format, ...), 8, 9);
|
||
|
ALLEGRO_FONT_FUNC(int, al_get_text_width, (const ALLEGRO_FONT *f, const char *str));
|
||
|
ALLEGRO_FONT_FUNC(int, al_get_ustr_width, (const ALLEGRO_FONT *f, const ALLEGRO_USTR *ustr));
|
||
|
ALLEGRO_FONT_FUNC(int, al_get_font_line_height, (const ALLEGRO_FONT *f));
|
||
|
ALLEGRO_FONT_FUNC(int, al_get_font_ascent, (const ALLEGRO_FONT *f));
|
||
|
ALLEGRO_FONT_FUNC(int, al_get_font_descent, (const ALLEGRO_FONT *f));
|
||
|
ALLEGRO_FONT_FUNC(void, al_destroy_font, (ALLEGRO_FONT *f));
|
||
|
ALLEGRO_FONT_FUNC(void, al_get_ustr_dimensions, (const ALLEGRO_FONT *f,
|
||
|
ALLEGRO_USTR const *text,
|
||
|
int *bbx, int *bby, int *bbw, int *bbh));
|
||
|
ALLEGRO_FONT_FUNC(void, al_get_text_dimensions, (const ALLEGRO_FONT *f,
|
||
|
char const *text,
|
||
|
int *bbx, int *bby, int *bbw, int *bbh));
|
||
|
ALLEGRO_FONT_FUNC(void, al_init_font_addon, (void));
|
||
|
ALLEGRO_FONT_FUNC(void, al_shutdown_font_addon, (void));
|
||
|
ALLEGRO_FONT_FUNC(uint32_t, al_get_allegro_font_version, (void));
|
||
|
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif
|