Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7a97733f authored by Damien Bargiacchi's avatar Damien Bargiacchi Committed by Android (Google) Code Review
Browse files

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

parents 4769f209 d00f5eb6
Loading
Loading
Loading
Loading
+15 −7
Original line number Diff line number Diff line
@@ -264,33 +264,41 @@ unsigned int gr_get_height(GRSurface* surface) {
    return surface->height;
}

int gr_init_font(const char* name, GRFont* dest) {
    int res = res_create_alpha_surface(name, &(dest->texture));
int gr_init_font(const char* name, GRFont** dest) {
    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) {
        free(font);
        return res;
    }

    // The font image should be a 96x2 array of character images.  The
    // columns are the printable ASCII characters 0x20 - 0x7f.  The
    // top row is regular text; the bottom row is bold.
    dest->char_width = dest->texture->width / 96;
    dest->char_height = dest->texture->height / 2;
    font->char_width = font->texture->width / 96;
    font->char_height = font->texture->height / 2;

    *dest = font;

    return 0;
}

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) {
        return;
    }

    printf("failed to read font: res=%d\n", res);


    // 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->width = font.width;
    gr_font->texture->height = font.height;
+1 −1
Original line number Diff line number Diff line
@@ -55,7 +55,7 @@ void gr_fill(int x1, int y1, int x2, int y2);
void gr_texticon(int x, int y, GRSurface* icon);

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);
int gr_measure(const GRFont* font, const char *s);
void gr_font_size(const GRFont* font, int *x, int *y);