1#!/usr/bin/perl -w
2
3use Gimp;
4use Gimp::Fu;
5use strict;
6use warnings;
7
8# XPM's that I removed the $ and the @'s from (they get interpreted in
9# strings, which makes for nasty problems).
10our @arr = (
11["24 24 66 1",
12" 	c None",
13".	c #A0A0A0",
14"+	c #A2A2A2",
15"X	c #787878",
16"#	c #7B7B7B",
17"Z	c #A8A8A8",
18"%	c #AAAAAA",
19"&	c #848484",
20"*	c #868686",
21"=	c #B0B0B0",
22"-	c #B2B2B2",
23";	c #8F8F8F",
24">	c #929292",
25",	c #B8B8B8",
26"'	c #BABABA",
27")	c #9B9B9B",
28"!	c #9E9E9E",
29"~	c #C0C0C0",
30"{	c #C2C2C2",
31"]	c #A7A7A7",
32"^	c #C7C7C7",
33"/	c #C9C9C9",
34"(	c #B3B3B3",
35"_	c #B5B5B5",
36":	c #A4A4A4",
37"<	c #7E7E7E",
38"[	c #ACACAC",
39"}	c #898989",
40"|	c #B4B4B4",
41"1	c #959595",
42"2	c #BCBCBC",
43"3	c #A1A1A1",
44"4	c #C3C3C3",
45"5	c #ADADAD",
46"6	c #CCCCCC",
47"7	c #CFCFCF",
48"8	c #D2D2D2",
49"9	c #D3D3D3",
50"0	c #BEBEBE",
51"a	c #C1C1C1",
52"b	c #C4C4C4",
53"c	c #D8D8D8",
54"d	c #D9D9D9",
55"e	c #DBDBDB",
56"f	c #CACACA",
57"g	c #CDCDCD",
58"h	c #D0D0D0",
59"i	c #DFDFDF",
60"j	c #E1E1E1",
61"k	c #E3E3E3",
62"l	c #D6D6D6",
63"m	c #DCDCDC",
64"n	c #E7E7E7",
65"o	c #E9E9E9",
66"p	c #EBEBEB",
67"q	c #E2E2E2",
68"r	c #E4E4E4",
69"s	c #EFEFEF",
70"t	c #F1F1F1",
71"u	c #F3F3F3",
72"v	c #EDEDED",
73"w	c #F0F0F0",
74"x	c #F7F7F7",
75"y	c #F9F9F9",
76"z	c #FBFBFB",
77"W      c #000000",
78"WWWWWWWWWWWWWWWWWWWWWWWW",
79"W:#<%[*}-|>1'2!3{4%5/6_W",
80"W#Z%&*=-;>,')!~{]%^/(_7W",
81"W<%[*}-|>1'2!3{4%5/6_,8W",
82"W%&*=-;>,')!~{]%^/(_780W",
83"W[*}-|>1'2!3{4%5/6_,89aW",
84"W*=-;>,')!~{]%^/(_780acW",
85"W}-|>1'2!3{4%5/6_,89abdW",
86"W-;>,')!~{]%^/(_780acdfW",
87"W|>1'2!3{4%5/6_,89abdegW",
88"W>,')!~{]%^/(_780acdfgiW",
89"W1'2!3{4%5/6_,89abdeghjW",
90"W')!~{]%^/(_780acdfgijlW",
91"W2!3{4%5/6_,89abdeghjkdW",
92"W!~{]%^/(_780acdfgijldnW",
93"W3{4%5/6_,89abdeghjkdmoW",
94"W{]%^/(_780acdfgijldnoqW",
95"W4%5/6_,89abdeghjkdmoprW",
96"W%^/(_780acdfgijldnoqrsW",
97"W5/6_,89abdeghjkdmoprntW",
98"W/(_780acdfgijldnoqrstvW",
99"W6_,89abdeghjkdmoprntuwW",
100"W_780acdfgijldnoqrstvwxW",
101"WWWWWWWWWWWWWWWWWWWWWWWW"
102],
103["24 24 47 1",
104" 	c None",
105".	c #A0A0A0",
106"+	c #A4A4A4",
107"X	c #7E7E7E",
108"#	c #848484",
109"Z	c #B0B0B0",
110"%	c #B4B4B4",
111"&	c #959595",
112"*	c #9B9B9B",
113"=	c #C0C0C0",
114"-	c #C3C3C3",
115";	c #ADADAD",
116">	c #B3B3B3",
117",	c #CFCFCF",
118"'	c #D3D3D3",
119")	c #C4C4C4",
120"!	c #CACACA",
121"~	c #DFDFDF",
122"{	c #E3E3E3",
123"]	c #DCDCDC",
124"^	c #E2E2E2",
125"/	c #EFEFEF",
126"(	c #F3F3F3",
127"_	c #F9F9F9",
128":	c #727272",
129"<	c #787878",
130"[	c #A8A8A8",
131"}	c #ACACAC",
132"|	c #898989",
133"1	c #8F8F8F",
134"2	c #B8B8B8",
135"3	c #BCBCBC",
136"4	c #A1A1A1",
137"5	c #A7A7A7",
138"6	c #C7C7C7",
139"7	c #CCCCCC",
140"8	c #BEBEBE",
141"9	c #D8D8D8",
142"0	c #DBDBDB",
143"a	c #D0D0D0",
144"b	c #D6D6D6",
145"c	c #E7E7E7",
146"d	c #EBEBEB",
147"e	c #EDEDED",
148"f	c #F7F7F7",
149"g	c #FBFBFB",
150"W      c #000000",
151"WWWWWWWWWWWWWWWWWWWWWWWW",
152"W+X#Z%&*=-;>,')!~{]^/((W",
153"W<[}|12345672890abcdcefW",
154"W<[}|12345672890abcdcefW",
155"W+X#Z%&*=-;>,')!~{]^/((W",
156"W+X#Z%&*=-;>,')!~{]^/((W",
157"W<[}|12345672890abcdcefW",
158"W<[}|12345672890abcdcefW",
159"W+X#Z%&*=-;>,')!~{]^/((W",
160"W+X#Z%&*=-;>,')!~{]^/((W",
161"W<[}|12345672890abcdcefW",
162"W<[}|12345672890abcdcefW",
163"W+X#Z%&*=-;>,')!~{]^/((W",
164"W+X#Z%&*=-;>,')!~{]^/((W",
165"W<[}|12345672890abcdcefW",
166"W<[}|12345672890abcdcefW",
167"W+X#Z%&*=-;>,')!~{]^/((W",
168"W+X#Z%&*=-;>,')!~{]^/((W",
169"W<[}|12345672890abcdcefW",
170"W<[}|12345672890abcdcefW",
171"W+X#Z%&*=-;>,')!~{]^/((W",
172"W+X#Z%&*=-;>,')!~{]^/((W",
173"W<[}|12345672890abcdcefW",
174"WWWWWWWWWWWWWWWWWWWWWWWW"
175],
176["24 24 65 1",
177" 	c None",
178".	c #CFCFCF",
179"+	c #D2D2D2",
180"X	c #BEBEBE",
181"#	c #C1C1C1",
182"Z	c #D8D8D8",
183"%	c #D9D9D9",
184"&	c #CACACA",
185"*	c #CDCDCD",
186"=	c #DFDFDF",
187"-	c #E1E1E1",
188";	c #D6D6D6",
189">	c #E7E7E7",
190",	c #E9E9E9",
191"'	c #E2E2E2",
192")	c #E4E4E4",
193"!	c #EFEFEF",
194"~	c #F1F1F1",
195"{	c #EDEDED",
196"]	c #F0F0F0",
197"^	c #F7F7F7",
198"/	c #F9F9F9",
199"(	c #FCFCFC",
200"_	c #BCBCBC",
201":	c #D5D5D5",
202"<	c #C7C7C7",
203"[	c #DDDDDD",
204"}	c #D3D3D3",
205"|	c #E5E5E5",
206"1	c #DEDEDE",
207"2	c #EBEBEB",
208"3	c #F5F5F5",
209"4	c #F6F6F6",
210"5	c #B3B3B3",
211"6	c #B5B5B5",
212"7	c #AFAFAF",
213"8	c #C9C9C9",
214"9	c #C6C6C6",
215"0	c #A7A7A7",
216"a	c #AAAAAA",
217"b	c #A4A4A4",
218"c	c #C0C0C0",
219"d	c #C2C2C2",
220"e	c #BDBDBD",
221"f	c #9B9B9B",
222"g	c #9E9E9E",
223"h	c #989898",
224"i	c #B8B8B8",
225"j	c #BABABA",
226"k	c #B6B6B6",
227"l	c #8F8F8F",
228"m	c #929292",
229"n	c #8D8D8D",
230"o	c #B0B0B0",
231"p	c #B2B2B2",
232"q	c #AEAEAE",
233"r	c #848484",
234"s	c #868686",
235"t	c #808080",
236"u	c #A8A8A8",
237"v	c #A6A6A6",
238"w	c #787878",
239"x	c #7B7B7B",
240"y	c #757575",
241"W      c #000000",
242"WWWWWWWWWWWWWWWWWWWWWWWW",
243"W._X:Z<&[=};|>1'{!2{3^4W",
244"W6.+X#Z%&*=-;%>,')!~{]^W",
245"W5*._X:Z<&[=};|>1'{!2{3W",
246"W856.+X#Z%&*=-;%>,')!~{W",
247"W<75*._X:Z<&[=};|>1'{!2W",
248"Wa<856.+X#Z%&*=-;%>,')!W",
249"W09<75*._X:Z<&[=};|>1'{W",
250"Wd0a<856.+X#Z%&*=-;%>,'W",
251"Wcb09<75*._X:Z<&[=};|>1W",
252"Wgcd0a<856.+X#Z%&*=-;%>W",
253"Wfecb09<75*._X:Z<&[=};|W",
254"Wjfgcd0a<856.+X#Z%&*=-;W",
255"Wihfecb09<75*._X:Z<&[=}W",
256"Wmijfgcd0a<856.+X#Z%&*=W",
257"Wlkihfecb09<75*._X:Z<&[W",
258"Wplmijfgcd0a<856.+X#Z%&W",
259"Wonlkihfecb09<75*._X:Z<W",
260"Wsoplmijfgcd0a<856.+X#ZW",
261"Wrqonlkihfecb09<75*._X:W",
262"Warsoplmijfgcd0a<856.+XW",
263"Wutrqonlkihfecb09<75*._W",
264"Wxuarsoplmijfgcd0a<856.W",
265"WWWWWWWWWWWWWWWWWWWWWWWW"
266],
267[ "24 24 47 1",
268" 	c None",
269".	c #A0A0A0",
270"+	c #727272",
271"X	c #A4A4A4",
272"#	c #787878",
273"Z	c #7E7E7E",
274"%	c #A8A8A8",
275"&	c #848484",
276"*	c #ACACAC",
277"=	c #B0B0B0",
278"-	c #898989",
279";	c #B4B4B4",
280">	c #8F8F8F",
281",	c #959595",
282"'	c #B8B8B8",
283")	c #9B9B9B",
284"!	c #BCBCBC",
285"~	c #C0C0C0",
286"{	c #A1A1A1",
287"]	c #C3C3C3",
288"^	c #A7A7A7",
289"/	c #ADADAD",
290"(	c #C7C7C7",
291"_	c #B3B3B3",
292":	c #CCCCCC",
293"<	c #CFCFCF",
294"[	c #D3D3D3",
295"}	c #BEBEBE",
296"|	c #C4C4C4",
297"1	c #D8D8D8",
298"2	c #CACACA",
299"3	c #DBDBDB",
300"4	c #DFDFDF",
301"5	c #D0D0D0",
302"6	c #E3E3E3",
303"7	c #D6D6D6",
304"8	c #DCDCDC",
305"9	c #E7E7E7",
306"0	c #E2E2E2",
307"a	c #EBEBEB",
308"b	c #EFEFEF",
309"c	c #F3F3F3",
310"d	c #EDEDED",
311"e	c #F7F7F7",
312"f	c #F9F9F9",
313"g	c #FBFBFB",
314"W      c #000000",
315"WWWWWWWWWWWWWWWWWWWWWWWW",
316"WX##XX##XX##XX##XX##XX#W",
317"WZ%%ZZ%%ZZ%%ZZ%%ZZ%%ZZ%W",
318"W&**&&**&&**&&**&&**&&*W",
319"W=--==--==--==--==--==-W",
320"W;>>;;>>;;>>;;>>;;>>;;>W",
321"W,'',,'',,'',,'',,'',,'W",
322"W)!!))!!))!!))!!))!!))!W",
323"W~{{~~{{~~{{~~{{~~{{~~{W",
324"W]^^]]^^]]^^]]^^]]^^]]^W",
325"W/((//((//((//((//((//(W",
326"W_::__::__::__::__::__:W",
327"W<''<<''<<''<<''<<''<<'W",
328"W[}}[[}}[[}}[[}}[[}}[[}W",
329"W|11||11||11||11||11||1W",
330"W2332233223322332233223W",
331"W4554455445544554455445W",
332"W6776677667766776677667W",
333"W8998899889988998899889W",
334"W0aa00aa00aa00aa00aa00aW",
335"Wb99bb99bb99bb99bb99bb9W",
336"WcddccddccddccddccddccdW",
337"WceecceecceecceecceecceW",
338"WWWWWWWWWWWWWWWWWWWWWWWW"
339],
340[
341"24 24 79 1",
342" 	c None",
343".	c #A0A0A0",
344"+	c #727272",
345"X	c #A2A2A2",
346"#	c #A4A4A4",
347"Z	c #7B7B7B",
348"%	c #7D7D7D",
349"&	c #A8A8A8",
350"*	c #A7A7A7",
351"=	c #797979",
352"-	c #A3A3A3",
353";	c #A6A6A6",
354">	c #808080",
355",	c #848484",
356"'	c #AEAEAE",
357")	c #AFAFAF",
358"!	c #898989",
359"~	c #ACACAC",
360"{	c #A9A9A9",
361"]	c #ADADAD",
362"^	c #8B8B8B",
363"/	c #8F8F8F",
364"(	c #B6B6B6",
365"_	c #B7B7B7",
366":	c #959595",
367"<	c #949494",
368"[	c #B4B4B4",
369"}	c #868686",
370"|	c #A5A5A5",
371"1	c #ABABAB",
372"2	c #909090",
373"3	c #B8B8B8",
374"4	c #BBBBBB",
375"5	c #9E9E9E",
376"6	c #C0C0C0",
377"7	c #BFBFBF",
378"8	c #9A9A9A",
379"9	c #828282",
380"0	c #B0B0B0",
381"a	c #939393",
382"b	c #C3C3C3",
383"c	c #C7C7C7",
384"d	c #8A8A8A",
385"e	c #BCBCBC",
386"f	c #C1C1C1",
387"g	c #AAAAAA",
388"h	c #CDCDCD",
389"i	c #CFCFCF",
390"j	c #CACACA",
391"k	c #BABABA",
392"l	c #D4D4D4",
393"m	c #D6D6D6",
394"n	c #C4C4C4",
395"o	c #D1D1D1",
396"p	c #D2D2D2",
397"q	c #D8D8D8",
398"r	c #CECECE",
399"s	c #DFDFDF",
400"t	c #DEDEDE",
401"u	c #CCCCCC",
402"v	c #B1B1B1",
403"w	c #757575",
404"x	c #DDDDDD",
405"y	c #DADADA",
406"z	c #E7E7E7",
407"A	c #E6E6E6",
408"B	c #E9E9E9",
409"C	c #EDEDED",
410"D	c #E4E4E4",
411"E	c #E2E2E2",
412"F	c #C5C5C5",
413"G	c #F4F4F4",
414"H	c #F3F3F3",
415"I	c #EEEEEE",
416"J	c #FFFFFF",
417"K	c #F7F7F7",
418"L	c #DCDCDC",
419"M	c #7E7E7E",
420"W      c #000000",
421"WWWWWWWWWWWWWWWWWWWWWWWW",
422"W.++..++X#Z%&*Z=X.++..+W",
423"W+..++-;>,')!!'~>Z-.++.W",
424"W+..+={]^/(_:<([^}{#++.W",
425"W.++|1!2345.67583[!9|.+W",
426"W.+=10a87b{~cc{|74ad1#+W",
427"W+-{!aefg0hi3_hjg-e(!>-W",
428"W+;]28fc[klmnblo[~f42};W",
429"WX>^37g[pqjrstjnpug.3v>W",
430"W#,/4b0kqxlyzAlhqo0|4[,W",
431"WZ'(5{hljlBCzDBEj7hF5a'W",
432"W%)_.~imryCGHICArbic.<)W",
433"W&!:6c3nszzHJKzLsq3]63!W",
434"W*!<7c_btADIKGDytm_~7_!W",
435"WZ'(5{hljlBCzDBEj7hF5a'W",
436"W=~[8|jonhEALyExnkjb8/~W",
437"WX>^37g[pqjrstjnpug.3v>W",
438"W.Z}[4-~uo7bqm7kuc-8[]ZW",
439"W+-{!aefg0hi3_hjg-e(!>-W",
440"W+.#9d(4.|Fc]~Fb.8(09=.W",
441"W.++|1!2345.67583[!9|.+W",
442"W.++.#>}v[a<3_a/v]>=..+W",
443"W+..++-;>,')!!'~>Z-.++.W",
444"WWWWWWWWWWWWWWWWWWWWWWWW"
445],
446["24 24 46 1",
447" 	c None",
448".	c #FFFFFF",
449"+	c #FBFBFB",
450"X	c #F9F9F9",
451"#	c #F3F3F3",
452"Z	c #F7F7F7",
453"%	c #EDEDED",
454"&	c #EFEFEF",
455"*	c #E7E7E7",
456"=	c #EBEBEB",
457"-	c #E2E2E2",
458";	c #DCDCDC",
459">	c #D6D6D6",
460",	c #E3E3E3",
461"'	c #DFDFDF",
462")	c #D0D0D0",
463"!	c #DBDBDB",
464"~	c #CACACA",
465"{	c #C4C4C4",
466"]	c #D8D8D8",
467"^	c #BEBEBE",
468"/	c #D3D3D3",
469"(	c #CFCFCF",
470"_	c #B8B8B8",
471":	c #CCCCCC",
472"<	c #B3B3B3",
473"[	c #ADADAD",
474"}	c #C7C7C7",
475"|	c #A7A7A7",
476"1	c #C3C3C3",
477"2	c #C0C0C0",
478"3	c #A1A1A1",
479"4	c #BCBCBC",
480"5	c #9B9B9B",
481"6	c #959595",
482"7	c #8F8F8F",
483"8	c #B4B4B4",
484"9	c #B0B0B0",
485"0	c #898989",
486"a	c #ACACAC",
487"b	c #848484",
488"c	c #7E7E7E",
489"d	c #A8A8A8",
490"e	c #787878",
491"f	c #A4A4A4",
492"W      c #000000",
493"WWWWWWWWWWWWWWWWWWWWWWWW",
494"W+XX++XX++XX++XX++XX++XW",
495"W#ZZ##ZZ##ZZ##ZZ##ZZ##ZW",
496"W%##%%##%%##%%##%%##%%#W",
497"W&**&&**&&**&&**&&**&&*W",
498"W=--==--==--==--==--==-W",
499"W;**;;**;;**;;**;;**;;*W",
500"W>,,>>,,>>,,>>,,>>,,>>,W",
501"W'))''))''))''))''))'')W",
502"W!~~!!~~!!~~!!~~!!~~!!~W",
503"W{]]{{]]{{]]{{]]{{]]{{]W",
504"W^//^^//^^//^^//^^//^^/W",
505"W(__((__((__((__((__((_W",
506"W:<<::<<::<<::<<::<<::<W",
507"W[}}[[}}[[}}[[}}[[}}[[}W",
508"W|11||11||11||11||11||1W",
509"W2332233223322332233223W",
510"W4554455445544554455445W",
511"W6__66__66__66__66__66_W",
512"W7887788778877887788778W",
513"W9009900990099009900990W",
514"WabbaabbaabbaabbaabbaabW",
515"WcddccddccddccddccddccdW",
516"WWWWWWWWWWWWWWWWWWWWWWWW"
517],
518[ "24 24 65 1",
519" 	c None",
520".	c #CFCFCF",
521"+	c #CDCDCD",
522"X	c #B3B3B3",
523"#	c #AFAFAF",
524"Z	c #C7C7C7",
525"%	c #C6C6C6",
526"&	c #A7A7A7",
527"*	c #A4A4A4",
528"=	c #C0C0C0",
529"-	c #BDBDBD",
530";	c #9B9B9B",
531">	c #989898",
532",	c #B8B8B8",
533"'	c #B6B6B6",
534")	c #8F8F8F",
535"!	c #8D8D8D",
536"~	c #B0B0B0",
537"{	c #AEAEAE",
538"]	c #848484",
539"^	c #808080",
540"/	c #A8A8A8",
541"(	c #A6A6A6",
542"_	c #787878",
543":	c #757575",
544"<	c #D2D2D2",
545"[	c #B5B5B5",
546"}	c #C9C9C9",
547"|	c #AAAAAA",
548"1	c #C2C2C2",
549"2	c #9E9E9E",
550"3	c #BABABA",
551"4	c #929292",
552"5	c #B2B2B2",
553"6	c #868686",
554"7	c #7B7B7B",
555"8	c #BEBEBE",
556"9	c #BCBCBC",
557"0	c #C1C1C1",
558"a	c #D8D8D8",
559"b	c #D5D5D5",
560"c	c #D9D9D9",
561"d	c #CACACA",
562"e	c #DFDFDF",
563"f	c #DDDDDD",
564"g	c #E1E1E1",
565"h	c #D6D6D6",
566"i	c #D3D3D3",
567"j	c #E7E7E7",
568"k	c #E5E5E5",
569"l	c #E9E9E9",
570"m	c #E2E2E2",
571"n	c #DEDEDE",
572"o	c #E4E4E4",
573"p	c #EFEFEF",
574"q	c #EDEDED",
575"r	c #F1F1F1",
576"s	c #EBEBEB",
577"t	c #F0F0F0",
578"u	c #F7F7F7",
579"v	c #F5F5F5",
580"w	c #F9F9F9",
581"x	c #F6F6F6",
582"y	c #FCFCFC",
583"W      c #000000",
584"WWWWWWWWWWWWWWWWWWWWWWWW",
585"W.[X}Z|&1=2;3,4)5~6]|/7W",
586"W9.+X#Z%&*=-;>,')!~{]^/W",
587"W8<.[X}Z|&1=2;3,4)5~6]|W",
588"Wb89.+X#Z%&*=-;>,')!~{]W",
589"Wa08<.[X}Z|&1=2;3,4)5~6W",
590"WZab89.+X#Z%&*=-;>,')!~W",
591"Wdca08<.[X}Z|&1=2;3,4)5W",
592"WfdZab89.+X#Z%&*=-;>,')W",
593"We+dca08<.[X}Z|&1=2;3,4W",
594"WiefdZab89.+X#Z%&*=-;>,W",
595"Whge+dca08<.[X}Z|&1=2;3W",
596"WkhiefdZab89.+X#Z%&*=-;W",
597"Wjchge+dca08<.[X}Z|&1=2W",
598"WnjkhiefdZab89.+X#Z%&*=W",
599"Wmljchge+dca08<.[X}Z|&1W",
600"WqmnjkhiefdZab89.+X#Z%&W",
601"Wpomljchge+dca08<.[X}Z|W",
602"WspqmnjkhiefdZab89.+X#ZW",
603"Wqrpomljchge+dca08<.[X}W",
604"WvqspqmnjkhiefdZab89.+XW",
605"Wutqrpomljchge+dca08<.[W",
606"WxuvqspqmnjkhiefdZab89.W",
607"WWWWWWWWWWWWWWWWWWWWWWWW"
608],
609[
610"24 24 46 1",
611" 	c None",
612".	c #FFFFFF",
613"+	c #FBFBFB",
614"X	c #F3F3F3",
615"#	c #EDEDED",
616"Z	c #EFEFEF",
617"%	c #EBEBEB",
618"&	c #DCDCDC",
619"*	c #D6D6D6",
620"=	c #DFDFDF",
621"-	c #DBDBDB",
622";	c #C4C4C4",
623">	c #BEBEBE",
624",	c #CFCFCF",
625"'	c #CCCCCC",
626")	c #ADADAD",
627"!	c #A7A7A7",
628"~	c #C0C0C0",
629"{	c #BCBCBC",
630"]	c #959595",
631"^	c #8F8F8F",
632"/	c #B0B0B0",
633"(	c #ACACAC",
634"_	c #7E7E7E",
635":	c #787878",
636"<	c #F9F9F9",
637"[	c #F7F7F7",
638"}	c #E7E7E7",
639"|	c #E2E2E2",
640"1	c #E3E3E3",
641"2	c #D0D0D0",
642"3	c #CACACA",
643"4	c #D8D8D8",
644"5	c #D3D3D3",
645"6	c #B8B8B8",
646"7	c #B3B3B3",
647"8	c #C7C7C7",
648"9	c #C3C3C3",
649"0	c #A1A1A1",
650"a	c #9B9B9B",
651"b	c #B4B4B4",
652"c	c #898989",
653"d	c #848484",
654"e	c #A8A8A8",
655"f	c #A4A4A4",
656"W      c #000000",
657"WWWWWWWWWWWWWWWWWWWWWWWW",
658"W+X#Z%&*=-;>,')!~{]^/(_W",
659"W<[X}|}1234567890a6bcdeW",
660"W<[X}|}1234567890a6bcdeW",
661"W+X#Z%&*=-;>,')!~{]^/(_W",
662"W+X#Z%&*=-;>,')!~{]^/(_W",
663"W<[X}|}1234567890a6bcdeW",
664"W<[X}|}1234567890a6bcdeW",
665"W+X#Z%&*=-;>,')!~{]^/(_W",
666"W+X#Z%&*=-;>,')!~{]^/(_W",
667"W<[X}|}1234567890a6bcdeW",
668"W<[X}|}1234567890a6bcdeW",
669"W+X#Z%&*=-;>,')!~{]^/(_W",
670"W+X#Z%&*=-;>,')!~{]^/(_W",
671"W<[X}|}1234567890a6bcdeW",
672"W<[X}|}1234567890a6bcdeW",
673"W+X#Z%&*=-;>,')!~{]^/(_W",
674"W+X#Z%&*=-;>,')!~{]^/(_W",
675"W<[X}|}1234567890a6bcdeW",
676"W<[X}|}1234567890a6bcdeW",
677"W+X#Z%&*=-;>,')!~{]^/(_W",
678"W+X#Z%&*=-;>,')!~{]^/(_W",
679"W<[X}|}1234567890a6bcdeW",
680"WWWWWWWWWWWWWWWWWWWWWWWW"
681],
682[
683"24 24 62 1",
684" 	c None",
685".	c #FFFFFF",
686"+	c #FDFDFD",
687"X	c #F9F9F9",
688"#	c #F6F6F6",
689"Z	c #F7F7F7",
690"%	c #F5F5F5",
691"&	c #EDEDED",
692"*	c #EBEBEB",
693"=	c #EFEFEF",
694"-	c #E2E2E2",
695";	c #DEDEDE",
696">	c #E7E7E7",
697",	c #E5E5E5",
698"'	c #D6D6D6",
699")	c #D3D3D3",
700"!	c #DFDFDF",
701"~	c #DDDDDD",
702"{	c #CACACA",
703"]	c #C7C7C7",
704"^	c #D8D8D8",
705"/	c #D5D5D5",
706"(	c #BEBEBE",
707"_	c #BCBCBC",
708":	c #FBFBFB",
709"<	c #F3F3F3",
710"[	c #DCDCDC",
711"}	c #E3E3E3",
712"|	c #D0D0D0",
713"1	c #DBDBDB",
714"2	c #C4C4C4",
715"3	c #B8B8B8",
716"4	c #CFCFCF",
717"5	c #CDCDCD",
718"6	c #CCCCCC",
719"7	c #B3B3B3",
720"8	c #AFAFAF",
721"9	c #ADADAD",
722"0	c #C6C6C6",
723"a	c #C3C3C3",
724"b	c #A7A7A7",
725"c	c #A4A4A4",
726"d	c #A1A1A1",
727"e	c #C0C0C0",
728"f	c #BDBDBD",
729"g	c #9B9B9B",
730"h	c #989898",
731"i	c #959595",
732"j	c #B6B6B6",
733"k	c #B4B4B4",
734"l	c #8F8F8F",
735"m	c #8D8D8D",
736"n	c #898989",
737"o	c #B0B0B0",
738"p	c #AEAEAE",
739"q	c #ACACAC",
740"r	c #848484",
741"s	c #808080",
742"t	c #7E7E7E",
743"u	c #A8A8A8",
744"v	c #A6A6A6",
745"W      c #000000",
746"WWWWWWWWWWWWWWWWWWWWWWWW",
747"W:#<%<*>&*;[,})|~1]2/)_W",
748"W#Z%&*=&-;>,')!~{]^/(_4W",
749"W<%<*>&*;[,})|~1]2/)_35W",
750"W%&*=&-;>,')!~{]^/(_457W",
751"W<*>&*;[,})|~1]2/)_3568W",
752"W*=&-;>,')!~{]^/(_4578]W",
753"W>&*;[,})|~1]2/)_356890W",
754"W&-;>,')!~{]^/(_4578]0bW",
755"W*;[,})|~1]2/)_356890acW",
756"W;>,')!~{]^/(_4578]0bceW",
757"W[,})|~1]2/)_356890acdfW",
758"W,')!~{]^/(_4578]0bcefgW",
759"W})|~1]2/)_356890acdf_hW",
760"W)!~{]^/(_4578]0bcefgh3W",
761"W|~1]2/)_356890acdf_hijW",
762"W~{]^/(_4578]0bcefgh3jlW",
763"W1]2/)_356890acdf_hijkmW",
764"W]^/(_4578]0bcefgh3jlmoW",
765"W2/)_356890acdf_hijkmnpW",
766"W/(_4578]0bcefgh3jlmoprW",
767"W)_356890acdf_hijkmnpqsW",
768"W_4578]0bcefgh3jlmoprsuW",
769"WWWWWWWWWWWWWWWWWWWWWWWW"
770]);
771
772sub avg { ($_[0] + $_[1]) / 2 }
773
774podregister {
775  $drawable->become('Gimp::Layer');
776  $image->undo_group_start;
777  my @bounds = $image->selection_bounds;
778  $drawable->add_alpha unless $drawable->has_alpha;
779  my $mask;
780  unless ($mask = $drawable->get_mask) {
781    $mask = $drawable->create_mask(ADD_ALPHA_MASK);
782    $drawable->add_mask($mask);
783  }
784  Gimp::Context->push;
785  Gimp::Context->set_background([0.0,0.0,0.0,1.0]);
786  Gimp::Context->set_foreground([1.0,1.0,1.0,1.0]);
787  # Direction Map
788  # 0 3 6
789  # 1 4 7
790  # 2 5 8
791  # Bounds Map
792  # (1,2) (3,2)
793  # (1,4) (3,4)
794  my @blend_args = (
795    FG_BG_RGB_MODE, NORMAL_MODE,
796    ($direction == 4 ? GRADIENT_RADIAL : GRADIENT_LINEAR),
797    100.0,       # opacity
798    0.0,         # offset
799    REPEAT_NONE,
800    0,           # reverse
801    0,           # supersample
802    1,           # recursion levels
803    0.1,         # supersample threshold
804    0,		 # dither
805  );
806  my %dir2argfunc = (
807    0 => sub { @_[3, 4, 1, 2] },
808    1 => sub { ($_[3], avg(@_[2,4]), $_[1], avg(@_[2,4])) },
809    2 => sub { @_[3, 2, 1, 4] },
810    3 => sub { (avg(@_[1,3]), $_[4], avg(@_[1,3]), $_[2]) },
811    4 => sub { (avg(@_[1,3]), avg(@_[2,4]), avg(@_[1,3]), $_[4]) }, # radial
812    5 => sub { (avg(@_[1,3]), $_[2], avg(@_[1,3]), $_[4]) },
813    6 => sub { @_[1, 4, 3, 2] },
814    7 => sub { ($_[1], avg(@_[2,4]), $_[3], avg(@_[2,4])) },
815    8 => sub { @_[1, 2, 3, 4] },
816  );
817  $mask->edit_blend(@blend_args, $dir2argfunc{$direction}->(@bounds));
818  $drawable->remove_mask(MASK_APPLY) if $direction >=0 && $direction <9;
819  Gimp::Context->pop;
820  $image->undo_group_end;
821};
822
823exit main;
824__END__
825
826=head1 NAME
827
828alpha_fade - Fade the alpha channel of a layer from one side to another
829
830=head1 SYNOPSIS
831
832<Image>/Layer/Transparency/_Fade...
833
834=head1 DESCRIPTION
835
836Inspired by a mailing list question that asked how to do exactly what this
837does, which is fade the alpha from one side to another. Original by Seth
838Burgess, rewritten by Ed J to use Gimp::Fu as demo of PF_CUSTOM widget.
839
840=head1 PARAMETERS
841
842  [PF_CUSTOM, "direction", "Direction to fade(0-8)", 4, sub {
843     my $btnTable = new Gtk2::Table(3,3,1);
844     $btnTable->set_border_width(6);
845     my $btn = new Gtk2::RadioButton;
846     my ($u_direction, @buttons);
847     for (my $x=0;$x<3;$x++) {
848       for (my $y=0;$y<3;$y++) {
849	 my $dir = $x*3 + $y;
850	 $buttons[$dir] = $btn = Gtk2::RadioButton->new_from_widget($btn);
851	 $btn->set_mode(0);
852	 $btn->signal_connect("clicked", sub { $u_direction = $_[1]; }, $dir);
853	 $btn->show;
854	 $btnTable->attach_defaults($btn, $x, $x+1, $y, $y+1);
855	 my $pixmap = Gtk2::Image->new_from_pixmap(
856	   Gtk2::Gdk::Pixmap->colormap_create_from_xpm_d(
857	     undef, $btn->get_colormap,
858	     $btn->style->bg('normal'), @{$::arr[$dir]}
859	   )
860	 );
861	 $pixmap->show;
862	 $btn->add($pixmap);
863       }
864     }
865     $btnTable->show;
866     ($btnTable, sub { $buttons[$_[0]]->clicked }, sub { $u_direction });
867  },
868  ]
869
870=head1 IMAGE TYPES
871
872*
873
874=head1 HISTORY
875
876  2014/04/20 Ed J: rewrite to use Gimp::Fu and PF_CUSTOM
877  12/5/03: <sjburges@gimp.org>
878   s/->mask/->get_mask
879  3/21/04: <sjburges@gimp.org>
880   s/AlphaFade/alpha_fade/ to be compatible with PDB naming conventions
881
882=head1 AUTHOR
883
884Seth Burgess
885
886=head1 DATE
887
8882000
889
890=head1 LICENSE
891
892Copyright Seth Burgess.
893
894Distributed under the same terms as Gimp-Perl.
895