| @@ -495,12 +495,13 @@ static void gl_compute_font(caca_display_t *dp) | |||||
| uint32_t *image; | uint32_t *image; | ||||
| int i, b, w, h, x, y; | int i, b, w, h, x, y; | ||||
| /* Count how many glyphs this font has */ | |||||
| dp->drv.p->blocks = cucul_get_font_blocks(dp->drv.p->f); | dp->drv.p->blocks = cucul_get_font_blocks(dp->drv.p->f); | ||||
| for(b = 0, i = 0; dp->drv.p->blocks[i + 1]; i += 2) | for(b = 0, i = 0; dp->drv.p->blocks[i + 1]; i += 2) | ||||
| b += dp->drv.p->blocks[i + 1] - dp->drv.p->blocks[i]; | b += dp->drv.p->blocks[i + 1] - dp->drv.p->blocks[i]; | ||||
| dp->drv.p->txid = malloc(b * sizeof(int)); | |||||
| /* Allocate a libcucul canvas and print all the glyphs on it */ | |||||
| cv = cucul_create_canvas(1, b); | cv = cucul_create_canvas(1, b); | ||||
| cucul_set_color(cv, CUCUL_COLOR_WHITE, CUCUL_COLOR_BLACK); | cucul_set_color(cv, CUCUL_COLOR_WHITE, CUCUL_COLOR_BLACK); | ||||
| @@ -514,12 +515,16 @@ static void gl_compute_font(caca_display_t *dp) | |||||
| b += n; | b += n; | ||||
| } | } | ||||
| /* Draw the cucul canvas onto an image buffer */ | |||||
| image = malloc(b * dp->drv.p->font_height | image = malloc(b * dp->drv.p->font_height | ||||
| * dp->drv.p->font_width * sizeof(uint32_t)); | * dp->drv.p->font_width * sizeof(uint32_t)); | ||||
| cucul_render_canvas(cv, dp->drv.p->f, image, dp->drv.p->font_width, | cucul_render_canvas(cv, dp->drv.p->f, image, dp->drv.p->font_width, | ||||
| b * dp->drv.p->font_height, 4 * dp->drv.p->font_width); | b * dp->drv.p->font_height, 4 * dp->drv.p->font_width); | ||||
| cucul_free_canvas(cv); | cucul_free_canvas(cv); | ||||
| /* Convert all glyphs in the image buffer to GL textures */ | |||||
| dp->drv.p->txid = malloc(b * sizeof(int)); | |||||
| w = dp->drv.p->font_width <= 16 ? dp->drv.p->font_width : 16; | w = dp->drv.p->font_width <= 16 ? dp->drv.p->font_width : 16; | ||||
| h = dp->drv.p->font_height <= 16 ? dp->drv.p->font_height : 16; | h = dp->drv.p->font_height <= 16 ? dp->drv.p->font_height : 16; | ||||