#!/usr/bin/perl -w

use Gimp;
use Gimp::Fu;
use strict;
use warnings;

# XPM's that I removed the $ and the @'s from (they get interpreted in
# strings, which makes for nasty problems).
our @arr = (
["24 24 66 1",
" 	c None",
".	c #A0A0A0",
"+	c #A2A2A2",
"X	c #787878",
"#	c #7B7B7B",
"Z	c #A8A8A8",
"%	c #AAAAAA",
"&	c #848484",
"*	c #868686",
"=	c #B0B0B0",
"-	c #B2B2B2",
";	c #8F8F8F",
">	c #929292",
",	c #B8B8B8",
"'	c #BABABA",
")	c #9B9B9B",
"!	c #9E9E9E",
"~	c #C0C0C0",
"{	c #C2C2C2",
"]	c #A7A7A7",
"^	c #C7C7C7",
"/	c #C9C9C9",
"(	c #B3B3B3",
"_	c #B5B5B5",
":	c #A4A4A4",
"<	c #7E7E7E",
"[	c #ACACAC",
"}	c #898989",
"|	c #B4B4B4",
"1	c #959595",
"2	c #BCBCBC",
"3	c #A1A1A1",
"4	c #C3C3C3",
"5	c #ADADAD",
"6	c #CCCCCC",
"7	c #CFCFCF",
"8	c #D2D2D2",
"9	c #D3D3D3",
"0	c #BEBEBE",
"a	c #C1C1C1",
"b	c #C4C4C4",
"c	c #D8D8D8",
"d	c #D9D9D9",
"e	c #DBDBDB",
"f	c #CACACA",
"g	c #CDCDCD",
"h	c #D0D0D0",
"i	c #DFDFDF",
"j	c #E1E1E1",
"k	c #E3E3E3",
"l	c #D6D6D6",
"m	c #DCDCDC",
"n	c #E7E7E7",
"o	c #E9E9E9",
"p	c #EBEBEB",
"q	c #E2E2E2",
"r	c #E4E4E4",
"s	c #EFEFEF",
"t	c #F1F1F1",
"u	c #F3F3F3",
"v	c #EDEDED",
"w	c #F0F0F0",
"x	c #F7F7F7",
"y	c #F9F9F9",
"z	c #FBFBFB",
"W      c #000000",
"WWWWWWWWWWWWWWWWWWWWWWWW",
"W:#<%[*}-|>1'2!3{4%5/6_W",
"W#Z%&*=-;>,')!~{]%^/(_7W",
"W<%[*}-|>1'2!3{4%5/6_,8W",
"W%&*=-;>,')!~{]%^/(_780W",
"W[*}-|>1'2!3{4%5/6_,89aW",
"W*=-;>,')!~{]%^/(_780acW",
"W}-|>1'2!3{4%5/6_,89abdW",
"W-;>,')!~{]%^/(_780acdfW",
"W|>1'2!3{4%5/6_,89abdegW",
"W>,')!~{]%^/(_780acdfgiW",
"W1'2!3{4%5/6_,89abdeghjW",
"W')!~{]%^/(_780acdfgijlW",
"W2!3{4%5/6_,89abdeghjkdW",
"W!~{]%^/(_780acdfgijldnW",
"W3{4%5/6_,89abdeghjkdmoW",
"W{]%^/(_780acdfgijldnoqW",
"W4%5/6_,89abdeghjkdmoprW",
"W%^/(_780acdfgijldnoqrsW",
"W5/6_,89abdeghjkdmoprntW",
"W/(_780acdfgijldnoqrstvW",
"W6_,89abdeghjkdmoprntuwW",
"W_780acdfgijldnoqrstvwxW",
"WWWWWWWWWWWWWWWWWWWWWWWW"
],
["24 24 47 1",
" 	c None",
".	c #A0A0A0",
"+	c #A4A4A4",
"X	c #7E7E7E",
"#	c #848484",
"Z	c #B0B0B0",
"%	c #B4B4B4",
"&	c #959595",
"*	c #9B9B9B",
"=	c #C0C0C0",
"-	c #C3C3C3",
";	c #ADADAD",
">	c #B3B3B3",
",	c #CFCFCF",
"'	c #D3D3D3",
")	c #C4C4C4",
"!	c #CACACA",
"~	c #DFDFDF",
"{	c #E3E3E3",
"]	c #DCDCDC",
"^	c #E2E2E2",
"/	c #EFEFEF",
"(	c #F3F3F3",
"_	c #F9F9F9",
":	c #727272",
"<	c #787878",
"[	c #A8A8A8",
"}	c #ACACAC",
"|	c #898989",
"1	c #8F8F8F",
"2	c #B8B8B8",
"3	c #BCBCBC",
"4	c #A1A1A1",
"5	c #A7A7A7",
"6	c #C7C7C7",
"7	c #CCCCCC",
"8	c #BEBEBE",
"9	c #D8D8D8",
"0	c #DBDBDB",
"a	c #D0D0D0",
"b	c #D6D6D6",
"c	c #E7E7E7",
"d	c #EBEBEB",
"e	c #EDEDED",
"f	c #F7F7F7",
"g	c #FBFBFB",
"W      c #000000",
"WWWWWWWWWWWWWWWWWWWWWWWW",
"W+X#Z%&*=-;>,')!~{]^/((W",
"W<[}|12345672890abcdcefW",
"W<[}|12345672890abcdcefW",
"W+X#Z%&*=-;>,')!~{]^/((W",
"W+X#Z%&*=-;>,')!~{]^/((W",
"W<[}|12345672890abcdcefW",
"W<[}|12345672890abcdcefW",
"W+X#Z%&*=-;>,')!~{]^/((W",
"W+X#Z%&*=-;>,')!~{]^/((W",
"W<[}|12345672890abcdcefW",
"W<[}|12345672890abcdcefW",
"W+X#Z%&*=-;>,')!~{]^/((W",
"W+X#Z%&*=-;>,')!~{]^/((W",
"W<[}|12345672890abcdcefW",
"W<[}|12345672890abcdcefW",
"W+X#Z%&*=-;>,')!~{]^/((W",
"W+X#Z%&*=-;>,')!~{]^/((W",
"W<[}|12345672890abcdcefW",
"W<[}|12345672890abcdcefW",
"W+X#Z%&*=-;>,')!~{]^/((W",
"W+X#Z%&*=-;>,')!~{]^/((W",
"W<[}|12345672890abcdcefW",
"WWWWWWWWWWWWWWWWWWWWWWWW"
],
["24 24 65 1",
" 	c None",
".	c #CFCFCF",
"+	c #D2D2D2",
"X	c #BEBEBE",
"#	c #C1C1C1",
"Z	c #D8D8D8",
"%	c #D9D9D9",
"&	c #CACACA",
"*	c #CDCDCD",
"=	c #DFDFDF",
"-	c #E1E1E1",
";	c #D6D6D6",
">	c #E7E7E7",
",	c #E9E9E9",
"'	c #E2E2E2",
")	c #E4E4E4",
"!	c #EFEFEF",
"~	c #F1F1F1",
"{	c #EDEDED",
"]	c #F0F0F0",
"^	c #F7F7F7",
"/	c #F9F9F9",
"(	c #FCFCFC",
"_	c #BCBCBC",
":	c #D5D5D5",
"<	c #C7C7C7",
"[	c #DDDDDD",
"}	c #D3D3D3",
"|	c #E5E5E5",
"1	c #DEDEDE",
"2	c #EBEBEB",
"3	c #F5F5F5",
"4	c #F6F6F6",
"5	c #B3B3B3",
"6	c #B5B5B5",
"7	c #AFAFAF",
"8	c #C9C9C9",
"9	c #C6C6C6",
"0	c #A7A7A7",
"a	c #AAAAAA",
"b	c #A4A4A4",
"c	c #C0C0C0",
"d	c #C2C2C2",
"e	c #BDBDBD",
"f	c #9B9B9B",
"g	c #9E9E9E",
"h	c #989898",
"i	c #B8B8B8",
"j	c #BABABA",
"k	c #B6B6B6",
"l	c #8F8F8F",
"m	c #929292",
"n	c #8D8D8D",
"o	c #B0B0B0",
"p	c #B2B2B2",
"q	c #AEAEAE",
"r	c #848484",
"s	c #868686",
"t	c #808080",
"u	c #A8A8A8",
"v	c #A6A6A6",
"w	c #787878",
"x	c #7B7B7B",
"y	c #757575",
"W      c #000000",
"WWWWWWWWWWWWWWWWWWWWWWWW",
"W._X:Z<&[=};|>1'{!2{3^4W",
"W6.+X#Z%&*=-;%>,')!~{]^W",
"W5*._X:Z<&[=};|>1'{!2{3W",
"W856.+X#Z%&*=-;%>,')!~{W",
"W<75*._X:Z<&[=};|>1'{!2W",
"Wa<856.+X#Z%&*=-;%>,')!W",
"W09<75*._X:Z<&[=};|>1'{W",
"Wd0a<856.+X#Z%&*=-;%>,'W",
"Wcb09<75*._X:Z<&[=};|>1W",
"Wgcd0a<856.+X#Z%&*=-;%>W",
"Wfecb09<75*._X:Z<&[=};|W",
"Wjfgcd0a<856.+X#Z%&*=-;W",
"Wihfecb09<75*._X:Z<&[=}W",
"Wmijfgcd0a<856.+X#Z%&*=W",
"Wlkihfecb09<75*._X:Z<&[W",
"Wplmijfgcd0a<856.+X#Z%&W",
"Wonlkihfecb09<75*._X:Z<W",
"Wsoplmijfgcd0a<856.+X#ZW",
"Wrqonlkihfecb09<75*._X:W",
"Warsoplmijfgcd0a<856.+XW",
"Wutrqonlkihfecb09<75*._W",
"Wxuarsoplmijfgcd0a<856.W",
"WWWWWWWWWWWWWWWWWWWWWWWW"
],
[ "24 24 47 1",
" 	c None",
".	c #A0A0A0",
"+	c #727272",
"X	c #A4A4A4",
"#	c #787878",
"Z	c #7E7E7E",
"%	c #A8A8A8",
"&	c #848484",
"*	c #ACACAC",
"=	c #B0B0B0",
"-	c #898989",
";	c #B4B4B4",
">	c #8F8F8F",
",	c #959595",
"'	c #B8B8B8",
")	c #9B9B9B",
"!	c #BCBCBC",
"~	c #C0C0C0",
"{	c #A1A1A1",
"]	c #C3C3C3",
"^	c #A7A7A7",
"/	c #ADADAD",
"(	c #C7C7C7",
"_	c #B3B3B3",
":	c #CCCCCC",
"<	c #CFCFCF",
"[	c #D3D3D3",
"}	c #BEBEBE",
"|	c #C4C4C4",
"1	c #D8D8D8",
"2	c #CACACA",
"3	c #DBDBDB",
"4	c #DFDFDF",
"5	c #D0D0D0",
"6	c #E3E3E3",
"7	c #D6D6D6",
"8	c #DCDCDC",
"9	c #E7E7E7",
"0	c #E2E2E2",
"a	c #EBEBEB",
"b	c #EFEFEF",
"c	c #F3F3F3",
"d	c #EDEDED",
"e	c #F7F7F7",
"f	c #F9F9F9",
"g	c #FBFBFB",
"W      c #000000",
"WWWWWWWWWWWWWWWWWWWWWWWW",
"WX##XX##XX##XX##XX##XX#W",
"WZ%%ZZ%%ZZ%%ZZ%%ZZ%%ZZ%W",
"W&**&&**&&**&&**&&**&&*W",
"W=--==--==--==--==--==-W",
"W;>>;;>>;;>>;;>>;;>>;;>W",
"W,'',,'',,'',,'',,'',,'W",
"W)!!))!!))!!))!!))!!))!W",
"W~{{~~{{~~{{~~{{~~{{~~{W",
"W]^^]]^^]]^^]]^^]]^^]]^W",
"W/((//((//((//((//((//(W",
"W_::__::__::__::__::__:W",
"W<''<<''<<''<<''<<''<<'W",
"W[}}[[}}[[}}[[}}[[}}[[}W",
"W|11||11||11||11||11||1W",
"W2332233223322332233223W",
"W4554455445544554455445W",
"W6776677667766776677667W",
"W8998899889988998899889W",
"W0aa00aa00aa00aa00aa00aW",
"Wb99bb99bb99bb99bb99bb9W",
"WcddccddccddccddccddccdW",
"WceecceecceecceecceecceW",
"WWWWWWWWWWWWWWWWWWWWWWWW"
],
[
"24 24 79 1",
" 	c None",
".	c #A0A0A0",
"+	c #727272",
"X	c #A2A2A2",
"#	c #A4A4A4",
"Z	c #7B7B7B",
"%	c #7D7D7D",
"&	c #A8A8A8",
"*	c #A7A7A7",
"=	c #797979",
"-	c #A3A3A3",
";	c #A6A6A6",
">	c #808080",
",	c #848484",
"'	c #AEAEAE",
")	c #AFAFAF",
"!	c #898989",
"~	c #ACACAC",
"{	c #A9A9A9",
"]	c #ADADAD",
"^	c #8B8B8B",
"/	c #8F8F8F",
"(	c #B6B6B6",
"_	c #B7B7B7",
":	c #959595",
"<	c #949494",
"[	c #B4B4B4",
"}	c #868686",
"|	c #A5A5A5",
"1	c #ABABAB",
"2	c #909090",
"3	c #B8B8B8",
"4	c #BBBBBB",
"5	c #9E9E9E",
"6	c #C0C0C0",
"7	c #BFBFBF",
"8	c #9A9A9A",
"9	c #828282",
"0	c #B0B0B0",
"a	c #939393",
"b	c #C3C3C3",
"c	c #C7C7C7",
"d	c #8A8A8A",
"e	c #BCBCBC",
"f	c #C1C1C1",
"g	c #AAAAAA",
"h	c #CDCDCD",
"i	c #CFCFCF",
"j	c #CACACA",
"k	c #BABABA",
"l	c #D4D4D4",
"m	c #D6D6D6",
"n	c #C4C4C4",
"o	c #D1D1D1",
"p	c #D2D2D2",
"q	c #D8D8D8",
"r	c #CECECE",
"s	c #DFDFDF",
"t	c #DEDEDE",
"u	c #CCCCCC",
"v	c #B1B1B1",
"w	c #757575",
"x	c #DDDDDD",
"y	c #DADADA",
"z	c #E7E7E7",
"A	c #E6E6E6",
"B	c #E9E9E9",
"C	c #EDEDED",
"D	c #E4E4E4",
"E	c #E2E2E2",
"F	c #C5C5C5",
"G	c #F4F4F4",
"H	c #F3F3F3",
"I	c #EEEEEE",
"J	c #FFFFFF",
"K	c #F7F7F7",
"L	c #DCDCDC",
"M	c #7E7E7E",
"W      c #000000",
"WWWWWWWWWWWWWWWWWWWWWWWW",
"W.++..++X#Z%&*Z=X.++..+W",
"W+..++-;>,')!!'~>Z-.++.W",
"W+..+={]^/(_:<([^}{#++.W",
"W.++|1!2345.67583[!9|.+W",
"W.+=10a87b{~cc{|74ad1#+W",
"W+-{!aefg0hi3_hjg-e(!>-W",
"W+;]28fc[klmnblo[~f42};W",
"WX>^37g[pqjrstjnpug.3v>W",
"W#,/4b0kqxlyzAlhqo0|4[,W",
"WZ'(5{hljlBCzDBEj7hF5a'W",
"W%)_.~imryCGHICArbic.<)W",
"W&!:6c3nszzHJKzLsq3]63!W",
"W*!<7c_btADIKGDytm_~7_!W",
"WZ'(5{hljlBCzDBEj7hF5a'W",
"W=~[8|jonhEALyExnkjb8/~W",
"WX>^37g[pqjrstjnpug.3v>W",
"W.Z}[4-~uo7bqm7kuc-8[]ZW",
"W+-{!aefg0hi3_hjg-e(!>-W",
"W+.#9d(4.|Fc]~Fb.8(09=.W",
"W.++|1!2345.67583[!9|.+W",
"W.++.#>}v[a<3_a/v]>=..+W",
"W+..++-;>,')!!'~>Z-.++.W",
"WWWWWWWWWWWWWWWWWWWWWWWW"
],
["24 24 46 1",
" 	c None",
".	c #FFFFFF",
"+	c #FBFBFB",
"X	c #F9F9F9",
"#	c #F3F3F3",
"Z	c #F7F7F7",
"%	c #EDEDED",
"&	c #EFEFEF",
"*	c #E7E7E7",
"=	c #EBEBEB",
"-	c #E2E2E2",
";	c #DCDCDC",
">	c #D6D6D6",
",	c #E3E3E3",
"'	c #DFDFDF",
")	c #D0D0D0",
"!	c #DBDBDB",
"~	c #CACACA",
"{	c #C4C4C4",
"]	c #D8D8D8",
"^	c #BEBEBE",
"/	c #D3D3D3",
"(	c #CFCFCF",
"_	c #B8B8B8",
":	c #CCCCCC",
"<	c #B3B3B3",
"[	c #ADADAD",
"}	c #C7C7C7",
"|	c #A7A7A7",
"1	c #C3C3C3",
"2	c #C0C0C0",
"3	c #A1A1A1",
"4	c #BCBCBC",
"5	c #9B9B9B",
"6	c #959595",
"7	c #8F8F8F",
"8	c #B4B4B4",
"9	c #B0B0B0",
"0	c #898989",
"a	c #ACACAC",
"b	c #848484",
"c	c #7E7E7E",
"d	c #A8A8A8",
"e	c #787878",
"f	c #A4A4A4",
"W      c #000000",
"WWWWWWWWWWWWWWWWWWWWWWWW",
"W+XX++XX++XX++XX++XX++XW",
"W#ZZ##ZZ##ZZ##ZZ##ZZ##ZW",
"W%##%%##%%##%%##%%##%%#W",
"W&**&&**&&**&&**&&**&&*W",
"W=--==--==--==--==--==-W",
"W;**;;**;;**;;**;;**;;*W",
"W>,,>>,,>>,,>>,,>>,,>>,W",
"W'))''))''))''))''))'')W",
"W!~~!!~~!!~~!!~~!!~~!!~W",
"W{]]{{]]{{]]{{]]{{]]{{]W",
"W^//^^//^^//^^//^^//^^/W",
"W(__((__((__((__((__((_W",
"W:<<::<<::<<::<<::<<::<W",
"W[}}[[}}[[}}[[}}[[}}[[}W",
"W|11||11||11||11||11||1W",
"W2332233223322332233223W",
"W4554455445544554455445W",
"W6__66__66__66__66__66_W",
"W7887788778877887788778W",
"W9009900990099009900990W",
"WabbaabbaabbaabbaabbaabW",
"WcddccddccddccddccddccdW",
"WWWWWWWWWWWWWWWWWWWWWWWW"
],
[ "24 24 65 1",
" 	c None",
".	c #CFCFCF",
"+	c #CDCDCD",
"X	c #B3B3B3",
"#	c #AFAFAF",
"Z	c #C7C7C7",
"%	c #C6C6C6",
"&	c #A7A7A7",
"*	c #A4A4A4",
"=	c #C0C0C0",
"-	c #BDBDBD",
";	c #9B9B9B",
">	c #989898",
",	c #B8B8B8",
"'	c #B6B6B6",
")	c #8F8F8F",
"!	c #8D8D8D",
"~	c #B0B0B0",
"{	c #AEAEAE",
"]	c #848484",
"^	c #808080",
"/	c #A8A8A8",
"(	c #A6A6A6",
"_	c #787878",
":	c #757575",
"<	c #D2D2D2",
"[	c #B5B5B5",
"}	c #C9C9C9",
"|	c #AAAAAA",
"1	c #C2C2C2",
"2	c #9E9E9E",
"3	c #BABABA",
"4	c #929292",
"5	c #B2B2B2",
"6	c #868686",
"7	c #7B7B7B",
"8	c #BEBEBE",
"9	c #BCBCBC",
"0	c #C1C1C1",
"a	c #D8D8D8",
"b	c #D5D5D5",
"c	c #D9D9D9",
"d	c #CACACA",
"e	c #DFDFDF",
"f	c #DDDDDD",
"g	c #E1E1E1",
"h	c #D6D6D6",
"i	c #D3D3D3",
"j	c #E7E7E7",
"k	c #E5E5E5",
"l	c #E9E9E9",
"m	c #E2E2E2",
"n	c #DEDEDE",
"o	c #E4E4E4",
"p	c #EFEFEF",
"q	c #EDEDED",
"r	c #F1F1F1",
"s	c #EBEBEB",
"t	c #F0F0F0",
"u	c #F7F7F7",
"v	c #F5F5F5",
"w	c #F9F9F9",
"x	c #F6F6F6",
"y	c #FCFCFC",
"W      c #000000",
"WWWWWWWWWWWWWWWWWWWWWWWW",
"W.[X}Z|&1=2;3,4)5~6]|/7W",
"W9.+X#Z%&*=-;>,')!~{]^/W",
"W8<.[X}Z|&1=2;3,4)5~6]|W",
"Wb89.+X#Z%&*=-;>,')!~{]W",
"Wa08<.[X}Z|&1=2;3,4)5~6W",
"WZab89.+X#Z%&*=-;>,')!~W",
"Wdca08<.[X}Z|&1=2;3,4)5W",
"WfdZab89.+X#Z%&*=-;>,')W",
"We+dca08<.[X}Z|&1=2;3,4W",
"WiefdZab89.+X#Z%&*=-;>,W",
"Whge+dca08<.[X}Z|&1=2;3W",
"WkhiefdZab89.+X#Z%&*=-;W",
"Wjchge+dca08<.[X}Z|&1=2W",
"WnjkhiefdZab89.+X#Z%&*=W",
"Wmljchge+dca08<.[X}Z|&1W",
"WqmnjkhiefdZab89.+X#Z%&W",
"Wpomljchge+dca08<.[X}Z|W",
"WspqmnjkhiefdZab89.+X#ZW",
"Wqrpomljchge+dca08<.[X}W",
"WvqspqmnjkhiefdZab89.+XW",
"Wutqrpomljchge+dca08<.[W",
"WxuvqspqmnjkhiefdZab89.W",
"WWWWWWWWWWWWWWWWWWWWWWWW"
],
[
"24 24 46 1",
" 	c None",
".	c #FFFFFF",
"+	c #FBFBFB",
"X	c #F3F3F3",
"#	c #EDEDED",
"Z	c #EFEFEF",
"%	c #EBEBEB",
"&	c #DCDCDC",
"*	c #D6D6D6",
"=	c #DFDFDF",
"-	c #DBDBDB",
";	c #C4C4C4",
">	c #BEBEBE",
",	c #CFCFCF",
"'	c #CCCCCC",
")	c #ADADAD",
"!	c #A7A7A7",
"~	c #C0C0C0",
"{	c #BCBCBC",
"]	c #959595",
"^	c #8F8F8F",
"/	c #B0B0B0",
"(	c #ACACAC",
"_	c #7E7E7E",
":	c #787878",
"<	c #F9F9F9",
"[	c #F7F7F7",
"}	c #E7E7E7",
"|	c #E2E2E2",
"1	c #E3E3E3",
"2	c #D0D0D0",
"3	c #CACACA",
"4	c #D8D8D8",
"5	c #D3D3D3",
"6	c #B8B8B8",
"7	c #B3B3B3",
"8	c #C7C7C7",
"9	c #C3C3C3",
"0	c #A1A1A1",
"a	c #9B9B9B",
"b	c #B4B4B4",
"c	c #898989",
"d	c #848484",
"e	c #A8A8A8",
"f	c #A4A4A4",
"W      c #000000",
"WWWWWWWWWWWWWWWWWWWWWWWW",
"W+X#Z%&*=-;>,')!~{]^/(_W",
"W<[X}|}1234567890a6bcdeW",
"W<[X}|}1234567890a6bcdeW",
"W+X#Z%&*=-;>,')!~{]^/(_W",
"W+X#Z%&*=-;>,')!~{]^/(_W",
"W<[X}|}1234567890a6bcdeW",
"W<[X}|}1234567890a6bcdeW",
"W+X#Z%&*=-;>,')!~{]^/(_W",
"W+X#Z%&*=-;>,')!~{]^/(_W",
"W<[X}|}1234567890a6bcdeW",
"W<[X}|}1234567890a6bcdeW",
"W+X#Z%&*=-;>,')!~{]^/(_W",
"W+X#Z%&*=-;>,')!~{]^/(_W",
"W<[X}|}1234567890a6bcdeW",
"W<[X}|}1234567890a6bcdeW",
"W+X#Z%&*=-;>,')!~{]^/(_W",
"W+X#Z%&*=-;>,')!~{]^/(_W",
"W<[X}|}1234567890a6bcdeW",
"W<[X}|}1234567890a6bcdeW",
"W+X#Z%&*=-;>,')!~{]^/(_W",
"W+X#Z%&*=-;>,')!~{]^/(_W",
"W<[X}|}1234567890a6bcdeW",
"WWWWWWWWWWWWWWWWWWWWWWWW"
],
[
"24 24 62 1",
" 	c None",
".	c #FFFFFF",
"+	c #FDFDFD",
"X	c #F9F9F9",
"#	c #F6F6F6",
"Z	c #F7F7F7",
"%	c #F5F5F5",
"&	c #EDEDED",
"*	c #EBEBEB",
"=	c #EFEFEF",
"-	c #E2E2E2",
";	c #DEDEDE",
">	c #E7E7E7",
",	c #E5E5E5",
"'	c #D6D6D6",
")	c #D3D3D3",
"!	c #DFDFDF",
"~	c #DDDDDD",
"{	c #CACACA",
"]	c #C7C7C7",
"^	c #D8D8D8",
"/	c #D5D5D5",
"(	c #BEBEBE",
"_	c #BCBCBC",
":	c #FBFBFB",
"<	c #F3F3F3",
"[	c #DCDCDC",
"}	c #E3E3E3",
"|	c #D0D0D0",
"1	c #DBDBDB",
"2	c #C4C4C4",
"3	c #B8B8B8",
"4	c #CFCFCF",
"5	c #CDCDCD",
"6	c #CCCCCC",
"7	c #B3B3B3",
"8	c #AFAFAF",
"9	c #ADADAD",
"0	c #C6C6C6",
"a	c #C3C3C3",
"b	c #A7A7A7",
"c	c #A4A4A4",
"d	c #A1A1A1",
"e	c #C0C0C0",
"f	c #BDBDBD",
"g	c #9B9B9B",
"h	c #989898",
"i	c #959595",
"j	c #B6B6B6",
"k	c #B4B4B4",
"l	c #8F8F8F",
"m	c #8D8D8D",
"n	c #898989",
"o	c #B0B0B0",
"p	c #AEAEAE",
"q	c #ACACAC",
"r	c #848484",
"s	c #808080",
"t	c #7E7E7E",
"u	c #A8A8A8",
"v	c #A6A6A6",
"W      c #000000",
"WWWWWWWWWWWWWWWWWWWWWWWW",
"W:#<%<*>&*;[,})|~1]2/)_W",
"W#Z%&*=&-;>,')!~{]^/(_4W",
"W<%<*>&*;[,})|~1]2/)_35W",
"W%&*=&-;>,')!~{]^/(_457W",
"W<*>&*;[,})|~1]2/)_3568W",
"W*=&-;>,')!~{]^/(_4578]W",
"W>&*;[,})|~1]2/)_356890W",
"W&-;>,')!~{]^/(_4578]0bW",
"W*;[,})|~1]2/)_356890acW",
"W;>,')!~{]^/(_4578]0bceW",
"W[,})|~1]2/)_356890acdfW",
"W,')!~{]^/(_4578]0bcefgW",
"W})|~1]2/)_356890acdf_hW",
"W)!~{]^/(_4578]0bcefgh3W",
"W|~1]2/)_356890acdf_hijW",
"W~{]^/(_4578]0bcefgh3jlW",
"W1]2/)_356890acdf_hijkmW",
"W]^/(_4578]0bcefgh3jlmoW",
"W2/)_356890acdf_hijkmnpW",
"W/(_4578]0bcefgh3jlmoprW",
"W)_356890acdf_hijkmnpqsW",
"W_4578]0bcefgh3jlmoprsuW",
"WWWWWWWWWWWWWWWWWWWWWWWW"
]);

