summaryrefslogtreecommitdiff
path: root/include/fitz/render.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/fitz/render.h')
-rw-r--r--include/fitz/render.h59
1 files changed, 49 insertions, 10 deletions
diff --git a/include/fitz/render.h b/include/fitz/render.h
index 6e171a06..807b6227 100644
--- a/include/fitz/render.h
+++ b/include/fitz/render.h
@@ -1,25 +1,64 @@
typedef struct fz_renderer_s fz_renderer;
+typedef struct fz_rastfuncs_s fz_rastfuncs;
+
+#define FZ_BYTE unsigned char
+#define FZ_PID \
+ FZ_BYTE *src, int w, int h, int nx, int ny, \
+ FZ_BYTE *dst0, int dstw, \
+ int u0, int v0, int fa, int fb, int fc, int fd
+#define FZ_PIM \
+ FZ_BYTE *src, int w, int h, int nx, int ny, \
+ FZ_BYTE *dst0, int dstw, \
+ FZ_BYTE *msk0, int mskw, \
+ int u0, int v0, int fa, int fb, int fc, int fd
+
+struct fz_rastfuncs_s
+{
+ void (*mask_g)(int, FZ_BYTE*, FZ_BYTE*);
+ void (*mask_i1)(int, FZ_BYTE*, FZ_BYTE*);
+ void (*mask_o1)(int, FZ_BYTE*, FZ_BYTE*);
+ void (*mask_i1o1)(int, FZ_BYTE*, FZ_BYTE*, FZ_BYTE*);
+ void (*mask_o4w3)(int, FZ_BYTE*, FZ_BYTE*, FZ_BYTE*);
+ void (*mask_i1o4w3)(int, FZ_BYTE*, FZ_BYTE*, FZ_BYTE*, FZ_BYTE*);
+
+ void (*img1_g)(FZ_PID);
+ void (*img1_i1)(FZ_PID);
+ void (*img1_o1)(FZ_PID);
+ void (*img1_i1o1)(FZ_PIM);
+ void (*img1_o4w3)(FZ_PID, FZ_BYTE*);
+ void (*img1_i1o4w3)(FZ_PIM, FZ_BYTE*);
+
+ void (*img4_g)(FZ_PID);
+ void (*img4_o4)(FZ_PID);
+ void (*img4_i1o4)(FZ_PIM);
+};
+
+#undef FZ_PIM
+#undef FZ_PID
+#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 *tmp;
- fz_pixmap *acc;
- unsigned char r, g, b;
- int hasrgb;
+ fz_pixmap *dest;
+ fz_pixmap *over;
+ fz_pixmap *mask;
+ unsigned char rgb[3];
+ int flag;
};
-fz_error *fz_newrenderer(fz_renderer **gcp, fz_colorspace *pcm, int gcmem);
+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_renderover(fz_renderer *gc, fz_overnode *over, fz_matrix ctm);
-fz_error *fz_rendermask(fz_renderer *gc, fz_masknode *mask, fz_matrix ctm);
-fz_error *fz_rendertransform(fz_renderer *gc, fz_transformnode *xform, fz_matrix ctm);
-fz_error *fz_rendertext(fz_renderer *gc, fz_textnode *text, fz_matrix ctm);
-fz_error *fz_rendernode(fz_renderer *gc, fz_node *node, fz_matrix ctm);
fz_error *fz_rendertree(fz_pixmap **out, fz_renderer *gc, fz_tree *tree, fz_matrix ctm, fz_irect bbox, int white);