shithub: freetype+ttf2subf

ref: fbf3ce2890605f5fd78c357634f8bca08ebcfaf5
dir: /demos/src/ftgrays.h/

View raw version
#ifndef FTGRAYS_H
#define FTGRAYS_H

typedef int   TScan;
typedef long  TPos;
typedef float TDist;

#define FT_MAX_GRAY_SPANS  32

typedef struct FT_GraySpan_
{
  short          x;
  short          len;
  unsigned char  coverage;

} FT_GraySpan;

typedef int (*FT_GraySpan_Func)( int           y,
                                 int           count,
                                 FT_GraySpan*  spans,
                                 void*         user );
                                        

typedef struct TCell_
{
  TScan  x;
  TScan  y;
  int    area;
  int    cover;

} TCell, *PCell;


typedef struct TRaster_
{
  PCell   cells;
  int     max_cells;
  int     num_cells;

  TScan   min_ex, max_ex;
  TScan   min_ey, max_ey;

  int     area;
  int     cover;
  int     invalid;

  TScan   ex, ey;
  TScan   cx, cy;
  TPos    x,  y;

  TScan   last_ey;

  FT_Vector   bez_stack[32*3];
  int         lev_stack[32];

  FT_Outline  outline;
  FT_Bitmap   target;

  FT_GraySpan gray_spans[ FT_MAX_GRAY_SPANS ];
  int         num_gray_spans;

  FT_GraySpan_Func  render_span;
  void*             render_span_closure;
  int               span_y;

} TRaster, *PRaster;

  extern
  int  grays_raster_render( TRaster*     raster,
                            FT_Outline*  outline,
                            FT_Bitmap*   target_map );

  extern
  int  grays_raster_init( FT_Raster    raster,
                          const char*  pool_base,
                          long         pool_size );

#endif