Have gr_init_font alloc memory for the font
Change-Id: I8ccf369d52011bc5d07d8e041fe558ce734a78fc
(cherry picked from commit d00f5eb63a
)
This commit is contained in:
parent
d5d34d70a5
commit
97eda9db70
2 changed files with 16 additions and 8 deletions
|
@ -264,33 +264,41 @@ unsigned int gr_get_height(GRSurface* surface) {
|
||||||
return surface->height;
|
return surface->height;
|
||||||
}
|
}
|
||||||
|
|
||||||
int gr_init_font(const char* name, GRFont* dest) {
|
int gr_init_font(const char* name, GRFont** dest) {
|
||||||
int res = res_create_alpha_surface(name, &(dest->texture));
|
GRFont* font = reinterpret_cast<GRFont*>(calloc(1, sizeof(*gr_font)));
|
||||||
|
if (font == nullptr) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int res = res_create_alpha_surface(name, &(font->texture));
|
||||||
if (res < 0) {
|
if (res < 0) {
|
||||||
|
free(font);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
// The font image should be a 96x2 array of character images. The
|
// The font image should be a 96x2 array of character images. The
|
||||||
// columns are the printable ASCII characters 0x20 - 0x7f. The
|
// columns are the printable ASCII characters 0x20 - 0x7f. The
|
||||||
// top row is regular text; the bottom row is bold.
|
// top row is regular text; the bottom row is bold.
|
||||||
dest->char_width = dest->texture->width / 96;
|
font->char_width = font->texture->width / 96;
|
||||||
dest->char_height = dest->texture->height / 2;
|
font->char_height = font->texture->height / 2;
|
||||||
|
|
||||||
|
*dest = font;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void gr_init_font(void)
|
static void gr_init_font(void)
|
||||||
{
|
{
|
||||||
gr_font = reinterpret_cast<GRFont*>(calloc(sizeof(*gr_font), 1));
|
int res = gr_init_font("font", &gr_font);
|
||||||
|
|
||||||
int res = gr_init_font("font", gr_font);
|
|
||||||
if (res == 0) {
|
if (res == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("failed to read font: res=%d\n", res);
|
printf("failed to read font: res=%d\n", res);
|
||||||
|
|
||||||
|
|
||||||
// fall back to the compiled-in font.
|
// fall back to the compiled-in font.
|
||||||
|
gr_font = reinterpret_cast<GRFont*>(calloc(1, sizeof(*gr_font)));
|
||||||
gr_font->texture = reinterpret_cast<GRSurface*>(malloc(sizeof(*gr_font->texture)));
|
gr_font->texture = reinterpret_cast<GRSurface*>(malloc(sizeof(*gr_font->texture)));
|
||||||
gr_font->texture->width = font.width;
|
gr_font->texture->width = font.width;
|
||||||
gr_font->texture->height = font.height;
|
gr_font->texture->height = font.height;
|
||||||
|
|
|
@ -55,7 +55,7 @@ void gr_fill(int x1, int y1, int x2, int y2);
|
||||||
void gr_texticon(int x, int y, GRSurface* icon);
|
void gr_texticon(int x, int y, GRSurface* icon);
|
||||||
|
|
||||||
const GRFont* gr_sys_font();
|
const GRFont* gr_sys_font();
|
||||||
int gr_init_font(const char* name, GRFont* dest);
|
int gr_init_font(const char* name, GRFont** dest);
|
||||||
void gr_text(const GRFont* font, int x, int y, const char *s, bool bold);
|
void gr_text(const GRFont* font, int x, int y, const char *s, bool bold);
|
||||||
int gr_measure(const GRFont* font, const char *s);
|
int gr_measure(const GRFont* font, const char *s);
|
||||||
void gr_font_size(const GRFont* font, int *x, int *y);
|
void gr_font_size(const GRFont* font, int *x, int *y);
|
||||||
|
|
Loading…
Reference in a new issue