summaryrefslogtreecommitdiff
path: root/community/xv
diff options
context:
space:
mode:
authorroot <root@rshg054.dnsready.net>2013-02-10 01:12:52 -0800
committerroot <root@rshg054.dnsready.net>2013-02-10 01:12:52 -0800
commit1bb2648cde916ac27d3dd75d7b64a4ddc89787b7 (patch)
tree016bfa1969323404c37dbef29cfc7242a5a8e9f3 /community/xv
parente9c244cac8e5dc1c59c7e8b7bc885fef04224b70 (diff)
Sun Feb 10 01:12:35 PST 2013
Diffstat (limited to 'community/xv')
-rw-r--r--community/xv/PKGBUILD40
-rw-r--r--community/xv/license.txt139
-rw-r--r--community/xv/xv-3.10a-libpng15.patch520
3 files changed, 0 insertions, 699 deletions
diff --git a/community/xv/PKGBUILD b/community/xv/PKGBUILD
deleted file mode 100644
index bbb0fdc18..000000000
--- a/community/xv/PKGBUILD
+++ /dev/null
@@ -1,40 +0,0 @@
-# $Id: PKGBUILD 63794 2012-02-05 12:15:48Z ibiru $
-# Maintainer: Eric BĂ©langer <eric@archlinux.org>
-
-pkgname=xv
-pkgver=3.10a
-pkgrel=15
-pkgdesc="A nice image viewer"
-arch=('i686' 'x86_64')
-url="http://www.trilon.com/xv/"
-license=('custom')
-depends=('libpng' 'libx11' 'libtiff')
-makedepends=('libxt' 'jasper')
-options=('!emptydirs')
-source=(ftp://ftp.trilon.com/pub/xv/${pkgname}-${pkgver}.tar.gz \
- http://downloads.sourceforge.net/sourceforge/png-mng/xv-3.10a-jumbo-patches-20070520.tar.gz \
- license.txt xv-3.10a-libpng15.patch)
-sha1sums=('092f8eb100f16d6b91c88b126c2b2b998eb09b99'
- 'd00308c1687d9d803d26ef40c73d19a0f593c626'
- '4561344e8f2c30eee9c55b14a14f062d89d6e7b7'
- '3d19aa0c6ecc8b554081906babe0b4f9a6946da3')
-
-build() {
- cd "${srcdir}"
- tar -cJf xv-${pkgver}-source.tar.xz xv-${pkgver}
- cd ${pkgname}-${pkgver}
- patch -p1 < ../xv-3.10a-jumbo-fix-enh-patch-20070520.txt
- patch -p0 < ../xv-3.10a-libpng15.patch
- make JP2KDIR=/usr/lib
-}
-
-package() {
- cd "${srcdir}/${pkgname}-${pkgver}"
- install -d "${pkgdir}"/usr/{bin,lib,share/man/man1}
- make DESTDIR="${pkgdir}" PREFIX=/usr install
- install -D -m644 "${srcdir}/license.txt" "${pkgdir}/usr/share/licenses/${pkgname}/license.txt"
-
-# installing source tarball (to comply with license)
- install -D -m644 "${srcdir}/xv-${pkgver}-source.tar.xz" "${pkgdir}/usr/share/doc/xv/xv-${pkgver}-source.tar.xz"
- ln -s "/usr/share/licenses/${pkgname}/license.txt" "${pkgdir}/usr/share/doc/xv/license.txt"
-}
diff --git a/community/xv/license.txt b/community/xv/license.txt
deleted file mode 100644
index 7dd87c233..000000000
--- a/community/xv/license.txt
+++ /dev/null
@@ -1,139 +0,0 @@
-XV Licensing Information
-------------------------
-XV IS SHAREWARE FOR PERSONAL USE ONLY.
-
-You may use XV for your own amusement, and if you find it nifty,
-useful, generally cool, or of some value to you, your registration fee
-would be greatly appreciated. $25 is the standard registration fee,
-though of course, larger amounts are quite welcome. Folks who donate
-$40 or more can receive a printed, bound copy of the XV manual for no
-extra charge. If you want one, just ask. BE SURE TO SPECIFY THE
-VERSION OF XV THAT YOU ARE USING!
-
-COMMERCIAL, GOVERNMENT, AND INSTITUTIONAL USERS MUST REGISTER THEIR
-COPIES OF XV.
-
-This does *not* mean that you are required to register XV just because
-you play with it on the workstation in your office. This falls under
-the heading of 'personal use'. If you are a sysadmin, you can put XV
-up in a public directory for your users amusement. Again, 'personal
-use', albeit plural.
-
-On the other hand, if you use XV in the course of doing your work,
-whatever your 'work' may happen to be, you *must* register your
-copy of XV. (Note: If you are a student, and you use XV to do
-classwork or research, you should get your professor/teacher/advisor
-to purchase an appropriate number of copies.)
-
-XV licenses are $25 each. You should purchase one license per
-workstation, or one per XV user, whichever is the smaller number. XV
-is *not* sold on a 'number of concurrent users' basis. If XV was some
-$1000 program, yes, that would be a reasonable request, but at $25,
-it's not. Also, given that XV is completely unlocked, there is no way
-to enforce any 'number of concurrent users' limits, so it isn't sold
-that way.
-
-Printed and bound copies of the 100-odd page XV manual are available
-for $15 each. Note that manuals are *only* sold with, at minimum, an
-equal number of licenses. (e.g. if you purchase 5 licenses, you can
-also purchase *up to* 5 copies of the manual)
-
-The source code to the program can be had (as a compressed 'tar' file
-split over a couple 3.5" MS-DOS formatted floppies) for $15, for those
-who don't have ftp capabilities.
-
-Orders outside the US and Canada must add an additional $5 per manual
-ordered to cover the additional shipping charges.
-
-Checks, money orders, and purchase orders are accepted. Credit cards
-are not. All forms of payment must be payable in US Funds. Checks
-must be payable through a US bank (or a US branch of a non-US bank).
-Purchase orders for less than $50, while still accepted, are not
-encouraged.
-
-All payments should be payable to 'John Bradley', and mailed to:
- John Bradley
- 1053 Floyd Terrace
- Bryn Mawr, PA 19010
- USA
-
-
-Site Licenses
--------------
-If you are planning to purchase 10 or more licenses, site licenses are
-available, at a substantial discount. Site licenses let you run XV on
-any and all computing equipment at the site, for any purpose
-whatsoever. The site license covers the current version of XV, and
-any versions released within one year of the licensing date. You are
-also allowed to duplicate and distribute an unlimited number of copies
-of the XV manual, but only for use within the site. Covered versions
-of the software may be run in perpetuity.
-
-Also, it should be noted that a 'site' can be defined as anything
-you'd like. It can be a physical location (a room, building,
-location, etc.), an organizational grouping (a workgroup, department,
-division, etc.) or any other logical grouping ("the seventeen
-technical writers scattered about our company", etc.).
-
-The site license cost will be based on your estimate of the number of
-XV users or workstations at your site, whichever is the smaller
-number.
-
-If you are interested in obtaining a site license, please contact the
-author via electronic mail or FAX (see below for details). Send
-information regarding your site (the name or definition of the 'site',
-a physical address, a fax number, and an estimate of the number of
-users or workstations), and we'll get a site license out to you for
-your examination.
-
-
-Copyright Notice
-----------------
-XV is Copyright 1989, 1994 by John Bradley
-
-Permission to copy and distribute XV in its entirety, for
-non-commercial purposes, is hereby granted without fee, provided that
-this license information and copyright notice appear in all copies.
-
-If you redistribute XV, the *entire* contents of this distribution
-must be distributed, including the README, and INSTALL files, the
-sources, and the complete contents of the 'docs' directory.
-
-Note that distributing XV 'bundled' in with any product is considered
-to be a 'commercial purpose'.
-
-Also note that any copies of XV that are distributed MUST be built
-and/or configured to be in their 'unregistered copy' mode, so that it
-is made obvious to the user that XV is shareware, and that they should
-consider registering, or at least reading this information.
-
-The software may be modified for your own purposes, but modified
-versions may not be distributed without prior consent of the author.
-
-This software is provided 'as-is', without any express or implied
-warranty. In no event will the author be held liable for any damages
-arising from the use of this software.
-
-If you would like to do something with XV that this copyright
-prohibits (such as distributing it with a commercial product, using
-portions of the source in some other program, distributing registered
-copies, etc.), please contact the author (preferably via email).
-Arrangements can probably be worked out.
-
-
-The author may be contacted via:
- US Mail: John Bradley
- 1053 Floyd Terrace
- Bryn Mawr, PA 19010
-
- FAX: (610) 520-2042
-
-Electronic Mail regarding XV should be sent to one of these three addresses:
- xv@devo.dccs.upenn.edu - general XV questions
- xvbiz@devo.dccs.upenn.edu - all XV licensing questions
- xvtech@devo.dccs.upenn.edu - bug reports, technical questions
-
-Please do *not* send electronic mail directly to the author, as he
-gets more than enough as it is.
-
-
diff --git a/community/xv/xv-3.10a-libpng15.patch b/community/xv/xv-3.10a-libpng15.patch
deleted file mode 100644
index 43c517668..000000000
--- a/community/xv/xv-3.10a-libpng15.patch
+++ /dev/null
@@ -1,520 +0,0 @@
---- xvinfo.c
-+++ xvinfo.c
-@@ -26,7 +26,7 @@
- #define INFOHIGH 270
-
- /* max length of an Info String */
--#define ISTRLEN 80
-+#define ISTRLEN 256
-
- /* baseline of top line of text */
- #define TOPBASE (36 + penn_height/2 + 4 + 8 + ASCENT)
---- xvpng.c
-+++ xvpng.c
-@@ -31,6 +31,7 @@
-
- #ifdef HAVE_PNG
-
-+#include "zlib.h"
- #include "png.h"
-
- /*** Stuff for PNG Dialog box ***/
-@@ -41,7 +42,9 @@
- #define COMPRESSION 6 /* default zlib compression level, not max
- (Z_BEST_COMPRESSION) */
-
--#define HAVE_tRNS (info_ptr->valid & PNG_INFO_tRNS)
-+/* old
-+#define HAVE_tRNS (info_ptr->valid & PNG_INFO_tRNS) */
-+#define HAVE_tRNS png_get_valid(png_ptr,info_ptr,PNG_INFO_tRNS)
-
- #define DWIDE 86
- #define DHIGH 104
-@@ -444,6 +447,10 @@
- byte *p, *png_line;
- char software[256];
- char *savecmnt;
-+ /* for storing values until all are accumulated, so that the image header can be set in full */
-+ int _bit_depth,_color_type,_interlace_type,_compression_type,_filter_type;
-+ png_uint_32 _width,_height;
-+ png_time _mod_time;
-
- if ((png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL,
- png_xv_error, png_xv_warning)) == NULL) {
-@@ -458,7 +465,7 @@
- FatalError(software);
- }
-
-- if (setjmp(png_ptr->jmpbuf)) {
-+ if (setjmp(png_jmpbuf(png_ptr))) {
- png_destroy_write_struct(&png_ptr, &info_ptr);
- return -1;
- }
-@@ -489,8 +496,8 @@
- png_set_filter(png_ptr, 0, filter);
- }
-
-- info_ptr->width = w;
-- info_ptr->height = h;
-+ _width = w;
-+ _height = h;
- if (w <= 0 || h <= 0) {
- SetISTR(ISTR_WARNING, "%s: image dimensions out of range (%dx%d)",
- fbasename, w, h);
-@@ -498,7 +505,7 @@
- return -1;
- }
-
-- info_ptr->interlace_type = interCB.val ? 1 : 0;
-+ _interlace_type = interCB.val ? PNG_INTERLACE_ADAM7 : PNG_INTERLACE_NONE;
-
- linesize = 0; /* quiet a compiler warning */
-
-@@ -542,40 +549,44 @@
- png_destroy_write_struct(&png_ptr, &info_ptr);
- return -1;
- }
-- info_ptr->color_type = PNG_COLOR_TYPE_RGB;
-- info_ptr->bit_depth = 8;
-+ _color_type = PNG_COLOR_TYPE_RGB;
-+ _bit_depth = 8;
- } else /* ptype == PIC8 */ {
- linesize = w;
-- info_ptr->color_type = PNG_COLOR_TYPE_PALETTE;
-+ _color_type = PNG_COLOR_TYPE_PALETTE;
- if (numuniqcols <= 2)
-- info_ptr->bit_depth = 1;
-+ _bit_depth = 1;
- else
- if (numuniqcols <= 4)
-- info_ptr->bit_depth = 2;
-+ _bit_depth = 2;
- else
- if (numuniqcols <= 16)
-- info_ptr->bit_depth = 4;
-+ _bit_depth = 4;
- else
-- info_ptr->bit_depth = 8;
-+ _bit_depth = 8;
-
- for (i = 0; i < numuniqcols; i++) {
- palette[i].red = r1[i];
- palette[i].green = g1[i];
- palette[i].blue = b1[i];
- }
-- info_ptr->num_palette = numuniqcols;
-- info_ptr->palette = palette;
-+/* cannot find a setter for this, unsure if it is necessary anymore...
- info_ptr->valid |= PNG_INFO_PLTE;
-+*/
-+ /* set the header just in case it's needed */
-+ png_set_IHDR(png_ptr,info_ptr,_width,_height,_bit_depth,_color_type,
-+ _interlace_type,PNG_COMPRESSION_TYPE_DEFAULT,PNG_FILTER_TYPE_DEFAULT);
-+ png_set_PLTE(png_ptr,info_ptr,palette,numuniqcols);
- }
- }
-
- else if (colorType == F_GREYSCALE || colorType == F_BWDITHER) {
-- info_ptr->color_type = PNG_COLOR_TYPE_GRAY;
-+ _color_type = PNG_COLOR_TYPE_GRAY;
- if (colorType == F_BWDITHER) {
- /* shouldn't happen */
- if (ptype == PIC24) FatalError("PIC24 and B/W Stipple in WritePNG()");
-
-- info_ptr->bit_depth = 1;
-+ _bit_depth = 1;
- if (MONO(r1[0], g1[0], b1[0]) > MONO(r1[1], g1[1], b1[1])) {
- remap[0] = 1;
- remap[1] = 0;
-@@ -595,7 +606,7 @@
- png_destroy_write_struct(&png_ptr, &info_ptr);
- return -1;
- }
-- info_ptr->bit_depth = 8;
-+ _bit_depth = 8;
- }
- else /* ptype == PIC8 */ {
- int low_precision;
-@@ -617,7 +628,7 @@
- for (; i < 256; i++)
- remap[i]=0; /* shouldn't be necessary, but... */
-
-- info_ptr->bit_depth = 8;
-+ _bit_depth = 8;
-
- /* Note that this fails most of the time because of gamma */
- /* (and that would be a bug: GRR FIXME) */
-@@ -636,7 +647,7 @@
- for (i = 0; i < numuniqcols; i++) {
- remap[i] &= 0xf;
- }
-- info_ptr->bit_depth = 4;
-+ _bit_depth = 4;
-
- /* try to adjust to 2-bit precision grayscale */
-
-@@ -652,7 +663,7 @@
- for (i = 0; i < numuniqcols; i++) {
- remap[i] &= 3;
- }
-- info_ptr->bit_depth = 2;
-+ _bit_depth = 2;
-
- /* try to adjust to 1-bit precision grayscale */
-
-@@ -668,7 +679,7 @@
- for (i = 0; i < numuniqcols; i++) {
- remap[i] &= 1;
- }
-- info_ptr->bit_depth = 1;
-+ _bit_depth = 1;
- }
- }
- }
-@@ -677,6 +688,9 @@
- else
- png_error(png_ptr, "Unknown colorstyle in WritePNG");
-
-+ png_set_IHDR(png_ptr,info_ptr,_width,_height,_bit_depth,_color_type,
-+ _interlace_type,PNG_COMPRESSION_TYPE_DEFAULT,PNG_FILTER_TYPE_DEFAULT);
-+
- if ((text = (png_textp)malloc(sizeof(png_text)))) {
- sprintf(software, "XV %s", REVDATE);
-
-@@ -685,20 +699,22 @@
- text->text = software;
- text->text_length = strlen(text->text);
-
-- info_ptr->max_text = 1;
-- info_ptr->num_text = 1;
-- info_ptr->text = text;
-+/* max_text seems to be internal only now, do not set
-+ info_ptr->max_text = 1; */
-+ png_set_text(png_ptr,info_ptr,text,1);
- }
-
- Display_Gamma = gDial.val; /* Save the current gamma for loading */
-
- // GRR FIXME: add .Xdefaults option to omit writing gamma (size, cumulative errors when editing)--alternatively, modify save box to include "omit" checkbox
-- info_ptr->gamma = 1.0/gDial.val;
-- info_ptr->valid |= PNG_INFO_gAMA;
-+ png_set_gAMA(png_ptr,info_ptr,1.0/gDial.val);
-+/* doesn't seem to be a way to set valid directly anymore, unnecessary maybe..
-+ info_ptr->valid |= PNG_INFO_gAMA; */
-
-+/* might need to be png_write_info_before_PLTE() ... */
- png_write_info(png_ptr, info_ptr);
-
-- if (info_ptr->bit_depth < 8)
-+ if (_bit_depth < 8)
- png_set_packing(png_ptr);
-
- pass=png_set_interlace_handling(png_ptr);
-@@ -711,13 +727,13 @@
- int j;
- p = pic;
- for (j = 0; j < h; ++j) {
-- if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY) {
-+ if (_color_type == PNG_COLOR_TYPE_GRAY) {
- int k;
- for (k = 0; k < w; ++k)
- png_line[k] = ptype==PIC24 ? MONO(p[k*3], p[k*3+1], p[k*3+2]) :
- remap[pc2nc[p[k]]];
- png_write_row(png_ptr, png_line);
-- } else if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) {
-+ } else if (_color_type == PNG_COLOR_TYPE_PALETTE) {
- int k;
- for (k = 0; k < w; ++k)
- png_line[k] = pc2nc[p[k]];
-@@ -739,28 +755,31 @@
- (savecmnt = (char *)malloc((strlen(picComments) + 1)*sizeof(char)))) {
- png_textp tp;
- char *comment, *key;
-+ int nt;
-+ int mt;
-
- strcpy(savecmnt, picComments);
- key = savecmnt;
-+ png_get_text(png_ptr,info_ptr,&tp,&mt); /* to get 'max_text' */
- tp = text;
-- info_ptr->num_text = 0;
-+ nt = 0;
-
- comment = strchr(key, ':');
-
- do {
- /* Allocate a larger structure for comments if necessary */
-- if (info_ptr->num_text >= info_ptr->max_text)
-+ if (nt >= mt)
- {
- if ((tp =
-- realloc(text, (info_ptr->num_text + 2)*sizeof(png_text))) == NULL)
-+ realloc(text, (nt + 2)*sizeof(png_text))) == NULL)
- {
- break;
- }
- else
- {
- text = tp;
-- tp = &text[info_ptr->num_text];
-- info_ptr->max_text += 2;
-+ tp = &text[nt];
-+ mt += 2;
- }
- }
-
-@@ -810,7 +829,7 @@
- }
-
- tp->compression = tp->text_length > 640 ? 0 : -1;
-- info_ptr->num_text++;
-+ nt++;
- tp++;
- }
- }
-@@ -834,27 +853,29 @@
- tp->text = key;
- tp->text_length = q - key;
- tp->compression = tp->text_length > 750 ? 0 : -1;
-- info_ptr->num_text++;
-+ nt++;
- key = NULL;
- }
- } while (key && *key);
-+ png_set_text(png_ptr,info_ptr,text,nt);
- }
- else {
-- info_ptr->num_text = 0;
-+ png_set_text(png_ptr,info_ptr,text,0);
- }
- }
-- info_ptr->text = text;
-
-- png_convert_from_time_t(&(info_ptr->mod_time), time(NULL));
-- info_ptr->valid |= PNG_INFO_tIME;
-+ png_convert_from_time_t(&_mod_time, time(NULL));
-+ png_set_tIME(png_ptr,info_ptr,&_mod_time);
-+/* dunno how to set validity
-+ info_ptr->valid |= PNG_INFO_tIME; */
-
- png_write_end(png_ptr, info_ptr);
- fflush(fp); /* just in case we core-dump before finishing... */
-
- if (text) {
- free(text);
-- /* must do this or png_destroy_write_struct() 0.97+ will free text again: */
-- info_ptr->text = (png_textp)NULL;
-+ /* must do this or png_destroy_write_struct() 0.97+ will free text again:
-+ info_ptr->text = (png_textp)NULL; */
- if (savecmnt)
- {
- free(savecmnt);
-@@ -886,6 +907,14 @@
- int pass;
- int gray_to_rgb;
- size_t commentsize;
-+ /* temp storage vars for libpng15 migration */
-+ int _bit_depth,_color_type,_interlace_type,_compression_type,_filter_type,_num_text,_num_palette;
-+ png_uint_32 _width,_height;
-+ png_timep _mod_time;
-+ double _gamma;
-+ png_textp _text;
-+ png_colorp _palette;
-+ png_color_16p _background;
-
- fbasename = BaseName(fname);
-
-@@ -921,7 +950,7 @@
- FatalError("malloc failure in LoadPNG");
- }
-
-- if (setjmp(png_ptr->jmpbuf)) {
-+ if (setjmp(png_jmpbuf(png_ptr))) {
- fclose(fp);
- png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL);
- if (!read_anything) {
-@@ -945,8 +974,10 @@
- #endif
- png_read_info(png_ptr, info_ptr);
-
-- pinfo->w = pinfo->normw = info_ptr->width;
-- pinfo->h = pinfo->normh = info_ptr->height;
-+ png_get_IHDR(png_ptr,info_ptr,&_width,&_height,&_bit_depth,&_color_type,&_interlace_type,NULL,NULL);
-+
-+ pinfo->w = pinfo->normw = _width;
-+ pinfo->h = pinfo->normh = _height;
- if (pinfo->w <= 0 || pinfo->h <= 0) {
- SetISTR(ISTR_WARNING, "%s: image dimensions out of range (%dx%d)",
- fbasename, pinfo->w, pinfo->h);
-@@ -957,9 +988,9 @@
- pinfo->frmType = F_PNG;
-
- sprintf(pinfo->fullInfo, "PNG, %d bit ",
-- info_ptr->bit_depth * info_ptr->channels);
-+ _bit_depth * png_get_channels(png_ptr,info_ptr));
-
-- switch(info_ptr->color_type) {
-+ switch(_color_type) {
- case PNG_COLOR_TYPE_PALETTE:
- strcat(pinfo->fullInfo, "palette color");
- break;
-@@ -983,15 +1014,17 @@
-
- sprintf(pinfo->fullInfo + strlen(pinfo->fullInfo),
- ", %sinterlaced. (%d bytes)",
-- info_ptr->interlace_type ? "" : "non-", filesize);
-+ _interlace_type ? "" : "non-", filesize);
-
-- sprintf(pinfo->shrtInfo, "%lux%lu PNG", info_ptr->width, info_ptr->height);
-+ sprintf(pinfo->shrtInfo, "%lux%lu PNG", _width, _height);
-
-- if (info_ptr->bit_depth < 8)
-+ if (_bit_depth < 8)
- png_set_packing(png_ptr);
-
-- if (info_ptr->valid & PNG_INFO_gAMA)
-- png_set_gamma(png_ptr, Display_Gamma, info_ptr->gamma);
-+ if (png_get_valid(png_ptr,info_ptr,PNG_INFO_gAMA)) {
-+ png_get_gAMA(png_ptr,info_ptr,&_gamma);
-+ png_set_gamma(png_ptr, Display_Gamma, _gamma);
-+ }
- /*
- *else
- * png_set_gamma(png_ptr, Display_Gamma, 0.45);
-@@ -1000,7 +1033,7 @@
- gray_to_rgb = 0; /* quiet a compiler warning */
-
- if (have_imagebg) {
-- if (info_ptr->bit_depth == 16) {
-+ if (_bit_depth == 16) {
- my_background.red = imagebgR;
- my_background.green = imagebgG;
- my_background.blue = imagebgB;
-@@ -1013,8 +1046,8 @@
- }
- png_set_background(png_ptr, &my_background, PNG_BACKGROUND_GAMMA_SCREEN,
- 0, Display_Gamma);
-- if ((info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA ||
-- (info_ptr->color_type == PNG_COLOR_TYPE_GRAY && HAVE_tRNS)) &&
-+ if ((_color_type == PNG_COLOR_TYPE_GRAY_ALPHA ||
-+ (_color_type == PNG_COLOR_TYPE_GRAY && HAVE_tRNS)) &&
- (imagebgR != imagebgG || imagebgR != imagebgB)) /* i.e., colored bg */
- {
- png_set_gray_to_rgb(png_ptr);
-@@ -1022,8 +1055,9 @@
- gray_to_rgb = 1;
- }
- } else {
-- if (info_ptr->valid & PNG_INFO_bKGD) {
-- png_set_background(png_ptr, &info_ptr->background,
-+ if (png_get_valid(png_ptr,info_ptr,PNG_INFO_bKGD)) {
-+ png_get_bKGD(png_ptr,info_ptr,&_background);
-+ png_set_background(png_ptr, _background,
- PNG_BACKGROUND_GAMMA_FILE, 1, 1.0);
- } else {
- my_background.red = my_background.green = my_background.blue =
-@@ -1033,13 +1067,13 @@
- }
- }
-
-- if (info_ptr->bit_depth == 16)
-+ if (_bit_depth == 16)
- png_set_strip_16(png_ptr);
-
-- if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY ||
-- info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
-+ if (_color_type == PNG_COLOR_TYPE_GRAY ||
-+ _color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
- {
-- if (info_ptr->bit_depth == 1)
-+ if (_bit_depth == 1)
- pinfo->colType = F_BWDITHER;
- else
- pinfo->colType = F_GREYSCALE;
-@@ -1049,9 +1083,11 @@
- pass=png_set_interlace_handling(png_ptr);
-
- png_read_update_info(png_ptr, info_ptr);
-+ /* get HIDR again just in case the info_ptr changed */
-+ png_get_IHDR(png_ptr,info_ptr,&_width,&_height,&_bit_depth,&_color_type,&_interlace_type,NULL,NULL);
-
-- if (info_ptr->color_type == PNG_COLOR_TYPE_RGB ||
-- info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA || gray_to_rgb)
-+ if (_color_type == PNG_COLOR_TYPE_RGB ||
-+ _color_type == PNG_COLOR_TYPE_RGB_ALPHA || gray_to_rgb)
- {
- linesize = 3 * pinfo->w;
- if (linesize/3 < pinfo->w) { /* know pinfo->w > 0 (see above) */
-@@ -1065,16 +1101,17 @@
- } else {
- linesize = pinfo->w;
- pinfo->type = PIC8;
-- if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY ||
-- info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) {
-+ if (_color_type == PNG_COLOR_TYPE_GRAY ||
-+ _color_type == PNG_COLOR_TYPE_GRAY_ALPHA) {
- for (i = 0; i < 256; i++)
- pinfo->r[i] = pinfo->g[i] = pinfo->b[i] = i;
- } else {
- pinfo->colType = F_FULLCOLOR;
-- for (i = 0; i < info_ptr->num_palette; i++) {
-- pinfo->r[i] = info_ptr->palette[i].red;
-- pinfo->g[i] = info_ptr->palette[i].green;
-- pinfo->b[i] = info_ptr->palette[i].blue;
-+ png_get_PLTE(png_ptr,info_ptr,&_palette,&_num_palette);
-+ for (i = 0; i < _num_palette; i++) {
-+ pinfo->r[i] = _palette[i].red;
-+ pinfo->g[i] = _palette[i].green;
-+ pinfo->b[i] = _palette[i].blue;
- }
- }
- }
-@@ -1092,7 +1129,7 @@
- png_error(png_ptr, "can't allocate space for PNG image");
- }
-
-- png_start_read_image(png_ptr);
-+ /*png_start_read_image(png_ptr); -- causes a warning and seems to be unnecessary */
-
- for (i = 0; i < pass; i++) {
- byte *p = pinfo->pic;
-@@ -1106,22 +1143,23 @@
-
- png_read_end(png_ptr, info_ptr);
-
-- if (info_ptr->num_text > 0) {
-+ png_get_text(png_ptr,info_ptr,&_text,&_num_text);
-+ if (_num_text > 0) {
- commentsize = 1;
-
-- for (i = 0; i < info_ptr->num_text; i++)
-- commentsize += strlen(info_ptr->text[i].key) + 1 +
-- info_ptr->text[i].text_length + 2;
-+ for (i = 0; i < _num_text; i++)
-+ commentsize += strlen(_text[i].key) + 1 +
-+ _text[i].text_length + 2;
-
- if ((pinfo->comment = malloc(commentsize)) == NULL) {
- png_warning(png_ptr,"can't allocate comment string");
- }
- else {
- pinfo->comment[0] = '\0';
-- for (i = 0; i < info_ptr->num_text; i++) {
-- strcat(pinfo->comment, info_ptr->text[i].key);
-+ for (i = 0; i < _num_text; i++) {
-+ strcat(pinfo->comment, _text[i].key);
- strcat(pinfo->comment, "::");
-- strcat(pinfo->comment, info_ptr->text[i].text);
-+ strcat(pinfo->comment, _text[i].text);
- strcat(pinfo->comment, "\n");
- }
- }
-@@ -1143,7 +1181,7 @@
- {
- SetISTR(ISTR_WARNING,"%s: libpng error: %s", fbasename, message);
-
-- longjmp(png_ptr->jmpbuf, 1);
-+ longjmp(png_jmpbuf(png_ptr), 1);
- }
-
-