sub avg { ($_[0] + $_[1]) / 2 }

podregister {
  $drawable->become('Gimp::Layer');
  $image->undo_group_start;
  my @bounds = $image->selection_bounds;
  $drawable->add_alpha unless $drawable->has_alpha;
  my $mask;
  unless ($mask = $drawable->get_mask) {
    $mask = $drawable->create_mask(ADD_MASK_ALPHA);
    $drawable->add_mask($mask);
  }
  Gimp::Context->push;
  Gimp::Context->set_background([0.0,0.0,0.0,1.0]);
  Gimp::Context->set_foreground([1.0,1.0,1.0,1.0]);
  # Direction Map
  # 0 3 6
  # 1 4 7
  # 2 5 8
  # Bounds Map
  # (1,2) (3,2)
  # (1,4) (3,4)
  my @blend_args = (
    BLEND_FG_BG_RGB, LAYER_MODE_NORMAL_LEGACY,
    ($direction == 4 ? GRADIENT_RADIAL : GRADIENT_LINEAR),
    100.0,       # opacity
    0.0,         # offset
    REPEAT_NONE,
    0,           # reverse
    0,           # supersample
    1,           # recursion levels
    0.1,         # supersample threshold
    0,		 # dither
  );
  my %dir2argfunc = (
    0 => sub { @_[3, 4, 1, 2] },
    1 => sub { ($_[3], avg(@_[2,4]), $_[1], avg(@_[2,4])) },
    2 => sub { @_[3, 2, 1, 4] },
    3 => sub { (avg(@_[1,3]), $_[4], avg(@_[1,3]), $_[2]) },
    4 => sub { (avg(@_[1,3]), avg(@_[2,4]), avg(@_[1,3]), $_[4]) }, # radial
    5 => sub { (avg(@_[1,3]), $_[2], avg(@_[1,3]), $_[4]) },
    6 => sub { @_[1, 4, 3, 2] },
    7 => sub { ($_[1], avg(@_[2,4]), $_[3], avg(@_[2,4])) },
    8 => sub { @_[1, 2, 3, 4] },
  );
  $mask->edit_blend(@blend_args, $dir2argfunc{$direction}->(@bounds));
  $drawable->remove_mask(MASK_APPLY) if $direction >=0 && $direction <9;
  Gimp::Context->pop;
  $image->undo_group_end;
};

