summaryrefslogtreecommitdiff
path: root/include/fitz/render.h
blob: e2435382a0643a1a09cbc101b7edf84d745a5c8f (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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
typedef struct fz_renderer_s fz_renderer;
typedef struct fz_rastfuncs_s fz_rastfuncs;

#define FZ_BYTE unsigned char

#define FZ_PSRC \
	unsigned char *src, int srcw, int srch
#define FZ_PDST \
	unsigned char *dst0, int dstw
#define FZ_PCTM \
	int u0, int v0, int fa, int fb, int fc, int fd, int w0, int h

struct fz_rastfuncs_s
{
	void (*duff_NoN)(FZ_BYTE*,int,int,FZ_BYTE*,int,int,int);
	void (*duff_NiMcN)(FZ_BYTE*,int,int,FZ_BYTE*,int,int,FZ_BYTE*,int,int,int);
	void (*duff_NiMoN)(FZ_BYTE*,int,int,FZ_BYTE*,int,int,FZ_BYTE*,int,int,int);
	void (*duff_1o1)(FZ_BYTE*,int,FZ_BYTE*,int,int,int);
	void (*duff_4o4)(FZ_BYTE*,int,FZ_BYTE*,int,int,int);
	void (*duff_1i1c1)(FZ_BYTE*,int,FZ_BYTE*,int,FZ_BYTE*,int,int,int);
	void (*duff_4i1c4)(FZ_BYTE*,int,FZ_BYTE*,int,FZ_BYTE*,int,int,int);
	void (*duff_1i1o1)(FZ_BYTE*,int,FZ_BYTE*,int,FZ_BYTE*,int,int,int);
	void (*duff_4i1o4)(FZ_BYTE*,int,FZ_BYTE*,int,FZ_BYTE*,int,int,int);

	void (*msk_1c1)(FZ_BYTE*,FZ_BYTE*,int);
	void (*msk_1o1)(FZ_BYTE*,FZ_BYTE*,int);
	void (*msk_w3i1o4)(FZ_BYTE*,FZ_BYTE*,FZ_BYTE*,int);

	void (*glf_1c1)(FZ_BYTE*,int,FZ_BYTE*,int,int,int);
	void (*glf_1o1)(FZ_BYTE*,int,FZ_BYTE*,int,int,int);
	void (*glf_w3i1o4)(FZ_BYTE*,FZ_BYTE*,int,FZ_BYTE*,int,int,int);

	void (*img_NcN)(FZ_PSRC, int sn, FZ_PDST, FZ_PCTM);
	void (*img_1c1)(FZ_PSRC, FZ_PDST, FZ_PCTM);
	void (*img_4c4)(FZ_PSRC, FZ_PDST, FZ_PCTM);
	void (*img_1o1)(FZ_PSRC, FZ_PDST, FZ_PCTM);
	void (*img_4o4)(FZ_PSRC, FZ_PDST, FZ_PCTM);
	void (*img_w3i1o4)(FZ_BYTE*,FZ_PSRC,FZ_PDST,FZ_PCTM);
};

#undef FZ_BYTE

struct fz_renderer_s
{
	int maskonly;
	fz_colorspace *model;
	fz_glyphcache *cache;
	fz_gel *gel;
	fz_ael *ael;

	fz_rastfuncs rast;

	fz_irect clip;
	fz_pixmap *dest;
	fz_pixmap *over;
	unsigned char rgb[3];
	int flag;
};

void fz_defaultrastfuncs(fz_rastfuncs *);

fz_error *fz_newrenderer(fz_renderer **gcp, fz_colorspace *pcm, int maskonly, int gcmem);
void fz_droprenderer(fz_renderer *gc);

fz_error *fz_rendertree(fz_pixmap **out, fz_renderer *gc, fz_tree *tree, fz_matrix ctm, fz_irect bbox, int white);