diff options
Diffstat (limited to 'src/3rdparty/freetype/src/sdf')
-rw-r--r-- | src/3rdparty/freetype/src/sdf/ftbsdf.c | 17 | ||||
-rw-r--r-- | src/3rdparty/freetype/src/sdf/ftsdf.c | 41 | ||||
-rw-r--r-- | src/3rdparty/freetype/src/sdf/ftsdf.h | 2 | ||||
-rw-r--r-- | src/3rdparty/freetype/src/sdf/ftsdfcommon.c | 8 | ||||
-rw-r--r-- | src/3rdparty/freetype/src/sdf/ftsdfcommon.h | 6 | ||||
-rw-r--r-- | src/3rdparty/freetype/src/sdf/ftsdferrs.h | 2 | ||||
-rw-r--r-- | src/3rdparty/freetype/src/sdf/ftsdfrend.c | 37 | ||||
-rw-r--r-- | src/3rdparty/freetype/src/sdf/ftsdfrend.h | 2 | ||||
-rw-r--r-- | src/3rdparty/freetype/src/sdf/module.mk | 2 | ||||
-rw-r--r-- | src/3rdparty/freetype/src/sdf/rules.mk | 2 | ||||
-rw-r--r-- | src/3rdparty/freetype/src/sdf/sdf.c | 2 |
11 files changed, 65 insertions, 56 deletions
diff --git a/src/3rdparty/freetype/src/sdf/ftbsdf.c b/src/3rdparty/freetype/src/sdf/ftbsdf.c index 1328ac4988..e472738339 100644 --- a/src/3rdparty/freetype/src/sdf/ftbsdf.c +++ b/src/3rdparty/freetype/src/sdf/ftbsdf.c @@ -4,7 +4,7 @@ * * Signed Distance Field support for bitmap fonts (body only). * - * Copyright (C) 2020-2022 by + * Copyright (C) 2020-2023 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * Written by Anuj Verma. @@ -1116,13 +1116,13 @@ goto Exit; } - spread = FT_INT_16D16( worker->params.spread ); + spread = (FT_16D16)FT_INT_16D16( worker->params.spread ); #if USE_SQUARED_DISTANCES - sp_sq = FT_INT_16D16( worker->params.spread * - worker->params.spread ); + sp_sq = (FT_16D16)FT_INT_16D16( worker->params.spread * + worker->params.spread ); #else - sp_sq = FT_INT_16D16( worker->params.spread ); + sp_sq = (FT_16D16)FT_INT_16D16( worker->params.spread ); #endif for ( j = 0; j < r; j++ ) @@ -1173,9 +1173,12 @@ /* called when adding a new module through @FT_Add_Module */ static FT_Error - bsdf_raster_new( FT_Memory memory, - BSDF_PRaster* araster ) + bsdf_raster_new( void* memory_, /* FT_Memory */ + FT_Raster* araster_ ) /* BSDF_PRaster* */ { + FT_Memory memory = (FT_Memory)memory_; + BSDF_PRaster* araster = (BSDF_PRaster*)araster_; + FT_Error error; BSDF_PRaster raster = NULL; diff --git a/src/3rdparty/freetype/src/sdf/ftsdf.c b/src/3rdparty/freetype/src/sdf/ftsdf.c index ffac8bf465..bc4625d984 100644 --- a/src/3rdparty/freetype/src/sdf/ftsdf.c +++ b/src/3rdparty/freetype/src/sdf/ftsdf.c @@ -4,7 +4,7 @@ * * Signed Distance Field support for outline fonts (body). * - * Copyright (C) 2020-2022 by + * Copyright (C) 2020-2023 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * Written by Anuj Verma. @@ -871,7 +871,7 @@ cbox.yMax = edge.control_b.y; is_set = 1; - /* fall through */ + FALL_THROUGH; case SDF_EDGE_CONIC: if ( is_set ) @@ -899,7 +899,7 @@ is_set = 1; } - /* fall through */ + FALL_THROUGH; case SDF_EDGE_LINE: if ( is_set ) @@ -1293,7 +1293,7 @@ /* Calculate the number of necessary bisections. Each */ /* bisection causes a four-fold reduction of the deviation, */ /* hence we bisect the Bezier curve until the deviation */ - /* becomes less than 1/8th of a pixel. For more details */ + /* becomes less than 1/8 of a pixel. For more details */ /* check file `ftgrays.c`. */ num_splits = 1; while ( dx > ONE_PIXEL / 8 ) @@ -1939,7 +1939,7 @@ /* now factor is 16.16 */ factor = FT_DivFix( factor, sq_line_length ); - /* clamp the factor between 0.0 and 1.0 in fixed point */ + /* clamp the factor between 0.0 and 1.0 in fixed-point */ if ( factor > FT_INT_16D16( 1 ) ) factor = FT_INT_16D16( 1 ); if ( factor < 0 ) @@ -2109,7 +2109,8 @@ FT_Error error = FT_Err_Ok; FT_26D6_Vec aA, bB; /* A, B in the above comment */ - FT_26D6_Vec nearest_point; /* point on curve nearest to `point` */ + FT_26D6_Vec nearest_point = { 0, 0 }; + /* point on curve nearest to `point` */ FT_26D6_Vec direction; /* direction of curve at `nearest_point` */ FT_26D6_Vec p0, p1, p2; /* control points of a conic curve */ @@ -2370,11 +2371,11 @@ * ``` * * (6) Our task is to find a value of `t` such that the above equation - * `Q(t)` becomes zero, this is, the point-to-curve vector makes + * `Q(t)` becomes zero, that is, the point-to-curve vector makes * 90~degrees with the curve. We solve this with the Newton-Raphson * method. * - * (7) We first assume an arbitary value of factor `t`, which we then + * (7) We first assume an arbitrary value of factor `t`, which we then * improve. * * ``` @@ -2405,7 +2406,8 @@ FT_Error error = FT_Err_Ok; FT_26D6_Vec aA, bB, cC; /* A, B, C in the above comment */ - FT_26D6_Vec nearest_point; /* point on curve nearest to `point` */ + FT_26D6_Vec nearest_point = { 0, 0 }; + /* point on curve nearest to `point` */ FT_26D6_Vec direction; /* direction of curve at `nearest_point` */ FT_26D6_Vec p0, p1, p2; /* control points of a conic curve */ @@ -2682,11 +2684,11 @@ * ``` * * (6) Our task is to find a value of `t` such that the above equation - * `Q(t)` becomes zero, this is, the point-to-curve vector makes + * `Q(t)` becomes zero, that is, the point-to-curve vector makes * 90~degree with curve. We solve this with the Newton-Raphson * method. * - * (7) We first assume an arbitary value of factor `t`, which we then + * (7) We first assume an arbitrary value of factor `t`, which we then * improve. * * ``` @@ -2716,8 +2718,9 @@ FT_Error error = FT_Err_Ok; - FT_26D6_Vec aA, bB, cC, dD; /* A, B, C in the above comment */ - FT_16D16_Vec nearest_point; /* point on curve nearest to `point` */ + FT_26D6_Vec aA, bB, cC, dD; /* A, B, C, D in the above comment */ + FT_16D16_Vec nearest_point = { 0, 0 }; + /* point on curve nearest to `point` */ FT_16D16_Vec direction; /* direction of curve at `nearest_point` */ FT_26D6_Vec p0, p1, p2, p3; /* control points of a cubic curve */ @@ -3164,7 +3167,7 @@ if ( min_dist.distance > sp_sq ) min_dist.distance = sp_sq; - /* square_root the values and fit in a 6.10 fixed point */ + /* square_root the values and fit in a 6.10 fixed-point */ if ( USE_SQUARED_DISTANCES ) min_dist.distance = square_root( min_dist.distance ); @@ -3256,7 +3259,7 @@ /* and also determine the signs properly. */ SDF_Signed_Distance* dists = NULL; - const FT_16D16 fixed_spread = FT_INT_16D16( spread ); + const FT_16D16 fixed_spread = (FT_16D16)FT_INT_16D16( spread ); if ( !shape || !bitmap ) @@ -3759,9 +3762,13 @@ */ static FT_Error - sdf_raster_new( FT_Memory memory, - SDF_PRaster* araster ) + sdf_raster_new( void* memory_, /* FT_Memory */ + FT_Raster* araster_ ) /* SDF_PRaster* */ { + FT_Memory memory = (FT_Memory)memory_; + SDF_PRaster* araster = (SDF_PRaster*)araster_; + + FT_Error error; SDF_PRaster raster = NULL; diff --git a/src/3rdparty/freetype/src/sdf/ftsdf.h b/src/3rdparty/freetype/src/sdf/ftsdf.h index 5f6b3f52aa..234c075b0a 100644 --- a/src/3rdparty/freetype/src/sdf/ftsdf.h +++ b/src/3rdparty/freetype/src/sdf/ftsdf.h @@ -4,7 +4,7 @@ * * Signed Distance Field support (specification). * - * Copyright (C) 2020-2022 by + * Copyright (C) 2020-2023 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * Written by Anuj Verma. diff --git a/src/3rdparty/freetype/src/sdf/ftsdfcommon.c b/src/3rdparty/freetype/src/sdf/ftsdfcommon.c index 072a36ea6c..5052201e22 100644 --- a/src/3rdparty/freetype/src/sdf/ftsdfcommon.c +++ b/src/3rdparty/freetype/src/sdf/ftsdfcommon.c @@ -4,7 +4,7 @@ * * Auxiliary data for Signed Distance Field support (body). * - * Copyright (C) 2020-2022 by + * Copyright (C) 2020-2023 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * Written by Anuj Verma. @@ -33,7 +33,7 @@ * * https://github.com/chmike/fpsqrt * - * Use this to compute the square root of a 16.16 fixed point number. + * Use this to compute the square root of a 16.16 fixed-point number. */ FT_LOCAL_DEF( FT_16D16 ) square_root( FT_16D16 val ) @@ -72,8 +72,8 @@ */ /* - * Convert 16.16 fixed point values to the desired output format. - * In this case we reduce 16.16 fixed point values to normalized + * Convert 16.16 fixed-point values to the desired output format. + * In this case we reduce 16.16 fixed-point values to normalized * 8-bit values. * * The `max_value` in the parameter is the maximum value in the diff --git a/src/3rdparty/freetype/src/sdf/ftsdfcommon.h b/src/3rdparty/freetype/src/sdf/ftsdfcommon.h index af4490bbca..60ca9773e3 100644 --- a/src/3rdparty/freetype/src/sdf/ftsdfcommon.h +++ b/src/3rdparty/freetype/src/sdf/ftsdfcommon.h @@ -4,7 +4,7 @@ * * Auxiliary data for Signed Distance Field support (specification). * - * Copyright (C) 2020-2022 by + * Copyright (C) 2020-2023 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * Written by Anuj Verma. @@ -115,8 +115,8 @@ FT_BEGIN_HEADER typedef FT_Vector FT_26D6_Vec; /* with 26.6 fixed-point components */ typedef FT_Vector FT_16D16_Vec; /* with 16.16 fixed-point components */ - typedef FT_Fixed FT_16D16; /* 16.16 fixed-point representation */ - typedef FT_Fixed FT_26D6; /* 26.6 fixed-point representation */ + typedef FT_Int32 FT_16D16; /* 16.16 fixed-point representation */ + typedef FT_Int32 FT_26D6; /* 26.6 fixed-point representation */ typedef FT_Byte FT_SDFFormat; /* format to represent SDF data */ typedef FT_BBox FT_CBox; /* control box of a curve */ diff --git a/src/3rdparty/freetype/src/sdf/ftsdferrs.h b/src/3rdparty/freetype/src/sdf/ftsdferrs.h index b28867609a..519db0fc26 100644 --- a/src/3rdparty/freetype/src/sdf/ftsdferrs.h +++ b/src/3rdparty/freetype/src/sdf/ftsdferrs.h @@ -4,7 +4,7 @@ * * Signed Distance Field error codes (specification only). * - * Copyright (C) 2020-2022 by + * Copyright (C) 2020-2023 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * Written by Anuj Verma. diff --git a/src/3rdparty/freetype/src/sdf/ftsdfrend.c b/src/3rdparty/freetype/src/sdf/ftsdfrend.c index b0213a40d3..5610c119f8 100644 --- a/src/3rdparty/freetype/src/sdf/ftsdfrend.c +++ b/src/3rdparty/freetype/src/sdf/ftsdfrend.c @@ -4,7 +4,7 @@ * * Signed Distance Field renderer interface (body). * - * Copyright (C) 2020-2022 by + * Copyright (C) 2020-2023 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * Written by Anuj Verma. @@ -197,10 +197,10 @@ static FT_Module_Interface - ft_sdf_requester( FT_Renderer render, + ft_sdf_requester( FT_Module module, const char* module_interface ) { - FT_UNUSED( render ); + FT_UNUSED( module ); return ft_service_list_lookup( sdf_services, module_interface ); } @@ -221,9 +221,9 @@ */ static FT_Error - ft_sdf_init( FT_Renderer render ) + ft_sdf_init( FT_Module module ) /* SDF_Renderer */ { - SDF_Renderer sdf_render = SDF_RENDERER( render ); + SDF_Renderer sdf_render = SDF_RENDERER( module ); sdf_render->spread = DEFAULT_SPREAD; @@ -236,9 +236,9 @@ static void - ft_sdf_done( FT_Renderer render ) + ft_sdf_done( FT_Module module ) { - FT_UNUSED( render ); + FT_UNUSED( module ); } @@ -300,7 +300,7 @@ /* nothing to render */ if ( !bitmap->rows || !bitmap->pitch ) - return FT_Err_Ok; + goto Exit; /* the padding will simply be equal to the `spread' */ x_pad = sdf_module->spread; @@ -508,6 +508,10 @@ goto Exit; } + /* nothing to render */ + if ( !bitmap->rows || !bitmap->pitch ) + goto Exit; + /* Do not generate SDF if the bitmap is not owned by the */ /* glyph: it might be that the source buffer is already freed. */ if ( !( slot->internal->flags & FT_GLYPH_OWN_BITMAP ) ) @@ -519,10 +523,6 @@ goto Exit; } - /* nothing to render */ - if ( !bitmap->rows || !bitmap->pitch ) - return FT_Err_Ok; - FT_Bitmap_New( &target ); /* padding will simply be equal to `spread` */ @@ -557,15 +557,14 @@ { /* the glyph is successfully converted to a SDF */ if ( slot->internal->flags & FT_GLYPH_OWN_BITMAP ) - { FT_FREE( bitmap->buffer ); - slot->internal->flags &= ~FT_GLYPH_OWN_BITMAP; - } - slot->bitmap = target; - slot->bitmap_top += y_pad; - slot->bitmap_left -= x_pad; - slot->internal->flags |= FT_GLYPH_OWN_BITMAP; + slot->bitmap = target; + slot->bitmap_top += y_pad; + slot->bitmap_left -= x_pad; + + if ( target.buffer ) + slot->internal->flags |= FT_GLYPH_OWN_BITMAP; } else if ( target.buffer ) FT_FREE( target.buffer ); diff --git a/src/3rdparty/freetype/src/sdf/ftsdfrend.h b/src/3rdparty/freetype/src/sdf/ftsdfrend.h index cdb9c5f02f..571ac833d3 100644 --- a/src/3rdparty/freetype/src/sdf/ftsdfrend.h +++ b/src/3rdparty/freetype/src/sdf/ftsdfrend.h @@ -4,7 +4,7 @@ * * Signed Distance Field renderer interface (specification). * - * Copyright (C) 2020-2022 by + * Copyright (C) 2020-2023 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * Written by Anuj Verma. diff --git a/src/3rdparty/freetype/src/sdf/module.mk b/src/3rdparty/freetype/src/sdf/module.mk index 772bc48bf7..e896d20e66 100644 --- a/src/3rdparty/freetype/src/sdf/module.mk +++ b/src/3rdparty/freetype/src/sdf/module.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 2020-2022 by +# Copyright (C) 2020-2023 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/src/3rdparty/freetype/src/sdf/rules.mk b/src/3rdparty/freetype/src/sdf/rules.mk index 5239d643ff..d7742413c3 100644 --- a/src/3rdparty/freetype/src/sdf/rules.mk +++ b/src/3rdparty/freetype/src/sdf/rules.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 2020-2022 by +# Copyright (C) 2020-2023 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/src/3rdparty/freetype/src/sdf/sdf.c b/src/3rdparty/freetype/src/sdf/sdf.c index 297ba9ab02..c159b08128 100644 --- a/src/3rdparty/freetype/src/sdf/sdf.c +++ b/src/3rdparty/freetype/src/sdf/sdf.c @@ -4,7 +4,7 @@ * * FreeType Signed Distance Field renderer module component (body only). * - * Copyright (C) 2020-2022 by + * Copyright (C) 2020-2023 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * Written by Anuj Verma. |