[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freetype2] fix-sdf-squared-distances a75690c85: [sdf] Fix sdf computati
From: |
Werner Lemberg |
Subject: |
[freetype2] fix-sdf-squared-distances a75690c85: [sdf] Fix sdf computation while `USE_SQUARED_DISTANCES`. |
Date: |
Thu, 27 Jan 2022 04:59:51 -0500 (EST) |
branch: fix-sdf-squared-distances
commit a75690c85556a076b35b4d1464f201a94c2d33f1
Author: Anuj Verma <anujv@posteo.net>
Commit: Anuj Verma <anujv@posteo.net>
[sdf] Fix sdf computation while `USE_SQUARED_DISTANCES`.
Function `map_fixed_to_sdf` expect spread to be absolute
and not squared.
* src/sdf/ftbsdf.c (finalize_sdf): Pass absolute spread
while `map_fixed_to_sdf`.
* src/sdf/ftsdf.c (sdf_generate_bounding_box): Ditto.
---
src/sdf/ftbsdf.c | 14 ++++++++------
src/sdf/ftsdf.c | 2 +-
2 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/src/sdf/ftbsdf.c b/src/sdf/ftbsdf.c
index f33330ff9..1328ac498 100644
--- a/src/sdf/ftbsdf.c
+++ b/src/sdf/ftbsdf.c
@@ -1096,7 +1096,7 @@
FT_Int i, j;
FT_SDFFormat* t_buffer;
- FT_16D16 spread;
+ FT_16D16 sp_sq, spread;
if ( !worker || !target )
@@ -1116,11 +1116,13 @@
goto Exit;
}
+ spread = FT_INT_16D16( worker->params.spread );
+
#if USE_SQUARED_DISTANCES
- spread = FT_INT_16D16( worker->params.spread *
- worker->params.spread );
+ sp_sq = FT_INT_16D16( worker->params.spread *
+ worker->params.spread );
#else
- spread = FT_INT_16D16( worker->params.spread );
+ sp_sq = FT_INT_16D16( worker->params.spread );
#endif
for ( j = 0; j < r; j++ )
@@ -1136,8 +1138,8 @@
index = j * w + i;
dist = worker->distance_map[index].dist;
- if ( dist < 0 || dist > spread )
- dist = spread;
+ if ( dist < 0 || dist > sp_sq )
+ dist = sp_sq;
#if USE_SQUARED_DISTANCES
dist = square_root( dist );
diff --git a/src/sdf/ftsdf.c b/src/sdf/ftsdf.c
index 46ef7b14d..f5e5551e6 100644
--- a/src/sdf/ftsdf.c
+++ b/src/sdf/ftsdf.c
@@ -3242,7 +3242,7 @@
buffer = (FT_SDFFormat*)bitmap->buffer;
if ( USE_SQUARED_DISTANCES )
- sp_sq = fixed_spread * fixed_spread;
+ sp_sq = FT_INT_16D16( spread * spread );
else
sp_sq = fixed_spread;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2] fix-sdf-squared-distances a75690c85: [sdf] Fix sdf computation while `USE_SQUARED_DISTANCES`.,
Werner Lemberg <=