diff options
author | Norikatsu Shigemura <nork@FreeBSD.org> | 2003-08-18 16:15:10 +0000 |
---|---|---|
committer | Norikatsu Shigemura <nork@FreeBSD.org> | 2003-08-18 16:15:10 +0000 |
commit | efb928619b234d49b326a13f59a6e2ee354bf902 (patch) | |
tree | c62bd82140831e81442480b9cefc699e0c08f08d /graphics/gd2 | |
parent | dfc14c855f8ec76c9bd42bc90e325a160cc5d6cf (diff) | |
download | ports-efb928619b234d49b326a13f59a6e2ee354bf902.tar.gz ports-efb928619b234d49b326a13f59a6e2ee354bf902.zip |
Notes
Diffstat (limited to 'graphics/gd2')
-rw-r--r-- | graphics/gd2/Makefile | 72 | ||||
-rw-r--r-- | graphics/gd2/distinfo | 1 | ||||
-rw-r--r-- | graphics/gd2/files/Makefile.bsd | 53 | ||||
-rw-r--r-- | graphics/gd2/files/gd2togif.c | 40 | ||||
-rw-r--r-- | graphics/gd2/files/gd_biggif_out.c | 823 | ||||
-rw-r--r-- | graphics/gd2/files/gd_gif_in.c | 573 | ||||
-rw-r--r-- | graphics/gd2/files/gd_gif_out.c | 44 | ||||
-rw-r--r-- | graphics/gd2/files/gd_lzw_out.c | 795 | ||||
-rw-r--r-- | graphics/gd2/files/gdcmpgif.c | 85 | ||||
-rw-r--r-- | graphics/gd2/files/giftogd2.c | 48 | ||||
-rw-r--r-- | graphics/gd2/files/patch-gd.h | 41 | ||||
-rw-r--r-- | graphics/gd2/files/patch-gdft.c | 92 | ||||
-rw-r--r-- | graphics/gd2/files/patch-gdtest.c | 81 | ||||
-rw-r--r-- | graphics/gd2/files/patch-index.html | 71 | ||||
-rw-r--r-- | graphics/gd2/pkg-descr | 16 | ||||
-rw-r--r-- | graphics/gd2/pkg-plist | 25 | ||||
-rw-r--r-- | graphics/gd2/scripts/configure | 44 |
17 files changed, 0 insertions, 2904 deletions
diff --git a/graphics/gd2/Makefile b/graphics/gd2/Makefile deleted file mode 100644 index a8153cb54441..000000000000 --- a/graphics/gd2/Makefile +++ /dev/null @@ -1,72 +0,0 @@ -# New ports collection makefile for: gd -# Date created: 27 Mar 1998 -# Whom: jeff@cetlink.net -# -# $FreeBSD$ -# - -PORTNAME= gd -PORTVERSION= 2.0.15 -CATEGORIES+= graphics -MASTER_SITES= http://www.boutell.com/gd/http/ \ - ftp://ftp.boutell.com/pub/boutell/gd/ \ - ${MASTER_SITE_RINGSERVER} -MASTER_SITE_SUBDIR= graphics/gd - -MAINTAINER?= ports@FreeBSD.org -COMMENT?= A graphics library for fast creation of images - -LIB_DEPENDS= jpeg.9:${PORTSDIR}/graphics/jpeg \ - png.5:${PORTSDIR}/graphics/png \ - freetype.9:${PORTSDIR}/print/freetype2 - -LATEST_LINK= gd2 - -MAKE_ENV= WRKSRC="${WRKSRC}" CPPFLAGS="${CPPFLAGS}" LDFLAGS="${LDFLAGS}" -MAKEFILE= ${FILESDIR}/Makefile.bsd -INSTALLS_SHLIB= yes - -.include <bsd.port.pre.mk> - -.if defined(WITHOUT_X11) || defined(WITHOUT_XPM) -PKGNAMESUFFIX= -nox11 -.if !defined(WITHOUT_XPM) -LIB_DEPENDS+= Xpm:${PORTSDIR}/graphics/xpm -CPPFLAGS+= -I${X11BASE}/include/X11 -I${X11BASE}/include -DHAVE_LIBXPM \ - -DXPM_NOX -LDFLAGS+= -L${X11BASE}/lib -lXpm -.endif -.else -USE_XPM= yes -CPPFLAGS+= -I${X11BASE}/include/X11 -I${X11BASE}/include -DHAVE_LIBXPM -LDFLAGS+= -L${X11BASE}/lib -lXpm -lX11 -.endif - -.if defined(WITH_LZW) || defined(HAVE_UNISYS_LICENSE) || \ - (defined(USA_RESIDENT) && ${USA_RESIDENT} == "YES") -CPPFLAGS+= -DLZW_LICENSED -.endif - -.if defined(GD_FONTS) -USE_PERL5_BUILD= yes -SCRIPTS_ENV+= GD_FONTS="${GD_FONTS}" -.endif - -pre-everything:: -.if !defined(WITH_LZW) - @${ECHO_MSG} "************************************************************" - @${ECHO_MSG} "* If you live outside US and Canada, you can define *" - @${ECHO_MSG} "* WITH_LZW to enable GIF compression support. *" - @${ECHO_MSG} "************************************************************" -.endif - -post-extract: - @${CP} ${FILESDIR}/g* ${WRKSRC} - -post-install: -.if !defined(NOPORTDOCS) - @${MKDIR} ${DOCSDIR} - ${INSTALL_DATA} ${WRKSRC}/index.html ${DOCSDIR} -.endif - -.include <bsd.port.post.mk> diff --git a/graphics/gd2/distinfo b/graphics/gd2/distinfo deleted file mode 100644 index 4297649caf8a..000000000000 --- a/graphics/gd2/distinfo +++ /dev/null @@ -1 +0,0 @@ -MD5 (gd-2.0.15.tar.gz) = 6ededf633b4fd054662ec123c7825fbb diff --git a/graphics/gd2/files/Makefile.bsd b/graphics/gd2/files/Makefile.bsd deleted file mode 100644 index a6530d92a53e..000000000000 --- a/graphics/gd2/files/Makefile.bsd +++ /dev/null @@ -1,53 +0,0 @@ -PROGS!= ${MAKE} -V BIN_PROGRAMS -f ${WRKSRC}/makefile.sample -PROGS+= gd2togif gdcmpgif giftogd2 -PROGS+= annotate # new utility, not included in makefile.sample -TESTS= gdtest gddemo gd2time gdtestft testac fontsizetest fontwheeltest -SRCS= gd.c gd_gd.c gd_gd2.c gd_io.c gd_io_dp.c gd_io_file.c \ - gd_io_ss.c gd_jpeg.c gd_png.c gd_ss.c gd_topal.c \ - gd_wbmp.c gdcache.c gdfontg.c gdfontl.c gdfontmb.c \ - gdfonts.c gdfontt.c gdft.c gdhelpers.c gdhelpers.h \ - gdkanji.c gdtables.c gdxpm.c jisx0208.h \ - wbmp.c wbmp.h -SRCS+= gd_gif_in.c gd_gif_out.c gd_biggif_out.c gd_lzw_out.c -MAKEDIR=/usr/share/mk -LIB=gd -SHLIB_MAJOR=4 -SHLIB_MINOR=0 -INCS= gd.h gd_io.h gdcache.h gdfontg.h gdfontl.h gdfontmb.h \ - gdfonts.h gdfontt.h -SHLIB_NAME!= ${MAKE} -V SHLIB_NAME LIB=${LIB} \ - SHLIB_MAJOR=${SHLIB_MAJOR} SHLIB_MINOR=${SHLIB_MINOR} -f ${MAKEDIR}/bsd.lib.mk - -CFLAGS+= -I${.CURDIR} -I${LOCALBASE}/include/freetype2/freetype \ - -I${LOCALBASE}/include/freetype2 -I${LOCALBASE}/include \ - -DHAVE_LIBPNG -DHAVE_LIBJPEG -DHAVE_LIBFREETYPE -DHAVE_LIBZ \ - ${CPPFLAGS} -LDADD= -L${LOCALBASE}/lib -lpng -lz -ljpeg -lfreetype -lm \ - ${LDFLAGS} - -# The package comes with tests, but without any sort of test-harness, -# to run them all automaticly. So building tests is disabled here. -mi -all: lib${LIB}.a ${SHLIB_NAME} ${PROGS} # ${TESTS} - -lib${LIB}.a ${SHLIB_NAME}: ${SRCS} - ${MAKE} LIB=${LIB} SRCS="${SRCS}" \ - SHLIB_MAJOR=${SHLIB_MAJOR} SHLIB_MINOR=${SHLIB_MINOR} \ - CFLAGS="${CFLAGS}" -ECFLAGS LDADD="${LDADD}" \ - -f ${MAKEDIR}/bsd.lib.mk ${.TARGET} - -${PROGS} ${TESTS}: ${SHLIB_NAME} lib${LIB}.a - ${MAKE} PROG=${.TARGET} NOMAN=1 LDADD="-L${.CURDIR} -lgd" \ - CFLAGS="${CFLAGS}" -ECFLAGS -f ${MAKEDIR}/bsd.prog.mk - -install: - mkdir -p ${PREFIX}/include - ${MAKE} LIB=${LIB} LIBDIR=${PREFIX}/lib NOPROFILE=true \ - SHLIB_MAJOR=${SHLIB_MAJOR} SHLIB_MINOR=${SHLIB_MINOR} \ - -f ${MAKEDIR}/bsd.lib.mk install - cd ${.CURDIR} && ${BSD_INSTALL_DATA} ${INCS} ${PREFIX}/include - cd ${.CURDIR} && ${BSD_INSTALL_PROGRAM} ${PROGS} ${PREFIX}/bin/ - ${BSD_INSTALL_SCRIPT} ${.CURDIR}/bdftogd ${PREFIX}/bin/ - -.if exists(${.CURDIR}/Makefile.fonts) -.include "Makefile.fonts" -.endif diff --git a/graphics/gd2/files/gd2togif.c b/graphics/gd2/files/gd2togif.c deleted file mode 100644 index d5fbb8921c3a..000000000000 --- a/graphics/gd2/files/gd2togif.c +++ /dev/null @@ -1,40 +0,0 @@ -#include <stdio.h> -#include "gd.h" - -/* A short program which converts a .gif file into a .gd file, for - your convenience in creating images on the fly from a - basis image that must be loaded quickly. The .gd format - is not intended to be a general-purpose format. */ - -int main(int argc, char **argv) -{ - gdImagePtr im; - FILE *in, *out; - if (argc != 3) { - fprintf(stderr, "Usage: gd2togif filename.gd2 filename.gif\n"); - exit(1); - } - in = fopen(argv[1], "rb"); - if (!in) { - fprintf(stderr, "Input file does not exist!\n"); - exit(1); - } - im = gdImageCreateFromGd2(in); - fclose(in); - if (!im) { - fprintf(stderr, "Input is not in GIF format!\n"); - exit(1); - } - out = fopen(argv[2], "wb"); - if (!out) { - fprintf(stderr, "Output file cannot be written to!\n"); - gdImageDestroy(im); - exit(1); - } - gdImageGif(im, out); - fclose(out); - gdImageDestroy(im); - - return 0; -} - diff --git a/graphics/gd2/files/gd_biggif_out.c b/graphics/gd2/files/gd_biggif_out.c deleted file mode 100644 index 29ec90f87d56..000000000000 --- a/graphics/gd2/files/gd_biggif_out.c +++ /dev/null @@ -1,823 +0,0 @@ -#include <stdio.h> -#include <math.h> -#include <string.h> -#include <stdlib.h> -#include "gd.h" - -/* -** Wrapper functions for this module. -*/ - -void gdImageBigGif(gdImagePtr im, FILE *outFile) -{ - gdIOCtx *out = gdNewFileCtx(outFile); - gdImageBigGifCtx(im, out); - out->gd_free(out); -} - -void* gdImageBigGifPtr(gdImagePtr im, int *size) -{ - void *rv; - gdIOCtx *out = gdNewDynamicCtx(2048, NULL); - gdImageBigGifCtx(im, out); - rv = gdDPExtractData(out,size); - out->gd_free(out); - return rv; -} - -/* Code drawn from ppmtogif.c, from the pbmplus package -** -** Based on GIFENCOD by David Rowley <mgardi@watdscu.waterloo.edu>. A -** Lempel-Zim compression based on "compress". -** -** Modified by Marcel Wijkstra <wijkstra@fwi.uva.nl> -** -** Copyright (C) 1989 by Jef Poskanzer. -** -** Permission to use, copy, modify, and distribute this software and its -** documentation for any purpose and without fee is hereby granted, provided -** that the above copyright notice appear in all copies and that both that -** copyright notice and this permission notice appear in supporting -** documentation. This software is provided "as is" without express or -** implied warranty. -** -** The Graphics Interchange Format(c) is the Copyright property of -** CompuServe Incorporated. GIF(sm) is a Service Mark property of -** CompuServe Incorporated. -* -* Heavily modified by Mouse, 1998-02-12. -* Remove LZW compression. -* Added miGIF run length compression. -* -*/ - -/* - * a code_int must be able to hold 2**GIFBITS values of type int, and also -1 - */ -typedef int code_int; - -static int colorstobpp(int colors); -static void BumpPixel (void); -static int GIFNextPixel (gdImagePtr im); -static void GIFEncode (gdIOCtx *fp, int GWidth, int GHeight, int GInterlace, int Background, int Transparent, int BitsPerPixel, int *Red, int *Green, int *Blue, gdImagePtr im); -/*static void Putword (int w, gdIOCtx *fp); */ -static void GIFcompress (int, gdIOCtx *, gdImagePtr, int); -static void output (code_int code); - -/* UNUSED -* static void char_init (void); -* static void char_out (int c); -*/ - -/* Allows for reuse */ -static void init_statics(void); - -void gdImageBigGifCtx(gdImagePtr im, gdIOCtx *out) -{ - int interlace, transparent, BitsPerPixel; - - interlace = im->interlace; - transparent = im->transparent; - - BitsPerPixel = colorstobpp(im->colorsTotal); - /* Clear any old values in statics strewn through the GIF code */ - init_statics(); - /* All set, let's do it. */ - GIFEncode( - out, im->sx, im->sy, interlace, 0, transparent, BitsPerPixel, - im->red, im->green, im->blue, im); -} - -static int -colorstobpp(int colors) -{ - int bpp = 0; - - if ( colors <= 2 ) - bpp = 1; - else if ( colors <= 4 ) - bpp = 2; - else if ( colors <= 8 ) - bpp = 3; - else if ( colors <= 16 ) - bpp = 4; - else if ( colors <= 32 ) - bpp = 5; - else if ( colors <= 64 ) - bpp = 6; - else if ( colors <= 128 ) - bpp = 7; - else if ( colors <= 256 ) - bpp = 8; - return bpp; - } - -/***************************************************************************** - * - * GIFENCODE.C - GIF Image compression interface - * - * GIFEncode( FName, GHeight, GWidth, GInterlace, Background, Transparent, - * BitsPerPixel, Red, Green, Blue, gdImagePtr ) - * - *****************************************************************************/ - -#define TRUE 1 -#define FALSE 0 - -static int Width, Height; -static int curx, cury; -static long CountDown; -static int Pass = 0; -static int Interlace; - -/* - * Bump the 'curx' and 'cury' to point to the next pixel - */ -static void -BumpPixel(void) -{ - /* - * Bump the current X position - */ - ++curx; - - /* - * If we are at the end of a scan line, set curx back to the beginning - * If we are interlaced, bump the cury to the appropriate spot, - * otherwise, just increment it. - */ - if( curx == Width ) { - curx = 0; - - if( !Interlace ) - ++cury; - else { - switch( Pass ) { - - case 0: - cury += 8; - if( cury >= Height ) { - ++Pass; - cury = 4; - } - break; - - case 1: - cury += 8; - if( cury >= Height ) { - ++Pass; - cury = 2; - } - break; - - case 2: - cury += 4; - if( cury >= Height ) { - ++Pass; - cury = 1; - } - break; - - case 3: - cury += 2; - break; - } - } - } -} - -/* - * Return the next pixel from the image - */ -static int -GIFNextPixel(gdImagePtr im) -{ - int r; - - if( CountDown == 0 ) - return EOF; - - --CountDown; - - r = gdImageGetPixel(im, curx, cury); - - BumpPixel(); - - return r; -} - -/* public */ - -static void -GIFEncode(gdIOCtx *fp, int GWidth, int GHeight, int GInterlace, int Background, int Transparent, int BitsPerPixel, int *Red, int *Green, int *Blue, gdImagePtr im) -{ - int B; - int RWidth, RHeight; - int LeftOfs, TopOfs; - int Resolution; - int ColorMapSize; - int InitCodeSize; - int i; - - Interlace = GInterlace; - - ColorMapSize = 1 << BitsPerPixel; - - RWidth = Width = GWidth; - RHeight = Height = GHeight; - LeftOfs = TopOfs = 0; - - Resolution = BitsPerPixel; - - /* - * Calculate number of bits we are expecting - */ - CountDown = (long)Width * (long)Height; - - /* - * Indicate which pass we are on (if interlace) - */ - Pass = 0; - - /* - * The initial code size - */ - if( BitsPerPixel <= 1 ) - InitCodeSize = 2; - else - InitCodeSize = BitsPerPixel; - - /* - * Set up the current x and y position - */ - curx = cury = 0; - - /* - * Write the Magic header - */ - gdPutBuf( Transparent < 0 ? "GIF87a" : "GIF89a", 6, fp ); - - /* - * Write out the screen width and height - */ - Putword( RWidth, fp ); - Putword( RHeight, fp ); - - /* - * Indicate that there is a global colour map - */ - B = 0x80; /* Yes, there is a color map */ - - /* - * OR in the resolution - */ - B |= (Resolution - 1) << 4; - - /* - * OR in the Bits per Pixel - */ - B |= (BitsPerPixel - 1); - - /* - * Write it out - */ - gdPutC( B, fp ); - - /* - * Write out the Background colour - */ - gdPutC( Background, fp ); - - /* - * Byte of 0's (future expansion) - */ - gdPutC( 0, fp ); - - /* - * Write out the Global Colour Map - */ - for( i=0; i<ColorMapSize; ++i ) { - gdPutC( Red[i], fp ); - gdPutC( Green[i], fp ); - gdPutC( Blue[i], fp ); - } - - /* - * Write out extension for transparent colour index, if necessary. - */ - if ( Transparent >= 0 ) { - gdPutC( '!', fp ); - gdPutC( 0xf9, fp ); - gdPutC( 4, fp ); - gdPutC( 1, fp ); - gdPutC( 0, fp ); - gdPutC( 0, fp ); - gdPutC( (unsigned char) Transparent, fp ); - gdPutC( 0, fp ); - } - - /* - * Write an Image separator - */ - gdPutC( ',', fp ); - - /* - * Write the Image header - */ - - Putword( LeftOfs, fp ); - Putword( TopOfs, fp ); - Putword( Width, fp ); - Putword( Height, fp ); - - /* - * Write out whether or not the image is interlaced - */ - if( Interlace ) - gdPutC( 0x40, fp ); - else - gdPutC( 0x00, fp ); - - /* - * Write out the initial code size - */ - gdPutC( InitCodeSize, fp ); - - /* - * Go and actually compress the data - */ - GIFcompress( InitCodeSize+1, fp, im, Background ); - - /* - * Write out a Zero-length packet (to end the series) - */ - gdPutC( 0, fp ); - - /* - * Write the GIF file terminator - */ - gdPutC( ';', fp ); -} - -/* Write out a word to the GIF file */ -/*static void */ -/*Putword(int w, gdIOCtx *fp) */ -/*{ */ -/* fputc( w & 0xff, fp ); */ -/* fputc( (w / 256) & 0xff, fp ); */ -/*} */ - -#define GIFBITS 12 - -/*----------------------------------------------------------------------- - * - * miGIF Compression - mouse and ivo's GIF-compatible compression - * - * -run length encoding compression routines- - * - * Copyright (C) 1998 Hutchison Avenue Software Corporation - * http://www.hasc.com - * info@hasc.com - * - * Permission to use, copy, modify, and distribute this software and its - * documentation for any purpose and without fee is hereby granted, provided - * that the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation. This software is provided "AS IS." The Hutchison Avenue - * Software Corporation disclaims all warranties, either express or implied, - * including but not limited to implied warranties of merchantability and - * fitness for a particular purpose, with respect to this code and accompanying - * documentation. - * - * The miGIF compression routines do not, strictly speaking, generate files - * conforming to the GIF spec, since the image data is not LZW-compressed - * (this is the point: in order to avoid transgression of the Unisys patent - * on the LZW algorithm.) However, miGIF generates data streams that any - * reasonably sane LZW decompresser will decompress to what we want. - * - * miGIF compression uses run length encoding. It compresses horizontal runs - * of pixels of the same color. This type of compression gives good results - * on images with many runs, for example images with lines, text and solid - * shapes on a solid-colored background. It gives little or no compression - * on images with few runs, for example digital or scanned photos. - * - * der Mouse - * mouse@rodents.montreal.qc.ca - * 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B - * - * ivo@hasc.com - * - * The Graphics Interchange Format(c) is the Copyright property of - * CompuServe Incorporated. GIF(sm) is a Service Mark property of - * CompuServe Incorporated. - * - */ - -static int rl_pixel; -static int rl_basecode; -static int rl_count; -static int rl_table_pixel; -static int rl_table_max; -static int just_cleared; -static int out_bits; -static int out_bits_init; -static int out_count; -static int out_bump; -static int out_bump_init; -static int out_clear; -static int out_clear_init; -static int max_ocodes; -static int code_clear; -static int code_eof; -static unsigned int obuf; -static int obits; -static gdIOCtx *ofile; -static unsigned char oblock[256]; -static int oblen; - -/* Used only when debugging GIF compression code */ -/* #define DEBUGGING_ENVARS */ - -#ifdef DEBUGGING_ENVARS - -static int verbose_set = 0; -static int verbose; -#define VERBOSE (verbose_set?verbose:set_verbose()) - -static int set_verbose(void) -{ - verbose = !!getenv("GIF_VERBOSE"); - verbose_set = 1; - return(verbose); -} - -#else - -#define VERBOSE 0 - -#endif - - -static const char *binformat(unsigned int v, int nbits) -{ - static char bufs[8][64]; - static int bhand = 0; - unsigned int bit; - int bno; - char *bp; - - bhand --; - if (bhand < 0) bhand = (sizeof(bufs)/sizeof(bufs[0]))-1; - bp = &bufs[bhand][0]; - for (bno=nbits-1,bit=1U<<bno;bno>=0;bno--,bit>>=1) - { *bp++ = (v & bit) ? '1' : '0'; - if (((bno&3) == 0) && (bno != 0)) *bp++ = '.'; - } - *bp = '\0'; - return(&bufs[bhand][0]); -} - -static void write_block(void) -{ - int i; - - if (VERBOSE) - { printf("write_block %d:",oblen); - for (i=0;i<oblen;i++) printf(" %02x",oblock[i]); - printf("\n"); - } - gdPutC(oblen,ofile); - gdPutBuf(&oblock[0],oblen,ofile); - oblen = 0; -} - -static void block_out(unsigned char c) -{ - if (VERBOSE) printf("block_out %s\n",binformat(c,8)); - oblock[oblen++] = c; - if (oblen >= 255) write_block(); -} - -static void block_flush(void) -{ - if (VERBOSE) printf("block_flush\n"); - if (oblen > 0) write_block(); -} - -static void output(int val) -{ - if (VERBOSE) printf("output %s [%s %d %d]\n",binformat(val,out_bits),binformat(obuf,obits),obits,out_bits); - obuf |= val << obits; - obits += out_bits; - while (obits >= 8) - { block_out(obuf&0xff); - obuf >>= 8; - obits -= 8; - } - if (VERBOSE) printf("output leaving [%s %d]\n",binformat(obuf,obits),obits); -} - -static void output_flush(void) -{ - if (VERBOSE) printf("output_flush\n"); - if (obits > 0) block_out(obuf); - block_flush(); -} - -static void did_clear(void) -{ - if (VERBOSE) printf("did_clear\n"); - out_bits = out_bits_init; - out_bump = out_bump_init; - out_clear = out_clear_init; - out_count = 0; - rl_table_max = 0; - just_cleared = 1; -} - -static void output_plain(int c) -{ - if (VERBOSE) printf("output_plain %s\n",binformat(c,out_bits)); - just_cleared = 0; - output(c); - out_count ++; - if (out_count >= out_bump) - { out_bits ++; - out_bump += 1 << (out_bits - 1); - } - if (out_count >= out_clear) - { output(code_clear); - did_clear(); - } -} - -static unsigned int isqrt(unsigned int x) -{ - unsigned int r; - unsigned int v; - - if (x < 2) return(x); - for (v=x,r=1;v;v>>=2,r<<=1) ; - while (1) - { v = ((x / r) + r) / 2; - if ((v == r) || (v == r+1)) return(r); - r = v; - } -} - -static unsigned int compute_triangle_count(unsigned int count, unsigned int nrepcodes) -{ - unsigned int perrep; - unsigned int cost; - - cost = 0; - perrep = (nrepcodes * (nrepcodes+1)) / 2; - while (count >= perrep) - { cost += nrepcodes; - count -= perrep; - } - if (count > 0) - { unsigned int n; - n = isqrt(count); - while ((n*(n+1)) >= 2*count) n --; - while ((n*(n+1)) < 2*count) n ++; - cost += n; - } - return(cost); -} - -static void max_out_clear(void) -{ - out_clear = max_ocodes; -} - -static void reset_out_clear(void) -{ - out_clear = out_clear_init; - if (out_count >= out_clear) - { output(code_clear); - did_clear(); - } -} - -static void rl_flush_fromclear(int count) -{ - int n; - - if (VERBOSE) printf("rl_flush_fromclear %d\n",count); - max_out_clear(); - rl_table_pixel = rl_pixel; - n = 1; - while (count > 0) - { if (n == 1) - { rl_table_max = 1; - output_plain(rl_pixel); - count --; - } - else if (count >= n) - { rl_table_max = n; - output_plain(rl_basecode+n-2); - count -= n; - } - else if (count == 1) - { rl_table_max ++; - output_plain(rl_pixel); - count = 0; - } - else - { rl_table_max ++; - output_plain(rl_basecode+count-2); - count = 0; - } - if (out_count == 0) n = 1; else n ++; - } - reset_out_clear(); - if (VERBOSE) printf("rl_flush_fromclear leaving table_max=%d\n",rl_table_max); -} - -static void rl_flush_clearorrep(int count) -{ - int withclr; - - if (VERBOSE) printf("rl_flush_clearorrep %d\n",count); - withclr = 1 + compute_triangle_count(count,max_ocodes); - if (withclr < count) - { output(code_clear); - did_clear(); - rl_flush_fromclear(count); - } - else - { for (;count>0;count--) output_plain(rl_pixel); - } -} - -static void rl_flush_withtable(int count) -{ - int repmax; - int repleft; - int leftover; - - if (VERBOSE) printf("rl_flush_withtable %d\n",count); - repmax = count / rl_table_max; - leftover = count % rl_table_max; - repleft = (leftover ? 1 : 0); - if (out_count+repmax+repleft > max_ocodes) - { repmax = max_ocodes - out_count; - leftover = count - (repmax * rl_table_max); - repleft = 1 + compute_triangle_count(leftover,max_ocodes); - } - if (VERBOSE) printf("rl_flush_withtable repmax=%d leftover=%d repleft=%d\n",repmax,leftover,repleft); - if (1+compute_triangle_count(count,max_ocodes) < repmax+repleft) - { output(code_clear); - did_clear(); - rl_flush_fromclear(count); - return; - } - max_out_clear(); - for (;repmax>0;repmax--) output_plain(rl_basecode+rl_table_max-2); - if (leftover) - { if (just_cleared) - { rl_flush_fromclear(leftover); - } - else if (leftover == 1) - { output_plain(rl_pixel); - } - else - { output_plain(rl_basecode+leftover-2); - } - } - reset_out_clear(); -} - -static void rl_flush(void) -{ - /* UNUSED int table_reps; */ - /* UNUSED int table_extra; */ - - if (VERBOSE) printf("rl_flush [ %d %d\n",rl_count,rl_pixel); - if (rl_count == 1) - { output_plain(rl_pixel); - rl_count = 0; - if (VERBOSE) printf("rl_flush ]\n"); - return; - } - if (just_cleared) - { rl_flush_fromclear(rl_count); - } - else if ((rl_table_max < 2) || (rl_table_pixel != rl_pixel)) - { rl_flush_clearorrep(rl_count); - } - else - { rl_flush_withtable(rl_count); - } - if (VERBOSE) printf("rl_flush ]\n"); - rl_count = 0; -} - -static void GIFcompress(int init_bits, gdIOCtx *outfile, gdImagePtr im, int background) -{ - int c; - - ofile = outfile; - obuf = 0; - obits = 0; - oblen = 0; - code_clear = 1 << (init_bits - 1); - code_eof = code_clear + 1; - rl_basecode = code_eof + 1; - out_bump_init = (1 << (init_bits - 1)) - 1; - /* for images with a lot of runs, making out_clear_init larger will - give better compression. */ - out_clear_init = (init_bits <= 3) ? 9 : (out_bump_init-1); -#ifdef DEBUGGING_ENVARS - { const char *ocienv; - ocienv = getenv("GIF_OUT_CLEAR_INIT"); - if (ocienv) - { out_clear_init = atoi(ocienv); - if (VERBOSE) printf("[overriding out_clear_init to %d]\n",out_clear_init); - } - } -#endif - out_bits_init = init_bits; - max_ocodes = (1 << GIFBITS) - ((1 << (out_bits_init - 1)) + 3); - did_clear(); - output(code_clear); - rl_count = 0; - while (1) - { c = GIFNextPixel(im); - if ((rl_count > 0) && (c != rl_pixel)) rl_flush(); - if (c == EOF) break; - if (rl_pixel == c) - { rl_count ++; - } - else - { rl_pixel = c; - rl_count = 1; - } - } - output(code_eof); - output_flush(); -} - -/*----------------------------------------------------------------------- - * - * End of miGIF section - See copyright notice at start of section. - * - *----------------------------------------------------------------------- -*/ - -/****************************************************************************** - * - * GIF Specific routines - * - ******************************************************************************/ - -/* - * Number of characters so far in this 'packet' - */ -static int a_count; - -/* - * Set up the 'byte output' routine - */ - -/* UNUSED -* static void -* char_init(void) -* { -* a_count = 0; -* } -*/ - -/* - * Define the storage for the packet accumulator - */ - -/* UNUSED static char accum[ 256 ]; */ - -static void init_statics(void) { - /* Some of these are properly initialized later. What I'm doing - here is making sure code that depends on C's initialization - of statics doesn't break when the code gets called more - than once. */ - Width = 0; - Height = 0; - curx = 0; - cury = 0; - CountDown = 0; - Pass = 0; - Interlace = 0; - a_count = 0; -} - - -/* +-------------------------------------------------------------------+ */ -/* | Copyright 1990, 1991, 1993, David Koblas. (koblas@netcom.com) | */ -/* | Permission to use, copy, modify, and distribute this software | */ -/* | and its documentation for any purpose and without fee is hereby | */ -/* | granted, provided that the above copyright notice appear in all | */ -/* | copies and that both that copyright notice and this permission | */ -/* | notice appear in supporting documentation. This software is | */ -/* | provided "as is" without express or implied warranty. | */ -/* +-------------------------------------------------------------------+ */ - diff --git a/graphics/gd2/files/gd_gif_in.c b/graphics/gd2/files/gd_gif_in.c deleted file mode 100644 index fc1b587cc8b4..000000000000 --- a/graphics/gd2/files/gd_gif_in.c +++ /dev/null @@ -1,573 +0,0 @@ -#include <stdio.h> -#include <math.h> -#include <string.h> -#include <stdlib.h> -#include "gd.h" - -/* Used only when debugging GIF compression code */ -/* #define DEBUGGING_ENVARS */ - -#ifdef DEBUGGING_ENVARS - -static int verbose_set = 0; -static int verbose; -#define VERBOSE (verbose_set?verbose:set_verbose()) - -static int set_verbose(void) -{ - verbose = !!getenv("GIF_VERBOSE"); - verbose_set = 1; - return(verbose); -} - -#else - -#define VERBOSE 0 - -#endif - - -#define MAXCOLORMAPSIZE 256 - -#define TRUE 1 -#define FALSE 0 - -#define CM_RED 0 -#define CM_GREEN 1 -#define CM_BLUE 2 - -#define MAX_LWZ_BITS 12 - -#define INTERLACE 0x40 -#define LOCALCOLORMAP 0x80 -#define BitSet(byte, bit) (((byte) & (bit)) == (bit)) - -#define ReadOK(file,buffer,len) (gdGetBuf(buffer, len, file) != 0) - -#define LM_to_uint(a,b) (((b)<<8)|(a)) - -/* We may eventually want to use this information, but def it out for now */ -#if 0 -static struct { - unsigned int Width; - unsigned int Height; - unsigned char ColorMap[3][MAXCOLORMAPSIZE]; - unsigned int BitPixel; - unsigned int ColorResolution; - unsigned int Background; - unsigned int AspectRatio; -} GifScreen; -#endif - -static struct { - int transparent; - int delayTime; - int inputFlag; - int disposal; -} Gif89 = { -1, -1, -1, 0 }; - -static int ReadColorMap (gdIOCtx *fd, int number, unsigned char (*buffer)[256]); -static int DoExtension (gdIOCtx *fd, int label, int *Transparent); -static int GetDataBlock (gdIOCtx *fd, unsigned char *buf); -static int GetCode (gdIOCtx *fd, int code_size, int flag); -static int LWZReadByte (gdIOCtx *fd, int flag, int input_code_size); - -static void ReadImage (gdImagePtr im, gdIOCtx *fd, int len, int height, unsigned char (*cmap)[256], int interlace); /*1.4//, int ignore); */ - -int ZeroDataBlock; - -gdImagePtr gdImageCreateFromGifSource(gdSourcePtr inSource) -{ - gdIOCtx *in = gdNewSSCtx(inSource, NULL); - gdImagePtr im; - - im = gdImageCreateFromGifCtx(in); - - in->gd_free(in); - - return im; -} - -gdImagePtr -gdImageCreateFromGif(FILE *fdFile) -{ - gdIOCtx *fd = gdNewFileCtx(fdFile); - gdImagePtr im = 0; - - im = gdImageCreateFromGifCtx(fd); - - fd->gd_free(fd); - - return im; -} - -gdImagePtr -gdImageCreateFromGifCtx(gdIOCtxPtr fd) -{ -/* 1.4 int imageNumber; */ - int BitPixel; - int ColorResolution; - int Background; - int AspectRatio; - int Transparent = (-1); - unsigned char buf[16]; - unsigned char c; - unsigned char ColorMap[3][MAXCOLORMAPSIZE]; - unsigned char localColorMap[3][MAXCOLORMAPSIZE]; - int imw, imh; - int useGlobalColormap; - int bitPixel; - int i; - /*1.4//int imageCount = 0; */ - char version[4]; - - gdImagePtr im = 0; - ZeroDataBlock = FALSE; - - /*1.4//imageNumber = 1; */ - if (! ReadOK(fd,buf,6)) { - return 0; - } - if (strncmp((char *)buf,"GIF",3) != 0) { - return 0; - } - strncpy(version, (char *)buf + 3, 3); - version[3] = '\0'; - - if ((strcmp(version, "87a") != 0) && (strcmp(version, "89a") != 0)) { - return 0; - } - if (! ReadOK(fd,buf,7)) { - return 0; - } - BitPixel = 2<<(buf[4]&0x07); - ColorResolution = (int) (((buf[4]&0x70)>>3)+1); - Background = buf[5]; - AspectRatio = buf[6]; - - if (BitSet(buf[4], LOCALCOLORMAP)) { /* Global Colormap */ - if (ReadColorMap(fd, BitPixel, ColorMap)) { - return 0; - } - } - for (;;) { - if (! ReadOK(fd,&c,1)) { - return 0; - } - if (c == ';') { /* GIF terminator */ - goto terminated; - } - - if (c == '!') { /* Extension */ - if (! ReadOK(fd,&c,1)) { - return 0; - } - DoExtension(fd, c, &Transparent); - continue; - } - - if (c != ',') { /* Not a valid start character */ - continue; - } - - /*1.4//++imageCount; */ - - if (! ReadOK(fd,buf,9)) { - return 0; - } - - useGlobalColormap = ! BitSet(buf[8], LOCALCOLORMAP); - - bitPixel = 1<<((buf[8]&0x07)+1); - - imw = LM_to_uint(buf[4],buf[5]); - imh = LM_to_uint(buf[6],buf[7]); - if (!(im = gdImageCreate(imw, imh))) { - return 0; - } - im->interlace = BitSet(buf[8], INTERLACE); - if (! useGlobalColormap) { - if (ReadColorMap(fd, bitPixel, localColorMap)) { - return 0; - } - ReadImage(im, fd, imw, imh, localColorMap, - BitSet(buf[8], INTERLACE)); - /*1.4//imageCount != imageNumber); */ - } else { - ReadImage(im, fd, imw, imh, - ColorMap, - BitSet(buf[8], INTERLACE)); - /*1.4//imageCount != imageNumber); */ - } - if (Transparent != (-1)) { - gdImageColorTransparent(im, Transparent); - } - goto terminated; - } - -terminated: - /* Terminator before any image was declared! */ - if (!im) { - return 0; - } - /* Check for open colors at the end, so - we can reduce colorsTotal and ultimately - BitsPerPixel */ - for (i=((im->colorsTotal-1)); (i>=0); i--) { - if (im->open[i]) { - im->colorsTotal--; - } else { - break; - } - } - return im; -} - -static int -ReadColorMap(gdIOCtx *fd, int number, unsigned char (*buffer)[256]) -{ - int i; - unsigned char rgb[3]; - - - for (i = 0; i < number; ++i) { - if (! ReadOK(fd, rgb, sizeof(rgb))) { - return TRUE; - } - buffer[CM_RED][i] = rgb[0] ; - buffer[CM_GREEN][i] = rgb[1] ; - buffer[CM_BLUE][i] = rgb[2] ; - } - - - return FALSE; -} - -static int -DoExtension(gdIOCtx *fd, int label, int *Transparent) -{ - static unsigned char buf[256]; - - switch (label) { - case 0xf9: /* Graphic Control Extension */ - (void) GetDataBlock(fd, (unsigned char*) buf); - Gif89.disposal = (buf[0] >> 2) & 0x7; - Gif89.inputFlag = (buf[0] >> 1) & 0x1; - Gif89.delayTime = LM_to_uint(buf[1],buf[2]); - if ((buf[0] & 0x1) != 0) - *Transparent = buf[3]; - - while (GetDataBlock(fd, (unsigned char*) buf) != 0) - ; - return FALSE; - default: - break; - } - while (GetDataBlock(fd, (unsigned char*) buf) != 0) - ; - - return FALSE; -} - -static int -GetDataBlock_(gdIOCtx *fd, unsigned char *buf) -{ - unsigned char count; - - if (! ReadOK(fd,&count,1)) { - return -1; - } - - ZeroDataBlock = count == 0; - - if ((count != 0) && (! ReadOK(fd, buf, count))) { - return -1; - } - - return count; -} - -static int -GetDataBlock(gdIOCtx *fd, unsigned char *buf) -{ - int rv; - int i; - - rv = GetDataBlock_(fd,buf); - if (VERBOSE) - { printf("[GetDataBlock returning %d",rv); - if (rv > 0) - { printf(":"); - for (i=0;i<rv;i++) printf(" %02x",buf[i]); - } - printf("]\n"); - } - return(rv); -} - -static int -GetCode_(gdIOCtx *fd, int code_size, int flag) -{ - static unsigned char buf[280]; - static int curbit, lastbit, done, last_byte; - int i, j, ret; - unsigned char count; - - if (flag) { - curbit = 0; - lastbit = 0; - done = FALSE; - return 0; - } - - if ( (curbit+code_size) >= lastbit) { - if (done) { - if (curbit >= lastbit) { - /* Oh well */ - } - return -1; - } - buf[0] = buf[last_byte-2]; - buf[1] = buf[last_byte-1]; - - if ((count = GetDataBlock(fd, &buf[2])) == 0) - done = TRUE; - - last_byte = 2 + count; - curbit = (curbit - lastbit) + 16; - lastbit = (2+count)*8 ; - } - - ret = 0; - for (i = curbit, j = 0; j < code_size; ++i, ++j) - ret |= ((buf[ i / 8 ] & (1 << (i % 8))) != 0) << j; - - curbit += code_size; - return ret; -} - -static int -GetCode(gdIOCtx *fd, int code_size, int flag) -{ - int rv; - - rv = GetCode_(fd,code_size,flag); - if (VERBOSE) printf("[GetCode(,%d,%d) returning %d]\n",code_size,flag,rv); - return(rv); -} - -#define STACK_SIZE ((1<<(MAX_LWZ_BITS))*2) -static int -LWZReadByte_(gdIOCtx *fd, int flag, int input_code_size) -{ - static int fresh = FALSE; - int code, incode; - static int code_size, set_code_size; - static int max_code, max_code_size; - static int firstcode, oldcode; - static int clear_code, end_code; - static int table[2][(1<< MAX_LWZ_BITS)]; - static int stack[STACK_SIZE], *sp; - register int i; - - if (flag) { - set_code_size = input_code_size; - code_size = set_code_size+1; - clear_code = 1 << set_code_size ; - end_code = clear_code + 1; - max_code_size = 2*clear_code; - max_code = clear_code+2; - - GetCode(fd, 0, TRUE); - - fresh = TRUE; - - for (i = 0; i < clear_code; ++i) { - table[0][i] = 0; - table[1][i] = i; - } - for (; i < (1<<MAX_LWZ_BITS); ++i) - table[0][i] = table[1][0] = 0; - - sp = stack; - - return 0; - } else if (fresh) { - fresh = FALSE; - do { - firstcode = oldcode = - GetCode(fd, code_size, FALSE); - } while (firstcode == clear_code); - return firstcode; - } - - if (sp > stack) - return *--sp; - - while ((code = GetCode(fd, code_size, FALSE)) >= 0) { - if (code == clear_code) { - for (i = 0; i < clear_code; ++i) { - table[0][i] = 0; - table[1][i] = i; - } - for (; i < (1<<MAX_LWZ_BITS); ++i) - table[0][i] = table[1][i] = 0; - code_size = set_code_size+1; - max_code_size = 2*clear_code; - max_code = clear_code+2; - sp = stack; - firstcode = oldcode = - GetCode(fd, code_size, FALSE); - return firstcode; - } else if (code == end_code) { - int count; - unsigned char buf[260]; - - if (ZeroDataBlock) - return -2; - - while ((count = GetDataBlock(fd, buf)) > 0) - ; - - if (count != 0) - return -2; - } - - incode = code; - - if (sp == (stack + STACK_SIZE)) { - /* Bad compressed data stream */ - return -1; - } - - if (code >= max_code) { - *sp++ = firstcode; - code = oldcode; - } - - while (code >= clear_code) { - if (sp == (stack + STACK_SIZE)) { - /* Bad compressed data stream */ - return -1; - } - *sp++ = table[1][code]; - if (code == table[0][code]) { - /* Oh well */ - } - code = table[0][code]; - } - - *sp++ = firstcode = table[1][code]; - - if ((code = max_code) <(1<<MAX_LWZ_BITS)) { - table[0][code] = oldcode; - table[1][code] = firstcode; - ++max_code; - if ((max_code >= max_code_size) && - (max_code_size < (1<<MAX_LWZ_BITS))) { - max_code_size *= 2; - ++code_size; - } - } - - oldcode = incode; - - if (sp > stack) - return *--sp; - } - return code; -} - -static int -LWZReadByte(gdIOCtx *fd, int flag, int input_code_size) -{ - int rv; - - rv = LWZReadByte_(fd,flag,input_code_size); - if (VERBOSE) printf("[LWZReadByte(,%d,%d) returning %d]\n",flag,input_code_size,rv); - return(rv); -} - -static void -ReadImage(gdImagePtr im, gdIOCtx *fd, int len, int height, unsigned char (*cmap)[256], int interlace) /*1.4//, int ignore) */ -{ - unsigned char c; - int v; - int xpos = 0, ypos = 0, pass = 0; - int i; - /* Stash the color map into the image */ - for (i=0; (i<gdMaxColors); i++) { - im->red[i] = cmap[CM_RED][i]; - im->green[i] = cmap[CM_GREEN][i]; - im->blue[i] = cmap[CM_BLUE][i]; - im->open[i] = 1; - } - /* Many (perhaps most) of these colors will remain marked open. */ - im->colorsTotal = gdMaxColors; - /* - ** Initialize the Compression routines - */ - if (! ReadOK(fd,&c,1)) { - return; - } - if (LWZReadByte(fd, TRUE, c) < 0) { - return; - } - - /* - ** If this is an "uninteresting picture" ignore it. - ** REMOVED For 1.4 - */ - /*if (ignore) { */ - /* while (LWZReadByte(fd, FALSE, c) >= 0) */ - /* ; */ - /* return; */ - /*} */ - - while ((v = LWZReadByte(fd,FALSE,c)) >= 0 ) { - /* This how we recognize which colors are actually used. */ - if (im->open[v]) { - im->open[v] = 0; - } - gdImageSetPixel(im, xpos, ypos, v); - ++xpos; - if (xpos == len) { - xpos = 0; - if (interlace) { - switch (pass) { - case 0: - case 1: - ypos += 8; break; - case 2: - ypos += 4; break; - case 3: - ypos += 2; break; - } - - if (ypos >= height) { - ++pass; - switch (pass) { - case 1: - ypos = 4; break; - case 2: - ypos = 2; break; - case 3: - ypos = 1; break; - default: - goto fini; - } - } - } else { - ++ypos; - } - } - if (ypos >= height) - break; - } - -fini: - if (LWZReadByte(fd,FALSE,c)>=0) { - /* Ignore extra */ - } -} - diff --git a/graphics/gd2/files/gd_gif_out.c b/graphics/gd2/files/gd_gif_out.c deleted file mode 100644 index bc8a4f06d54b..000000000000 --- a/graphics/gd2/files/gd_gif_out.c +++ /dev/null @@ -1,44 +0,0 @@ -#include <stdio.h> -#include <math.h> -#include <string.h> -#include <stdlib.h> -#include "gd.h" - -/* -** Wrapper functions for GIF output. -*/ - -void gdImageGifToSink(gdImagePtr im, gdSinkPtr outSink) -{ - gdIOCtx *out = gdNewSSCtx(NULL,outSink); - gdImageGifCtx(im, out); - out->gd_free(out); -} - -void gdImageGifCtx(gdImagePtr im, gdIOCtx *out) -{ -#ifdef LZW_LICENCED - gdImageLzwCtx(im, out); -#else - gdImageBigGifCtx(im, out); -#endif -} - -void gdImageGif(gdImagePtr im, FILE *outFile) -{ -#ifdef LZW_LICENCED - gdImageLzw(im, outFile); -#else - gdImageBigGif(im, outFile); -#endif -} - -void* gdImageGifPtr(gdImagePtr im, int *size) -{ -#ifdef LZW_LICENCED - return gdImageLzwPtr(im, size); -#else - return gdImageBigGifPtr(im, size); -#endif -} - diff --git a/graphics/gd2/files/gd_lzw_out.c b/graphics/gd2/files/gd_lzw_out.c deleted file mode 100644 index ee130c5e5a38..000000000000 --- a/graphics/gd2/files/gd_lzw_out.c +++ /dev/null @@ -1,795 +0,0 @@ -#include <stdio.h> -#include <math.h> -#include <string.h> -#include <stdlib.h> -#include "gd.h" - -/* Code drawn from ppmtogif.c, from the pbmplus package -** -** Based on GIFENCOD by David Rowley <mgardi@watdscu.waterloo.edu>. A -** Lempel-Zim compression based on "compress". -** -** Modified by Marcel Wijkstra <wijkstra@fwi.uva.nl> -** -** Copyright (C) 1989 by Jef Poskanzer. -** -** Permission to use, copy, modify, and distribute this software and its -** documentation for any purpose and without fee is hereby granted, provided -** that the above copyright notice appear in all copies and that both that -** copyright notice and this permission notice appear in supporting -** documentation. This software is provided "as is" without express or -** implied warranty. -** -** The Graphics Interchange Format(c) is the Copyright property of -** CompuServe Incorporated. GIF(sm) is a Service Mark property of -** CompuServe Incorporated. -*/ - -/* - * a code_int must be able to hold 2**GIFBITS values of type int, and also -1 - */ -typedef int code_int; - -#ifdef SIGNED_COMPARE_SLOW -typedef unsigned long int count_int; -typedef unsigned short int count_short; -#else /*SIGNED_COMPARE_SLOW*/ -typedef long int count_int; -#endif /*SIGNED_COMPARE_SLOW*/ - -static int colorstobpp(int colors); -static void BumpPixel (void); -static int GIFNextPixel (gdImagePtr im); -static void GIFEncode (gdIOCtx *fp, int GWidth, int GHeight, int GInterlace, int Background, int Transparent, int BitsPerPixel, int *Red, int *Green, int *Blue, gdImagePtr im); -/*static void Putword (int w, gdIOCtx *fp); */ -static void compress (int init_bits, gdIOCtx *outfile, gdImagePtr im); -static void output (code_int code); -static void cl_block (void); -static void cl_hash (register count_int hsize); -static void char_init (void); -static void char_out (int c); -static void flush_char (void); -/* Allows for reuse */ -static void init_statics(void); - -void gdImageLzwCtx(gdImagePtr im, gdIOCtx *out) -{ - int interlace, transparent, BitsPerPixel; - - interlace = im->interlace; - transparent = im->transparent; - - BitsPerPixel = colorstobpp(im->colorsTotal); - /* Clear any old values in statics strewn through the GIF code */ - init_statics(); - /* All set, let's do it. */ - GIFEncode( - out, im->sx, im->sy, interlace, 0, transparent, BitsPerPixel, - im->red, im->green, im->blue, im); -} - -void gdImageLzw(gdImagePtr im, FILE *outFile) -{ - gdIOCtx *out = gdNewFileCtx(outFile); - gdImageLzwCtx(im, out); - out->gd_free(out); -} - -void* gdImageLzwPtr(gdImagePtr im, int *size) -{ - void *rv; - gdIOCtx *out = gdNewDynamicCtx(2048, NULL); - gdImageLzwCtx(im, out); - rv = gdDPExtractData(out,size); - out->gd_free(out); - return rv; -} - - - -static int -colorstobpp(int colors) -{ - int bpp = 0; - - if ( colors <= 2 ) - bpp = 1; - else if ( colors <= 4 ) - bpp = 2; - else if ( colors <= 8 ) - bpp = 3; - else if ( colors <= 16 ) - bpp = 4; - else if ( colors <= 32 ) - bpp = 5; - else if ( colors <= 64 ) - bpp = 6; - else if ( colors <= 128 ) - bpp = 7; - else if ( colors <= 256 ) - bpp = 8; - return bpp; - } - -/***************************************************************************** - * - * GIFENCODE.C - GIF Image compression interface - * - * GIFEncode( FName, GHeight, GWidth, GInterlace, Background, Transparent, - * BitsPerPixel, Red, Green, Blue, gdImagePtr ) - * - *****************************************************************************/ - -#define TRUE 1 -#define FALSE 0 - -static int Width, Height; -static int curx, cury; -static long CountDown; -static int Pass = 0; -static int Interlace; - -/* - * Bump the 'curx' and 'cury' to point to the next pixel - */ -static void -BumpPixel(void) -{ - /* - * Bump the current X position - */ - ++curx; - - /* - * If we are at the end of a scan line, set curx back to the beginning - * If we are interlaced, bump the cury to the appropriate spot, - * otherwise, just increment it. - */ - if( curx == Width ) { - curx = 0; - - if( !Interlace ) - ++cury; - else { - switch( Pass ) { - - case 0: - cury += 8; - if( cury >= Height ) { - ++Pass; - cury = 4; - } - break; - - case 1: - cury += 8; - if( cury >= Height ) { - ++Pass; - cury = 2; - } - break; - - case 2: - cury += 4; - if( cury >= Height ) { - ++Pass; - cury = 1; - } - break; - - case 3: - cury += 2; - break; - } - } - } -} - -/* - * Return the next pixel from the image - */ -static int -GIFNextPixel(gdImagePtr im) -{ - int r; - - if( CountDown == 0 ) - return EOF; - - --CountDown; - - r = gdImageGetPixel(im, curx, cury); - - BumpPixel(); - - return r; -} - -/* public */ - -static void -GIFEncode(gdIOCtx *fp, int GWidth, int GHeight, int GInterlace, int Background, int Transparent, int BitsPerPixel, int *Red, int *Green, int *Blue, gdImagePtr im) -{ - int B; - int RWidth, RHeight; - int LeftOfs, TopOfs; - int Resolution; - int ColorMapSize; - int InitCodeSize; - int i; - - Interlace = GInterlace; - - ColorMapSize = 1 << BitsPerPixel; - - RWidth = Width = GWidth; - RHeight = Height = GHeight; - LeftOfs = TopOfs = 0; - - Resolution = BitsPerPixel; - - /* - * Calculate number of bits we are expecting - */ - CountDown = (long)Width * (long)Height; - - /* - * Indicate which pass we are on (if interlace) - */ - Pass = 0; - - /* - * The initial code size - */ - if( BitsPerPixel <= 1 ) - InitCodeSize = 2; - else - InitCodeSize = BitsPerPixel; - - /* - * Set up the current x and y position - */ - curx = cury = 0; - - /* - * Write the Magic header - */ - gdPutBuf( Transparent < 0 ? "GIF87a" : "GIF89a", 6, fp ); - - /* - * Write out the screen width and height - */ - Putword( RWidth, fp ); - Putword( RHeight, fp ); - - /* - * Indicate that there is a global colour map - */ - B = 0x80; /* Yes, there is a color map */ - - /* - * OR in the resolution - */ - B |= (Resolution - 1) << 5; - - /* - * OR in the Bits per Pixel - */ - B |= (BitsPerPixel - 1); - - /* - * Write it out - */ - gdPutC( B, fp ); - - /* - * Write out the Background colour - */ - gdPutC( Background, fp ); - - /* - * Byte of 0's (future expansion) - */ - gdPutC( 0, fp ); - - /* - * Write out the Global Colour Map - */ - for( i=0; i<ColorMapSize; ++i ) { - gdPutC( Red[i], fp ); - gdPutC( Green[i], fp ); - gdPutC( Blue[i], fp ); - } - - /* - * Write out extension for transparent colour index, if necessary. - */ - if ( Transparent >= 0 ) { - gdPutC( '!', fp ); - gdPutC( 0xf9, fp ); - gdPutC( 4, fp ); - gdPutC( 1, fp ); - gdPutC( 0, fp ); - gdPutC( 0, fp ); - gdPutC( (unsigned char) Transparent, fp ); - gdPutC( 0, fp ); - } - - /* - * Write an Image separator - */ - gdPutC( ',', fp ); - - /* - * Write the Image header - */ - - Putword( LeftOfs, fp ); - Putword( TopOfs, fp ); - Putword( Width, fp ); - Putword( Height, fp ); - - /* - * Write out whether or not the image is interlaced - */ - if( Interlace ) - gdPutC( 0x40, fp ); - else - gdPutC( 0x00, fp ); - - /* - * Write out the initial code size - */ - gdPutC( InitCodeSize, fp ); - - /* - * Go and actually compress the data - */ - compress( InitCodeSize+1, fp, im ); - - /* - * Write out a Zero-length packet (to end the series) - */ - gdPutC( 0, fp ); - - /* - * Write the GIF file terminator - */ - gdPutC( ';', fp ); -} - -/* */ -/* * Write out a word to the GIF file */ -/* */ -/*static void */ -/*Putword(int w, FILE *fp) */ -/*{ */ -/* fputc( w & 0xff, fp ); */ -/* fputc( (w / 256) & 0xff, fp ); */ -/*} */ - - -/*************************************************************************** - * - * GIFCOMPR.C - GIF Image compression routines - * - * Lempel-Ziv compression based on 'compress'. GIF modifications by - * David Rowley (mgardi@watdcsu.waterloo.edu) - * - ***************************************************************************/ - -/* - * General DEFINEs - */ - -#define GIFBITS 12 - -#define HSIZE 5003 /* 80% occupancy */ - -#ifdef NO_UCHAR - typedef char char_type; -#else /*NO_UCHAR*/ - typedef unsigned char char_type; -#endif /*NO_UCHAR*/ - -/* - * - * GIF Image compression - modified 'compress' - * - * Based on: compress.c - File compression ala IEEE Computer, June 1984. - * - * By Authors: Spencer W. Thomas (decvax!harpo!utah-cs!utah-gr!thomas) - * Jim McKie (decvax!mcvax!jim) - * Steve Davies (decvax!vax135!petsd!peora!srd) - * Ken Turkowski (decvax!decwrl!turtlevax!ken) - * James A. Woods (decvax!ihnp4!ames!jaw) - * Joe Orost (decvax!vax135!petsd!joe) - * - */ -#include <ctype.h> - -#define ARGVAL() (*++(*argv) || (--argc && *++argv)) - -static int n_bits; /* number of bits/code */ -static int maxbits = GIFBITS; /* user settable max # bits/code */ -static code_int maxcode; /* maximum code, given n_bits */ -static code_int maxmaxcode = (code_int)1 << GIFBITS; /* should NEVER generate this code */ -#ifdef COMPATIBLE /* But wrong! */ -# define MAXCODE(n_bits) ((code_int) 1 << (n_bits) - 1) -#else /*COMPATIBLE*/ -# define MAXCODE(n_bits) (((code_int) 1 << (n_bits)) - 1) -#endif /*COMPATIBLE*/ - -static count_int htab [HSIZE]; -static unsigned short codetab [HSIZE]; -#define HashTabOf(i) htab[i] -#define CodeTabOf(i) codetab[i] - -static code_int hsize = HSIZE; /* for dynamic table sizing */ - -/* - * To save much memory, we overlay the table used by compress() with those - * used by decompress(). The tab_prefix table is the same size and type - * as the codetab. The tab_suffix table needs 2**GIFBITS characters. We - * get this from the beginning of htab. The output stack uses the rest - * of htab, and contains characters. There is plenty of room for any - * possible stack (stack used to be 8000 characters). - */ - -#define tab_prefixof(i) CodeTabOf(i) -#define tab_suffixof(i) ((char_type*)(htab))[i] -#define de_stack ((char_type*)&tab_suffixof((code_int)1<<GIFBITS)) - -static code_int free_ent = 0; /* first unused entry */ - -/* - * block compression parameters -- after all codes are used up, - * and compression rate changes, start over. - */ -static int clear_flg = 0; - -static int offset; -static long int in_count = 1; /* length of input */ -static long int out_count = 0; /* # of codes output (for debugging) */ - -/* - * compress stdin to stdout - * - * Algorithm: use open addressing double hashing (no chaining) on the - * prefix code / next character combination. We do a variant of Knuth's - * algorithm D (vol. 3, sec. 6.4) along with G. Knott's relatively-prime - * secondary probe. Here, the modular division first probe is gives way - * to a faster exclusive-or manipulation. Also do block compression with - * an adaptive reset, whereby the code table is cleared when the compression - * ratio decreases, but after the table fills. The variable-length output - * codes are re-sized at this point, and a special CLEAR code is generated - * for the decompressor. Late addition: construct the table according to - * file size for noticeable speed improvement on small files. Please direct - * questions about this implementation to ames!jaw. - */ - -static int g_init_bits; -static gdIOCtx* g_outfile; - -static int ClearCode; -static int EOFCode; - -static void -compress(int init_bits, gdIOCtx *outfile, gdImagePtr im) -{ - register long fcode; - register code_int i /* = 0 */; - register int c; - register code_int ent; - register code_int disp; - register code_int hsize_reg; - register int hshift; - - /* - * Set up the globals: g_init_bits - initial number of bits - * g_outfile - pointer to output file - */ - g_init_bits = init_bits; - g_outfile = outfile; - - /* - * Set up the necessary values - */ - offset = 0; - out_count = 0; - clear_flg = 0; - in_count = 1; - maxcode = MAXCODE(n_bits = g_init_bits); - - ClearCode = (1 << (init_bits - 1)); - EOFCode = ClearCode + 1; - free_ent = ClearCode + 2; - - char_init(); - - ent = GIFNextPixel( im ); - - hshift = 0; - for ( fcode = (long) hsize; fcode < 65536L; fcode *= 2L ) - ++hshift; - hshift = 8 - hshift; /* set hash code range bound */ - - hsize_reg = hsize; - cl_hash( (count_int) hsize_reg); /* clear hash table */ - - output( (code_int)ClearCode ); - -#ifdef SIGNED_COMPARE_SLOW - while ( (c = GIFNextPixel( im )) != (unsigned) EOF ) { -#else /*SIGNED_COMPARE_SLOW*/ - while ( (c = GIFNextPixel( im )) != EOF ) { /* } */ -#endif /*SIGNED_COMPARE_SLOW*/ - - ++in_count; - - fcode = (long) (((long) c << maxbits) + ent); - i = (((code_int)c << hshift) ^ ent); /* xor hashing */ - - if ( HashTabOf (i) == fcode ) { - ent = CodeTabOf (i); - continue; - } else if ( (long)HashTabOf (i) < 0 ) /* empty slot */ - goto nomatch; - disp = hsize_reg - i; /* secondary hash (after G. Knott) */ - if ( i == 0 ) - disp = 1; -probe: - if ( (i -= disp) < 0 ) - i += hsize_reg; - - if ( HashTabOf (i) == fcode ) { - ent = CodeTabOf (i); - continue; - } - if ( (long)HashTabOf (i) > 0 ) - goto probe; -nomatch: - output ( (code_int) ent ); - ++out_count; - ent = c; -#ifdef SIGNED_COMPARE_SLOW - if ( (unsigned) free_ent < (unsigned) maxmaxcode) { -#else /*SIGNED_COMPARE_SLOW*/ - if ( free_ent < maxmaxcode ) { /* } */ -#endif /*SIGNED_COMPARE_SLOW*/ - CodeTabOf (i) = free_ent++; /* code -> hashtable */ - HashTabOf (i) = fcode; - } else - cl_block(); - } - /* - * Put out the final code. - */ - output( (code_int)ent ); - ++out_count; - output( (code_int) EOFCode ); -} - -/***************************************************************** - * TAG( output ) - * - * Output the given code. - * Inputs: - * code: A n_bits-bit integer. If == -1, then EOF. This assumes - * that n_bits =< (long)wordsize - 1. - * Outputs: - * Outputs code to the file. - * Assumptions: - * Chars are 8 bits long. - * Algorithm: - * Maintain a GIFBITS character long buffer (so that 8 codes will - * fit in it exactly). Use the VAX insv instruction to insert each - * code in turn. When the buffer fills up empty it and start over. - */ - -static unsigned long cur_accum = 0; -static int cur_bits = 0; - -static unsigned long masks[] = { 0x0000, 0x0001, 0x0003, 0x0007, 0x000F, - 0x001F, 0x003F, 0x007F, 0x00FF, - 0x01FF, 0x03FF, 0x07FF, 0x0FFF, - 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF }; - -static void -output(code_int code) -{ - cur_accum &= masks[ cur_bits ]; - - if( cur_bits > 0 ) - cur_accum |= ((long)code << cur_bits); - else - cur_accum = code; - - cur_bits += n_bits; - - while( cur_bits >= 8 ) { - char_out( (unsigned int)(cur_accum & 0xff) ); - cur_accum >>= 8; - cur_bits -= 8; - } - - /* - * If the next entry is going to be too big for the code size, - * then increase it, if possible. - */ - if ( free_ent > maxcode || clear_flg ) { - - if( clear_flg ) { - - maxcode = MAXCODE (n_bits = g_init_bits); - clear_flg = 0; - - } else { - - ++n_bits; - if ( n_bits == maxbits ) - maxcode = maxmaxcode; - else - maxcode = MAXCODE(n_bits); - } - } - - if( code == EOFCode ) { - /* - * At EOF, write the rest of the buffer. - */ - while( cur_bits > 0 ) { - char_out( (unsigned int)(cur_accum & 0xff) ); - cur_accum >>= 8; - cur_bits -= 8; - } - - flush_char(); - -/* fflush( g_outfile ); */ -/* */ -/* if( ferror( g_outfile ) ) */ -/* return; */ - } -} - -/* - * Clear out the hash table - */ -static void -cl_block (void) /* table clear for block compress */ -{ - - cl_hash ( (count_int) hsize ); - free_ent = ClearCode + 2; - clear_flg = 1; - - output( (code_int)ClearCode ); -} - -static void -cl_hash(register count_int hsize) /* reset code table */ - -{ - - register count_int *htab_p = htab+hsize; - - register long i; - register long m1 = -1; - - i = hsize - 16; - do { /* might use Sys V memset(3) here */ - *(htab_p-16) = m1; - *(htab_p-15) = m1; - *(htab_p-14) = m1; - *(htab_p-13) = m1; - *(htab_p-12) = m1; - *(htab_p-11) = m1; - *(htab_p-10) = m1; - *(htab_p-9) = m1; - *(htab_p-8) = m1; - *(htab_p-7) = m1; - *(htab_p-6) = m1; - *(htab_p-5) = m1; - *(htab_p-4) = m1; - *(htab_p-3) = m1; - *(htab_p-2) = m1; - *(htab_p-1) = m1; - htab_p -= 16; - } while ((i -= 16) >= 0); - - for ( i += 16; i > 0; --i ) - *--htab_p = m1; -} - -/****************************************************************************** - * - * GIF Specific routines - * - ******************************************************************************/ - -/* - * Number of characters so far in this 'packet' - */ -static int a_count; - -/* - * Set up the 'byte output' routine - */ -static void -char_init(void) -{ - a_count = 0; -} - -/* - * Define the storage for the packet accumulator - */ -static char accum[ 256 ]; - -/* - * Add a character to the end of the current packet, and if it is 254 - * characters, flush the packet to disk. - */ -static void -char_out(int c) -{ - accum[ a_count++ ] = c; - if( a_count >= 254 ) - flush_char(); -} - -/* - * Flush the packet to disk, and reset the accumulator - */ -static void -flush_char(void) -{ - if( a_count > 0 ) { - gdPutC( a_count, g_outfile ); - gdPutBuf( accum, a_count, g_outfile ); - a_count = 0; - } -} - -static void init_statics(void) { - /* Some of these are properly initialized later. What I'm doing - here is making sure code that depends on C's initialization - of statics doesn't break when the code gets called more - than once. */ - Width = 0; - Height = 0; - curx = 0; - cury = 0; - CountDown = 0; - Pass = 0; - Interlace = 0; - a_count = 0; - cur_accum = 0; - cur_bits = 0; - g_init_bits = 0; - g_outfile = 0; - ClearCode = 0; - EOFCode = 0; - free_ent = 0; - clear_flg = 0; - offset = 0; - in_count = 1; - out_count = 0; - hsize = HSIZE; - n_bits = 0; - maxbits = GIFBITS; - maxcode = 0; - maxmaxcode = (code_int)1 << GIFBITS; -} - - -/* +-------------------------------------------------------------------+ */ -/* | Copyright 1990, 1991, 1993, David Koblas. (koblas@netcom.com) | */ -/* | Permission to use, copy, modify, and distribute this software | */ -/* | and its documentation for any purpose and without fee is hereby | */ -/* | granted, provided that the above copyright notice appear in all | */ -/* | copies and that both that copyright notice and this permission | */ -/* | notice appear in supporting documentation. This software is | */ -/* | provided "as is" without express or implied warranty. | */ -/* +-------------------------------------------------------------------+ */ diff --git a/graphics/gd2/files/gdcmpgif.c b/graphics/gd2/files/gdcmpgif.c deleted file mode 100644 index 13c243014d2b..000000000000 --- a/graphics/gd2/files/gdcmpgif.c +++ /dev/null @@ -1,85 +0,0 @@ -#include <stdio.h> -#include <unistd.h> /* For unlink function */ -#include "gd.h" - -/* A short program which converts a .png file into a .gd file, for - your convenience in creating images on the fly from a - basis image that must be loaded quickly. The .gd format - is not intended to be a general-purpose format. */ - -void CompareImages(char *msg, gdImagePtr im1, gdImagePtr im2); - - -int main(int argc, char **argv) -{ - gdImagePtr im1, im2; - FILE *in; - - if (argc != 3) { - fprintf(stderr, "Usage: gdcmpgif filename.gif filename.gif\n"); - exit(1); - } - in = fopen(argv[1], "rb"); - if (!in) { - fprintf(stderr, "Input file does not exist!\n"); - exit(1); - } - im1 = gdImageCreateFromGif(in); - fclose(in); - - if (!im1) { - fprintf(stderr, "Input is not in GIF format!\n"); - exit(1); - } - - in = fopen(argv[2], "rb"); - if (!in) { - fprintf(stderr, "Input file 2 does not exist!\n"); - exit(1); - } - im2 = gdImageCreateFromGif(in); - fclose(in); - - if (!im2) { - fprintf(stderr, "Input 2 is not in GIF format!\n"); - exit(1); - } - - CompareImages("gdcmpgif", im1, im2); - - gdImageDestroy(im1); - gdImageDestroy(im2); - - return 0; -} - -void CompareImages(char *msg, gdImagePtr im1, gdImagePtr im2) -{ - int cmpRes; - - cmpRes = gdImageCompare(im1, im2); - - if (cmpRes & GD_CMP_IMAGE) { - printf("%%%s: ERROR images differ: BAD\n",msg); - } else if (cmpRes != 0) { - printf("%%%s: WARNING images differ: WARNING - Probably OK\n",msg); - } else { - printf("%%%s: OK\n",msg); - return; - } - - if (cmpRes & (GD_CMP_SIZE_X + GD_CMP_SIZE_Y)) { - printf("-%s: INFO image sizes differ\n",msg); - } - - if (cmpRes & GD_CMP_NUM_COLORS) { - printf("-%s: INFO number of pallette entries differ %d Vs. %d\n",msg, - im1->colorsTotal, im2->colorsTotal); - } - - if (cmpRes & GD_CMP_COLOR) { - printf("-%s: INFO actual colours of pixels differ\n",msg); - } -} - - diff --git a/graphics/gd2/files/giftogd2.c b/graphics/gd2/files/giftogd2.c deleted file mode 100644 index 3753b56ac4c6..000000000000 --- a/graphics/gd2/files/giftogd2.c +++ /dev/null @@ -1,48 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> - -#include "gd.h" - -/* A short program which converts a .gif file into a .gd file, for - your convenience in creating images on the fly from a - basis image that must be loaded quickly. The .gd format - is not intended to be a general-purpose format. */ - -int main(int argc, char **argv) -{ - gdImagePtr im; - FILE *in, *out; - int cs, fmt; - - if (argc != 5) { - fprintf(stderr, "Usage: giftogd2 filename.gif filename.gd2 cs fmt\n"); - fprintf(stderr, " where cs is the chunk size\n"); - fprintf(stderr, " fmt is 1 for raw, 2 for compressed\n"); - exit(1); - } - in = fopen(argv[1], "rb"); - if (!in) { - fprintf(stderr, "Input file does not exist!\n"); - exit(1); - } - im = gdImageCreateFromGif(in); - fclose(in); - if (!im) { - fprintf(stderr, "Input is not in GIF format!\n"); - exit(1); - } - out = fopen(argv[2], "wb"); - if (!out) { - fprintf(stderr, "Output file cannot be written to!\n"); - gdImageDestroy(im); - exit(1); - } - cs = atoi(argv[3]); - fmt = atoi(argv[4]); - gdImageGd2(im, out, cs, fmt); - fclose(out); - gdImageDestroy(im); - - return 0; -} - diff --git a/graphics/gd2/files/patch-gd.h b/graphics/gd2/files/patch-gd.h deleted file mode 100644 index 026f87b14b30..000000000000 --- a/graphics/gd2/files/patch-gd.h +++ /dev/null @@ -1,41 +0,0 @@ ---- gd.h Thu Jan 16 11:28:09 2003 -+++ gd.h Mon Mar 24 16:26:14 2003 -@@ -209,4 +209,8 @@ - gdImagePtr gdImageCreateFromPngSource (gdSourcePtr in); - -+ gdImagePtr gdImageCreateFromGif(FILE *fd); -+ gdImagePtr gdImageCreateFromGifCtx(gdIOCtxPtr in); -+ gdImagePtr gdImageCreateFromGifSource(gdSourcePtr in); -+ - gdImagePtr gdImageCreateFromGd (FILE * in); - gdImagePtr gdImageCreateFromGdCtx (gdIOCtxPtr in); -@@ -300,4 +304,5 @@ - - void gdImagePolygon (gdImagePtr im, gdPointPtr p, int n, int c); -+ void gdImageOpenPolygon(gdImagePtr im, gdPointPtr p, int n, int c); - void gdImageFilledPolygon (gdImagePtr im, gdPointPtr p, int n, int c); - -@@ -395,4 +400,13 @@ - void *gdImageJpegPtr (gdImagePtr im, int *size, int quality); - -+ void gdImageLzw(gdImagePtr im, FILE *out); -+ void* gdImageLzwPtr(gdImagePtr im, int *size); -+ void gdImageLzwCtx(gdImagePtr im, gdIOCtxPtr out); -+ -+ void gdImageBigGif(gdImagePtr im, FILE *out); -+ void* gdImageBigGifPtr(gdImagePtr im, int *size); -+ void gdImageBigGifCtx(gdImagePtr im, gdIOCtxPtr out); -+ -+ - /* A custom data sink. For backwards compatibility. Use - gdIOCtx instead. */ -@@ -408,4 +422,9 @@ - - void gdImagePngToSink (gdImagePtr im, gdSinkPtr out); -+ -+ void gdImageGif(gdImagePtr im, FILE *out); -+ void* gdImageGifPtr(gdImagePtr im, int *size); -+ void gdImageGifCtx(gdImagePtr im, gdIOCtxPtr out); -+ void gdImageGifToSink(gdImagePtr im, gdSinkPtr out); - - void gdImageGd (gdImagePtr im, FILE * out); diff --git a/graphics/gd2/files/patch-gdft.c b/graphics/gd2/files/patch-gdft.c deleted file mode 100644 index cdee3d88935b..000000000000 --- a/graphics/gd2/files/patch-gdft.c +++ /dev/null @@ -1,92 +0,0 @@ ---- gdft.c Thu Jan 16 13:29:32 2003 -+++ gdft.c Mon Mar 24 17:09:54 2003 -@@ -546,8 +546,8 @@ - a->tweencolor = gdTrueColorAlpha (gdTrueColorGetRed (fg), - gdTrueColorGetGreen (fg), - gdTrueColorGetBlue (fg), -- gdAlphaMax - -- (gdTrueColorGetAlpha (fg) * -+ gdAlphaMax - ((gdAlphaMax - -+ gdTrueColorGetAlpha (fg)) * - pixel / NUMCOLORS)); - } - else -@@ -680,10 +680,14 @@ - if (y >= im->sy || y < 0) - continue; - -- for (col = 0; col < bitmap.width; col++, pc++) -- { -- if (bitmap.pixel_mode == ft_pixel_mode_grays) -- { -+ for (col = 0; col < bitmap.width; col++, pc++) { -+ x = pen_x + col; -+ /* clip if out of bounds */ -+ if (x >= im->sx || x < 0) -+ continue; -+ -+ switch(bitmap.pixel_mode) { -+ case ft_pixel_mode_grays: - /* - * Round to NUMCOLORS levels of antialiasing for - * index color images since only 256 colors are -@@ -692,44 +696,38 @@ - tc_key.pixel = ((bitmap.buffer[pc] * NUMCOLORS) - + bitmap.num_grays / 2) - / (bitmap.num_grays - 1); -- } -- else if (bitmap.pixel_mode == ft_pixel_mode_mono) -- { -- tc_key.pixel = ((bitmap.buffer[pc / 8] -- << (pc % 8)) & 128) ? NUMCOLORS : 0; -+ break; -+ case ft_pixel_mode_mono: - /* 2.0.5: mode_mono fix from Giuliano Pochini */ - tc_key.pixel = - ((bitmap. - buffer[(col >> 3) + - pcr]) & (1 << (~col & 0x07))) ? NUMCOLORS : 0; -- } -- else -- { -+ break; -+ default: - return "Unsupported ft_pixel_mode"; -- } -+ } -+ - if (tc_key.pixel > 0) /* if not background */ - { -- x = pen_x + col; -- -- /* clip if out of bounds */ -- if (x >= im->sx || x < 0) -- continue; -- /* get pixel location in gd buffer */ -- pixel = &im->pixels[y][x]; -- if (tc_key.pixel == NUMCOLORS) -- { -+ if (im->trueColor) { -+ tc_elem = (tweencolor_t *)gdCacheGet(tc_cache, &tc_key); -+ gdImageSetPixel(im, x, y, tc_elem->tweencolor); -+ } else { -+ /* get pixel location in gd buffer */ -+ pixel = &im->pixels[y][x]; -+ if (tc_key.pixel == NUMCOLORS) - /* use fg color directly. gd 2.0.2: watch out for - negative indexes (thanks to David Marwood). */ - *pixel = (fg < 0) ? -fg : fg; -- } -- else -- { -+ else { - /* find antialised color */ - - tc_key.bgcolor = *pixel; - tc_elem = (tweencolor_t *) gdCacheGet (tc_cache, &tc_key); - *pixel = tc_elem->tweencolor; - } -+ } - } - } - } diff --git a/graphics/gd2/files/patch-gdtest.c b/graphics/gd2/files/patch-gdtest.c deleted file mode 100644 index 85c855d4db02..000000000000 --- a/graphics/gd2/files/patch-gdtest.c +++ /dev/null @@ -1,81 +0,0 @@ ---- gdtest.c.orig Thu Apr 25 14:16:47 2002 -+++ gdtest.c Tue Nov 6 15:53:38 2001 -@@ -84,6 +84,35 @@ - gdImageDestroy (im2); - ctx->gd_free (ctx); - -+ /* */ -+ /* Send to GIF File then Ptr */ -+ /* */ -+ sprintf(of, "%s.gif", argv[1]); -+ out = fopen(of, "wb"); -+ gdImageGif(im, out); -+ fclose(out); -+ -+ in = fopen(of, "rb"); -+ if (!in) { -+ fprintf(stderr, "GIF Output file does not exist!\n"); -+ exit(1); -+ } -+ im2 = gdImageCreateFromGif(in); -+ fclose(in); -+ -+ CompareImages("GD->GIF File->GD", ref, im2); -+ -+ unlink(of); -+ gdImageDestroy(im2); -+ -+ iptr = gdImageGifPtr(im,&sz); -+ ctx = gdNewDynamicCtx(sz,iptr); -+ im2 = gdImageCreateFromGifCtx(ctx); -+ -+ CompareImages("GD->GIF ptr->GD", ref, im2); -+ -+ gdImageDestroy(im2); -+ ctx->gd_free(ctx); - - /* */ - /* Send to GD2 File then Ptr */ -@@ -200,7 +229,30 @@ - gdImageDestroy (im2); - }; - -- unlink (of); -+ /* -+ ** Test gdImageCreateFromGifSource -+ **/ -+ -+ in = fopen(of, "rb"); -+ -+ if (!in) -+ { -+ fprintf (stderr, "GD Source: ERROR - GD Source input file does not exist - Sink may have failed!\n"); -+ }; -+ -+ imgsrc.source = freadWrapper; -+ imgsrc.context = in; -+ im2 = gdImageCreateFromGifSource(&imgsrc); -+ fclose(in); -+ -+ if (im2 == NULL) { -+ printf("GD Source (GIF): ERROR Null returned by gdImageCreateFromGifSource\n"); -+ } else { -+ CompareImages("GD Source (GIF)", ref, im2); -+ gdImageDestroy(im2); -+ }; -+ -+ unlink(of); - - /* */ - /* Test Extraction */ -@@ -266,6 +318,10 @@ - - printf ("[Merged Image has %d colours]\n", im2->colorsTotal); - CompareImages ("Merged (gdtest.png, gdtest_merge.png)", im2, im3); -+ -+ out = fopen ("test/gdtest_merge_out.png", "wb"); -+ gdImagePng(im2, out); -+ close(out); - - gdImageDestroy (im2); - gdImageDestroy (im3); diff --git a/graphics/gd2/files/patch-index.html b/graphics/gd2/files/patch-index.html deleted file mode 100644 index da061462fe6c..000000000000 --- a/graphics/gd2/files/patch-index.html +++ /dev/null @@ -1,71 +0,0 @@ ---- index.html Mon Nov 25 11:39:31 2002 -+++ index.html Wed Nov 27 12:47:38 2002 -@@ -35,4 +35,9 @@ - modern image formats such as PNG and JPEG as soon as possible. - -+<p>Note, that the FreeBSD port of gd2 includes support for GIF files -+ported from the earlier releases of gd. If the WITH_LZW was defined at -+build time, the software will also use LZW-compression when creating -+GIF files. -+ - <p> - gd 2.0.8 <strong>requires</strong> that the following libraries -@@ -116,4 +121,18 @@ - Portions relating to WBMP copyright 2000, 2001, 2002 Maurice Szmurlo and Johan Van - den Brande. -+ -+<p> -+GIF decompression code copyright 1990, 1991, 1993, by David Koblas -+(koblas@netcom.com). -+<p> -+Non-LZW-based GIF compression code copyright 1998, by Hutchison Avenue -+Software Corporation (<a href="http://www.hasc.com">http://www.hasc.com/</a>, -+info@hasc.com). -+<p> -+LZW-based GIF compression code David Rowley. -+Obtaining a license for the Unisys LZW compression patent is -+entirely between the user and Unisys. The authors of gd can provide -+NO assistance in this matter. -+ - <p> - <strong>Permission has been granted to copy, distribute and modify gd in any -@@ -192,5 +211,22 @@ - <li><a href="http://martin.gleeson.com/fly/">fly</a>, by Martin Gleeson - </ul> --<P> -+ -+<P><A NAME="gifpatch"><H3>What does the FreeBSD port add?</H3></A> -+ -+<p>This version reinstates GIF support. Specifically, the following -+functions are added: gdImageGif, gdImageGifPtr, gdImageGifCtx, -+gdImageGifToSink, gdImageCreateFromGif, gdImageCreateFromGifCtx, -+gdImageCreateFromGifSource. -+The can be used just like the corresponding functions for the other -+image formats. -+ -+<p>Other functions added, but not documented, are: gdImageLzw, -+gdImageLzwPtr, gdImageLzwCtx, gdImageBigGif, gdImageBigGifPtr, -+gdImageBigGifCtx. -+ -+<p>The <a href=#gdImageOpenPolygon>gdImageOpenPolygon</a> is added. -+This is basically the same as <a href=#gdImagePolygon>gdImagePolygon</A>, -+but it does not join the start and end points. It is required by GD.pm. -+ - <A NAME="whatsnew2.0.8"><H3>What's new in version 2.0.8?</H3></A> - <P> -@@ -1058,5 +1094,6 @@ - <DD> - Represents a point in the coordinate space of the image; used --by <A HREF="#gdImagePolygon">gdImagePolygon</A> and -+by <A HREF="#gdImagePolygon">gdImagePolygon</A>, -+<A HREF="#gdImageOpenPolygon">gdImageOpenPolygon</A>, and - <A HREF="#gdImageFilledPolygon">gdImageFilledPolygon</A>. - <PRE> -@@ -1068,5 +1105,6 @@ - <DD> - A pointer to a <A HREF="#gdPoint">gdPoint</A> structure; passed --as an argument to <A HREF="#gdImagePolygon">gdImagePolygon</A> -+as an argument to <A HREF="#gdImagePolygon">gdImagePolygon</A>, -+<A HREF="#gdImageOpenPolygon">gdImageOpenPolygon</A>, - and <A HREF="#gdImageFilledPolygon">gdImageFilledPolygon</A>. - </DL> diff --git a/graphics/gd2/pkg-descr b/graphics/gd2/pkg-descr deleted file mode 100644 index f7507cc8d13f..000000000000 --- a/graphics/gd2/pkg-descr +++ /dev/null @@ -1,16 +0,0 @@ -gd is a graphics library. It allows your code to quickly draw images -complete with lines, arcs, text, multiple colors, cut and paste from -other images, and flood fills, and write out the result as a PNG, GIF -or JPEG file. This is particularly useful in World Wide Web applications, -where PNG, GIF and JPEG are three of the formats accepted for inline -images by most browsers. - -gd does not provide for every possible desirable graphics operation, -but version 2.0 does include most frequently requested features, -including both truecolor and palette images, resampling (smooth -resizing of truecolor images) and so forth. - -WWW: http://www.boutell.com/gd/ - -- Alex Dupre -sysadmin@alexdupre.com diff --git a/graphics/gd2/pkg-plist b/graphics/gd2/pkg-plist deleted file mode 100644 index a8b71306fc99..000000000000 --- a/graphics/gd2/pkg-plist +++ /dev/null @@ -1,25 +0,0 @@ -bin/annotate -bin/bdftogd -bin/gd2copypal -bin/gd2togif -bin/gd2topng -bin/gdcmpgif -bin/gdparttopng -bin/gdtopng -bin/giftogd2 -bin/pngtogd -bin/pngtogd2 -bin/webpng -include/gd.h -include/gd_io.h -include/gdcache.h -include/gdfontg.h -include/gdfontl.h -include/gdfontmb.h -include/gdfonts.h -include/gdfontt.h -lib/libgd.a -lib/libgd.so -lib/libgd.so.4 -%%PORTDOCS%%%%DOCSDIR%%/index.html -%%PORTDOCS%%@dirrm %%DOCSDIR%% diff --git a/graphics/gd2/scripts/configure b/graphics/gd2/scripts/configure deleted file mode 100644 index 299f3877aaf8..000000000000 --- a/graphics/gd2/scripts/configure +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/sh -# $FreeBSD$ - -# The GD_FONTS environment variable can be set to specify the gzipped -# tar-ball containing the fonts in bdf format and the bdf file names. -# -# For example: -# GD_FONTS="/usr/ports/distfiles/x-koi8u.tgz koi6x10.bdf koi8x13.bdf \ -# koi9x15.bdf koi12x24.bdf koi10x20.bdf" -# -# This can be usefull for slave ports, like ukrainian/gd, which may -# now provide alternative fonts easily. - -# TODO: . handle multiple archiving formats: tgz, tar.bz2, zip -# . allow for passing already extracted font-files - -if [ -z "$GD_FONTS" ] -then - echo "GD_FONTS can be set to specify an alternative list of .bdf files" - echo "See $0 for details..." - exit 0 -fi - -set $GD_FONTS -# -# The tarball is the first argument, the tiny, small, medium-bold, -# large, and giant fonts follow. -# - -tarball=$1 -shift -tar -xvzpf $tarball -C $WRKSRC $@ - -rm -f $WRKSRC/Makefile.fonts - -for font in Tiny Small MediumBold Large Giant -do - f=`echo $font | tr -d [[:lower:]] | tr [[:upper:]] [[:lower:]]` - rm -f $WRKSRC/gdfont$f.[ch] - printf 'gdfont%s.c gdfont%s.h: %s\ - perl ${.CURDIR}/bdftogd gdFont%s font%s < %s\n' \ - $f $f $1 $font $f $1 >> $WRKSRC/Makefile.fonts - shift -done |