Log

Author Commit Date CI Message
Dominik Röttsches 215ae253 2021-02-16T12:53:45 [sfnt] Update paint format values to support non-variable paints. * freetype.h (FT_PaintFormat): Update paint format identifiers after a specification change. The specification was updated to have sibling formats, variable and non-variable variants for each. Reflect that here. * sfnt/ttcolr.c (read_paint): Remove parsing of variable indices as the non-variable formats no longer have them.
Daniel E b2aeca5f 2021-02-14T20:25:21 * CMakeLists.txt: Improve 'bz2' support. Not all distributions such as FreeBSD provide a `.pc` file for '(lib)bz2' so follow autotools and add it to `Libs.private` instead.
Werner Lemberg 7849316c 2021-02-13T09:21:37 * src/tools/update-copyright-year: Fix single-year entry handling. The fix from 2021-01-17 didn't cover the case where the year to be updated is identical to the current year.
Werner Lemberg d51452e3 2021-02-13T08:52:58 Add new function `FT_Get_Transform`. See https://github.com/harfbuzz/harfbuzz/issues/2428 for some reasons to introduce this function. * include/freetype/freetype.h, src/base/ftobjs.c (FT_Get_Transform): Implement it.
Werner Lemberg d93a0119 2021-02-13T07:50:04 Minor editing of last commit; formatting.
Alexei Podtelezhnikov 70fd20e6 2021-02-12T19:28:05 Decorate qsort callbacks with cdecl. * include/freetype/internal/compiler-macros.h (FT_COMPARE_DEF): Add new macro. * src/base/ftrfork.c, src/bdf/bdflib.c, src/gxvalid/gxvcommn.c, src/psaux/afmparse.c, src/psnames/psmodule.c, src/type1/t1afm.c, src/sfnt/sfwoff.c, src/sfnt/sfwoff2.c: Update qsort callbacks. Fixes #1026 when compiling FreeType with an unusual calling convention while the C library qsort still expects cdecl.
Dominik Röttsches 54c5ad5c 2021-02-10T19:24:13 [sfnt] Implement 'COLR' v1 sweep gradients. * freetype.h (FT_PaintSweepGradient): Add `FT_PaintSweepGradient` to represent a 'COLR' v1 sweep gradient. Update format. (FT_PaintFormat): Update shifted paint formats. Sync with spec. * sfnt/ttcolr.c (read_paint): Logic to parse sweep gradients. Fix struct access in radial gradient implementation.
Werner Lemberg c8dede7b 2021-02-10T18:58:21 [dlg] Update submodule to upstream's current master.
Dominik Röttsches 64f01bfe 2021-01-20T13:04:50 [sfnt] Provide optional root transform for 'COLR' v1 glyph graph. * include/freetype/freetype.h (FT_Get_Color_Glyph_Paint): Additional function argument root_transform to control whether root transform should be returned. (FT_OpaquePaint): Additional tracking field to denote whether root transform is to be returned. * include/freetype/internal/sfnt.h (TT_Get_Color_Glyph_Paint_Func): Propagate additional argument. * src/base/ftobjs.c (FT_Get_Color_Glyph_Paint): Ditto. * src/sfnt/ttcolr.c (tt_face_get_colr_glyph_paint): Return root transform reflecting the size and tranform configured on FT_Face. (read_paint): Initialize and track status of insert_root_transform flag.
Xavier Claessens cc90307d 2021-02-10T09:30:40 * meson.build: s/freetype2_dep/freetype_dep/. Many projects (e.g., fontconfig, cairo) hardcode the `freetype_dep` variable name to use FreeType as subproject because that was the variable name in Centricular's Meson port of FreeType. While they should stop hardcoding that variable name, it does not cost us anything to keep using that name to ease transition.
Xavier Claessens 3dbdb78a 2021-02-10T09:25:42 [meson] Fix handling of HarfBuzz library. * meson.build (harfbuzz_dep): Do not fall back to HarfBuzz by default. Otherwise it causes a dependency cycle: cairo => fontconfig => freetype2 => harfbuzz => cairo Meson will still fall back to HarfBuzz subprojects if the `harfbuzz` option is set to `enabled` instead of `auto` and a `subprojects/harfbuzz.wrap` file is present. In that case it is the responsibility of the main project to set the proper options on each subproject to break the dependency cycle. Fixes: #1028.
Xavier Claessens 2c405596 2020-10-26T14:56:05 Meson: Fix dependency lookup and generate ftconfig.h [meson] Fix dependency lookup and generate `ftconfig.h`. - zlib: If not found on the system, meson can build it as a subproject. We thus never use the (outdated) zlib support that comes with FreeType. Doing so has the additional advantage that the zlib code can be shared with other projects like GLib if both are subprojects of an application. - harfbuzz: Build as a subproject if not found on the system. - 'QUESTION: What if the compiler doesn't support `-D` but uses `/D` instead as on Windows?' Answer: Meson translate arguments for us. - visibility: Replace self-made code with meson-specific solution. * meson.build (ft2_defines): Rewrite logic to set and handle it. (process_header_command): New variable, previously called `ftoption_command`. (ftoption_command, ftconfig_command): New variables. (zlib_option): Removed. (zlib_dep): New variable. (ft2_deps): Updated. (harfbuzz_dep): Updated. (ftconfig_h_in, ftconfig_h): New variables. (ft2_sources): Updated. (ft2_lib): Updated, handle visibility. (summary): Updted. * meson_options.txt (zlib): Updated.
Xavier Claessens e11cc40a 2020-10-26T14:21:19 * meson.build: Fix resource compilation on Windows. This is copied from GStreamer's meson port of FreeType. (ft2_sources): Add both debug and resource file (the latter for Windows only). (ft2_debug_src): Removed.
Xavier Claessens 69e0faa8 2020-10-26T13:39:19 * meson.build: s/ft2_libtool_version/ft2_pkgconfig_version/. (freetype2_dep): Use it. `ft2_libtool_version` would be the shared library version, not the one we should use in file `freetype2.pc`.
Xavier Claessens 0565c5ba 2020-10-26T11:31:19 * meson.build: Use `meson.override_dependency`. This is a new meson mechanism to avoid other projects to hard-code the `freetype2_dep` variable name in their build definition. It also ensures that meson does not mix system and subproject versions of FreeType inside of the same project. Also remove outdated TODO because `declare_dependency` was already there.
Xavier Claessens 5c81e09b 2020-10-26T11:26:04 * meson.build (bzip2_dep): Simplify. We remove `static:false` from `find_library('bz2')`. I don't know whether the previous code was a workaround for an old meson bug, but at least with version >=0.55.0 (which FreeType uses) it picks the shared library when both are available. With this commit, file `freetype2.pc` no longer contains the full path to file `libbz2.so`; instead, it correctly uses `-lbz2`. Note that this is a meson bug is still present in the current version (0.57.0).
Xavier Claessens 1b69fb9b 2020-10-26T11:25:08 * meson.build: Set project version.
Werner Lemberg 947e4752 2021-02-04T10:19:26 [base] Fix Netpbm tracing message. * src/base/ftobjs.c (FT_Render_Glyph_Internal): Don't emit Netpbm warning if there is nothing to output.
Werner Lemberg d924a66a 2021-02-04T07:44:06 * src/*: Don't use more than one '\n' in `FT_TRACE` and `FT_ERROR`. This ensures good logging output, with all lines having a proper prefix (if requested). This is a continuation of a similar patch from 2020-12-02, which missed some locations.
Alexei Podtelezhnikov fd7f92b6 2021-02-03T14:44:14 * builds/unix/configure.raw [mmap]: Restore default path. Fixes #1023.
Werner Lemberg 0636dc8a 2021-02-03T19:16:02 [psaux] Fix integer overflow. Reported as https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=30154 * src/psaux/psblues.c (cf2_blues_capture): Use `SUB_INT32`.
Alexei Podtelezhnikov d3befe1c 2021-02-02T23:02:54 * builds/unix/configure.raw [mmap support]: Explicitly handle Windows. Fixes #1024.
Werner Lemberg 5635d5ed 2021-02-02T10:33:53 * builds/unix/configure.raw [mmap support]: Correctly handle Windows. Fixes #1024.
Werner Lemberg 68940241 2021-02-02T09:38:25 builds/{unix,windows}/ftsystem.c: Sync comments with `src/base/ftsystem.c`. Also some minor code formatting.
Werner Lemberg 4554c6da 2021-01-31T17:17:40 * builds/windows/ftdebug.c: Synchronize with `src/base/ftdebug.c`.
Werner Lemberg 324612ce 2021-01-31T14:28:44 Always provide logging API. It's easier to have stubs if FT_DEBUG_LOGGING is undefined than to modify `ftexport.sym` conditionally. Problem reported by Alexei. * src/base/ftdebug.c: Include `ftlogging.h`. (FT_Trace_Set_Level, FT_Trace_Set_Default_Level, FT_Set_Log_Handler, FT_Set_Default_Log_Handler) [!FT_DEBUG_LOGGING]: Provide stubs.
Werner Lemberg 939e8444 2021-01-30T06:32:38 * builds/unix/configure.raw: Fix typo. Bug introduced in Vincent's last commit bb33f03. Fixes issue #1021.
Alexei Podtelezhnikov 7ae5609d 2021-01-27T16:08:08 * src/base/ftstroke.c (FT_Stroker_EndSubPath): Ignore tiny gaps. Fixes bug #1020.
Alexei Podtelezhnikov 4c3bd2ab 2021-01-27T15:54:34 [stroker] Minor clean-up. * src/base/ftstroke.c (FT_Stroker_{ConicTo,CubicTo}): Reset the last line length. (FT_Stroker_EndSubPath): Call `ft_stroker_process_corner'.
Werner Lemberg 601c5a61 2021-01-27T13:04:43 Improve ChangeLog entry for last commit.
Vincent Torri bb33f03a 2021-01-27T06:43:41 * builds/windows/ftsystem.c: Add shared memory support on Windows.
Werner Lemberg c7cc947c 2021-01-23T15:45:10 Minor documentation fixes.
Werner Lemberg 209e9841 2021-01-23T14:15:29 Require HarfBuzz 2.0.0. This is needed to make commit f1f9705f9 work. * CMakeLists.txt (HARFBUZZ_MIN_VERSION), builds/unix/configure.raw (harfbuzz_pkg), meson.build (harfbuzz_dep): Updated.
Alexei Podtelezhnikov 8dc31132 2021-01-22T20:27:15 * autogen.sh: Absorb `version.sed'. * version.sed: Removed.
Werner Lemberg 60ba8fe9 2021-01-22T09:02:07 Move old ChangeLog files to new `docs/oldlogs` directory.
Werner Lemberg 0606350c 2021-01-22T09:01:46 LICENSE.TXT: Moved to root directory; minor edits. Fixes issue #1015.
Alexei Podtelezhnikov b594cd90 2021-01-19T07:35:38 * srd/base/ftlcdfil.c (FT_Library_SetLcdGeometry): Fix return value.
Nikolaus Waxweiler f1f9705f 2021-01-15T23:52:04 [afshaper] Fix hb_ot_tags_from_script deprecation warning. * autofit/afshaper.c (af_shaper_get_coverage): Copy the source code of the function as suggested in https://github.com/harfbuzz/harfbuzz/issues/2737 and adjust to handle at most three tags.
Werner Lemberg d35c7f7c 2021-01-17T08:44:00 * src/tools/update-copyright-year: Fix single-year entry handling.
Werner Lemberg b6e8a712 2021-01-17T07:18:48 Update all copyright notices.
Werner Lemberg 4278ee6c 2021-01-17T07:16:26 no-copyright: Updated.
Alexei Podtelezhnikov 4e7a0184 2021-01-16T12:04:35 * builds/unix/unixddef.mk: Remove the second DEVEL_DIR definition.
Werner Lemberg 5e4ed8ba 2021-01-16T15:45:13 Documentation update for repository move to 'freedesktop.org'.
Werner Lemberg b0f86752 2021-01-16T08:57:33 .gitattributes: New file. We use this to handle ChangeLog files with the `git-merge-changelog` program.
Werner Lemberg 89184195 2021-01-16T07:53:09 README, README.git: First updates due to freedesktop.org migration.
Dominik Röttsches 268bdd77 2021-01-15T14:49:32 CHANGES: Mention 'COLR' v1 support.
Werner Lemberg ba1a6acf 2021-01-15T10:09:00 [sfnt] Additional checks for 'colr' table presence. * sfnt/ttcolr.c (tt_face_get_colr_glyph_paint, tt_face_get_colorline_stops, tt_face_get_paint): Additional checks for whether colr table is present. Prevents crashes when these methods are called on non-COLR fonts.
Dominik Röttsches 53fea877 2021-01-14T16:06:03 Add config option to test for 'COLR' v1 support in headers. * include/freetype/config/ftoption.h (TT_SUPPORT_COLRV1): New macro so that clients can test whether the FreeType checkout that they are building against supports the 'COLR' v1 API. This is intended to be a temporary solution until 'COLR' v1 support is released in a FreeType version and such a check can be made by using the version number instead.
Dominik Röttsches 4b58cf47 2020-12-16T17:18:56 [base] Fill 'COLR' v1 API templates to make them work (#59703). * src/base/ftobjs.c (FT_Get_Color_Glyph_Paint, FT_Get_Paint_Layers, FT_Get_Paint, FT_Get_Colorline_Stops): Add basic sanity checks, check for existence of `FT_Face`, check arguments and delegate calls for the respective 'COLR' v1 API to the SFNT driver.
Dominik Röttsches d3e95d97 2020-12-16T17:12:30 [sfnt] Register 'COLR' v1 API in driver (#59703). * include/freetype/internal/sfnt.h (TT_Get_Color_Glyph_Paint_Func, TT_Get_Paint_Layers_Func, TT_Get_Colorline_Stops_Func, TT_Get_Paint_Func): New function pointer types. (SFNT_Interface): Add them. (FT_DEFINE_SFNT_INTERFACE): Updated. * src/sfnt/sfdriver.c (PUT_COLOR_LAYERS_V1): New macro. (sfnt_interface): Add new function pointers.
Dominik Röttsches 6260b490 2020-12-16T17:06:42 [sfnt] Add 'COLR' v1 API to retrieve color layers (#59703). * src/sfnt/ttcolr.c (tt_face_get_paint_layers): New function to get the layers of a `PaintColrLayers` table in the font, using an `FT_LayerIterator` from an `FT_PaintColrLayers` object retrieved via `tt_face_get_paint`. * src/sfnt/ttcolr.h: Updated.
Dominik Röttsches be06a9d0 2020-12-16T17:02:22 [sfnt] Add 'COLR' v1 API to iterate color stops (#59703). * src/sfnt/ttcolr.c (tt_face_get_colorline_stops): New function to return the current `FT_ColorStop` object from `FT_ColorStopIterator`. Also increment the iterator. * src/sfnt/ttcolr.h: Updated.
Dominik Röttsches cdad4db4 2020-12-16T16:52:24 [sfnt] Add API to get actual paint from `FT_OpaquePaint` (#59703). * src/sfnt/ttcolr.c (tt_face_get_paint): New function to resolve an `FT_OpaquePaint` paint reference into an `FT_COLR_Paint` object of a certain format, which contains the detailed information stored in a paint of the respective format. (read_paint): New function to provide the format specific parsing and to populate the data members of each specific `FT_COLR_Paint` subtype. (read_color_line): New function to parse retrieved color line information into an `FT_ColorLine` object, which has information about the color line extend mode as well as an `FT_ColorStopIterator` object. * src/sfnt/ttcolr.h: Updated.
Dominik Röttsches 9e422b67 2020-12-16T16:44:34 [sfnt] Add API to retrieve 'COLR' v1 root paint (#59703). * src/sfnt/ttcolr.c (BaseGlyphV1Record): New structure. (tt_face_load_colr): Handle version 1 table header. (find_base_glyph_v1_record): New auxiliary function. (tt_face_get_colr_glyph_paint): New function to find the root `FT_OpaquePaint` object for a given glyph ID. * src/sfnt/ttcolr.h: Updated.
Dominik Röttsches 08dba4dc 2020-12-16T16:14:19 Add new methods required for 'COLR' v1 to public API (#59703). * include/freetype/freetype.h (FT_Get_Color_Glyph_Paint): New method for retrieving the root paint object for a color glyph by specifying a glyph ID. (FT_Get_Paint_Layers): New method for retrieving the layers of a `PaintColorGlyph`. (FT_Get_ColorLine_Stops): New method for retrieving the stops of a color. (FT_Get_Paint): New method for resolving an `FT_OpaquePaint` into an `FT_COLR_Paint` object.
Dominik Röttsches f57c24db 2020-12-16T16:02:02 Add types required for 'COLR' v1 to public API (#59703). * include/freetype/freetype.h (FT_PaintFormat, FT_ColorStopIterator, FT_ColorIndex, FT_ColorStop, FT_PaintExtend, FT_ColorLine, FT_Affine23, FT_CompositeMode, FT_OpaquePaint, FT_PaintColrLayers, FT_PaintSolid, FT_PaintLinearGradient, FT_PaintRadialGradient, FT_PaintGlyph, FT_PaintColrGlyph, FT_PaintTransformed, FT_PaintTranslate, FT_PaintRotate, FT_PaintSkew, FT_PaintComposite, FT_COLR_Paint): Adding structs and enum to represent paint format, color stop information, gradient extend information, structs to reference paint offsets, and to define transforms and compositions. Adding a union type to represent the union of the structs, distinguished by `FT_PaintFormat`.
Werner Lemberg 03ceda97 2021-01-10T15:34:46 * builds/*: s/BUILD_DIR/PLATFORM_DIR/. The old variable name caused confusion.
Alexei Podtelezhnikov 34315538 2021-01-08T13:22:34 [builds] Revert `FTMODULE_H' changes. * builds/toplevel.mk, builds/freetype.mk: Revert changes.
Alexei Podtelezhnikov 0901a6f7 2021-01-07T19:43:15 Tweak .gitignore.
Alexei Podtelezhnikov 6f24bab6 2021-01-07T16:57:13 [builds/windows] Fix up DLG build with VC++. * builds/windows/vc2010/script.bat: Copy headers to include/. * builds/windows/vc2010/freetype.vcxproj: Remove DLG paths.
Alexei Podtelezhnikov 576403f2 2021-01-07T16:02:32 [builds] Relocate `FTMODULE_H'. * builds/toplevel.mk: Place `FTMODULE_H' in include/. * builds/freetype.mk: Simplify included path.
Werner Lemberg cbc14b10 2021-01-07T10:13:15 Fix ABI incompatibility. * include/freetype/ftimage.h (FT_Pixel_Mode): Don't insert `FT_PIXEL_MODE_GRAY16' but append it. * src/base/ftobjs.c (pixel_modes): Updated.
Werner Lemberg 8afc1854 2021-01-07T10:04:24 Fix typos from last commit.
Alexei Podtelezhnikov 6369058e 2021-01-07T00:13:23 [dlg] Move the headers to include/dlg to simplify their use. * autogen.sh, builds/toplevel.mk: Copy headers to incluide/dlg. * builds/freetype.mk, builds/windows/vc2010/freetype.vcxproj: Simplify included path. * include/freetype/internal/ftdebug.h: Simplify #include. * src/dlg/rules.mk, .gitignore: Updated.
Werner Lemberg f88c00e4 2021-01-06T19:19:29 * meson.build: Add summary. Based on a patch from Vincent Torri <vincent.torri@gmail.com>.
Torsten Hilbrich c6345ca3 2021-01-06T08:55:16 * meson.build: Fix 'png' build option (#59458). Without this patch, 'png' is always required.
Alexei Podtelezhnikov 74f1b6be 2021-01-04T23:35:01 [builds/windows] Add SDF to VC2010 project. * builds/windows/vc2010/freetype.vcxproj: Updated; AfterBuild conveniences.
Werner Lemberg c6ff2556 2020-12-26T10:50:21 [sdf] Use 'counter-clockwise', not 'anti-clockwise'. We prefer US nomenclature. * src/sdf/ftsdf.c (SDF_Contour_Orientation): s/SDF_ORIENTATION-ACW/SDF_ORIENTATION_CCW/. Update all users.
Werner Lemberg bca740d5 2020-12-26T08:55:49 Typo.
Werner Lemberg b6c8542d 2020-12-26T08:51:46 * src/base/ftobjs.c (pixel_modes): Updated.
Anuj Verma 10a5dfec 2020-12-26T08:34:38 [sdf] Remove custom memory tracker. The internal FreeType memory tracker is sufficient. * src/sdf/ftsdf.c (FT_DEBUG_INNER, FT_ASSIGNP_INNER, SDF_MemoryUser, sdf_alloc, sdf_free, SDF_ALLOC, SDF_FREE, SDF_MEMORY_TRACKER_DECLARE, SDF_MEMORY_TRACKER_SETUP, SDF_MEMORY_TRACKER_DONE): Removed. s/SDF_ALLOC/FT_ALLOC/. s/SDF_FREE/FT_FREE/. Other updates.
Werner Lemberg a8d3ad35 2020-12-24T08:43:55 .mailmap: Updated and synchronized with 'freetype2-demos' repository.
Werner Lemberg 286e9e0d 2020-12-24T08:41:12 [sdf] Two more copyright notices.
Werner Lemberg 3c983eb8 2020-12-24T08:36:09 [sdf] Fix `make multi`. * src/sdf/ftsdf.c: Include `ftoutln.h`.
Werner Lemberg aa1b5362 2020-12-24T08:32:04 [sdf] Fix tracing. * include/freetype/internal.fttrace.h: Add 'bsdf' component. * src/sdf/ftbsdf.c, src/sdf/ftsdf.c (FT_COMPONENT): Define.
Werner Lemberg 04a64432 2020-12-24T08:29:05 [sdf] Add copyright notices.
Werner Lemberg eb2b5bb1 2020-12-24T07:44:16 docs/CHANGES: Mention new SDF module.
Anuj Verma b298a644 2020-08-21T04:59:08 [sdf] Add debugging function. * src/sdf/ftsdf.c (sdf_shape_dump): New function.
Anuj Verma 6444875f 2020-08-21T03:59:23 [sdf] Add brief technical overview of both rasterizers.
Anuj Verma 6cd6df55 2020-08-20T21:57:43 [sdf] Add 'bsdf' renderer to 'sdf' module. * src/sdf/ftsdfrend.c (ft_bsdf_render): New function. (ft_bitmap_sdf_renderer_class): New structure.
Anuj Verma d27d107f 2020-08-20T21:25:46 [sdf] Add interface functions for the 'bsdf' rasterizer. * src/sdf/ftsdf.c (bsdf_raster_new, bsdf_raster_reset, bsdf_raster_set_mode, bsdf_raster_render, bsdf_raster_done): New functions. (ft_bitmap_sdf_raster): New variable. * src/sdf/ftsdf.h: Updated.
Anuj Verma a2113475 2020-08-20T21:21:33 [sdf] Add function to copy SDF data into output bitmap. * src/sdf/ftbsdf.c (finalize_sdf): New function.
Anuj Verma e2ae96b9 2020-08-20T21:19:32 [sdf] Add '8-point sequential Euclidean distance mapping' algorithm. * src/sdf/ftbsdf.c (compare_neighbor, first_pass, second_pass, edt8): New functions.
Anuj Verma 6b9a8044 2020-08-20T21:09:23 [sdf] Add function to copy source bitmap to distance map. * src/sdf/ftbsdf.c (bsdf_init_distance_map): New function.
Anuj Verma 0f644f38 2020-08-20T09:25:15 [sdf] Add functions to compute pixel edge distances. * src/sdf/ftbsdf.c (compute_edge_distance, bsdf_approximate_edge): New functions.
Anuj Verma c5761764 2020-08-20T09:20:26 [sdf] Add function to find edge pixels in a grid of alpha values. * src/sdf/ftbsdf.c (bsdf_is_edge): New function.
Anuj Verma 9bbb3611 2020-08-20T09:17:38 [sdf] Add essential structures for the 'bsdf' rasterizer. * src/sdf/ftbsdf.c (ONE): New macro. (BSDF_TRaster, ED, BSDF_Worker): New structures. (zero_ed): New constant.
Anuj Verma c6f394bf 2020-08-20T08:28:14 [sdf] Add 'sdf' module to non-gnumake build systems. * include/freetype/config/ftmodule.h: Add both the 'sfd' and 'bsfd' renderers to the list of modules. * CMakeLists.txt (BASE_SRCS): Add 'sdf' single-object module.
Anuj Verma 05f6088d 2020-08-20T07:54:13 [sdf] Added basic overlapping contour support. * src/sdf/ftsdf.c (sdf_generate_with_overlaps): New function. (sdf_raster_render): Enable it.
Anuj Verma 879ca87f 2020-08-19T16:57:38 [sdf] Add build infrastructure. * src/sdf/module.mk, src/sfd/rules.mk: New files. * src/sdf/ftsdf.h (ft_sdf_raster): New forward declaration. * include/freetype/ftmoderr.h (FT_MODERRDEF): Add error definition for the 'sdf' module. * include/freetype/internal/fttrace.h (FT_TRACE_DEF): Add trace definition for the `sdf' module. * modules.cfg (RASTER_MODULES): Add the `sdf' module to the list of rasterizers.
Anuj Verma 665ac967 2020-08-19T16:29:51 [sdf] Add interface functions for the 'sdf' rasterizer. * src/sdf/ftsdf.c (sdf_raster_new, sdf_raster_reset, sdf_raster_set_mode, sdf_raster_render, sdf_raster_done): New functions. (ft_sdf_raster): New structure.
Anuj Verma 1010f2c3 2020-08-19T16:25:08 [sdf] Add subdivision and bounding box optimization. * src/sdf/ftsdf.c (sdf_generate_bounding_box): New function, which is an optimized version of `sdf_generate`. (sdf_generate_subdivision): New function.
Anuj Verma 986d3108 2020-08-19T12:56:58 [sdf] Add function to generate SDF. * src/sdf/ftsdf.c (sdf_generate): New function, currently disabled. This is a proof-of-concept implementation: It doesn't use any optimization, it simply checks all grid points against all contours.
Anuj Verma 0d52f4ae 2020-08-19T12:22:34 [sdf] Add functions to get shortest distance from any edge/contour. * src/sdf/ftsdf.c (sdf_edge_get_min_distance): New function. (sdf_contour_get_min_distance): New function, currently disabled.
Anuj Verma 81e32986 2020-08-18T17:49:56 [sdf] Add shortest distance finding functions. * src/sdf/ftsdf.c (get_min_distance_line, get_min_distance_conic, get_min_distance_cubic): New functions. Note that `get_min_distance_conic` comes with two implementations (using an analytical and an iterative method, to be controlled with the `USE_NEWTON_FOR_CONIC` macro).
Anuj Verma c918b54f 2020-08-18T10:28:16 [sdf] Add function to resolve corner distances. * src/sdf/ftsdf.c (resolve_corner): New function.
Anuj Verma a255125f 2020-08-18T10:17:46 [sdf] Add essential math functions. * src/sdf/ftsdf.c (cube_root, arc_cos) [!USE_NEWTON_FOR_CONIC]: New auxiliary functions. * src/sdf/ftsdf.c (solve_quadratic_equation, solve_cubic_equation) [!USE_NEWTON_FOR_CONIC]: New functions.
Anuj Verma cd413845 2020-08-18T10:14:20 [sdf] Add utility functions for contours. * src/sdf/ftsdf.c (get_control_box, get_contour_orientation): New functions. (split_conic, split_cubic, split_sdf_conic, split_sdf_cubic, split_sdf_shape): New functions.
Anuj Verma 2de1b563 2020-08-17T16:36:30 [sdf] Add functions to decompose `FT_Outline`. * src/sdf/ftsdf.c (sdf_move_to, sdf_line_to, sdf_conic_to, sdf_cubic_to): New auxiliary decomposition functions. (sdf_compose_funcs): New structure. (sdf_outline_decompose): New function.
Anuj Verma cf0464d8 2020-08-17T16:24:39 [sdf] Structs, enums, macros, and functions for 'sdf' rasterizer. * src/sdf/ftsdf.c (FT_DEBUG_INNER, FT_ASSIGNP_INNER) [FT_DEBUG_LEVEL_TRACE && FT_DEBUG_MEMORY]: New macros. (SDF_MemoryUser) [FT_DEBUG_LEVEL_TRACE && FT_DEBUG_MEMORY]: New struct for memory usage tracing. (sdf_alloc, sdf_free) [FT_DEBUG_LEVEL_TRACE && FT_DEBUG_MEMORY]: New functions for memory usage tracing. (SDF_ALLOC, SDF_FREE): New macros for memory management. (SDF_MEMORY_TRACKER_DECLARE, SDF_MEMORY_TRACKER_SETUP, SDF_MEMORY_TRACKER_DONE): New macros to set up memory usage tracing. (USE_NEWTON_FOR_CONIC, MAX_NEWTON_DIVISIONS, MAX_NEWTON_STEPS, CORNER_CHECK_EPSILON, CG_DIMEN): New configuration macros for controlling the process of finding the shortest distance. (MUL_26D6, VEC_26D6_DOT): New auxiliary macros. (SDF_TRaster, SDF_Edge, SDF_Contour, SDF_Shape, SDF_Signed_Distance, SDF_Params): New structs for setting up SDF data. (SDF_Edge_Type, SDF_Contour_Orientation): New enums for SDF data. (zero_vector, null_edge, null_contour, null_shape, max_sdf): Useful constants. (sdf_edge_new, sdf_edge_done, sdf_contour_new, sdf_contour_done, sdf_shape_new, sdf_shape_done): New constructors and destructors.