From dac0181028f2e02f44dd258e91d2df66975c3b89 Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Wed, 29 Dec 2010 01:52:21 +0000 Subject: Support linear shadings as a special case in the fitz shading struct and renderer. --- fitz/fitz.h | 10 ++++++++++ fitz/res_shade.c | 12 ++++++++++++ 2 files changed, 22 insertions(+) (limited to 'fitz') diff --git a/fitz/fitz.h b/fitz/fitz.h index 99751b3e..3275dc4e 100644 --- a/fitz/fitz.h +++ b/fitz/fitz.h @@ -795,6 +795,13 @@ fz_text *fz_clonetext(fz_text *old); * The shading code uses gouraud shaded triangle meshes. */ +enum +{ + FZ_LINEAR, + FZ_RADIAL, + FZ_MESH, +}; + typedef struct fz_shade_s fz_shade; struct fz_shade_s @@ -811,6 +818,9 @@ struct fz_shade_s int usefunction; float function[256][FZ_MAXCOLORS]; + int type; /* linear, radial, mesh */ + int extend[2]; + int meshlen; int meshcap; float *mesh; /* [x y t] or [x y c1 ... cn] */ diff --git a/fitz/res_shade.c b/fitz/res_shade.c index 30d2bd16..d6108236 100644 --- a/fitz/res_shade.c +++ b/fitz/res_shade.c @@ -32,6 +32,11 @@ fz_boundshade(fz_shade *shade, fz_matrix ctm) nvert = shade->meshlen / ncomp; v = shade->mesh; + if (shade->type == FZ_LINEAR) + return fz_infiniterect; + if (shade->type == FZ_RADIAL) + return fz_infiniterect; + if (nvert == 0) return fz_emptyrect; @@ -66,6 +71,13 @@ fz_debugshade(fz_shade *shade) printf("shading {\n"); + switch (shade->type) + { + case FZ_LINEAR: printf("\ttype linear\n"); break; + case FZ_RADIAL: printf("\ttype radial\n"); break; + case FZ_MESH: printf("\ttype mesh\n"); break; + } + printf("\tbbox [%g %g %g %g]\n", shade->bbox.x0, shade->bbox.y0, shade->bbox.x1, shade->bbox.y1); -- cgit v1.2.3