summaryrefslogtreecommitdiff
path: root/render
diff options
context:
space:
mode:
Diffstat (limited to 'render')
-rw-r--r--render/render.c30
1 files changed, 29 insertions, 1 deletions
diff --git a/render/render.c b/render/render.c
index b92c8fe0..58e4b6f0 100644
--- a/render/render.c
+++ b/render/render.c
@@ -1,6 +1,7 @@
#include <fitz.h>
-#define DEBUG(args...) printf(args)
+#define noDEBUG(args...) printf(args)
+#define DEBUG(args...)
#define FNONE 0
#define FOVER 1
@@ -533,6 +534,31 @@ cleanup:
}
/*
+ * Shade
+ */
+
+static fz_error *
+rendershade(fz_renderer *gc, fz_shadenode *node, fz_matrix ctm)
+{
+ fz_error *error;
+ fz_irect bbox;
+
+ assert(!gc->maskonly);
+
+ if (gc->flag & FOVER)
+ return fz_rendershade(node->shade, ctm, gc->model, gc->over, 1);
+
+ bbox = fz_roundrect(fz_boundnode((fz_node*)node, ctm));
+ bbox = fz_intersectirects(gc->clip, bbox);
+
+ error = fz_newpixmapwithrect(&gc->dest, bbox, gc->model->n + 1);
+ if (error)
+ return error;
+
+ return fz_rendershade(node->shade, ctm, gc->model, gc->dest, 0);
+}
+
+/*
* Over, Mask and Blend
*/
@@ -820,6 +846,8 @@ rendernode(fz_renderer *gc, fz_node *node, fz_matrix ctm)
return rendertext(gc, (fz_textnode*)node, ctm);
case FZ_NIMAGE:
return renderimage(gc, (fz_imagenode*)node, ctm);
+ case FZ_NSHADE:
+ return rendershade(gc, (fz_shadenode*)node, ctm);
case FZ_NLINK:
return rendernode(gc, ((fz_linknode*)node)->tree->root, ctm);
case FZ_NMETA: