| 2020-08-15 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf -> bsdf] Added a basic overview of the `bsdf' rasterizer. |
| |
| * src/sdf/ftbsdf.c: Added the citation of the original paper |
| and added a overview of the process for generating SDF |
| from bitmaps. |
| |
| 2020-08-15 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Added a basic overview of the `sdf' rasterizer. |
| |
| * src/sdf/ftsdf.c: Added the citation of the original paper |
| and added a overview of the process for generating SDF |
| from outlines. |
| |
| * src/sdf/ftsdf.c (sdf_generate_subdivision): Added comment |
| explaining how the optimization works. |
| |
| 2020-08-13 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Fix gcc compiler warnings. |
| |
| * src/sdf/ftsdf.c, src/sdf/ftbsdf.c (*): Fix |
| various compiler warnings, which were caused |
| mainly due to unused variables and unused functions. |
| |
| 2020-08-13 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Bug fix. |
| |
| * src/sdf/ftsdf.c (sdf_generate_with_overlaps): The |
| outside sign will always be 1. And added a missing |
| `else'. |
| |
| 2020-08-12 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [base] Fix memory leaks due to FreeType internals. |
| |
| * src/base/ftobjs.c (ft_remove_renderer): Similar to |
| `ft_add_renderer', remover raster's `glyph_format' |
| check. Due to this the rasterizers which do not have |
| `glyph_format' of `FT_GLYPH_FORMAT_OUTLINE' won't get |
| deallocated (the `raster_done' function is no called). |
| |
| 2020-08-12 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Fix memory leaks. |
| |
| * src/sdf/ftsdf.c (sdf_generate_with_overlaps): Deallocate |
| the temporary bitmaps, and all the rest of the arrays. |
| And also handle the `shape' appropriately so as to not |
| cause memory leaks. |
| |
| 2020-08-12 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Handle Post-Script fonts for overlap. |
| |
| * src/sdf/ftsdf.c (sdf_generate_with_overlaps): Handle |
| Handle Post-Script fonts for overlap support. Simply |
| flip the orientation while combining all the separate |
| SDF. |
| Also, handle the `flip_sign' property separately so as |
| to avoid handling extra cases. |
| |
| 2020-08-12 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Added overlap support (currently only for TrueType). |
| |
| * src/sdf/ftsdfrend.h (SDF_Renderer_Module): Removed the |
| expermental `optimization' property. |
| Added another property `overlaps', which can be used to |
| turn on the overlap support. |
| |
| * src/sdf/ftsdf.h (SDF_Raster_Params): Ditto as above. |
| |
| * src/sdf/ftsdfrend.c (*): Added functionality to set |
| and get the new `overlaps' property. |
| |
| * src/sdf/ftsdf.c (sdf_raster_render): |
| Removed support for all the optimization modes and |
| only keep the subdivision optimization and the new |
| overlap support function. |
| |
| * src/sdf/ftsdf.c (sdf_generate_coarse_grid): Turned |
| off until we can find a way to make it faster. |
| |
| * src/sdf/ftsdf.c (sdf_generate_with_overlaps): Added |
| a function to generate SDF for shapes with overlapping |
| contours. It basically generate SDF for separate contours |
| in seperate bitmaps and then combine them to remove |
| overlaps. |
| |
| 2020-08-7 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf, bsdf] Added better documentation. |
| |
| * src/sdf/ftsdf.c, src/sdf/ftbsdf.c (*): Added documentation |
| of the structs and enums for both the renderers. |
| |
| 2020-08-6 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Added function to get contour orientation. |
| |
| * src/sdf/ftsdf.c (SDF_Contour_Orientation): Added |
| enum to hold the different orientations of a contour. |
| |
| * src/sdf/ftsdf.c (get_contour_orientation): Added |
| function which can be used to compute the orientation |
| of a contour. |
| |
| * src/sdf/ftbsdf.c (*): Remove completed `[TODO]'s. |
| |
| 2020-08-6 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf -> bsdf] Added documentation for functions of the `bsdf' renderer. |
| |
| * src/sdf/ftbsdf.c (*) Added function documentation for |
| function of the `bsdf' renderer. |
| |
| 2020-08-6 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Added documentation for function of the `sdf' renderer. |
| |
| * src/sdf/ftsdf.c (*): Added function documentation for |
| function of the `sdf' renderer, and fixed grammar at a |
| few places. |
| |
| 2020-08-5 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Added documentation for some structs. |
| |
| * src/sdf/ftsdfrend.h |
| .../ftsdfrend.c |
| .../ftsdfcommon.h |
| .../ftsdf.h |
| : Added documentation for a few structs. |
| |
| 2020-08-5 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf -> bsdf] Extended to work with monochrome bitmaps. |
| |
| * src/sdf/ftbsdf.c (bsdf_init_distance_map): Handle |
| monochrome bitmaps and convert them to the internal |
| intermediate format, which can then be used to |
| generate SDF. |
| |
| 2020-08-3 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| * src/sdf/ftsdfrend.c (ft_bsdf_render): Initialize |
| the target bitmap so as to avoid crashes due to |
| uninitialized memory. |
| |
| 2020-08-3 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf -> bsdf] Fixed memory leak. |
| |
| * src/sdf/ftbsdf.c (bsdf_raster_render): Release the |
| allocated distance map. |
| Also, added a log of total memory allocated for |
| generating SDF from bitmap. |
| |
| 2020-08-2 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf -> bsdf] Fixed a bug with `finalize_sdf'. |
| |
| * src/sdf/ftbsdf.c (finalize_sdf): First check if the |
| value is withing [-spread, spread] and then cast it |
| to 6.10 short, otherwise the value can overflow and |
| give negative result. |
| Also, flip the sign if the property `flip_sign' is |
| set to true. |
| |
| 2020-08-1 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf -> bsdf] Added option to use squared distances. |
| |
| * src/sdf/ftbsdf.c (bsdf_is_edge): Modified the function |
| to use distance map rather than the alpha values from |
| the source image. |
| |
| * src/sdf/ftbsdf.c (bsdf_approximate_edge): Only calculate |
| approximate edges for edge pixels. Use `bsdf_is_edge' is |
| to check for edge pixels. For non edge pixel assgn far |
| away distances. |
| |
| * src/sdf/ftbsdf.c (finalize_sdf): Handle distances in case |
| of squared distances. |
| And also use the macro `VECTOR_LENGTH_16D16' in the entire |
| code to compute vector length. This takes care of squared |
| distances. |
| |
| * src/sdf/ftsdfcommon.c (VECTOR_LENGTH_16D16): Move the macro |
| `VECTOR_LENGTH_16D16' from `ftsdf.c' to this file because |
| it is also used by the `bsdf' renderer. |
| |
| 2020-08-1 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| * src/sdf/ftbsdf.c (compare_neighbor): Fix bug. |
| |
| 2020-08-1 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf -> bsdf] Optimized a bit. |
| |
| * src/sdf/ftbsdf.c (ED: sign => alpha): Renamed sign |
| to alphas. This is used to store the alpha of the current |
| pixel mapped to the source image. This let's us store |
| additional information without increasing memory usage. |
| |
| * src/sdf/ftbsdf.c (bsdf_init_distance_map): Removed any/all |
| kind of edge approximation and edge check from the function. |
| The function simply copy the source bitmap to the distance |
| map now, preserving alpha values. |
| |
| * src/sdf/ftbsdf.c (compute_edge_distance): Use the new `alpha' |
| parameter to compute gradient and approximate distance. |
| Previously we were using the `dist' variable to store alpha |
| values, which restricts modifying the `dist' variable because |
| we need alpha values of neighbor to compute the gradient. |
| |
| * src/sdf/ftbsdf.c (bsdf_approximate_edge): Now that we can |
| modify the `dist' variable of the distance map, we can |
| combine the two nested loops. |
| |
| * src/sdf/ftbsdf.c (finalize_sdf): Move the `sign' determination |
| and assignment to this function. |
| |
| 2020-07-31 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| * src/sdf/ftbsdf.c (compute_edge_distance): Grammer fix. |
| |
| 2020-07-31 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf -> bsdf] Add explanation of the approximation. |
| |
| * src/sdf/ftbsdf.c (compute_gradient => compute_edge_distance): |
| Renamed to make sense of what the function does. |
| Also, added the explanation of the algorithm used |
| and a high level view of how it works. |
| |
| * src/sdf/ftbsdf.c (compare_neighbor): Fix a bug related |
| to value approximation before calling `FT_Vector_Length'. |
| |
| 2020-07-30 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| * src/sdf/ftsdfcommon.h (*): Fix line endings. |
| |
| Always use LF line endings. |
| |
| 2020-07-30 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf,bsdf] Put common propertied and functions in one file. |
| |
| * src/sdf/ftsdfcommon.h: Added new file which contains |
| common function, macros, properties for both `sdf' and |
| `bsdf' renderer. |
| |
| * src/sdf/ftsdf.c, src/sdf/ftsdf.h, src/sdf/ftbsdf.c: |
| Remove common properties and include `ftsdfcommon.h'. |
| |
| * src/sdf/rules.mk (SDF_DRV_H): Add the new `ftsdfcommon.h' |
| file to include list. |
| |
| 2020-07-30 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| * src/sdf/ftbsdf.c (compute_gradient): Use root(2) |
| for the filter. Also, use the computed gradient |
| to approximate the edge distance from a pixel's |
| position according to the Gustavson's algorithm. |
| |
| 2020-07-29 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf -> bsdf] Added function to approximate edge distance. |
| |
| * src/sdf/ftbsdf.c (bsdf_approximate_edge): The function |
| uses the Gustavson's algorithm to approximate the edge |
| from pixel values. |
| |
| * src/sdf/ftbsdf.c (compute_gradient): The function uses |
| Sobel's operator to compute the gradient at a pixel. |
| The is used to detect edge direction. |
| |
| 2020-07-28 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| * src/sdf/ftbsdf.c (_pass): Use function for repetitive task. |
| |
| Use function `compare_neighbor' for comparing the |
| neighbors. Makes it easier to tweak the algorithm |
| and looks better. |
| |
| * src/sdf/ftbsdf.c (compare_neighbor): Added function |
| to compare the neighbors and assign values if the |
| new distance is the shortest. |
| |
| 2020-07-27 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| * src/sdf/ftbsdf.c (bsdf_is_edge): Use macros to |
| make it look cleaner. |
| |
| Use `CHECK_NEIGHBOR' macro to check neighbors while |
| finding edges. Make the code more readable and look |
| cleaner. |
| |
| 2020-07-27 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf -> bsdf] Fix edge detection bug. |
| |
| * src/sdf/ftbsdf.c (bsdf_is_edge): [BUG] Check all |
| neighbors including the diagonal neighbors to |
| properly determine the edge. |
| |
| 2020-07-27 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf -> bsdf] Added edge detection algorithm. |
| |
| Added edge detection algorithm. It works by checking |
| the neighboring pixels and if any neighbor is not |
| filled (i.e. belongs to background) we mark the |
| pixel as edge by setting it's distance to 0. |
| |
| * src/sdf/ftbsdf.c (bsdf_is_edge): Added function to |
| detect if the pixel is an edge. |
| |
| 2020-07-27 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf -> bsdf] Added the second pass of the '8SED'. |
| |
| Added the second pass of the 8SED algorithm. The second pass |
| transverse the bitmap from bottom to top and for each row |
| it sweeps forward and backward assigning distances to the |
| grid points. |
| |
| * src/sdf/ftbsdf.c (second_pas): Added function to do the |
| second pass of the 8SED algorithm on the bitmap. |
| |
| 2020-07-26 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf -> bsdf] Optimize the first pass of the 8SED. |
| |
| * src/sdf/ftbsdf.c (first_pass): Optimize the first |
| pass by first approximating the neighbor's distance |
| by adding an offset. The offset will be max root(2) |
| because the maximum be add to a vector is (1, 1). |
| By approximating we can reduce the number of |
| `FT_Vector_Length' calls and thus make the process |
| faster. |
| |
| 2020-07-26 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Fix GNU Make build. |
| |
| * src/sdf/rules.mk (SDF_DRV_H): Manually add source files |
| as there is a `ftbsdf.c' file without any `ftbsdf.h'. |
| |
| * src/sdf/ftbsdf.c: Include `fttrigon.h' for `multi' builds. |
| |
| 2020-07-26 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf -> bsdf] Added first pass of the '8SED' algorithm. |
| |
| Added the first pass of the 8SED algorithm. The first pass |
| transverse the bitmap from top to bottom and for each row |
| it sweeps forward and backward assigning distances to the |
| grid points. |
| |
| * src/sdf/ftbsdf.c (ED): Added additional parameter `sign'. |
| |
| * src/sdf/ftbsdf.c (edt8): Added function to convert bitmap |
| to SDF using the 8SED algorithm. |
| |
| * src/sdf/ftbsdf.c (first_pass): Added function to do the |
| first pass of the 8SED algorithm on the bitmap. |
| |
| * src/sdf/ftbsdf.c (finalize_sdf): Added function to assign |
| the final SDF data to the target bitmap. |
| |
| * src/sdf/ftbsdf.c (*): Various minor or experimental changes. |
| |
| * src/sdf/ftsdfrend.c (ft_bsdf_render): Fix spacing. |
| |
| 2020-07-25 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| * src/sdf/ftbsdf.c (*): Rename `SDF_TRaster' => `BSDF_TRaster'. |
| |
| `SDF_TRaster' is for the `sdf' renderer. |
| |
| 2020-07-25 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| * src/sdf/ftbsdf.c: Typo. `FT_16D16' is 16.16 representation. |
| |
| 2020-07-25 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf -> bsdf renderer] Hold a refrence to `FT_Memory'. |
| |
| Due to the way the 8SED algorithm works we need to keep |
| a track of distances and nearest point of all the pixels/ |
| grid points. |
| |
| * src/sdf/ftbsdf.c (BSDF_TRaster): Added struct to |
| hold the `FT_Memory' reference, to be used to allocate |
| memory. |
| |
| * src/sdf/ftbsdf.c (ED, BSDF_Worker): Added few more |
| essential struct. `ED' contains infomation about the |
| nearest point. `BSDF_Worker' is used to combine all |
| the essentail parameters to functions. |
| |
| * src/sdf/ftbsdf.c (bsdf_copy_source_to_target => |
| bsdf_init_distance_map): Renamed. |
| |
| * src/sdf/ftbsdf.c (*): Various minor changes. |
| |
| * src/sdf/sdf.c: Change the order of source include |
| because `ftsdf.c' change some internal freetype |
| defines which are required in `ftbsdf.c'. |
| |
| 2020-07-25 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf -> bsdf renderer] Convert 8bit bitmap to 16bit. |
| |
| * src/sdf/ftbsdf.c (bsdf_copy_source_to_target): Added |
| extra parameter to flip the bitmap vertically. |
| |
| * src/sdf/ftbsdf.c (bsdf_copy_source_to_target): |
| Implemented functionality to convert 8bits per |
| pixel bitmap to a 16bits per pixel bitmap, which |
| will be used to generate SDF. |
| |
| 2020-07-24 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Started the `bsdf' rasterier. |
| |
| * src/sdf/ftbsdf.c (*): Fix line endings. |
| |
| * src/sdf/ftbsdf.c (bsdf_copy_source_to_target): Added |
| function to copy the source bitmap to the center of |
| the target bitmap and also convert it to normalized |
| 16 bits per pixel bitmap. |
| |
| 2020-07-19 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Added interface functions for `bsdf' converter. |
| |
| * src/base/ftobjs.c (FT_Render_Glyph_Internal): Remove |
| the bitmap check which prevent calling renderers |
| if the glyph is already a bitmap. The `bsdf' renderer |
| requires a bitmap for conversion. |
| |
| * src/base/ftobjs.c (ft_add_renderer): Remove the glyph |
| format check which ensures that the glyph format for |
| a renderer is `FT_GLYPH_FORMAT_OUTLINE', again the `bsdf' |
| renderer has `FT_GLYPH_FORMAT_BITMAP' as a glyph format, |
| so we need to remove the condition to initialize the |
| renderer properly. |
| |
| * src/sdf/ftbsdf.c (*): Added a rasterizer for the |
| `bsdf' renderer and created necessary functions. |
| |
| * src/sdf/ftbsdf.h: Add forward declaration of the |
| rasterizer. |
| |
| * src/sdf/ftsdfrend.c (ft_bitmap_sdf_renderer_class): |
| Define the new `bsdf' rendere and add the |
| `FT_Renderer_RenderFunc' function, the rest is |
| same as the `sdf' renderer. |
| |
| * src/sdf/ftsdfrend.h: Add forward declaration of the |
| renderer. |
| |
| * src/sdf/rules.mk (SDF_DRV_SRC): Add the new `ftbsdf.c' |
| file to the compile list. |
| |
| * src/sdf/sdf.c: Inclue the `ftbsdf.c' file if making |
| single object. |
| |
| 2020-07-19 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Add alloc/free functions. |
| |
| * src/sdf/ftsdf.c (*): Add `sdf_alloc' and `sdf_free' |
| to allocate and deallocate memory respectively. |
| By using function we can directly use them in the |
| conditional statements, which is not possible when |
| using `do {} while ( 0 )'. |
| |
| * src/sdf/ftsdf.c (SDF_MEMORY_TRACKER_): When not |
| debugging don't leave the macros empty otherwise |
| some compiler may emit warning because of empty |
| `;' semi-colon. |
| |
| 2020-07-19 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Added new renderer `bsdf'. |
| |
| * src/sdf/ftsdfrend.* (*): Added new renderer |
| named `bsdf' which basically convert bitmap |
| to signed distance fields. This is a part of |
| the `sdf' module and not a separate module on |
| it's own. |
| |
| * src/sdf/module.mk (FTMODULE_H_COMMANDS): Add |
| the new renderer to the list of modules. |
| |
| * include/freetype/config/ftmodule.h: Add the |
| new renderer to default list of modules when |
| not compiling with GNU Make. |
| |
| 2020-07-18 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Only track memory in debug mode. |
| |
| * src/sdf/ftsdf.c (*): Disable total memory |
| usage tracking if the program is not in |
| debug mode. |
| |
| 2020-07-18 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdfb] Removed Module. |
| |
| Remove sdfb module. Instead of a new module |
| simply create a new renderer in the `sdf' |
| module for converting bitmaps to SDF. |
| |
| 2020-07-18 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdfb] Fix GNU Make build. |
| |
| * src/sdfb/rules.mk (SDFB_DRV_H): Fix name of |
| the module specific error file `ftsdfberrs.h'. |
| |
| * src/sdf/ftsdf.h (Optimizations): Fix warning. |
| `warning: comma at end of enumerator list [-Wpedantic]' |
| |
| * src/sdf/ftsdf.c (sdf_generate_coarse_grid): Remove |
| unused variable `cindex', causes warning. |
| `warning: unused variable 'cindex' [-Wunused-variable]' |
| |
| 2020-07-17 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdfb] Added new module to generate SDF from bitmap. |
| |
| * src/sdfb/sdfb.c, src/sdfb/ftsdfbrend.c, |
| src/sdfb/ftsdfb.c, src/sdfb/ftsdfbrend.h, |
| src/sdfb/ftsdfb.h, src/sdfb/ftsdfberrs.h: |
| Added files required by the `sdfb' renderer module. |
| |
| * src/sdfb/rules.mk, src/sdfb/module.mk: Added |
| files required to build the `sdfb' module using |
| the default build system. |
| |
| * CMakeLists.txt (BASE_SRCS): Add `src/sdfb/sdfb.c' |
| to the variable. |
| |
| * include/freetype/config/ftmodule.h: Added `sdfb' |
| module declaration so that the module can be compiled |
| when not compiling with GNU make. |
| |
| * modules.cfg (RASTER_MODULES): Include `sdfb' module |
| to the default rasterizer module list. |
| |
| * include/freetype/ftmoderr.h: sdfb module error define |
| |
| * src/sdf/rules.mk: Add EOF. |
| |
| 2020-07-17 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Added memory tracker. |
| |
| * src/sdf/ftsdf.c (SDF_MemoryUser): Added struct |
| which is used in place of `FT_Memory::user'. |
| |
| * src/sdf/ftsdf.c (SDF_ALLOC, SDF_FREE): Added macros |
| for allocating and deallocating memory. These macros |
| restore the old `FT_Memory::user' before calling the |
| relevant allocation/deallocation functions so as to |
| not cause errors while debugging memory. And later |
| they add the allocated memory size in a variable. |
| |
| * src/sdf/ftsdf.c (*): Use `SDF_ALLOC', `SDF_FREE' |
| instead of the `FT_' variant. |
| |
| 2020-07-15 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| * src/sdf/ftsdfrend.c (sdf_property_set): Minor fix. |
| |
| 2020-07-14 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Temporary change. |
| |
| Added new property to dynamically change the |
| optimization to be used to generate the SDF. |
| This can be used to compare the performance of |
| different optimization techniques without going |
| and recompiling the program. |
| And will also be used in the demo to check the |
| performance. |
| |
| 2020-07-13 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Added more properties. |
| |
| Added two properties: |
| - `flip_y': To flip the generated SDF along the y axis. |
| - `flip_sign': By default outside is treated to have |
| negative sign, setting `flip_sign' to 1 the outside |
| pixels will have positive sign. |
| |
| * src/sdf/ftsdf.* (*): Use the newly added properties. |
| |
| * src/sdf/ftsdfrend.* (*): Add the newly added properties, |
| and add functionality to set them using `FT_Property_Set'. |
| |
| 2020-07-13 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Check for left or right fill. |
| |
| * src/sdf/ftsdf.c (SDF_Params): Added struct which |
| contains some internal data required by the rater- |
| izer (such as left/right fill). |
| |
| * src/sdf/ftsdf.c (sdf_raster_render): Determine the |
| fill side and pass it to the `sdf_generate_' funcs. |
| |
| * src/sdf/ftsdf.c (sdf_generate_): Use the new `SDF_Params' |
| to generate SDF accordingly. |
| |
| 2020-07-12 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Optimize the coarse grid optimization. |
| |
| * src/sdf/ftsdf.c (sdf_generate_coarse_grid): Merge |
| the relevant edge finding loop and shortest dist- |
| ance search loop. We can find the relevant edges |
| of a coarse grid and immediately use them to find |
| the shortest distance of the points in the coarse |
| grid. This drastically reduce memory usage and |
| performance. |
| Also, do the sign assignment of the edges which was |
| missing. |
| |
| 2020-07-11 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| * src/sdf/ftsdf.c (*): Fixed warnings. |
| |
| Fixed various warnings and other few errors. |
| |
| 2020-07-11 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| * src/sdf/ftsdf.c (sdf_generate_coarse_grid): Comments. |
| |
| Add more comments explaining the step by step |
| process of using coarse grid to increase the |
| performance of nearest distance search. |
| |
| 2020-07-11 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| * src/sdf/ftsdf.c (sdf_generate_coarse_grid): Memory leak. |
| |
| Release the allocated lists for the coarse grid after |
| we are done using them. |
| |
| 2020-07-11 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Completed the coarse grid optimization. |
| |
| * src/sdf/ftsdf.c (sdf_generate_coarse_grid): Fixed |
| an issue with position calculation and upside down |
| images. |
| |
| 2020-07-10 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Partially completed the coarse grid optimization. |
| |
| * src/sdf/ftsdf.c (sdf_generate_coarse_grid): Added |
| functionality to check distances of all edges from |
| the coarse grid and add the relevant edges to the |
| list. |
| [Note]: The function is not complete yet. |
| |
| 2020-07-10 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Added the coarse grid optimization function. |
| |
| * src/sdf/ftsdf.c (sdf_generate_coarse_grid): The |
| function uses coarse grid to optimize nearest edge |
| search performance. |
| |
| 2020-07-10 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Remove use of `FT_List'. |
| |
| Simply use a `next' pointer inside `SDF_Edge' and |
| `SDF_Contour' to create a linked list. This reduces |
| the number of allocations due to `FT_ListNode', also |
| we don't need a doubly linked list. |
| |
| * src/sdf/ftsdf.c (SDF_Edge, SDF_Contour): Remove the |
| `FT_List' and use a `next' pointer to create the |
| linked list. |
| |
| * src/sdf/ftsdf.c(sdf_edge_destructor, sdf_contour_destructor): |
| Removed, not needed any more. |
| |
| * src/sdf/ftsdf.c (*): Remove the use of `FT_List_' |
| functions wherever necessary and sync with the new |
| list. |
| |
| 2020-07-09 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Added subdivision optimization. |
| |
| * src/sdf/ftsdf.c (sdf_generate_subdivision): The |
| function generate SDF just like the `sdf_generate' |
| function, but subdivide the curve into a number of |
| lines and then use the `sdf_generate_bounding_box' |
| function to generate SDF. |
| |
| 2020-07-09 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Added functions to subdivide a cubic curve. |
| |
| * src/sdf/ftsdf.c (split_cubic, split_sdf_cubic): |
| These functions can be used to subdivide a |
| cubic bezier curve into line segments which can |
| then be used to generate the SDF. |
| |
| * src/sdf/ftsdf.c (split_sdf_shape): Added function |
| to split a cubic into a line segments. |
| |
| * src/sdf/ftsdf.c (sdf_shape_done): No need to pass |
| `FT_Memory' as a parameter, it can be accessed |
| from the `shape' struct. |
| |
| 2020-07-09 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| * src/sdf/ftsdf.c (split_sdf_shape): Typo. |
| |
| 2020-07-08 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| * src/sdf/ftsdf.c (split_sdf_shape): Memory leak. |
| After recursion the edges variable becomes `NULL' |
| so reassign it to deallocate the list completely. |
| |
| 2020-07-08 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Added functions to subdivide a conic curve. |
| |
| * src/sdf/ftsdf.c (split_conic, split_sdf_conic): |
| These functions can be used to subdivide a |
| conic bezier curve into line segments which can |
| then be used to generate the SDF. |
| |
| * src/sdf/ftsdf.c (split_sdf_shape): Added function |
| to split a outline into a line segments. |
| |
| 2020-07-06 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| * [GSoC]ChangLog: Fixed typos. |
| |
| 2020-07-06 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| * src/sdf/ftsdfrend.c (sdf_generate_bounding_box): Due to |
| the way we use the bounding box, we need to keep a track |
| of signed distances of each pixel so later the sign can |
| be determined properly. The method is certainly faster |
| then checking all the pixels against all the edges, |
| but also require a decent amount of memory to work. |
| |
| 2020-07-06 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Precompute the orthogonality. |
| |
| * src/sdf/ftsdf.c (SDF_Signed_Distance): Remove unused |
| fields. |
| |
| * src/sdf/ftsdf.c (resolve_corner): The function can be |
| simplified to a single line. Instead of computing |
| orthogonality here, we precompute it in the corresponding |
| `get_min_distance_' functions more efficiently. |
| |
| * src/sdf/ftsdf.c (get_min_distance_): Precompute orthogonality/ |
| cross product of direction and the distance vector. Since |
| in these function we know that weather the distance vector |
| and the direction are perpendicular, we can simply set |
| the cross to 1 (sin(90) = 1) in case they are perpendicular. |
| This can reduce the number of `FT_Vector_NormLen' calls. |
| |
| 2020-07-05 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Added bounding box optimization. |
| |
| * src/sdf/ftsdfrend.c (sdf_generate_bounding_box): The |
| function generate SDF just like the `sdf_generate' |
| function, but uses bounding box to check pixels |
| efficiently. |
| |
| * src/sdf/ftsdfrend.c (get_control_box): Added function |
| to get control box of a `SDF_Edge'. |
| |
| 2020-07-04 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| * src/sdf/ftsdfrend.c (sdf_shape_dump): Use `%ld' to |
| printf `signed long' otherwise it gives wrong output. |
| |
| 2020-07-04 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| * src/sdf/ftsdfrend.c (ft_sdf_render): Don't negate |
| unsigned integers. |
| |
| 2020-07-03 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| * src/sdf/ftsdf.c: Use ASCII single quote (') instead |
| of back tick (`) for derivatives. Looks cleaner. |
| |
| 2020-07-03 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Added function to find shortest distance from a |
| point to a cubic bezier. Now the sdf module can render |
| all types of fonts, but still has some issues. |
| |
| * src/sdf/ftsdf.c (get_min_distance_cubic): The function |
| calculates shortest distance from a point to a cubic |
| bezier curve. |
| |
| * src/sdf/ftsdf.c (sdf_edge_get_min_distance): Add the |
| `get_min_distance_cubic' function call. |
| |
| 2020-07-03 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| * src/sdf/ftsdf.c (resolve_corner): [Bug] Remove the |
| nearest_point check. Two distances can be same and |
| can give opposite sign, but they may not have a |
| common nearest_point. Also remove distance check |
| because due to precision errors the two distances can |
| be really really close. Therefore use epsilon instead. |
| |
| * src/sdf/ftsdf.c (sdf_contour_get_min_distance): Use |
| epsilon for comparing distances. |
| |
| 2020-07-03 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| * src/sdf/ftsdf.c (sdf_shape_dump): Add more info |
| to the debug output. |
| |
| 2020-07-03 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| * src/sdf/ftsdf.c (MAX_NEWTON_ITERATION => MAX_NEWTON_DIVISIONS): |
| Renamed to avoid confusion. |
| |
| 2020-07-02 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Added Newton's method for shortest distance |
| from a point to a conic. |
| |
| * src/sdf/ftsdf.c (get_min_distance_conic): Created |
| a new function with same name which uses Newton's |
| iteration for finding shortest distance from a point |
| to a conic curve. This doesn't causes underflow. |
| |
| * src/sdf/ftsdf.c (USE_NEWTON_FOR_CONIC): This macro |
| can be used to toggle between Newton or analytical |
| cubic solving method. |
| |
| 2020-07-01 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| * src/sdf/ftsdf.c (get_min_distance_conic): Add more |
| details to why we clamp the roots. |
| |
| * src/sdf/ftsdf.c: Make sure preprocessor # is always |
| on the first line. |
| |
| 2020-07-01 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Make squared distances toggleable. |
| |
| * src/sdf/ftsdf.c (SDF_Signed_Distance): Renamed |
| squared_distance to distance. It can now represent |
| both squared as well as actual distances. |
| |
| * src/sdf/ftsdf.c (USE_SQUARED_DISTANCES): Added macro |
| which control weather to do computation is squared |
| distances or actual distances. This can be used to |
| avoid overflow when generating large SDF bitmaps. |
| |
| * src/sdf/ftsdf.c: Make sure not to exceed line length |
| of 78. |
| |
| 2020-07-01 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| * src/sdf/ftsdf.c (get_min_distance_conic): In case |
| the cubic equation returns zero root, use endpoints |
| for calculating the shortest distance. |
| |
| 2020-07-01 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Added function to find shortest distance from a |
| point to a conic bezier. Now the sdf module can render |
| ttf fonts or fonts with line and conic segments. |
| |
| * src/sdf/ftsdf.c (get_min_distance_conic): The function |
| calculates shortest distance from a point to a conic |
| bezier curve. |
| |
| * src/sdf/ftsdf.c (sdf_edge_get_min_distance): Add the |
| `get_min_distance_conic' function call. |
| |
| 2020-07-01 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| * src/sdf/ftsdf.c (get_min_distance_line): First check |
| pointer before using or dereferencing them. |
| |
| 2020-06-30 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| * src/sdf/ftsdf.c: Avoid parentheses if there is only |
| one statement inside a control-flow statement. |
| |
| 2020-06-30 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Added functions to solve polynomial equations. |
| |
| * src/sdf/ftsdf.c (solve_quadratic_equation, |
| solve_cubic_equation): Added functions to solve |
| quadratic and cubic equations. These will be used for |
| conic bezier curves only. |
| |
| 2020-06-30 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| * src/sdf/ftsdf.c (square_root, cube_root, arc_cos): |
| Use FT_16D16 instead of FT_Fixed to avoid confusion. |
| |
| 2020-06-30 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| * src/sdf/ftsdf.c (cube_root, arc_cos): Added a few |
| essential math functions. |
| |
| 2020-06-30 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Fixed compilation under gnumake. |
| |
| * src/sdf/rules.mk (DRV_OBJ_ => DRV_OBJS_): Fixed variable |
| name so that the sdf can compile. |
| |
| * src/sdf/module.mk: Fixed spacing. |
| |
| * src/sdf/*.c: Fixed all compiler warnings. |
| |
| * [GSoC]ChangLog: Fixed dates. |
| |
| 2020-06-29 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Added function to resolve corners in case of |
| ambiguity. |
| |
| * src/sdf/ftsdf.c (resolve_corner): Added function |
| to determine the correct sign in case there are |
| two sign for the same shortest distance (happens |
| around corners). |
| |
| * src/sdf/ftsdf.c: Typo neartest_point -> nearest_point. |
| |
| 2020-06-29 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] The module can now generate signed distance |
| fields for outline with only lines. |
| |
| * src/sdf/ftsdf.c (get_min_distance_line): Calculation |
| mistake. |
| |
| * src/sdf/ftsdf.c (square_root): Added function to calculate |
| square root of a 16.16 fixed point integer. |
| |
| * src/sdf/ftsdf.c (sdf_generate): Assign values to the output |
| bitmap, currently the output is 6.10 fixed point which can |
| contain values from [-32, 32]. Also fixed a bug which was |
| causing upside down images. |
| |
| * src/sdf/ftsdfrend.c (ft_sdf_render): Fixed alignment issues. |
| |
| 2020-06-28 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Added function to find shortest distance from |
| a point to a line. |
| |
| * src/sdf/ftsdf.c (get_min_distance_line): The function |
| calculate the shortest signed distance from a point |
| to a line segment. |
| |
| * src/sdf/ftsdf.c (sdf_contour_get_min_distance): Typo. |
| |
| * src/sdf/ftsdf.c (SDF_Signed_Distance): Use squared |
| distance instead of actual distance for performance. |
| |
| 2020-06-28 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| * src/sdf/ftsdf.c (SDF_Iterator_IO): Removed. |
| |
| * src/sdf/ftsdf.c (sdf_edge_iterator_func => sdf_edge_get_min_distance |
| sdf_contour_iterator_func => sdf_contour_get_min_distance): Renamed. |
| Manually iterate through the lists instead of `FT_List_Iterate' to |
| avoid io structs and looks a bit cleaner. |
| |
| 2020-06-28 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Added basic outline of the functions required to |
| generate sdf. |
| |
| * src/sdf/ftsdf.c (SDF_Signed_Distance): Added struct which |
| represent a complete signed distance and can be used to |
| get cross, dot, sign etc. |
| |
| * src/sdf/ftsdf.c (SDF_Iterator_IO): This struct will be used |
| while `FT_List_Iterate'. |
| |
| * src/sdf/ftsdf.c (sdf_generate): Added function which generate |
| SDF from `SDF_Shape'. |
| |
| * src/sdf/ftsdf.c (sdf_edge_iterator_func, |
| sdf_contour_iterator_func): Added functions |
| which iterate through contours and edges and return the shortest |
| distance. |
| |
| |
| 2020-06-27 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Added `SDF_Raster_Params' struct which extends |
| `FT_Raster_Params' and has a few extra fields. This is done |
| to pass extra data to the sdf rasterizer which is required |
| while rasterizing. |
| |
| * src/sdf/ftsdf.h (SDF_Raster_Params): Added a struct which |
| extends `FT_Raster_Params' and has the `spread' parameter. |
| Also moved the max, min and default spread values to this |
| header file. |
| |
| * src/sdf/ftsdf.c (sdf_raster_render): Added parameter and |
| attribute checking in order to pick errors and return |
| early. |
| |
| * src//sdf/ftsdfrend.c (ft_sdf_render): Setup the `SDF_Raster_Params' |
| and pass it to the rasterizer instead of `FT_Raster_Params'. |
| |
| 2020-06-27 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| * include/freetype/ftimage.h (FT_RASTER_FLAG_): Added |
| a new raster flag `FT_RASTER_FLAG_SDF'. The `ftsdf' |
| rasterizer will only render if this flag is set. |
| |
| * src/sdf/ftsdfrend.c (ft_sdf_render): Set the `flags' field |
| of `FT_Raster_Params' to `FT_RASTER_FLAG_SDF'. |
| |
| 2020-06-26 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| * src/sdf/ftsdf.c (sdf_shape_dump): Use `FT_TRACEX' |
| instead of `printf'. |
| |
| 2020-06-26 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| * src/sdf/ftsdf.c (sdf_shape_dump): Added function to |
| dump the `SDF_Shape' on the console for debugging. |
| |
| 2020-06-26 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Added functions to de-allocate `SDF_' structs. |
| |
| * src/sdf/ftsdf.c (SDF_Contour, SDF_Shape): Use `FT_ListRec' |
| instead of `FT_List' to avoid a few extra allocations. |
| |
| * src/sdf/ftsdf.c (SDF_Edge, SDF_Contour, SDF_Shape): Added |
| functions to de-allocate these structs and their members. |
| |
| * src/sdf/ftsdfrenc.c: Typo. |
| |
| 2020-06-25 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Decompose outline and store it in a temporary |
| `SDF_Shape' object for easy iteration and pre-computing |
| some variables. |
| |
| * src/sdf/ftsdf.c (sdf_outline_decompose): Added function |
| to decompost outline and store it in a `SDF_Shape' object. |
| This allows us to pre-compute some variable. |
| |
| 2020-06-25 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Added essential enums and structs required. |
| |
| * src/freetype/internal/fttrace.h: Remove tabs. |
| |
| * src/sdf/ftsdfrend.c (ft_sdf_render): Calculate padding |
| using the `spread'. |
| |
| * src/sdf/ftsdf.c (SDF_Edge_Type, SDF_Edge, SDF_Contour, |
| SDF_Shape): Added structures and their initializer |
| functions. |
| |
| 2020-06-23 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Added functionality to set and get module properties. |
| Also added a `spread' property. |
| |
| * src/freetype/internal/fttrace.h: Added sdf module trace |
| define. |
| |
| * src/sdf/ftsdf.c (sdf_TRaster => SDF_TRaster): Use capital |
| character for structs. |
| |
| * src/sdf/ftsdfrend.h (SDF_Renderer_Module): Added a struct |
| which extends the `FT_RendererRec' and added the `spread' |
| property. |
| |
| * src/sdf/ftsdfrend.c: Synchronized the code to use the new |
| `SDF_Renderer_Module' and added functions to get/set the |
| properties. |
| |
| |
| 2020-06-20 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Implemented a few functions required by a renderer |
| module. |
| |
| * src/sdf/ftsdf.c (sdf_TRaster_): Added new structure to hold |
| the memory allocator `FT_Memory'. |
| |
| * src/sdf/ftsdf.c (ft_sdf_raster): Implemented a few essential |
| functions required by `FT_Raster'. |
| |
| * src/sdf/ftsdfrend.c (ft_sdf_renderer_class): Implemented a few |
| essential functions required by `FT_Renderer'. |
| |
| * src/sdf/ftsdfrend.c (ft_sdf_render): Added functionality to |
| compute shift and padding before rendering the outline. |
| |
| 2020-06-19 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| * include/freetype/ftimage.h (FT_Render_Mode_): Added new |
| pixel mode `FT_PIXEL_MODE_GRAY16' which will be used |
| to represent signed values while rendering to SDF bitmap. |
| |
| 2020-06-19 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| * include/freetype/freetype.h (FT_Render_Mode_): Added new |
| rendermode `FT_RENDER_MODE_SDF' which will be used by the |
| `sdf' module to generate signed distance fields from glyph's |
| outline. |
| |
| * src/sdf/ftsdfrend.h, src/sdf/module.mk, src/sdf/rules.mk: |
| Add a new line at the end of files. |
| |
| 2020-06-18 Anuj Verma <anujv@iitbhilai.ac.in> |
| |
| [sdf] Added the structure of a new module to render |
| signed distance fields. |
| |
| * src/sdf/sdf.c, src/sdf/ftsdfrend.c, src/sdf/ftsdf.c, |
| src/sdf/ftsdfrend.h, src/sdf/ftsdf.h, src/sdf/ftsdferrs.h: |
| Added files required by the `sdf' renderer module and added |
| the basic structure and functions required. |
| |
| * src/sdf/rules.mk, src/sdf/module.mk: Added files required to |
| build the `sdf' module using the default build system. |
| |
| * CMakeLists.txt (BASE_SRCS): Add `src/sdf/sdf.c' to the variable. |
| |
| * include/freetype/config/ftmodule.h: Added `sdf' module |
| declaration so that the module can be compiled when not compiling |
| with GNU make. |
| |
| * modules.cfg (RASTER_MODULES): Include `sdf' module to the default |
| rasterizer module list. |
| |
| * include/freetype/ftmoderr.h: sdf module error define |