summaryrefslogtreecommitdiff
path: root/fluid
diff options
context:
space:
mode:
authorMichael R Sweet <michael.r.sweet@gmail.com>2002-03-25 20:09:12 +0000
committerMichael R Sweet <michael.r.sweet@gmail.com>2002-03-25 20:09:12 +0000
commit158ca81620219e8b2ba1b269747ecb7e7b0863ec (patch)
tree3fe98a49603fff7aaffa2cddac5a523d7a949f65 /fluid
parentda22e563d034f74de0a2256f6ce85c0dda1e99fe (diff)
Remove old GIF reading code that isn't used anymore...
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@2021 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'fluid')
-rw-r--r--fluid/Makefile7
-rw-r--r--fluid/gif.cxx363
2 files changed, 3 insertions, 367 deletions
diff --git a/fluid/Makefile b/fluid/Makefile
index 4d45498fe..aa41c3bd0 100644
--- a/fluid/Makefile
+++ b/fluid/Makefile
@@ -1,5 +1,5 @@
#
-# "$Id: Makefile,v 1.10.2.6.2.14 2002/02/15 18:15:46 easysw Exp $"
+# "$Id: Makefile,v 1.10.2.6.2.15 2002/03/25 20:09:12 easysw Exp $"
#
# FLUID makefile for the Fast Light Tool Kit (FLTK).
#
@@ -40,8 +40,7 @@ CPPFILES = \
about_panel.cxx \
widget_panel.cxx \
alignment_panel.cxx \
- function_panel.cxx \
- gif.cxx
+ function_panel.cxx
################################################################
@@ -87,5 +86,5 @@ rebuild:
./fluid -c widget_panel.fl
#
-# End of "$Id: Makefile,v 1.10.2.6.2.14 2002/02/15 18:15:46 easysw Exp $".
+# End of "$Id: Makefile,v 1.10.2.6.2.15 2002/03/25 20:09:12 easysw Exp $".
#
diff --git a/fluid/gif.cxx b/fluid/gif.cxx
deleted file mode 100644
index 9079a647f..000000000
--- a/fluid/gif.cxx
+++ /dev/null
@@ -1,363 +0,0 @@
-//
-// "$Id: gif.cxx,v 1.3.2.5.2.1 2002/01/01 15:11:29 easysw Exp $"
-//
-// GIF support for the Fast Light Tool Kit (FLTK).
-//
-// Copyright 1998-2002 by Bill Spitzak and others.
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Library General Public
-// License as published by the Free Software Foundation; either
-// version 2 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Library General Public License for more details.
-//
-// You should have received a copy of the GNU Library General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
-// USA.
-//
-// Please report all bugs and problems to "fltk-bugs@fltk.org".
-//
-
-// Read a .gif file and convert it to a "xpm" format (actually my
-// modified one with compressed colormaps).
-
-// Extensively modified from original code for gif2ras by
-// Patrick J. Naughton of Sun Microsystems. The original
-// copyright notice follows:
-
-/* gif2ras.c - Converts from a Compuserve GIF (tm) image to a Sun Raster image.
- *
- * Copyright (c) 1988 by Patrick J. Naughton
- *
- * Author: Patrick J. Naughton
- * naughton@wind.sun.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 file is provided AS IS with no warranties of any kind. The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof. In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * Comments and additions should be sent to the author:
- *
- * Patrick J. Naughton
- * Sun Microsystems, Inc.
- * 2550 Garcia Ave, MS 14-40
- * Mountain View, CA 94043
- * (415) 336-1080
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-typedef unsigned char uchar;
-
-#define NEXTBYTE getc(GifFile)
-#define GETSHORT(var) var = NEXTBYTE; var += NEXTBYTE << 8
-
-int gif2xpm(
- const char *infname,// filename for error messages
- FILE *GifFile, // file to read
- char*** datap, // return xpm data here
- int** lengthp, // return line lengths here
- int inumber // which image in movie (0 = first)
-) {
-
- {char b[6];
- if (fread(b,1,6,GifFile)<6) return 0; /* quit on eof */
- if (b[0]!='G' || b[1]!='I' || b[2] != 'F') {
- fprintf(stderr,"%s is not a GIF file.\n", infname); return 0;}
- if (b[3]!='8' || b[4]>'9' || b[5]!= 'a')
- fprintf(stderr,"%s is version %c%c%c.\n",infname,b[3],b[4],b[5]);
- }
-
- int Width; GETSHORT(Width);
- int Height; GETSHORT(Height);
-
- uchar ch = NEXTBYTE;
- char HasColormap = ((ch & 0x80) != 0);
- int BitsPerPixel = (ch & 7) + 1;
- int ColorMapSize = 1 << BitsPerPixel;
- // int OriginalResolution = ((ch>>4)&7)+1;
- // int SortedTable = (ch&8)!=0;
- NEXTBYTE; // Background Color index
- NEXTBYTE; // Aspect ratio is N/64
-
- // Read in global colormap:
- uchar transparent_pixel = 0;
- char has_transparent = 0;
- uchar Red[256], Green[256], Blue[256]; /* color map */
- if (HasColormap) {
- for (int i=0; i < ColorMapSize; i++) {
- Red[i] = NEXTBYTE;
- Green[i] = NEXTBYTE;
- Blue[i] = NEXTBYTE;
- }
- } else {
- fprintf(stderr,"%s does not have a colormap.\n", infname);
- for (int i = 0; i < ColorMapSize; i++)
- Red[i] = Green[i] = Blue[i] = (i*256+ColorMapSize-1)/ColorMapSize;
- }
-
- int CodeSize; /* Code size, init from GIF header, increases... */
- char Interlace;
-
- for (;;) {
-
- int i = NEXTBYTE;
- if (i<0) {fprintf(stderr,"%s: unexpected EOF\n",infname); return 0;}
- int blocklen;
-
- // if (i == 0x3B) return 0; eof code
-
- if (i == 0x21) { // a "gif extension"
-
- ch = NEXTBYTE;
- blocklen = NEXTBYTE;
-
- if (ch==0xF9 && blocklen==4) { // Netscape animation extension
-
- char bits;
- bits = NEXTBYTE;
- NEXTBYTE; NEXTBYTE; // GETSHORT(delay);
- transparent_pixel = NEXTBYTE;
- if (bits & 1) has_transparent = 1;
- blocklen = NEXTBYTE;
-
- } else if (ch == 0xFF) { // Netscape repeat count
- ;
-
- } else if (ch == 0xFE) { //Gif Comment
-#if 0
- if(blocklen>0) {
- char *comment=new char[blocklen+1];
- int l;
- for(l=0;blocklen;l++,blocklen--)
- comment[l]=NEXTBYTE;
- comment[l]=0;
- fprintf(stderr,"%s: Gif Comment: '%s'\n", infname, comment);
- delete comment;
- NEXTBYTE; //End marker
- }
-#endif
- } else {
- fprintf(stderr,"%s: unknown gif extension 0x%02x\n", infname, ch);
-
- }
-
- } else if (i == 0x2c) { // an image
-
- NEXTBYTE; NEXTBYTE; // GETSHORT(x_position);
- NEXTBYTE; NEXTBYTE; // GETSHORT(y_position);
- GETSHORT(Width);
- GETSHORT(Height);
- ch = NEXTBYTE;
- Interlace = ((ch & 0x40) != 0);
- if (ch&0x80) {
- // read local color map
- int n = 1<<((ch&7)+1); // does this replace ColorMapSize ??
- for (i=0; i < n; i++) {
- Red[i] = NEXTBYTE;
- Green[i] = NEXTBYTE;
- Blue[i] = NEXTBYTE;
- }
- }
- CodeSize = NEXTBYTE+1;
-
- if (!inumber--) break; // okay, this is the image we want
- blocklen = NEXTBYTE;
-
- } else {
- fprintf(stderr,"%s: unknown gif code 0x%02x\n", infname, i);
- blocklen = 0;
- }
-
- // skip the data:
- while (blocklen>0) {while (blocklen--) {NEXTBYTE;} blocklen=NEXTBYTE;}
- }
-
- uchar *Image = new uchar[Width*Height];
- if (!Image) {
- fprintf (stderr, "Insufficient memory\n");
- exit (2);
- }
- int YC = 0, Pass = 0; /* Used to de-interlace the picture */
- uchar *p = Image;
- uchar *eol = p+Width;
-
- int InitCodeSize = CodeSize;
- int ClearCode = (1 << (CodeSize-1));
- int EOFCode = ClearCode + 1;
- int FirstFree = ClearCode + 2;
- int FinChar = 0;
- int ReadMask = (1<<CodeSize) - 1;
- int FreeCode = FirstFree;
- int OldCode = ClearCode;
-
- // tables used by LZW decompresser:
- short int Prefix[4096];
- uchar Suffix[4096];
-
- int blocklen = NEXTBYTE;
- uchar thisbyte = NEXTBYTE; blocklen--;
- int frombit = 0;
-
- for (;;) {
-
-/* Fetch the next code from the raster data stream. The codes can be
- * any length from 3 to 12 bits, packed into 8-bit bytes, so we have to
- * maintain our location as a pointer and a bit offset.
- * In addition, gif adds totally useless and annoying block counts
- * that must be correctly skipped over. */
- int CurCode = thisbyte;
- if (frombit+CodeSize > 7) {
- if (blocklen <= 0) {
- blocklen = NEXTBYTE;
- if (blocklen <= 0) break;
- }
- thisbyte = NEXTBYTE; blocklen--;
- CurCode |= thisbyte<<8;
- }
- if (frombit+CodeSize > 15) {
- if (blocklen <= 0) {
- blocklen = NEXTBYTE;
- if (blocklen <= 0) break;
- }
- thisbyte = NEXTBYTE; blocklen--;
- CurCode |= thisbyte<<16;
- }
- CurCode = (CurCode>>frombit)&ReadMask;
- frombit = (frombit+CodeSize)%8;
-
- if (CurCode == ClearCode) {
- CodeSize = InitCodeSize;
- ReadMask = (1<<CodeSize) - 1;
- FreeCode = FirstFree;
- OldCode = ClearCode;
- continue;
- }
-
- if (CurCode == EOFCode) break;
-
- uchar OutCode[1025]; // temporary array for reversing codes
- uchar *tp = OutCode;
- int i;
- if (CurCode < FreeCode) i = CurCode;
- else if (CurCode == FreeCode) {*tp++ = FinChar; i = OldCode;}
- else {fprintf(stderr,"%s : LZW Barf!\n",infname); break;}
-
- while (i >= ColorMapSize) {*tp++ = Suffix[i]; i = Prefix[i];}
- *tp++ = FinChar = i;
- while (tp > OutCode) {
- *p++ = *--tp;
- if (p >= eol) {
- if (!Interlace) YC++;
- else switch (Pass) {
- case 0: YC += 8; if (YC >= Height) {Pass++; YC = 4;} break;
- case 1: YC += 8; if (YC >= Height) {Pass++; YC = 2;} break;
- case 2: YC += 4; if (YC >= Height) {Pass++; YC = 1;} break;
- case 3: YC += 2; break;
- }
- if (YC>=Height) YC=0; /* cheap bug fix when excess data */
- p = Image + YC*Width;
- eol = p+Width;
- }
- }
-
- if (OldCode != ClearCode) {
- Prefix[FreeCode] = OldCode;
- Suffix[FreeCode] = FinChar;
- FreeCode++;
- if (FreeCode > ReadMask) {
- if (CodeSize < 12) {
- CodeSize++;
- ReadMask = (1 << CodeSize) - 1;
- }
- else FreeCode--;
- }
- }
- OldCode = CurCode;
- }
-
- // We are done reading the file, now convert to xpm:
-
- // allocate line pointer arrays:
- char** data = new char*[Height+3];
- *datap = data;
- int* length = new int[Height+2];
- *lengthp = length;
-
- // transparent pixel must be zero, swap if it isn't:
- if (has_transparent && transparent_pixel != 0) {
- // swap transparent pixel with zero
- p = Image+Width*Height;
- while (p-- > Image) {
- if (*p==transparent_pixel) *p = 0;
- else if (!*p) *p = transparent_pixel;
- }
- uchar t;
- t = Red[0]; Red[0] = Red[transparent_pixel]; Red[transparent_pixel] = t;
- t =Green[0];Green[0]=Green[transparent_pixel];Green[transparent_pixel]=t;
- t =Blue[0];Blue[0] =Blue[transparent_pixel];Blue[transparent_pixel] = t;
- }
-
- // find out what colors are actually used:
- uchar used[256]; uchar remap[256];
- int i;
- for (i = 0; i < ColorMapSize; i++) used[i] = 0;
- p = Image+Width*Height;
- while (p-- > Image) used[*p] = 1;
-
- // remap them to start with printing characters:
- int base = has_transparent && used[0] ? ' ' : ' '+1;
- int numcolors = 0;
- for (i = 0; i < ColorMapSize; i++) if (used[i]) {
- remap[i] = base++;
- numcolors++;
- }
-
- // write the first line of xpm data (use suffix as temp array):
- length[0] = sprintf((char*)(Suffix),
- "%d %d %d %d",Width,Height,-numcolors,1);
- data[0] = new char[length[0]+1];
- strcpy(data[0], (char*)Suffix);
-
- // write the colormap
- length[1] = 4*numcolors;
- data[1] = (char*)(p = new uchar[4*numcolors]);
- for (i = 0; i < ColorMapSize; i++) if (used[i]) {
- *p++ = remap[i];
- *p++ = Red[i];
- *p++ = Green[i];
- *p++ = Blue[i];
- }
-
- // remap the image data:
- p = Image+Width*Height;
- while (p-- > Image) *p = remap[*p];
-
- // split the image data into lines:
- for (i=0; i<Height; i++) {
- data[i+2] = (char*)(Image + i*Width);
- length[i+2] = Width;
- }
-
- data[Height+2] = 0; // null to end string array
- return Height+2;
-}
-
-//
-// End of "$Id: gif.cxx,v 1.3.2.5.2.1 2002/01/01 15:11:29 easysw Exp $".
-//