commit 623e66a142252b15ddfbd8f1c73874eae44a8f70 Author: Anuj Verma Date: Fri May 21 19:41:58 2021 +0530 [ftsdf] Synchronize with the change made in the `sdf` renderer. * src/ftsdf.c (draw): Change logic to utilize 8bit SDF instead of 16. diff --git a/src/ftsdf.c b/src/ftsdf.c index a638c3e..796b737 100644 --- a/src/ftsdf.c +++ b/src/ftsdf.c @@ -436,7 +436,7 @@ Box sample_region; Vec2 center; - FT_Short* buffer; + FT_Char* buffer; if ( !bitmap || !bitmap->buffer ) @@ -496,7 +496,7 @@ draw_region.xMax = display->bitmap->width; } - buffer = (FT_Short*)bitmap->buffer; + buffer = (FT_Char*)bitmap->buffer; /* Finally loop over all pixels inside the draw region */ /* and copy pixels from the sample region to the draw region. */ @@ -516,12 +516,12 @@ { FT_UInt bitmap_index = ( y / status.scale ) * bitmap->width + x / status.scale; - FT_Short pixel_value = buffer[bitmap_index]; + FT_Char pixel_value = buffer[bitmap_index]; /* If nearest filtering then simply take the value of the */ /* nearest sampling pixel. */ - min_dist = (float)pixel_value / 1024.0f; + min_dist = (float)pixel_value / 128.0f; } else { @@ -560,22 +560,22 @@ indc[2] = (int)bi_y * width + (int)bi_x + 1; indc[3] = ( (int)bi_y + 1 ) * width + (int)bi_x + 1; - dist[0] = (float)buffer[indc[0]] / 1024.0f; + dist[0] = (float)buffer[indc[0]] / 128.0f; if ( indc[1] >= width * rows ) dist[1] = -status.spread; else - dist[1] = (float)buffer[indc[1]] / 1024.0f; + dist[1] = (float)buffer[indc[1]] / 128.0f; if ( indc[2] >= width * rows ) dist[2] = -status.spread; else - dist[2] = (float)buffer[indc[2]] / 1024.0f; + dist[2] = (float)buffer[indc[2]] / 128.0f; if ( indc[3] >= width * rows ) dist[3] = -status.spread; else - dist[3] = (float)buffer[indc[3]] / 1024.0f; + dist[3] = (float)buffer[indc[3]] / 128.0f; m1 = dist[0] * ( 1.0f - nbi_y ) + dist[1] * nbi_y; m2 = dist[2] * ( 1.0f - nbi_y ) + dist[3] * nbi_y; @@ -615,7 +615,6 @@ /* normalize using `status.spread` */ final_dist = final_dist < 0 ? -final_dist : final_dist; - final_dist /= (float)status.spread; /* invert the values */ final_dist = 1.0f - final_dist; @@ -686,12 +685,16 @@ goto Exit; } -#ifdef __linux__ + int flip_y = 1; +#ifdef __linux__ + flip_y = 0; +#endif + FT_CALL( FT_Property_Set( handle->library, "sdf", "flip_y", &flip_y ) ); FT_CALL( FT_Property_Set( handle->library, "bsdf", "flip_y", &flip_y ) ); -#endif + grSetTitle( display->surface, "Signed Distance Field Viewer" ); event_color_change();