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 Newon't
	  iteration for finding shortest distance fom a point
	  to a conic curve. This dosen't causes underfow.

	* 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 varialbe
	  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 genearte
	  SDF from `SDF_Shape'.

	* src/sdf/ftsdf.c (sdf_edge_iterator_func,
	                   sdf_contour_iterator_func): Added funcions
	  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 rasterzier which is required
	while rastersizing.

	* 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
