From 4ee3a4dd173ffe2e55d32448c8fbb6701d5dbdc8 Mon Sep 17 00:00:00 2001 From: Brett Bergstrom Date: Mon, 21 Sep 2026 16:55:20 -0500 Subject: [PATCH] it almost works --- allegro_schrift.c | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/allegro_schrift.c b/allegro_schrift.c index d3bd12c..17a02c6 100644 --- a/allegro_schrift.c +++ b/allegro_schrift.c @@ -161,22 +161,6 @@ ALLEGRO_FONT *al_load_ttf_font_f(ALLEGRO_FILE *file, al_unlock_bitmap(gtex); ALLEGRO_INFO("blit raster to vram\n"); - block = al_lock_bitmap(gtex, ALLEGRO_PIXEL_FORMAT_RGBA_8888, ALLEGRO_LOCK_WRITEONLY); - assert(block->pixel_size == 4); - const unsigned int gtexw = al_get_bitmap_width(gtex), gtexh = al_get_bitmap_height(gtex); - unsigned int pixiw = 0, pixih = 0, pixi = 0; - while (pixi < gtexh * gtexw) { - uint32_t* pixel = (uint32_t*)((uint8_t*)block->data + (block->pitch * pixih)) + pixiw; // fixme - *pixel = (*pixel & 0xffu) * 0x01010101u; - pixi++; - if (pixiw++ >= gtexw) { - pixiw = 0; - pixih++; - } - } - al_unlock_bitmap(gtex); - ALLEGRO_INFO("converted colors\n"); - woff += geom.minWidth + 1; i++; continue; @@ -189,6 +173,24 @@ ALLEGRO_FONT *al_load_ttf_font_f(ALLEGRO_FILE *file, FAIL; } + // a shader would be better, but we don't know the target platform. + ALLEGRO_LOCKED_REGION *glock = al_lock_bitmap(gtex, ALLEGRO_PIXEL_FORMAT_ABGR_8888, ALLEGRO_LOCK_READWRITE); + assert(glock->pixel_size == 4); + const unsigned int gtexw = al_get_bitmap_width(gtex), gtexh = al_get_bitmap_height(gtex); + unsigned int pixiw = 0, pixih = 0, pixi = 0; + while (pixi < gtexh * gtexw) { + uint32_t* pixel = (uint32_t*)((uint8_t*)glock->data + (glock->pitch * (signed)pixih)) + pixiw; // fixme + if (*pixel == 0xFFFF0000) *pixel = 0xFF000000; + else *pixel = (*pixel & 0xffu) * 0x01010101u; + pixi++; pixiw++; + if (pixiw >= gtexw) { + pixiw = 0; + pixih++; + } + } + al_unlock_bitmap(gtex); + ALLEGRO_INFO("converted colors\n"); + // debug al_save_bitmap("schrift_test.png", gtex);