diff options
author | Tor Andersson <tor@ghostscript.com> | 2009-02-23 22:51:43 +0100 |
---|---|---|
committer | Tor Andersson <tor@ghostscript.com> | 2009-02-23 22:51:43 +0100 |
commit | 6f590cbb1126586da53f0b15f824d6030da6c03a (patch) | |
tree | 1932d29e80f701dd8e25ebcf62ad69bd7adb0811 | |
parent | 0673e07cd7675b74380b86c145e0afab3a7392cb (diff) | |
download | mupdf-6f590cbb1126586da53f0b15f824d6030da6c03a.tar.xz |
Removed broken optimization that made invisible 1x1 images opaque.
-rw-r--r-- | mupdf/pdf_image.c | 2 | ||||
-rw-r--r-- | world/node_optimize.c | 79 |
2 files changed, 1 insertions, 80 deletions
diff --git a/mupdf/pdf_image.c b/mupdf/pdf_image.c index b8cd6edf..c7c96c5b 100644 --- a/mupdf/pdf_image.c +++ b/mupdf/pdf_image.c @@ -499,12 +499,12 @@ maskcolorkeyindexed(fz_pixmap *ind, fz_pixmap *pix, int *colorkey) unsigned char *s = ind->samples; unsigned char *d = pix->samples; int i, k; + for (i = 0; i < pix->w * pix->h; i++) { if (s[0] >= colorkey[0] && s[0] <= colorkey[1]) for (k = 0; k < pix->n; k++) d[k] = 0; - d[0] = 255; s += ind->n; d += pix->n; } diff --git a/world/node_optimize.c b/world/node_optimize.c index 2465411b..cb3918e1 100644 --- a/world/node_optimize.c +++ b/world/node_optimize.c @@ -219,84 +219,6 @@ retry: } /* - * Turn 1x1 images into rectangle fills - */ - -static fz_error *clean1x1(fz_node *node) -{ - fz_error *error; - fz_node *current; - fz_node *color; - fz_pathnode *rect; - fz_node *mask; - fz_image *image; - fz_pixmap *pix; - float v[FZ_MAXCOLORS]; - int i; - - for (current = node->first; current; current = current->next) - { - if (fz_isimagenode(current)) - { - image = ((fz_imagenode*)current)->image; - if (image->w == 1 && image->h == 1) - { - error = fz_newpathnode(&rect); - fz_moveto(rect, 0, 0); - fz_lineto(rect, 1, 0); - fz_lineto(rect, 1, 1); - fz_lineto(rect, 0, 1); - fz_closepath(rect); - fz_endpath(rect, FZ_FILL, nil, nil); - - if (image->cs) - { - error = fz_newpixmap(&pix, 0, 0, 1, 1, image->n + 1); - if (error) - return fz_rethrow(error, "cannot create 1x1 pixmap"); - - error = image->loadtile(image, pix); - if (error) - return fz_rethrow(error, "cannot load pixmap tile"); - - for (i = 0; i < image->n; i++) - v[i] = pix->samples[i + 1] / 255.0; - - fz_droppixmap(pix); - - error = fz_newsolidnode(&color, 1.0, image->cs, image->n, v); - if (error) - return fz_rethrow(error, "cannot create color node"); - error = fz_newmasknode(&mask); - if (error) - return fz_rethrow(error, "cannot create mask node"); - - fz_insertnodeafter(current, mask); - fz_insertnodelast(mask, (fz_node*)rect); - fz_insertnodelast(mask, color); - fz_removenode(current); - current = mask; - } - - else - { - /* pray that the 1x1 image mask is all opaque */ - fz_insertnodeafter(current, (fz_node*)rect); - fz_removenode(current); - current = (fz_node*)rect; - } - } - } - - error = clean1x1(current); - if (error) - return fz_rethrow(error, "cannot perform clean1x1 optimization"); - } - - return fz_okay; -} - -/* * */ @@ -308,7 +230,6 @@ fz_optimizetree(fz_tree *tree) cleanwhite(tree->root); cleanovers(tree->root); cleanmasks(tree->root); - clean1x1(tree->root); return fz_okay; } |