From: oetiker Date: Tue, 5 Sep 2006 18:19:02 +0000 (+0000) Subject: noone needs this anymore X-Git-Url: https://git.octo.it/?p=rrdtool.git;a=commitdiff_plain;h=cf15c778b8a367d030921572af7f7bcb3d25d686 noone needs this anymore git-svn-id: svn://svn.oetiker.ch/rrdtool/branches/1.2/program@888 a5681a0c-68f1-0310-ab6d-d61299d08faa --- diff --git a/src/gifsize.c b/src/gifsize.c deleted file mode 100644 index 76c0c82..0000000 --- a/src/gifsize.c +++ /dev/null @@ -1,196 +0,0 @@ -/**************************************************************************** - * RRDtool 1.2.15 Copyright by Tobi Oetiker, 1997-2006 - **************************************************************************** - * gifsize.c provides the function gifsize which determines the size of a gif - ****************************************************************************/ - -/* This is built from code originally created by: */ - -/* +-------------------------------------------------------------------+ */ -/* | 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. | */ -/* +-------------------------------------------------------------------+ */ - - -#include -#include -#include -#include - - -#define MAXCOLORMAPSIZE 256 - -#define TRUE 1 -#define FALSE 0 - -#define CM_RED 0 -#define CM_GREEN 1 -#define CM_BLUE 2 - - -#define LOCALCOLORMAP 0x80 -#define BitSet(byte, bit) (((byte) & (bit)) == (bit)) - -#define ReadOK(file,buffer,len) (fread(buffer, len, 1, file) != 0) - -#define LM_to_uint(a,b) (((b)<<8)|(a)) - - -static struct { - int transparent; - int delayTime; - int inputFlag; - int disposal; -} Gif89 = { -1, -1, -1, 0 }; - -static int ReadColorMap (FILE *fd, int number, unsigned char (*buffer)[256]); -static int DoExtension (FILE *fd, int label, int *Transparent); -static int GetDataBlock (FILE *fd, unsigned char *buf); - -int ZeroDataBlock; - -int -GifSize(FILE *fd, long *width, long *height) -{ - 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]; - int imageCount = 0; - char version[4]; - ZeroDataBlock = FALSE; - - 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 */ - if (imageCount < imageNumber) { - return 0; - } - } - - if (c == '!') { /* Extension */ - if (! ReadOK(fd,&c,1)) { - return 0; - } - DoExtension(fd, c, &Transparent); - continue; - } - - if (c != ',') { /* Not a valid start character */ - continue; - } - - ++imageCount; - - if (! ReadOK(fd,buf,9)) { - return 0; - } - - (*width) = LM_to_uint(buf[4],buf[5]); - (*height) = LM_to_uint(buf[6],buf[7]); - return 1; - } -} - -static int -ReadColorMap(FILE *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(FILE *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(FILE *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; -} -