Blob Blame Raw
#ifndef HELI_FONT_H
#define HELI_FONT_H


#include "common.h"


typedef struct _Font *Font;
typedef struct _TextLayout *TextLayout;


typedef enum _HAlign {
	HALIGN_LEFT,
	HALIGN_CENTER,
	HALIGN_RIGHT
} HAlign;

typedef enum _VAlign {
	VALIGN_TOP,
	VALIGN_CENTER,
	VALIGN_BOTTOM
} VAlign;


Font createFont(const char *path);
Font createFontFromMemory(const void *data, int size);
void fontDestroy(Font font);
void textFont(Font font);
void textFontDefault();

Font fontClone(Font font);

void text(double x, double y, const char *text);
void textf(double x, double y, const char *format, ...);
void textAlign(HAlign hor, VAlign vert);
void textSize(double size);


TextLayout createTextLayout(const char *text);
TextLayout createTextLayoutEx(const char *text, int length);
TextLayout createTextLayoutf(const char *format, ...);
void textLayoutDestroy(TextLayout layout);
void textLayoutDraw(TextLayout layout, double x, double y);
void textLayoutDrawFrom(TextLayout layout, double x, double y, int start);
void textLayoutDrawSubstr(TextLayout layout, double x, double y, int start, int length);
double textLayoutGetLeft(TextLayout layout);
double textLayoutGetTop(TextLayout layout);
double textLayoutGetWidth(TextLayout layout);
double textLayoutGetHeight(TextLayout layout);
double textLayoutGetTopAscenderLine(TextLayout layout);
double textLayoutGetTopXLine(TextLayout layout);
double textLayoutGetBottomBaseline(TextLayout layout);
int textLayoutCursorUp(TextLayout layout, int cursor);
int textLayoutCursorDown(TextLayout layout, int cursor);
double textLayoutCursorGetX(TextLayout layout, int cursor);
double textLayoutCursorGetY(TextLayout layout, int cursor);
double textLayoutCursorGetHeight(TextLayout layout, int cursor);


#endif