summaryrefslogtreecommitdiff
path: root/render/render.c
diff options
context:
space:
mode:
Diffstat (limited to 'render/render.c')
-rw-r--r--render/render.c45
1 files changed, 28 insertions, 17 deletions
diff --git a/render/render.c b/render/render.c
index 13787ce4..6aee9c8a 100644
--- a/render/render.c
+++ b/render/render.c
@@ -79,14 +79,14 @@ static fz_error *
rendertransform(fz_renderer *gc, fz_transformnode *transform, fz_matrix ctm)
{
fz_error *error;
-printf("transform [%g %g %g %g %g %g]\n",
-transform->m.a, transform->m.b,
-transform->m.c, transform->m.d,
-transform->m.e, transform->m.f);
-puts("{");
+//printf("transform [%g %g %g %g %g %g]\n",
+//transform->m.a, transform->m.b,
+//transform->m.c, transform->m.d,
+//transform->m.e, transform->m.f);
+//puts("{");
ctm = fz_concat(transform->m, ctm);
error = rendernode(gc, transform->super.first, ctm);
-puts("}");
+//puts("}");
return error;
}
@@ -334,10 +334,10 @@ rendertext(fz_renderer *gc, fz_textnode *text, fz_matrix ctm)
tbox = fz_roundrect(fz_boundnode((fz_node*)text, ctm));
clip = fz_intersectirects(gc->clip, tbox);
-printf("text %s n=%d [%g %g %g %g] clip[%d %d %d %d]\n",
- text->font->name, text->len,
- text->trm.a, text->trm.b, text->trm.c, text->trm.d,
- clip.min.x, clip.min.y, clip.max.x, clip.max.y);
+//printf("text %s n=%d [%g %g %g %g] clip[%d %d %d %d]\n",
+//text->font->name, text->len,
+//text->trm.a, text->trm.b, text->trm.c, text->trm.d,
+//clip.min.x, clip.min.y, clip.max.x, clip.max.y);
if (clip.max.x <= clip.min.x)
return nil;
@@ -423,8 +423,6 @@ renderimage(fz_renderer *gc, fz_imagenode *node, fz_matrix ctm)
int x0, y0;
int w, h;
- /* TODO: check validity of xxx->n + 1 */
-
printf("renderimage %dx%d %d+%d %s\n", image->w, image->h, image->n, image->a, image->cs?image->cs->name:"(nil)");
bbox = fz_roundrect(fz_boundnode((fz_node*)node, ctm));
@@ -439,13 +437,20 @@ printf("renderimage %dx%d %d+%d %s\n", image->w, image->h, image->n, image->a, i
printf(" load image\n");
error = fz_newpixmap(&tile, 0, 0, image->w, image->h, image->n + 1);
+ if (error)
+ return error;
+
error = image->loadtile(image, tile);
+ if (error)
+ goto cleanup;
if (dx != 1 || dy != 1)
{
printf(" scale image 1/%d 1/%d\n", dx, dy);
fz_pixmap *temp;
error = fz_scalepixmap(&temp, tile, dx, dy);
+ if (error)
+ goto cleanup;
fz_droppixmap(tile);
tile = temp;
}
@@ -455,6 +460,8 @@ printf(" scale image 1/%d 1/%d\n", dx, dy);
fz_pixmap *temp;
printf(" convert from %s to %s\n", image->cs->name, gc->model->name);
error = fz_newpixmap(&temp, tile->x, tile->y, tile->w, tile->h, gc->model->n + 1);
+ if (error)
+ goto cleanup;
fz_convertpixmap(image->cs, tile, gc->model, temp);
fz_droppixmap(tile);
tile = temp;
@@ -488,7 +495,8 @@ printf(" fnone %d x %d\n", w, h);
error = fz_newpixmapwithrect(&gc->dest, clip, gc->model->n + 1);
else
error = fz_newpixmapwithrect(&gc->dest, clip, 1);
- fz_clearpixmap(gc->dest);
+ if (error)
+ goto cleanup;
if (image->cs)
gc->rast.img4_g(
@@ -536,8 +544,11 @@ printf(" fover+rgb %d x %d\n", w, h);
}
fz_droppixmap(tile);
-
return nil;
+
+cleanup:
+ fz_droppixmap(tile);
+ return error;
}
/*
@@ -551,11 +562,11 @@ renderover(fz_renderer *gc, fz_overnode *over, fz_matrix ctm)
fz_node *child;
int cluster = 0;;
-printf("over\n{\n");
+//printf("over\n{\n");
if (!gc->over)
{
-printf(" alloc dest!\n");
+//printf(" alloc dest!\n");
error = fz_newpixmapwithrect(&gc->over, gc->clip, gc->maskonly ? 1 : 4);
if (error)
return error;
@@ -582,7 +593,7 @@ printf(" alloc dest!\n");
gc->over = nil;
}
-printf("}\n");
+//printf("}\n");
return nil;
}