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