exit main;
__END__

=head1 NAME

alpha_fade - Fade the alpha channel of a layer from one side to another

=head1 SYNOPSIS

<Image>/Layer/Transparency/_Fade...

=head1 DESCRIPTION

Inspired by a mailing list question that asked how to do exactly what this
does, which is fade the alpha from one side to another. Original by Seth
Burgess, rewritten by Ed J to use Gimp::Fu as demo of PF_CUSTOM widget.

=head1 PARAMETERS

  [PF_CUSTOM, "direction", "Direction to fade(0-8)", 4, sub {
     my $btnTable = new Gtk2::Table(3,3,1);
     $btnTable->set_border_width(6);
     my $btn = new Gtk2::RadioButton;
     my ($u_direction, @buttons);
     for (my $x=0;$x<3;$x++) {
       for (my $y=0;$y<3;$y++) {
	 my $dir = $x*3 + $y;
	 $buttons[$dir] = $btn = Gtk2::RadioButton->new_from_widget($btn);
	 $btn->set_mode(0);
	 $btn->signal_connect("clicked", sub { $u_direction = $_[1]; }, $dir);
	 $btn->show;
	 $btnTable->attach_defaults($btn, $x, $x+1, $y, $y+1);
	 my $pixmap = Gtk2::Image->new_from_pixmap(
	   Gtk2::Gdk::Pixmap->colormap_create_from_xpm_d(
	     undef, $btn->get_colormap,
	     $btn->style->bg('normal'), @{$::arr[$dir]}
	   )
	 );
	 $pixmap->show;
	 $btn->add($pixmap);
       }
     }
     $btnTable->show;
     ($btnTable, sub { $buttons[$_[0]]->clicked }, sub { $u_direction });
  },
  ]

=head1 IMAGE TYPES

*

=head1 HISTORY

  2014/04/20 Ed J: rewrite to use Gimp::Fu and PF_CUSTOM
  12/5/03: <sjburges@gimp.org>
   s/->mask/->get_mask
  3/21/04: <sjburges@gimp.org>
   s/AlphaFade/alpha_fade/ to be compatible with PDB naming conventions

=head1 AUTHOR

Seth Burgess

=head1 DATE

2000

=head1 LICENSE

Copyright Seth Burgess.

Distributed under the same terms as Gimp-Perl.
