This is main.c in view mode; [Download] [Up]
/* ** Copyright 1994, Home Pages, Inc. ** ** Please read the file COPYRIGHT for specific information. ** ** Home Pages, Inc. ** 257 Castro St. Suite 219 ** Mountain View, CA 94041 ** ** Phone: 1 415 903 5353 ** Fax: 1 415 903 5345 ** ** EMail: support@homepages.com ** */ #include <stdio.h> #include <ctype.h> extern char *strchr(); #define TRUE 1 #define FALSE 0 #include "gif.h" struct colorTable_s { int r,g,b; char *name; } colorTable [] = { {255,250,250,"snow"}, {248,248,255,"ghost white"}, {248,248,255,"GhostWhite"}, {245,245,245,"white smoke"}, {245,245,245,"WhiteSmoke"}, {220,220,220,"gainsboro"}, {255,250,240,"floral white"}, {255,250,240,"FloralWhite"}, {253,245,230,"old lace"}, {253,245,230,"OldLace"}, {250,240,230,"linen"}, {250,235,215,"antique white"}, {250,235,215,"AntiqueWhite"}, {255,239,213,"papaya whip"}, {255,239,213,"PapayaWhip"}, {255,235,205,"blanched almond"}, {255,235,205,"BlanchedAlmond"}, {255,228,196,"bisque"}, {255,218,185,"peach puff"}, {255,218,185,"PeachPuff"}, {255,222,173,"navajo white"}, {255,222,173,"NavajoWhite"}, {255,228,181,"moccasin"}, {255,248,220,"cornsilk"}, {255,255,240,"ivory"}, {255,250,205,"lemon chiffon"}, {255,250,205,"LemonChiffon"}, {255,245,238,"seashell"}, {240,255,240,"honeydew"}, {245,255,250,"mint cream"}, {245,255,250,"MintCream"}, {240,255,255,"azure"}, {240,248,255,"alice blue"}, {240,248,255,"AliceBlue"}, {230,230,250,"lavender"}, {255,240,245,"lavender blush"}, {255,240,245,"LavenderBlush"}, {255,228,225,"misty rose"}, {255,228,225,"MistyRose"}, {255,255,255,"white"}, {0,0,0,"black"}, {47,79,79,"dark slate gray"}, {47,79,79,"DarkSlateGray"}, {47,79,79,"dark slate grey"}, {47,79,79,"DarkSlateGrey"}, {105,105,105,"dim gray"}, {105,105,105,"DimGray"}, {105,105,105,"dim grey"}, {105,105,105,"DimGrey"}, {112,128,144,"slate gray"}, {112,128,144,"SlateGray"}, {112,128,144,"slate grey"}, {112,128,144,"SlateGrey"}, {119,136,153,"light slate gray"}, {119,136,153,"LightSlateGray"}, {119,136,153,"light slate grey"}, {119,136,153,"LightSlateGrey"}, {192,192,192,"gray"}, {192,192,192,"grey"}, {211,211,211,"light grey"}, {211,211,211,"LightGrey"}, {211,211,211,"light gray"}, {211,211,211,"LightGray"}, {25,25,112,"midnight blue"}, {25,25,112,"MidnightBlue"}, {0,0,128,"navy"}, {0,0,128,"navy blue"}, {0,0,128,"NavyBlue"}, {100,149,237,"cornflower blue"}, {100,149,237,"CornflowerBlue"}, {72,61,139,"dark slate blue"}, {72,61,139,"DarkSlateBlue"}, {106,90,205,"slate blue"}, {106,90,205,"SlateBlue"}, {123,104,238,"medium slate blue"}, {123,104,238,"MediumSlateBlue"}, {132,112,255,"light slate blue"}, {132,112,255,"LightSlateBlue"}, {0,0,205,"medium blue"}, {0,0,205,"MediumBlue"}, {65,105,225,"royal blue"}, {65,105,225,"RoyalBlue"}, {0,0,255,"blue"}, {30,144,255,"dodger blue"}, {30,144,255,"DodgerBlue"}, {0,191,255,"deep sky blue"}, {0,191,255,"DeepSkyBlue"}, {135,206,235,"sky blue"}, {135,206,235,"SkyBlue"}, {135,206,250,"light sky blue"}, {135,206,250,"LightSkyBlue"}, {70,130,180,"steel blue"}, {70,130,180,"SteelBlue"}, {176,196,222,"light steel blue"}, {176,196,222,"LightSteelBlue"}, {173,216,230,"light blue"}, {173,216,230,"LightBlue"}, {176,224,230,"powder blue"}, {176,224,230,"PowderBlue"}, {175,238,238,"pale turquoise"}, {175,238,238,"PaleTurquoise"}, {0,206,209,"dark turquoise"}, {0,206,209,"DarkTurquoise"}, {72,209,204,"medium turquoise"}, {72,209,204,"MediumTurquoise"}, {64,224,208,"turquoise"}, {0,255,255,"cyan"}, {224,255,255,"light cyan"}, {224,255,255,"LightCyan"}, {95,158,160,"cadet blue"}, {95,158,160,"CadetBlue"}, {102,205,170,"medium aquamarine"}, {102,205,170,"MediumAquamarine"}, {127,255,212,"aquamarine"}, {0,100,0,"dark green"}, {0,100,0,"DarkGreen"}, {85,107,47,"dark olive green"}, {85,107,47,"DarkOliveGreen"}, {143,188,143,"dark sea green"}, {143,188,143,"DarkSeaGreen"}, {46,139,87,"sea green"}, {46,139,87,"SeaGreen"}, {60,179,113,"medium sea green"}, {60,179,113,"MediumSeaGreen"}, {32,178,170,"light sea green"}, {32,178,170,"LightSeaGreen"}, {152,251,152,"pale green"}, {152,251,152,"PaleGreen"}, {0,255,127,"spring green"}, {0,255,127,"SpringGreen"}, {124,252,0,"lawn green"}, {124,252,0,"LawnGreen"}, {0,255,0,"green"}, {127,255,0,"chartreuse"}, {0,250,154,"medium spring green"}, {0,250,154,"MediumSpringGreen"}, {173,255,47,"green yellow"}, {173,255,47,"GreenYellow"}, {50,205,50,"lime green"}, {50,205,50,"LimeGreen"}, {154,205,50,"yellow green"}, {154,205,50,"YellowGreen"}, {34,139,34,"forest green"}, {34,139,34,"ForestGreen"}, {107,142,35,"olive drab"}, {107,142,35,"OliveDrab"}, {189,183,107,"dark khaki"}, {189,183,107,"DarkKhaki"}, {240,230,140,"khaki"}, {238,232,170,"pale goldenrod"}, {238,232,170,"PaleGoldenrod"}, {250,250,210,"light goldenrod yellow"}, {250,250,210,"LightGoldenrodYellow"}, {255,255,224,"light yellow"}, {255,255,224,"LightYellow"}, {255,255,0,"yellow"}, {255,215,0,"gold"}, {238,221,130,"light goldenrod"}, {238,221,130,"LightGoldenrod"}, {218,165,32,"goldenrod"}, {184,134,11,"dark goldenrod"}, {184,134,11,"DarkGoldenrod"}, {188,143,143,"rosy brown"}, {188,143,143,"RosyBrown"}, {205,92,92,"indian red"}, {205,92,92,"IndianRed"}, {139,69,19,"saddle brown"}, {139,69,19,"SaddleBrown"}, {160,82,45,"sienna"}, {205,133,63,"peru"}, {222,184,135,"burlywood"}, {245,245,220,"beige"}, {245,222,179,"wheat"}, {244,164,96,"sandy brown"}, {244,164,96,"SandyBrown"}, {210,180,140,"tan"}, {210,105,30,"chocolate"}, {178,34,34,"firebrick"}, {165,42,42,"brown"}, {233,150,122,"dark salmon"}, {233,150,122,"DarkSalmon"}, {250,128,114,"salmon"}, {255,160,122,"light salmon"}, {255,160,122,"LightSalmon"}, {255,165,0,"orange"}, {255,140,0,"dark orange"}, {255,140,0,"DarkOrange"}, {255,127,80,"coral"}, {240,128,128,"light coral"}, {240,128,128,"LightCoral"}, {255,99,71,"tomato"}, {255,69,0,"orange red"}, {255,69,0,"OrangeRed"}, {255,0,0,"red"}, {255,105,180,"hot pink"}, {255,105,180,"HotPink"}, {255,20,147,"deep pink"}, {255,20,147,"DeepPink"}, {255,192,203,"pink"}, {255,182,193,"light pink"}, {255,182,193,"LightPink"}, {219,112,147,"pale violet red"}, {219,112,147,"PaleVioletRed"}, {176,48,96,"maroon"}, {199,21,133,"medium violet red"}, {199,21,133,"MediumVioletRed"}, {208,32,144,"violet red"}, {208,32,144,"VioletRed"}, {255,0,255,"magenta"}, {238,130,238,"violet"}, {221,160,221,"plum"}, {218,112,214,"orchid"}, {186,85,211,"medium orchid"}, {186,85,211,"MediumOrchid"}, {153,50,204,"dark orchid"}, {153,50,204,"DarkOrchid"}, {148,0,211,"dark violet"}, {148,0,211,"DarkViolet"}, {138,43,226,"blue violet"}, {138,43,226,"BlueViolet"}, {160,32,240,"purple"}, {147,112,219,"medium purple"}, {147,112,219,"MediumPurple"}, {216,191,216,"thistle"}, {255,250,250,"snow1"}, {238,233,233,"snow2"}, {205,201,201,"snow3"}, {139,137,137,"snow4"}, {255,245,238,"seashell1"}, {238,229,222,"seashell2"}, {205,197,191,"seashell3"}, {139,134,130,"seashell4"}, {255,239,219,"AntiqueWhite1"}, {238,223,204,"AntiqueWhite2"}, {205,192,176,"AntiqueWhite3"}, {139,131,120,"AntiqueWhite4"}, {255,228,196,"bisque1"}, {238,213,183,"bisque2"}, {205,183,158,"bisque3"}, {139,125,107,"bisque4"}, {255,218,185,"PeachPuff1"}, {238,203,173,"PeachPuff2"}, {205,175,149,"PeachPuff3"}, {139,119,101,"PeachPuff4"}, {255,222,173,"NavajoWhite1"}, {238,207,161,"NavajoWhite2"}, {205,179,139,"NavajoWhite3"}, {139,121,94,"NavajoWhite4"}, {255,250,205,"LemonChiffon1"}, {238,233,191,"LemonChiffon2"}, {205,201,165,"LemonChiffon3"}, {139,137,112,"LemonChiffon4"}, {255,248,220,"cornsilk1"}, {238,232,205,"cornsilk2"}, {205,200,177,"cornsilk3"}, {139,136,120,"cornsilk4"}, {255,255,240,"ivory1"}, {238,238,224,"ivory2"}, {205,205,193,"ivory3"}, {139,139,131,"ivory4"}, {240,255,240,"honeydew1"}, {224,238,224,"honeydew2"}, {193,205,193,"honeydew3"}, {131,139,131,"honeydew4"}, {255,240,245,"LavenderBlush1"}, {238,224,229,"LavenderBlush2"}, {205,193,197,"LavenderBlush3"}, {139,131,134,"LavenderBlush4"}, {255,228,225,"MistyRose1"}, {238,213,210,"MistyRose2"}, {205,183,181,"MistyRose3"}, {139,125,123,"MistyRose4"}, {240,255,255,"azure1"}, {224,238,238,"azure2"}, {193,205,205,"azure3"}, {131,139,139,"azure4"}, {131,111,255,"SlateBlue1"}, {122,103,238,"SlateBlue2"}, {105,89,205,"SlateBlue3"}, {71,60,139,"SlateBlue4"}, {72,118,255,"RoyalBlue1"}, {67,110,238,"RoyalBlue2"}, {58,95,205,"RoyalBlue3"}, {39,64,139,"RoyalBlue4"}, {0,0,255,"blue1"}, {0,0,238,"blue2"}, {0,0,205,"blue3"}, {0,0,139,"blue4"}, {30,144,255,"DodgerBlue1"}, {28,134,238,"DodgerBlue2"}, {24,116,205,"DodgerBlue3"}, {16,78,139,"DodgerBlue4"}, {99,184,255,"SteelBlue1"}, {92,172,238,"SteelBlue2"}, {79,148,205,"SteelBlue3"}, {54,100,139,"SteelBlue4"}, {0,191,255,"DeepSkyBlue1"}, {0,178,238,"DeepSkyBlue2"}, {0,154,205,"DeepSkyBlue3"}, {0,104,139,"DeepSkyBlue4"}, {135,206,255,"SkyBlue1"}, {126,192,238,"SkyBlue2"}, {108,166,205,"SkyBlue3"}, {74,112,139,"SkyBlue4"}, {176,226,255,"LightSkyBlue1"}, {164,211,238,"LightSkyBlue2"}, {141,182,205,"LightSkyBlue3"}, {96,123,139,"LightSkyBlue4"}, {198,226,255,"SlateGray1"}, {185,211,238,"SlateGray2"}, {159,182,205,"SlateGray3"}, {108,123,139,"SlateGray4"}, {202,225,255,"LightSteelBlue1"}, {188,210,238,"LightSteelBlue2"}, {162,181,205,"LightSteelBlue3"}, {110,123,139,"LightSteelBlue4"}, {191,239,255,"LightBlue1"}, {178,223,238,"LightBlue2"}, {154,192,205,"LightBlue3"}, {104,131,139,"LightBlue4"}, {224,255,255,"LightCyan1"}, {209,238,238,"LightCyan2"}, {180,205,205,"LightCyan3"}, {122,139,139,"LightCyan4"}, {187,255,255,"PaleTurquoise1"}, {174,238,238,"PaleTurquoise2"}, {150,205,205,"PaleTurquoise3"}, {102,139,139,"PaleTurquoise4"}, {152,245,255,"CadetBlue1"}, {142,229,238,"CadetBlue2"}, {122,197,205,"CadetBlue3"}, {83,134,139,"CadetBlue4"}, {0,245,255,"turquoise1"}, {0,229,238,"turquoise2"}, {0,197,205,"turquoise3"}, {0,134,139,"turquoise4"}, {0,255,255,"cyan1"}, {0,238,238,"cyan2"}, {0,205,205,"cyan3"}, {0,139,139,"cyan4"}, {151,255,255,"DarkSlateGray1"}, {141,238,238,"DarkSlateGray2"}, {121,205,205,"DarkSlateGray3"}, {82,139,139,"DarkSlateGray4"}, {127,255,212,"aquamarine1"}, {118,238,198,"aquamarine2"}, {102,205,170,"aquamarine3"}, {69,139,116,"aquamarine4"}, {193,255,193,"DarkSeaGreen1"}, {180,238,180,"DarkSeaGreen2"}, {155,205,155,"DarkSeaGreen3"}, {105,139,105,"DarkSeaGreen4"}, {84,255,159,"SeaGreen1"}, {78,238,148,"SeaGreen2"}, {67,205,128,"SeaGreen3"}, {46,139,87,"SeaGreen4"}, {154,255,154,"PaleGreen1"}, {144,238,144,"PaleGreen2"}, {124,205,124,"PaleGreen3"}, {84,139,84,"PaleGreen4"}, {0,255,127,"SpringGreen1"}, {0,238,118,"SpringGreen2"}, {0,205,102,"SpringGreen3"}, {0,139,69,"SpringGreen4"}, {0,255,0,"green1"}, {0,238,0,"green2"}, {0,205,0,"green3"}, {0,139,0,"green4"}, {127,255,0,"chartreuse1"}, {118,238,0,"chartreuse2"}, {102,205,0,"chartreuse3"}, {69,139,0,"chartreuse4"}, {192,255,62,"OliveDrab1"}, {179,238,58,"OliveDrab2"}, {154,205,50,"OliveDrab3"}, {105,139,34,"OliveDrab4"}, {202,255,112,"DarkOliveGreen1"}, {188,238,104,"DarkOliveGreen2"}, {162,205,90,"DarkOliveGreen3"}, {110,139,61,"DarkOliveGreen4"}, {255,246,143,"khaki1"}, {238,230,133,"khaki2"}, {205,198,115,"khaki3"}, {139,134,78,"khaki4"}, {255,236,139,"LightGoldenrod1"}, {238,220,130,"LightGoldenrod2"}, {205,190,112,"LightGoldenrod3"}, {139,129,76,"LightGoldenrod4"}, {255,255,224,"LightYellow1"}, {238,238,209,"LightYellow2"}, {205,205,180,"LightYellow3"}, {139,139,122,"LightYellow4"}, {255,255,0,"yellow1"}, {238,238,0,"yellow2"}, {205,205,0,"yellow3"}, {139,139,0,"yellow4"}, {255,215,0,"gold1"}, {238,201,0,"gold2"}, {205,173,0,"gold3"}, {139,117,0,"gold4"}, {255,193,37,"goldenrod1"}, {238,180,34,"goldenrod2"}, {205,155,29,"goldenrod3"}, {139,105,20,"goldenrod4"}, {255,185,15,"DarkGoldenrod1"}, {238,173,14,"DarkGoldenrod2"}, {205,149,12,"DarkGoldenrod3"}, {139,101,8,"DarkGoldenrod4"}, {255,193,193,"RosyBrown1"}, {238,180,180,"RosyBrown2"}, {205,155,155,"RosyBrown3"}, {139,105,105,"RosyBrown4"}, {255,106,106,"IndianRed1"}, {238,99,99,"IndianRed2"}, {205,85,85,"IndianRed3"}, {139,58,58,"IndianRed4"}, {255,130,71,"sienna1"}, {238,121,66,"sienna2"}, {205,104,57,"sienna3"}, {139,71,38,"sienna4"}, {255,211,155,"burlywood1"}, {238,197,145,"burlywood2"}, {205,170,125,"burlywood3"}, {139,115,85,"burlywood4"}, {255,231,186,"wheat1"}, {238,216,174,"wheat2"}, {205,186,150,"wheat3"}, {139,126,102,"wheat4"}, {255,165,79,"tan1"}, {238,154,73,"tan2"}, {205,133,63,"tan3"}, {139,90,43,"tan4"}, {255,127,36,"chocolate1"}, {238,118,33,"chocolate2"}, {205,102,29,"chocolate3"}, {139,69,19,"chocolate4"}, {255,48,48,"firebrick1"}, {238,44,44,"firebrick2"}, {205,38,38,"firebrick3"}, {139,26,26,"firebrick4"}, {255,64,64,"brown1"}, {238,59,59,"brown2"}, {205,51,51,"brown3"}, {139,35,35,"brown4"}, {255,140,105,"salmon1"}, {238,130,98,"salmon2"}, {205,112,84,"salmon3"}, {139,76,57,"salmon4"}, {255,160,122,"LightSalmon1"}, {238,149,114,"LightSalmon2"}, {205,129,98,"LightSalmon3"}, {139,87,66,"LightSalmon4"}, {255,165,0,"orange1"}, {238,154,0,"orange2"}, {205,133,0,"orange3"}, {139,90,0,"orange4"}, {255,127,0,"DarkOrange1"}, {238,118,0,"DarkOrange2"}, {205,102,0,"DarkOrange3"}, {139,69,0,"DarkOrange4"}, {255,114,86,"coral1"}, {238,106,80,"coral2"}, {205,91,69,"coral3"}, {139,62,47,"coral4"}, {255,99,71,"tomato1"}, {238,92,66,"tomato2"}, {205,79,57,"tomato3"}, {139,54,38,"tomato4"}, {255,69,0,"OrangeRed1"}, {238,64,0,"OrangeRed2"}, {205,55,0,"OrangeRed3"}, {139,37,0,"OrangeRed4"}, {255,0,0,"red1"}, {238,0,0,"red2"}, {205,0,0,"red3"}, {139,0,0,"red4"}, {255,20,147,"DeepPink1"}, {238,18,137,"DeepPink2"}, {205,16,118,"DeepPink3"}, {139,10,80,"DeepPink4"}, {255,110,180,"HotPink1"}, {238,106,167,"HotPink2"}, {205,96,144,"HotPink3"}, {139,58,98,"HotPink4"}, {255,181,197,"pink1"}, {238,169,184,"pink2"}, {205,145,158,"pink3"}, {139,99,108,"pink4"}, {255,174,185,"LightPink1"}, {238,162,173,"LightPink2"}, {205,140,149,"LightPink3"}, {139,95,101,"LightPink4"}, {255,130,171,"PaleVioletRed1"}, {238,121,159,"PaleVioletRed2"}, {205,104,137,"PaleVioletRed3"}, {139,71,93,"PaleVioletRed4"}, {255,52,179,"maroon1"}, {238,48,167,"maroon2"}, {205,41,144,"maroon3"}, {139,28,98,"maroon4"}, {255,62,150,"VioletRed1"}, {238,58,140,"VioletRed2"}, {205,50,120,"VioletRed3"}, {139,34,82,"VioletRed4"}, {255,0,255,"magenta1"}, {238,0,238,"magenta2"}, {205,0,205,"magenta3"}, {139,0,139,"magenta4"}, {255,131,250,"orchid1"}, {238,122,233,"orchid2"}, {205,105,201,"orchid3"}, {139,71,137,"orchid4"}, {255,187,255,"plum1"}, {238,174,238,"plum2"}, {205,150,205,"plum3"}, {139,102,139,"plum4"}, {224,102,255,"MediumOrchid1"}, {209,95,238,"MediumOrchid2"}, {180,82,205,"MediumOrchid3"}, {122,55,139,"MediumOrchid4"}, {191,62,255,"DarkOrchid1"}, {178,58,238,"DarkOrchid2"}, {154,50,205,"DarkOrchid3"}, {104,34,139,"DarkOrchid4"}, {155,48,255,"purple1"}, {145,44,238,"purple2"}, {125,38,205,"purple3"}, {85,26,139,"purple4"}, {171,130,255,"MediumPurple1"}, {159,121,238,"MediumPurple2"}, {137,104,205,"MediumPurple3"}, {93,71,139,"MediumPurple4"}, {255,225,255,"thistle1"}, {238,210,238,"thistle2"}, {205,181,205,"thistle3"}, {139,123,139,"thistle4"}, {0,0,0,"gray0"}, {0,0,0,"grey0"}, {3,3,3,"gray1"}, {3,3,3,"grey1"}, {5,5,5,"gray2"}, {5,5,5,"grey2"}, {8,8,8,"gray3"}, {8,8,8,"grey3"}, {10,10,10,"gray4"}, {10,10,10,"grey4"}, {13,13,13,"gray5"}, {13,13,13,"grey5"}, {15,15,15,"gray6"}, {15,15,15,"grey6"}, {18,18,18,"gray7"}, {18,18,18,"grey7"}, {20,20,20,"gray8"}, {20,20,20,"grey8"}, {23,23,23,"gray9"}, {23,23,23,"grey9"}, {26,26,26,"gray10"}, {26,26,26,"grey10"}, {28,28,28,"gray11"}, {28,28,28,"grey11"}, {31,31,31,"gray12"}, {31,31,31,"grey12"}, {33,33,33,"gray13"}, {33,33,33,"grey13"}, {36,36,36,"gray14"}, {36,36,36,"grey14"}, {38,38,38,"gray15"}, {38,38,38,"grey15"}, {41,41,41,"gray16"}, {41,41,41,"grey16"}, {43,43,43,"gray17"}, {43,43,43,"grey17"}, {46,46,46,"gray18"}, {46,46,46,"grey18"}, {48,48,48,"gray19"}, {48,48,48,"grey19"}, {51,51,51,"gray20"}, {51,51,51,"grey20"}, {54,54,54,"gray21"}, {54,54,54,"grey21"}, {56,56,56,"gray22"}, {56,56,56,"grey22"}, {59,59,59,"gray23"}, {59,59,59,"grey23"}, {61,61,61,"gray24"}, {61,61,61,"grey24"}, {64,64,64,"gray25"}, {64,64,64,"grey25"}, {66,66,66,"gray26"}, {66,66,66,"grey26"}, {69,69,69,"gray27"}, {69,69,69,"grey27"}, {71,71,71,"gray28"}, {71,71,71,"grey28"}, {74,74,74,"gray29"}, {74,74,74,"grey29"}, {77,77,77,"gray30"}, {77,77,77,"grey30"}, {79,79,79,"gray31"}, {79,79,79,"grey31"}, {82,82,82,"gray32"}, {82,82,82,"grey32"}, {84,84,84,"gray33"}, {84,84,84,"grey33"}, {87,87,87,"gray34"}, {87,87,87,"grey34"}, {89,89,89,"gray35"}, {89,89,89,"grey35"}, {92,92,92,"gray36"}, {92,92,92,"grey36"}, {94,94,94,"gray37"}, {94,94,94,"grey37"}, {97,97,97,"gray38"}, {97,97,97,"grey38"}, {99,99,99,"gray39"}, {99,99,99,"grey39"}, {102,102,102,"gray40"}, {102,102,102,"grey40"}, {105,105,105,"gray41"}, {105,105,105,"grey41"}, {107,107,107,"gray42"}, {107,107,107,"grey42"}, {110,110,110,"gray43"}, {110,110,110,"grey43"}, {112,112,112,"gray44"}, {112,112,112,"grey44"}, {115,115,115,"gray45"}, {115,115,115,"grey45"}, {117,117,117,"gray46"}, {117,117,117,"grey46"}, {120,120,120,"gray47"}, {120,120,120,"grey47"}, {122,122,122,"gray48"}, {122,122,122,"grey48"}, {125,125,125,"gray49"}, {125,125,125,"grey49"}, {127,127,127,"gray50"}, {127,127,127,"grey50"}, {130,130,130,"gray51"}, {130,130,130,"grey51"}, {133,133,133,"gray52"}, {133,133,133,"grey52"}, {135,135,135,"gray53"}, {135,135,135,"grey53"}, {138,138,138,"gray54"}, {138,138,138,"grey54"}, {140,140,140,"gray55"}, {140,140,140,"grey55"}, {143,143,143,"gray56"}, {143,143,143,"grey56"}, {145,145,145,"gray57"}, {145,145,145,"grey57"}, {148,148,148,"gray58"}, {148,148,148,"grey58"}, {150,150,150,"gray59"}, {150,150,150,"grey59"}, {153,153,153,"gray60"}, {153,153,153,"grey60"}, {156,156,156,"gray61"}, {156,156,156,"grey61"}, {158,158,158,"gray62"}, {158,158,158,"grey62"}, {161,161,161,"gray63"}, {161,161,161,"grey63"}, {163,163,163,"gray64"}, {163,163,163,"grey64"}, {166,166,166,"gray65"}, {166,166,166,"grey65"}, {168,168,168,"gray66"}, {168,168,168,"grey66"}, {171,171,171,"gray67"}, {171,171,171,"grey67"}, {173,173,173,"gray68"}, {173,173,173,"grey68"}, {176,176,176,"gray69"}, {176,176,176,"grey69"}, {179,179,179,"gray70"}, {179,179,179,"grey70"}, {181,181,181,"gray71"}, {181,181,181,"grey71"}, {184,184,184,"gray72"}, {184,184,184,"grey72"}, {186,186,186,"gray73"}, {186,186,186,"grey73"}, {189,189,189,"gray74"}, {189,189,189,"grey74"}, {191,191,191,"gray75"}, {191,191,191,"grey75"}, {194,194,194,"gray76"}, {194,194,194,"grey76"}, {196,196,196,"gray77"}, {196,196,196,"grey77"}, {199,199,199,"gray78"}, {199,199,199,"grey78"}, {201,201,201,"gray79"}, {201,201,201,"grey79"}, {204,204,204,"gray80"}, {204,204,204,"grey80"}, {207,207,207,"gray81"}, {207,207,207,"grey81"}, {209,209,209,"gray82"}, {209,209,209,"grey82"}, {212,212,212,"gray83"}, {212,212,212,"grey83"}, {214,214,214,"gray84"}, {214,214,214,"grey84"}, {217,217,217,"gray85"}, {217,217,217,"grey85"}, {219,219,219,"gray86"}, {219,219,219,"grey86"}, {222,222,222,"gray87"}, {222,222,222,"grey87"}, {224,224,224,"gray88"}, {224,224,224,"grey88"}, {227,227,227,"gray89"}, {227,227,227,"grey89"}, {229,229,229,"gray90"}, {229,229,229,"grey90"}, {232,232,232,"gray91"}, {232,232,232,"grey91"}, {235,235,235,"gray92"}, {235,235,235,"grey92"}, {237,237,237,"gray93"}, {237,237,237,"grey93"}, {240,240,240,"gray94"}, {240,240,240,"grey94"}, {242,242,242,"gray95"}, {242,242,242,"grey95"}, {245,245,245,"gray96"}, {245,245,245,"grey96"}, {247,247,247,"gray97"}, {247,247,247,"grey97"}, {250,250,250,"gray98"}, {250,250,250,"grey98"}, {252,252,252,"gray99"}, {252,252,252,"grey99"}, {255,255,255,"gray100"}, {255,255,255,"grey100"}, {0,0,0,"sgi gray 0"}, {0,0,0,"SGIGray0"}, {0,0,0,"sgi grey 0"}, {0,0,0,"SGIGrey0"}, {10,10,10,"sgi gray 4"}, {10,10,10,"SGIGray4"}, {10,10,10,"sgi grey 4"}, {10,10,10,"SGIGrey4"}, {20,20,20,"sgi gray 8"}, {20,20,20,"SGIGray8"}, {20,20,20,"sgi grey 8"}, {20,20,20,"SGIGrey8"}, {30,30,30,"sgi gray 12"}, {30,30,30,"SGIGray12"}, {30,30,30,"sgi grey 12"}, {30,30,30,"SGIGrey12"}, {40,40,40,"sgi gray 16"}, {40,40,40,"SGIGray16"}, {40,40,40,"sgi grey 16"}, {40,40,40,"SGIGrey16"}, {51,51,51,"sgi gray 20"}, {51,51,51,"SGIGray20"}, {51,51,51,"sgi grey 20"}, {51,51,51,"SGIGrey20"}, {61,61,61,"sgi gray 24"}, {61,61,61,"SGIGray24"}, {61,61,61,"sgi grey 24"}, {61,61,61,"SGIGrey24"}, {71,71,71,"sgi gray 28"}, {71,71,71,"SGIGray28"}, {71,71,71,"sgi grey 28"}, {71,71,71,"SGIGrey28"}, {81,81,81,"sgi gray 32"}, {81,81,81,"SGIGray32"}, {81,81,81,"sgi grey 32"}, {81,81,81,"SGIGrey32"}, {91,91,91,"sgi gray 36"}, {91,91,91,"SGIGray36"}, {91,91,91,"sgi grey 36"}, {91,91,91,"SGIGrey36"}, {102,102,102,"sgi gray 40"}, {102,102,102,"SGIGray40"}, {102,102,102,"sgi grey 40"}, {102,102,102,"SGIGrey40"}, {112,112,112,"sgi gray 44"}, {112,112,112,"SGIGray44"}, {112,112,112,"sgi grey 44"}, {112,112,112,"SGIGrey44"}, {122,122,122,"sgi gray 48"}, {122,122,122,"SGIGray48"}, {122,122,122,"sgi grey 48"}, {122,122,122,"SGIGrey48"}, {132,132,132,"sgi gray 52"}, {132,132,132,"SGIGray52"}, {132,132,132,"sgi grey 52"}, {132,132,132,"SGIGrey52"}, {142,142,142,"sgi gray 56"}, {142,142,142,"SGIGray56"}, {142,142,142,"sgi grey 56"}, {142,142,142,"SGIGrey56"}, {153,153,153,"sgi gray 60"}, {153,153,153,"SGIGray60"}, {153,153,153,"sgi grey 60"}, {153,153,153,"SGIGrey60"}, {163,163,163,"sgi gray 64"}, {163,163,163,"SGIGray64"}, {163,163,163,"sgi grey 64"}, {163,163,163,"SGIGrey64"}, {173,173,173,"sgi gray 68"}, {173,173,173,"SGIGray68"}, {173,173,173,"sgi grey 68"}, {173,173,173,"SGIGrey68"}, {183,183,183,"sgi gray 72"}, {183,183,183,"SGIGray72"}, {183,183,183,"sgi grey 72"}, {183,183,183,"SGIGrey72"}, {193,193,193,"sgi gray 76"}, {193,193,193,"SGIGray76"}, {193,193,193,"sgi grey 76"}, {193,193,193,"SGIGrey76"}, {204,204,204,"sgi gray 80"}, {204,204,204,"SGIGray80"}, {204,204,204,"sgi grey 80"}, {204,204,204,"SGIGrey80"}, {214,214,214,"sgi gray 84"}, {214,214,214,"SGIGray84"}, {214,214,214,"sgi grey 84"}, {214,214,214,"SGIGrey84"}, {224,224,224,"sgi gray 88"}, {224,224,224,"SGIGray88"}, {224,224,224,"sgi grey 88"}, {224,224,224,"SGIGrey88"}, {234,234,234,"sgi gray 92"}, {234,234,234,"SGIGray92"}, {234,234,234,"sgi grey 92"}, {234,234,234,"SGIGrey92"}, {244,244,244,"sgi gray 96"}, {244,244,244,"SGIGray96"}, {244,244,244,"sgi grey 96"}, {244,244,244,"SGIGrey96"}, {255,255,255,"sgi gray 100"}, {255,255,255,"SGIGray100"}, {255,255,255,"sgi grey 100"}, {255,255,255,"SGIGrey100"}, {125,158,192,"sgi light blue"}, {125,158,192,"SGILightBlue"}, {85,85,85,"sgi dark gray"}, {85,85,85,"SGIDarkGray"}, {85,85,85,"sgi dark grey"}, {85,85,85,"SGIDarkGrey"}, {198,113,113,"sgi salmon"}, {198,113,113,"SGISalmon"}, {113,198,113,"sgi chartreuse"}, {113,198,113,"SGIChartreuse"}, {142,142,56,"sgi olive drab"}, {142,142,56,"SGIOliveDrab"}, {113,113,198,"sgi slate blue"}, {113,113,198,"SGISlateBlue"}, {142,56,142,"sgi beet"}, {142,56,142,"SGIBeet"}, {56,142,142,"sgi teal"}, {56,142,142,"SGITeal"}, {170,170,170,"sgi light gray"}, {170,170,170,"SGILightGray"}, {170,170,170,"sgi light grey"}, {170,170,170,"SGILightGrey"}, {214,214,214,"sgi very light gray"}, {214,214,214,"SGIVeryLightGray"}, {214,214,214,"sgi very light grey"}, {214,214,214,"SGIVeryLightGrey"}, {132,132,132,"sgi medium gray"}, {132,132,132,"SGIMediumGray"}, {132,132,132,"sgi medium grey"}, {132,132,132,"SGIMediumGrey"}, {40,40,40,"sgi very dark gray"}, {40,40,40,"SGIVeryDarkGray"}, {40,40,40,"sgi very dark grey"}, {40,40,40,"SGIVeryDarkGrey"}, {197,193,170,"sgi bright gray"}, {197,193,170,"SGIBrightGray"}, {197,193,170,"sgi bright grey"}, {197,193,170,"SGIBrightGrey"}, {75,0,130,"Indigo"}, {220,20,60,"Crimson"}, }; #define NUMBER(x) (sizeof(x) / sizeof(x[0])) static void dumpCMAP(char *title, char *start, int size, unsigned char data[GIF_MAXCOLORS][3]) { int i; int j; if (size == 0) return; printf("%s\n", title); for (i = 0; i < size; i++) { int r = data[i][0]; int g = data[i][1]; int b = data[i][2]; char *name = NULL; for (j = 0; j < NUMBER(colorTable); j++) { if (colorTable[j].r == r && colorTable[j].g == g && colorTable[j].b == b) { name = colorTable[j].name; break; } } printf("%s%3d: %3d %3d %3d (0x%02x 0x%02x 0x%02x) %s\n", start, i+1, data[i][0], data[i][1], data[i][2], data[i][0], data[i][1], data[i][2], name == NULL ? "" : name); } } static void GIFDump(char *name, GIFStream *stream, int commentsOnly) { GIFData *cur; if (stream == NULL) { printf("GIF Image %s -- BAD Image\n", name); return; } printf("GIF Image %s (%dx%d)\n", name == NULL ? "STDIN" : name, stream->width, stream->height); if (!commentsOnly) { if (stream->cmapSize != 0) dumpCMAP("Image Colormap", "", stream->cmapSize, stream->cmapData); } for (cur = stream->data; cur != NULL; cur = cur->next) { if (commentsOnly && cur->type != gif_comment) continue; switch (cur->type) { case gif_image: printf(" %sImage at %d,%d size %dx%d\n", cur->data.image.interlaced ? "Interlaced " : "", cur->x, cur->y, cur->width, cur->height); if (cur->info.transparent >= 0) { printf("\tTransparent pixel = %d\n", cur->info.transparent + 1); } if (cur->data.image.cmapSize != 0) { dumpCMAP(" Image Colormap", "\t", cur->data.image.cmapSize, cur->data.image.cmapData); } break; case gif_comment: printf(" Comment: %*.*s\n", cur->data.comment.len, cur->data.comment.len, cur->data.comment.text); break; case gif_text: printf(" Image Text (at %d,%d): %*.*s\n", cur->x, cur->y, cur->data.text.len, cur->data.text.len, cur->data.text.text); break; } } } static void GIFFree(GIFStream *stream) { GIFData *cur, *nxt; if (stream == NULL) return; cur = stream->data; while (cur != NULL) { nxt = cur->next; switch (cur->type) { case gif_image: free(cur->data.image.data); break; case gif_comment: free(cur->data.comment.text); break; case gif_text: free(cur->data.text.text); break; } free(cur); cur = nxt; } free(stream); } static void setInterlace(GIFStream *stream, int flg) { GIFData *cur = stream->data; for ( ; cur != NULL; cur = cur->next) { if (cur->type == gif_image) cur->data.image.interlaced = flg > 0; } } static int toval(char *s) { if (s[0] == '0' && s[1] == 'x') { int v; sscanf(s, "0x%x", &v); return v; } else { return atoi(s); } } static int matchCMAP(char *tpix, int size, unsigned char data[256][3]) { char buf[80], *cp; char c[3][20]; int r, g, b; int i; int min, dist; if (strchr(tpix, ',') == NULL) { int v = atoi(tpix); if (v != 0) { if (v <= size && v > 0) return v - 1; return -1; } for (v = 0; v < NUMBER(colorTable); v++) { if (strcasecmp(colorTable[v].name, tpix) == 0) break; } if (v == NUMBER(colorTable)) return -2; sprintf(buf, "%d,%d,%d", colorTable[v].r, colorTable[v].g, colorTable[v].b); tpix = buf; } for (cp = tpix, i = 0; i < 3; i++, cp = strchr(cp, ',')) { char *x; if (cp == NULL) break; if (*cp == ',') cp++; strncpy(c[i], cp, 10); if ((x = strchr(c[i], ',')) != NULL) *x = '\0'; } if (i != 3) return -3; r = toval(c[0]); g = toval(c[1]); b = toval(c[2]); min = -3; dist = 255 * 255 * 3; for (i = 0; i < size && dist != 0; i++) { int d; int dr = data[i][0] - r; int dg = data[i][1] - g; int db = data[i][2] - b; if (dr == 0 && dg == 0 && db == 0) return i; d = dr * dr + dg * dg + db * b; if (d < dist) { dist = d; min = i; } } if (dist > 0) fprintf(stderr, "No exact match using pixel %d\n", min + 1); return min; } static void setTransparent(GIFStream *stream, char *tpix) { GIFData *cur = stream->data; int cnt = 0; for ( ; cur != NULL; cur = cur->next) { int idx; if (cur->type != gif_image) continue; cnt++; if (cur->info.transparent != -1) { fprintf(stderr,"Warning: image %d was already transparent\n"); } if (cur->data.image.cmapSize != 0) { idx = matchCMAP(tpix, cur->data.image.cmapSize, cur->data.image.cmapData); } else { idx = matchCMAP(tpix, stream->cmapSize, stream->cmapData); } if (idx == -1) { fprintf(stderr,"Warning: Pixel index larger than colormap size\n"); } else if (idx == -2) { fprintf(stderr,"Warning: No such color known (%s)\n", tpix); } else { cur->info.transparent = idx; } } } static void addComments(GIFStream *stream, char *text) { GIFData *n; if (text == NULL) return; n = (GIFData *)malloc(sizeof(GIFData)); n->type = gif_comment; n->info.transparent = -1; n->info.delayTime = 0; n->info.inputFlag = 0; n->info.disposal = gif_no_disposal; n->width = n->height = n->x = n->y = 0; n->data.comment.len = strlen(text); n->data.comment.text = (char*)malloc(strlen(text)); strcpy(n->data.comment.text, text); n->next = stream->data; stream->data = n; } static void stripComment(GIFStream *stream) { GIFData *nxt, *cur, *prev = NULL; for (cur = stream->data; cur != NULL; cur = nxt) { nxt = cur->next; if (cur->type == gif_comment) { if (prev == NULL) stream->data = cur->next; else prev->next = cur->next; free(cur->data.comment.text); free(cur); } else { prev = cur; } } } static void info() { printf("Copyright 1994, Home Pages, Inc.\n"); printf("\n"); printf("Permission to use, copy, and distribute GIFTOOL in its entirety, for\n"); printf("non-commercial purposes, is hereby granted without fee, provided that\n"); printf("this license information and copyright notice appear in all copies.\n"); printf("\n"); printf("Note that distributing GIFTOOL 'bundled' in with ANY product is considered\n"); printf("to be a 'commercial purpose'.\n"); printf("\n"); printf("Also note that any copies of GIFTOOL that are distributed MUST be built\n"); printf("and/or configured to be in their 'unregistered copy' mode, so that it\n"); printf("is made obvious to the user that GIFTOOL is shareware, and that they should\n"); printf("consider donating, or at least reading this License Info.\n"); printf("\n"); printf("Permission to use, copy, and distribute GIFTOOL in its entirety, for\n"); printf("non-commercial purposes, is hereby granted without fee, provided that\n"); printf("this license information and copyright notice appear in all copies.\n"); printf("\n"); printf("Note that distributing GIFTOOL 'bundled' in with ANY product is considered\n"); printf("to be a 'commercial purpose'.\n"); printf("\n"); printf("Also note that any copies of GIFTOOL that are distributed MUST be built\n"); printf("and/or configured to be in their 'unregistered copy' mode, so that it\n"); printf("is made obvious to the user that GIFTOOL is shareware, and that they should\n"); printf("consider donating, or at least reading this License Info.\n"); printf("\n"); printf("The software may be modified for your own purposes, but modified\n"); printf("versions may NOT be distributed without prior consent of the author.\n"); printf("\n"); printf("This software is provided 'as-is', without any express or implied\n"); printf("warranty. In no event will the author be held liable for any damages\n"); printf("arising from the use of this software.\n"); printf("\n"); printf("If you would like to do something with GIFTOOL that this copyright\n"); printf("prohibits (such as distributing it with a commercial product,\n"); printf("using portions of the source in some other program, etc.), please\n"); printf("contact the author. Arrangements can probably easily be worked out.\n"); printf("\n"); printf("GIFTOOL is shareware for PERSONAL USE only. You may use GIFTOOL for \n"); printf("your own amusement, and if you find it nifty, useful, generally cool, \n"); printf("or of some value to you, your non-deductable donation would be greatly\n"); printf("appreciated. $10 is the suggested donation, though, of course,\n"); printf("larger donations are quite welcome. \n"); printf("\n"); printf("Commercial, government, and institutional users MUST register their\n"); printf("copies of GIFTOOL, for the exceedingly REASONABLE price of just $10 per\n"); printf("workstation. Site licenses are available for those who wish to run \n"); printf("GIFTOOL on a large number of machines. Please contact Home Pages Inc\n"); printf("for more details.\n"); printf("\n"); printf(" US Mail: Home Pages, Inc.\n"); printf(" 257 Castro St, Suite 219\n"); printf(" Mountain View, CA 94041\n"); printf("\n"); printf(" Phone: (415) 903-5353\n"); printf(" EMail: support@homepages.com\n"); exit(0); } static void usage() { fprintf(stderr,"Usage: giftool [options] [file]\n"); fprintf(stderr," giftool (-p|-c|-B) [options] [files...]\n"); fprintf(stderr,"\t-B\tBatch Mode, read and write the same filename\n"); fprintf(stderr,"\t-i\tSet GIF Interlace mode ON\n"); fprintf(stderr,"\t+i\tSet GIF Interlace mode OFF\n"); fprintf(stderr,"\t-p\tPrint information about file(s)\n"); fprintf(stderr,"\t-c\tPrint comment information\n"); fprintf(stderr,"\t+c\tAdd comments to file(s)\n"); fprintf(stderr,"\t-C\tStrip comment from file(s)\n"); fprintf(stderr,"\t-o file\tSend output to 'file'\n"); fprintf(stderr,"\t-rgb name\tUse 'name' as the transparent pixel\n"); fprintf(stderr,"\t-rgb ##,##,##\ttUse rgb-value as the transparent pixel\n"); fprintf(stderr,"\t-###\tUsed pixel index as transparent (1 == first colormap entry)\n"); fprintf(stderr,"\n"); fprintf(stderr,"For instance you could say 'giftool -B -i *.gif' to convert all your images\nto interlaced GIF files in one easy step.\n"); fprintf(stderr,"\n"); fprintf(stderr,"giftool version 1.0 is Copyright 1994 Home Pages, Inc and is shareware.\n"); fprintf(stderr,"Please, use the -info option to read the licensing information.\n"); exit(1); } main(int argc, char *argv[]) { int c, i; int batchMode = 0; int interlace = 0, batchInterlace = 0; int print = 0; int stripComments = 0, printComments = 0; int addTrans = 0, optimize = 0; char *transPixel = NULL, *outFile = NULL; char *addComment = NULL; GIFStream *stream; int idx; int stdinMode = 0; for (idx = 1; idx < argc && (argv[idx][0] == '-' || argv[idx][0] == '+'); idx++) { char *arg = argv[idx]; if (strcmp(arg, "-O") == 0) { optimize++; } else if (strcmp(arg, "-B") == 0) { batchMode = 1; } else if (strcmp(arg, "+i") == 0) { interlace = -1; } else if (strcmp(arg, "-i") == 0) { interlace = 1; } else if (strcmp(arg, "-c") == 0) { printComments = 1; print++; } else if (strncmp(arg, "+c", 2) == 0) { if (strlen(arg) != 2) arg += 2; else arg = argv[++idx]; if (idx == argc) usage(); addComment = arg; } else if (strcmp(arg, "-C") == 0) { stripComments++; } else if (strcmp(arg, "-p") == 0) { print++; } else if (strncmp(arg, "-o", 2) == 0) { if (strlen(arg) != 2) arg += 2; else arg = argv[++idx]; if (idx == argc) usage(); outFile = arg; } else if (strncmp(arg, "-rgb", 4) == 0) { if (strlen(arg) != 4) arg += 4; else arg = argv[++idx]; if (idx == argc) usage(); if (isdigit(*arg) && strchr(arg, ',') == NULL) { static char buf[24]; if (idx == argc-2) usage(); sprintf(buf, "%d,%d,%d", arg, argv[idx+1], argv[idx+2]); idx += 2; transPixel = buf; } else { transPixel = arg; } } else if (isdigit(arg[1])) { transPixel = arg+1; } else if (strcmp(arg, "--") == 0) { idx++; break; } else if (strcmp(arg, "-info") == 0) { info(); } else { if (strcmp(arg, "-help") != 0) printf("Unrecognized option %s\n", arg); usage(); } } if (outFile != NULL && batchMode) { fprintf(stderr,"Error: You can't use both the -o and -B options\n"); usage(); } if (!batchMode && !print) { if (argc - idx > 1) usage(); } if (idx == argc) { argc++; stdinMode = 1; batchMode = 0; } for (i = idx; i < argc; i++) { GIFStream *stream; char *frm; if (stdinMode) { stream = GIFReadFP(stdin); frm = NULL; } else { frm = argv[i]; stream = GIFRead(frm); } if (print) { GIFDump(frm, stream, printComments); } else { int status; char *out; if (stripComments) stripComment(stream); addComments(stream, addComment); if (transPixel != NULL) setTransparent(stream, transPixel); if (interlace != 0) setInterlace(stream, interlace); if (batchMode) { status = GIFWrite(argv[i], stream, optimize); out = argv[i]; } else { if (outFile == NULL) { status = GIFWriteFP(stdout, stream, optimize); out = "<STDOUT>"; } else { status = GIFWrite(outFile, stream, optimize); out = outFile; } } if (status) fprintf(stderr, "error writing %s\n", out); GIFFree(stream); } } }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.