Merge "Have gr_init_font alloc memory for the font" into cw-f-dev

This commit is contained in:
Damien Bargiacchi
2016-09-13 13:40:25 +00:00
committed by Android (Google) Code Review
2 changed files with 16 additions and 8 deletions
+15 -7
View File
@@ -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;
+1 -1
View File
@@ -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);