taisei/src/resource/font.h

73 lines
2 KiB
C
Raw Normal View History

/*
* This software is licensed under the terms of the MIT-License
* See COPYING for further information.
* ---
2017-09-12 03:28:15 +02:00
* Copyright (c) 2011-2017, Lukas Weber <laochailan@web.de>.
* Copyright (c) 2012-2017, Andrei Alexeyev <akari@alienslab.net>.
*/
2017-09-27 14:14:53 +02:00
#pragma once
2017-02-04 03:56:40 +01:00
#include <SDL_ttf.h>
#include "texture.h"
typedef enum {
2011-06-24 12:35:03 +02:00
AL_Center,
AL_Left,
AL_Right
} Alignment;
2017-12-13 20:05:12 +01:00
enum {
AL_Flag_NoAdjust = 0x10,
};
// Size of the buffer used by the font renderer at quality == 1.0.
// No text larger than this can be drawn.
enum {
FONTREN_MAXW = 1024, // must be a power of two that is >= SCREEN_W
FONTREN_MAXH = 64, // must be a power of two that is > largest font size
};
typedef struct FontRenderer FontRenderer;
struct FontRenderer {
Texture tex;
GLuint pbo;
float quality;
};
void fontrenderer_init(FontRenderer *f, float quality);
void fontrenderer_free(FontRenderer *f);
void fontrenderer_draw(FontRenderer *f, const char *text, TTF_Font *font);
void fontrenderer_draw_prerendered(FontRenderer *f, SDL_Surface *surf);
SDL_Surface* fontrender_render(FontRenderer *f, const char *text, TTF_Font *font);
Texture *load_text(const char *text, TTF_Font *font);
void draw_text(Alignment align, float x, float y, const char *text, TTF_Font *font);
void draw_text_auto_wrapped(Alignment align, float x, float y, const char *text, int width, TTF_Font *font);
void draw_text_prerendered(Alignment align, float x, float y, SDL_Surface *surf);
int stringwidth(char *s, TTF_Font *font);
2012-08-05 03:36:55 +02:00
int stringheight(char *s, TTF_Font *font);
int charwidth(char c, TTF_Font *font);
void shorten_text_up_to_width(char *s, float width, TTF_Font *font);
void wrap_text(char *buf, size_t bufsize, const char *src, int width, TTF_Font *font);
void init_fonts(void);
void uninit_fonts(void);
void load_fonts(float quality);
void reload_fonts(float quality);
void free_fonts(void);
struct Fonts {
TTF_Font *standard;
TTF_Font *mainmenu;
TTF_Font *small;
2017-11-23 03:25:53 +01:00
TTF_Font *hud;
TTF_Font *mono;
TTF_Font *monosmall;
2017-12-13 20:05:12 +01:00
TTF_Font *monotiny;
};
extern struct Fonts _fonts;