summaryrefslogtreecommitdiff
path: root/include/fitz/scanconv.h
blob: 057153c49e7e55776cbe3f18149abfb3beb81c11 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
typedef struct fz_edge_s fz_edge;
typedef struct fz_gel_s fz_gel;
typedef struct fz_ael_s fz_ael;

struct fz_edge_s
{
	int x, e, h, y;
	int adjup, adjdown;
	int xmove;
	int xdir, ydir;     /* -1 or +1 */
};

struct fz_gel_s
{
	int hs, vs;
	int xmin, xmax;
	int ymin, ymax;
	int cap;
	int len;
	fz_edge *edges;
};

struct fz_ael_s
{
	int cap;
	int len;
	fz_edge **edges;
};

fz_error *fz_newgel(fz_gel **gelp);
fz_error *fz_insertgel(fz_gel *gel, float x0, float y0, float x1, float y1);
void fz_resetgel(fz_gel *gel, int hs, int vs);
void fz_sortgel(fz_gel *gel);
void fz_freegel(fz_gel *gel);

fz_error *fz_newael(fz_ael **aelp);
fz_error *fz_insertael(fz_ael *ael, fz_gel *gel, int y, int *e);
void fz_advanceael(fz_ael *ael);
void fz_freeael(fz_ael *ael);

fz_error *fz_scanconvert(fz_gel *gel, fz_ael *ael, int eofill, int y0, int y1,
	void (*blitfunc)(int,int,int,unsigned char*,void*), void *blitdata);

fz_error *fz_fillpath(fz_gel *gel, fz_pathnode *path, fz_matrix ctm, float flatness);
fz_error *fz_strokepath(fz_gel *gel, fz_pathnode *path, fz_matrix ctm, float flatness);
fz_error *fz_dashpath(fz_gel *gel, fz_pathnode *path, fz_matrix ctm, float flatness);