Added a new version of the "smooth". This one uses
an algorithm that is very close to our standard raster. However, it is (theorically for now) capable of direct composition !!
This commit is contained in:
parent
7e68ad481f
commit
1d85a73d1a
1705
demos/src/ftgrays2.c
Normal file
1705
demos/src/ftgrays2.c
Normal file
File diff suppressed because it is too large
Load Diff
102
demos/src/ftgrays2.h
Normal file
102
demos/src/ftgrays2.h
Normal file
@ -0,0 +1,102 @@
|
||||
#ifndef FTGRAYS2_H
|
||||
#define FTGRAYS2_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 enum {
|
||||
|
||||
dir_up = 0,
|
||||
dir_down = 1,
|
||||
dir_right = 2,
|
||||
dir_left = 3,
|
||||
|
||||
dir_horizontal = 2,
|
||||
dir_reverse = 1,
|
||||
|
||||
dir_unknown = 4
|
||||
|
||||
} TDir;
|
||||
|
||||
typedef struct TCell_
|
||||
{
|
||||
unsigned short x;
|
||||
unsigned short y;
|
||||
unsigned short pos;
|
||||
TDir dir;
|
||||
|
||||
} TCell, *PCell;
|
||||
|
||||
|
||||
|
||||
typedef struct TRaster_
|
||||
{
|
||||
PCell cells;
|
||||
PCell cursor;
|
||||
PCell cell_limit;
|
||||
int max_cells;
|
||||
int num_cells;
|
||||
|
||||
TScan min_ex, max_ex;
|
||||
TScan min_ey, max_ey;
|
||||
TPos min_x, min_y;
|
||||
TPos max_x, max_y;
|
||||
|
||||
TScan ex, ey;
|
||||
TScan cx, cy;
|
||||
TPos x, y;
|
||||
|
||||
PCell contour_cell; /* first contour cell */
|
||||
|
||||
char joint;
|
||||
char horizontal;
|
||||
TDir dir;
|
||||
PCell last;
|
||||
|
||||
FT_Vector starter;
|
||||
FT_Vector* start;
|
||||
|
||||
int error;
|
||||
|
||||
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 grays2_raster_render( TRaster* raster,
|
||||
FT_Outline* outline,
|
||||
FT_Bitmap* target_map );
|
||||
|
||||
extern
|
||||
int grays2_raster_init( FT_Raster raster,
|
||||
const char* pool_base,
|
||||
long pool_size );
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user