summaryrefslogtreecommitdiff
path: root/raster/render.c
diff options
context:
space:
mode:
authorGlenn Kennard <glenn.kennard@gmail.com>2008-03-21 23:48:10 +0100
committerGlenn Kennard <glenn.kennard@gmail.com>2008-03-21 23:48:10 +0100
commit15d836f1e88c9aa2b993f95f95b3bed2a0548ba1 (patch)
tree03dab413d621af264a742eccab8736aaa878eaea /raster/render.c
parent3e9200955bf75860835f1499fa699d2c0460cbcb (diff)
downloadmupdf-15d836f1e88c9aa2b993f95f95b3bed2a0548ba1.tar.xz
Fix fast path compositing. Constant color is NOT premultiplied.
Diffstat (limited to 'raster/render.c')
-rw-r--r--raster/render.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/raster/render.c b/raster/render.c
index 9f39056a..d19e7a3c 100644
--- a/raster/render.c
+++ b/raster/render.c
@@ -51,6 +51,9 @@ fz_newrenderer(fz_renderer **gcp, fz_colorspace *pcm, int maskonly, int gcmem)
gc->argb[1] = 0;
gc->argb[2] = 0;
gc->argb[3] = 0;
+ gc->argb[4] = 0;
+ gc->argb[5] = 0;
+ gc->argb[6] = 0;
gc->flag = 0;
*gcp = gc;
@@ -120,6 +123,9 @@ rendersolid(fz_renderer *gc, fz_solidnode *solid, fz_matrix ctm)
gc->argb[1] = rgb[0] * solid->a * 255;
gc->argb[2] = rgb[1] * solid->a * 255;
gc->argb[3] = rgb[2] * solid->a * 255;
+ gc->argb[4] = rgb[0] * 255;
+ gc->argb[5] = rgb[1] * 255;
+ gc->argb[6] = rgb[2] * 255;
DEBUG("solid %s [%d %d %d %d];\n", solid->cs->name, gc->argb[0], gc->argb[1], gc->argb[2], gc->argb[3]);
@@ -278,7 +284,7 @@ static void drawglyph(fz_renderer *gc, fz_pixmap *dst, fz_glyph *src, int xorig,
case FOVER | FRGB:
assert(dst->n == 4);
- fz_text_w3i1o4(gc->argb, sp, src->w, dp, dst->w * 4, w, h);
+ fz_text_w4i1o4(gc->argb, sp, src->w, dp, dst->w * 4, w, h);
break;
default:
@@ -516,7 +522,7 @@ DEBUG(" fover %d x %d\n", w, h);
case FOVER | FRGB:
DEBUG(" fover+rgb %d x %d\n", w, h);
- fz_img_w3i1o4(gc->argb, PSRC, PDST(gc->over), PCTM);
+ fz_img_w4i1o4(gc->argb, PSRC, PDST(gc->over), PCTM);
break;
default:
@@ -731,6 +737,9 @@ rendermask(fz_renderer *gc, fz_masknode *mask, fz_matrix ctm)
gc->argb[1] = rgb[0] * solid->a * 255;
gc->argb[2] = rgb[1] * solid->a * 255;
gc->argb[3] = rgb[2] * solid->a * 255;
+ gc->argb[4] = rgb[0] * 255;
+ gc->argb[5] = rgb[1] * 255;
+ gc->argb[6] = rgb[2] * 255;
gc->flag |= FRGB;
/* we know these can handle the FRGB shortcut */