Update to version 8.0.
PR: 14403 Submitted by: KATO Tsuguru <tkato@prontomail.ne.jp>
This commit is contained in:
parent
c70c4e80a0
commit
5a49259902
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=22769
@ -1,23 +1,24 @@
|
||||
# New ports collection makefile for: netpbm
|
||||
# Version required: 1mar1994
|
||||
# Version required: 8.0
|
||||
# Date created: ?
|
||||
# Whom: jmz (original)
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
|
||||
DISTNAME= netpbm
|
||||
PKGNAME= netpbm-94.3.1
|
||||
DISTNAME= netpbm-8.0
|
||||
CATEGORIES= graphics
|
||||
MASTER_SITES= ftp://ftp.x.org/R5contrib/
|
||||
DISTFILES= netpbm-1mar1994.tar.gz
|
||||
MASTER_SITES= ${MASTER_SITE_SUNSITE}
|
||||
MASTER_SITE_SUBDIR= apps/graphics/convert
|
||||
|
||||
MAINTAINER= ports@FreeBSD.org
|
||||
|
||||
LIB_DEPENDS+= tiff.4:${PORTSDIR}/graphics/tiff
|
||||
LIB_DEPENDS+= jpeg.9:${PORTSDIR}/graphics/jpeg
|
||||
LIB_DEPENDS= tiff.4:${PORTSDIR}/graphics/tiff \
|
||||
jpeg.9:${PORTSDIR}/graphics/jpeg
|
||||
|
||||
WRKSRC= ${WRKDIR}/netpbm
|
||||
USE_IMAKE= yes
|
||||
|
||||
MAN1= anytopnm.1 asciitopgm.1 atktopbm.1 bioradtopgm.1 bmptoppm.1 \
|
||||
brushtopbm.1 cmuwmtopbm.1 fitstopnm.1 fstopgm.1 g3topbm.1 gemtopbm.1 \
|
||||
giftopnm.1 gouldtoppm.1 hipstopgm.1 hpcdtoppm.1 icontopbm.1 \
|
||||
@ -51,4 +52,7 @@ MAN1= anytopnm.1 asciitopgm.1 atktopbm.1 bioradtopgm.1 bmptoppm.1 \
|
||||
MAN3= libpbm.3 libpgm.3 libpnm.3 libppm.3
|
||||
MAN5= pbm.5 pgm.5 pnm.5 ppm.5
|
||||
|
||||
post-patch:
|
||||
@${PERL} -pi -e 's|%%LOCALBASE%%|${LOCALBASE}|g' ${WRKSRC}/Pbmplus.tmpl
|
||||
|
||||
.include <bsd.port.mk>
|
||||
|
@ -1 +1 @@
|
||||
MD5 (netpbm-1mar1994.tar.gz) = 55f505b09e69a5db8f08844435282dfb
|
||||
MD5 (netpbm-8.0.tar.gz) = 1aa88eb0d1f86b5793fde0317c95ed68
|
||||
|
15
graphics/netpbm/files/patch-ap
Normal file
15
graphics/netpbm/files/patch-ap
Normal file
@ -0,0 +1,15 @@
|
||||
--- pnm/pnmarith.c.orig Sun Aug 13 13:08:04 1995
|
||||
+++ pnm/pnmarith.c Sat Oct 16 02:39:24 1999
|
||||
@@ -147,9 +147,9 @@
|
||||
break;
|
||||
|
||||
case '*':
|
||||
- r1 = r1 * r2 / maxval3;
|
||||
- g1 = g1 * g2 / maxval3;
|
||||
- b1 = b1 * b2 / maxval3;
|
||||
+ r1 = (unsigned) r1 * r2 / maxval3;
|
||||
+ g1 = (unsigned) g1 * g2 / maxval3;
|
||||
+ b1 = (unsigned) b1 * b2 / maxval3;
|
||||
break;
|
||||
|
||||
case 'D':
|
312
graphics/netpbm/files/patch-au
Normal file
312
graphics/netpbm/files/patch-au
Normal file
@ -0,0 +1,312 @@
|
||||
--- ppm/ppmtobmp.c.orig Mon Oct 4 18:12:36 1993
|
||||
+++ ppm/ppmtobmp.c Sat Oct 16 02:53:18 1999
|
||||
@@ -75,7 +75,7 @@
|
||||
unsigned short cBitCount, pixel **pixels, colorhash_table cht));
|
||||
static int colorstobpp ARGS((int colors));
|
||||
static void BMPEncode ARGS((FILE *fp, int class, int x, int y, pixel **pixels,
|
||||
- int colors, colorhash_table cht, pixval *R, pixval *G, pixval *B));
|
||||
+ int bpp, int colors, colorhash_table cht, pixval *R, pixval *G, pixval *B));
|
||||
static void
|
||||
PutByte(fp, v)
|
||||
FILE *fp;
|
||||
@@ -253,19 +253,23 @@
|
||||
int i;
|
||||
long ncolors;
|
||||
|
||||
- for (i = 0; i < colors; i++)
|
||||
- {
|
||||
- nbyte += BMPwritergb(fp,class,R[i],G[i],B[i]);
|
||||
- }
|
||||
-
|
||||
- ncolors = (1 << bpp);
|
||||
+ if (bpp != 24)
|
||||
+ {
|
||||
|
||||
- for (; i < ncolors; i++)
|
||||
- {
|
||||
- nbyte += BMPwritergb(fp,class,0,0,0);
|
||||
- }
|
||||
+ for (i = 0; i < colors; i++)
|
||||
+ {
|
||||
+ nbyte += BMPwritergb(fp,class,R[i],G[i],B[i]);
|
||||
+ }
|
||||
+
|
||||
+ ncolors = (1 << bpp);
|
||||
+
|
||||
+ for (; i < ncolors; i++)
|
||||
+ {
|
||||
+ nbyte += BMPwritergb(fp,class,0,0,0);
|
||||
+ }
|
||||
+ }
|
||||
|
||||
- return nbyte;
|
||||
+ return nbyte;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -284,26 +288,38 @@
|
||||
int rc;
|
||||
unsigned x;
|
||||
|
||||
- if ((b = pm_bitinit(fp, "w")) == (BITSTREAM) 0)
|
||||
- {
|
||||
- return -1;
|
||||
- }
|
||||
-
|
||||
- for (x = 0; x < cx; x++, row++)
|
||||
- {
|
||||
- if ((rc = pm_bitwrite(b, bpp, ppm_lookupcolor(cht, row))) == -1)
|
||||
- {
|
||||
- return -1;
|
||||
- }
|
||||
- nbyte += rc;
|
||||
- }
|
||||
-
|
||||
- if ((rc = pm_bitfini(b)) == -1)
|
||||
- {
|
||||
- return -1;
|
||||
- }
|
||||
- nbyte += rc;
|
||||
-
|
||||
+ if (bpp != 24)
|
||||
+ {
|
||||
+ if ((b = pm_bitinit(fp, "w")) == (BITSTREAM) 0)
|
||||
+ {
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ for (x = 0; x < cx; x++, row++)
|
||||
+ {
|
||||
+ if ((rc = pm_bitwrite(b, bpp, ppm_lookupcolor(cht, row))) == -1)
|
||||
+ {
|
||||
+ return -1;
|
||||
+ }
|
||||
+ nbyte += rc;
|
||||
+ }
|
||||
+
|
||||
+ if ((rc = pm_bitfini(b)) == -1)
|
||||
+ {
|
||||
+ return -1;
|
||||
+ }
|
||||
+ nbyte += rc;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ for (x = 0; x < cx; x++, row++)
|
||||
+ {
|
||||
+ PutByte(fp, PPM_GETB(*row));
|
||||
+ PutByte(fp, PPM_GETG(*row));
|
||||
+ PutByte(fp, PPM_GETR(*row));
|
||||
+ nbyte += 3;
|
||||
+ }
|
||||
+ }
|
||||
/*
|
||||
* Make sure we write a multiple of 4 bytes.
|
||||
*/
|
||||
@@ -394,48 +410,21 @@
|
||||
* arrays are undefined.
|
||||
*/
|
||||
static void
|
||||
-BMPEncode(fp, class, x, y, pixels, colors, cht, R, G, B)
|
||||
+BMPEncode(fp, class, x, y, pixels, bpp, colors, cht, R, G, B)
|
||||
FILE *fp;
|
||||
int class;
|
||||
int x;
|
||||
int y;
|
||||
pixel **pixels;
|
||||
+ int bpp; /* bits per pixel */
|
||||
int colors; /* number of valid entries in R,G,B */
|
||||
colorhash_table cht;
|
||||
pixval *R;
|
||||
pixval *G;
|
||||
pixval *B;
|
||||
{
|
||||
- int bpp; /* bits per pixel */
|
||||
unsigned long nbyte = 0;
|
||||
|
||||
- bpp = colorstobpp(colors);
|
||||
-
|
||||
- /*
|
||||
- * I have found empirically at least one BMP-displaying program
|
||||
- * that can't deal with (for instance) using 3 bits per pixel.
|
||||
- * I have seen no programs that can deal with using 3 bits per
|
||||
- * pixel. I have seen programs which can deal with 1, 4, and
|
||||
- * 8 bits per pixel.
|
||||
- *
|
||||
- * Based on this, I adjust actual the number of bits per pixel
|
||||
- * as follows. If anyone knows better, PLEASE tell me!
|
||||
- */
|
||||
- switch(bpp)
|
||||
- {
|
||||
- case 2:
|
||||
- case 3:
|
||||
- bpp = 4;
|
||||
- break;
|
||||
- case 5:
|
||||
- case 6:
|
||||
- case 7:
|
||||
- bpp = 8;
|
||||
- break;
|
||||
- }
|
||||
-
|
||||
- pm_message("Using %d bits per pixel", bpp);
|
||||
-
|
||||
nbyte += BMPwritefileheader(fp, class, bpp, x, y);
|
||||
nbyte += BMPwriteinfoheader(fp, class, bpp, x, y);
|
||||
nbyte += BMPwritergbtable(fp, class, bpp, colors, R, G, B);
|
||||
@@ -517,13 +506,15 @@
|
||||
char **argv;
|
||||
{
|
||||
FILE *ifp = stdin;
|
||||
- char *usage = "[-windows] [-os2] [ppmfile]";
|
||||
+ char *usage = "[-windows] [-os2] [-1/4/8/24bits] [ppmfile]";
|
||||
int class = C_OS2;
|
||||
|
||||
int argn;
|
||||
int rows;
|
||||
int cols;
|
||||
int colors;
|
||||
+ int maxcolors = MAXCOLORS;
|
||||
+ int bpp = 0;
|
||||
int i;
|
||||
pixval maxval;
|
||||
colorhist_vector chv;
|
||||
@@ -545,6 +536,14 @@
|
||||
class = C_WIN;
|
||||
else if (pm_keymatch(argv[argn], "-os2", 2))
|
||||
class = C_OS2;
|
||||
+ else if (pm_keymatch(argv[argn], "-24bits", 3))
|
||||
+ bpp = 24, maxcolors = 256;
|
||||
+ else if (pm_keymatch(argv[argn], "-8bits", 2))
|
||||
+ bpp = 8, maxcolors = 256;
|
||||
+ else if (pm_keymatch(argv[argn], "-4bits", 2))
|
||||
+ bpp = 4, maxcolors = 16;
|
||||
+ else if (pm_keymatch(argv[argn], "-1bit", 2))
|
||||
+ bpp = 1, maxcolors = 2;
|
||||
else
|
||||
pm_usage(usage);
|
||||
++argn;
|
||||
@@ -585,44 +584,90 @@
|
||||
#endif
|
||||
|
||||
/* Figure out the colormap. */
|
||||
- pm_message("computing colormap...");
|
||||
- chv = ppm_computecolorhist(pixels, cols, rows, MAXCOLORS, &colors);
|
||||
+ chv = (colorhist_vector) 0;
|
||||
+ if(bpp != 24)
|
||||
+ {
|
||||
+ pm_message("computing colormap...");
|
||||
+ chv = ppm_computecolorhist(pixels, cols, rows, maxcolors, &colors);
|
||||
+ }
|
||||
if (chv == (colorhist_vector) 0)
|
||||
- pm_error("too many colors - try doing a 'ppmquant %d'"
|
||||
- , MAXCOLORS);
|
||||
- pm_message("%d colors found", colors);
|
||||
-
|
||||
- /*
|
||||
- * Now turn the ppm colormap into the appropriate GIF
|
||||
- * colormap.
|
||||
- */
|
||||
- if (maxval > 255)
|
||||
- {
|
||||
- pm_message("maxval is not 255 - automatically rescaling colors");
|
||||
- }
|
||||
- for (i = 0; i < colors; ++i)
|
||||
- {
|
||||
- if (maxval == 255)
|
||||
- {
|
||||
- Red[i] = PPM_GETR(chv[i].color);
|
||||
- Green[i] = PPM_GETG(chv[i].color);
|
||||
- Blue[i] = PPM_GETB(chv[i].color);
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- Red[i] = (pixval) PPM_GETR(chv[i].color) * 255 / maxval;
|
||||
- Green[i] = (pixval) PPM_GETG(chv[i].color) * 255 / maxval;
|
||||
- Blue[i] = (pixval) PPM_GETB(chv[i].color) * 255 / maxval;
|
||||
- }
|
||||
- }
|
||||
+ {
|
||||
+ if (bpp == 0)
|
||||
+ {
|
||||
+ pm_message("over 256 colors found");
|
||||
+ bpp = 24;
|
||||
+ }
|
||||
+ else if (bpp != 24)
|
||||
+ pm_error("too many colors - try doing a 'ppmquant %d'"
|
||||
+ , maxcolors);
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ pm_message("%d colors found", colors);
|
||||
+
|
||||
+ /*
|
||||
+ * I have found empirically at least one BMP-displaying program
|
||||
+ * that can't deal with (for instance) using 3 bits per pixel.
|
||||
+ * I have seen no programs that can deal with using 3 bits per
|
||||
+ * pixel. I have seen programs which can deal with 1, 4, and
|
||||
+ * 8 bits per pixel.
|
||||
+ *
|
||||
+ * Based on this, I adjust actual the number of bits per pixel
|
||||
+ * as follows. If anyone knows better, PLEASE tell me!
|
||||
+ */
|
||||
+
|
||||
+ if (!bpp)
|
||||
+ {
|
||||
+ bpp = colorstobpp(colors);
|
||||
+
|
||||
+ switch(bpp)
|
||||
+ {
|
||||
+ case 2:
|
||||
+ case 3:
|
||||
+ bpp = 4;
|
||||
+ break;
|
||||
+ case 5:
|
||||
+ case 6:
|
||||
+ case 7:
|
||||
+ bpp = 8;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /*
|
||||
+ * Now turn the ppm colormap into the appropriate GIF
|
||||
+ * colormap.
|
||||
+ */
|
||||
+ if (maxval > 255)
|
||||
+ {
|
||||
+ pm_message("maxval is not 255 - automatically rescaling colors");
|
||||
+ }
|
||||
+ for (i = 0; i < colors; ++i)
|
||||
+ {
|
||||
+ if (maxval == 255)
|
||||
+ {
|
||||
+ Red[i] = PPM_GETR(chv[i].color);
|
||||
+ Green[i] = PPM_GETG(chv[i].color);
|
||||
+ Blue[i] = PPM_GETB(chv[i].color);
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ Red[i] = (pixval) PPM_GETR(chv[i].color) * 255 / maxval;
|
||||
+ Green[i] = (pixval) PPM_GETG(chv[i].color) * 255 / maxval;
|
||||
+ Blue[i] = (pixval) PPM_GETB(chv[i].color) * 255 / maxval;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /* And make a hash table for fast lookup. */
|
||||
+ cht = ppm_colorhisttocolorhash(chv, colors);
|
||||
+ ppm_freecolorhist(chv);
|
||||
+ }
|
||||
|
||||
- /* And make a hash table for fast lookup. */
|
||||
- cht = ppm_colorhisttocolorhash(chv, colors);
|
||||
- ppm_freecolorhist(chv);
|
||||
+ pm_message("Using %d bits per pixel", bpp);
|
||||
|
||||
/* All set, let's do it. */
|
||||
BMPEncode(stdout, class
|
||||
- , cols, rows, pixels, colors, cht
|
||||
+ , cols, rows, pixels, bpp, colors, cht
|
||||
,Red, Green, Blue);
|
||||
|
||||
pm_close(stdout);
|
Loading…
Reference in New Issue
Block a user