From 6242234aa1e72febb8d84767b4ff4a46912d8b9f Mon Sep 17 00:00:00 2001 From: jucablues Date: Thu, 24 Jan 2008 02:31:30 +0000 Subject: [PATCH] * implemented feImage Settings UI * created feImage icon * added CC licensing info on feConvolveMatrix-icon --- share/icons/Makefile.am | 2 + share/icons/feConvolveMatrix-icon.svg | 43 ++++-- share/icons/feImage-icon.png | Bin 0 -> 20560 bytes share/icons/feImage-icon.svg | 194 ++++++++++++++++++++++++ src/ui/dialog/filter-effects-dialog.cpp | 143 ++++++++++++++++- 5 files changed, 368 insertions(+), 14 deletions(-) create mode 100644 share/icons/feImage-icon.png create mode 100644 share/icons/feImage-icon.svg diff --git a/share/icons/Makefile.am b/share/icons/Makefile.am index ec8c3d383..0c666d212 100644 --- a/share/icons/Makefile.am +++ b/share/icons/Makefile.am @@ -19,6 +19,8 @@ pixmaps = \ feFlood-icon.svg \ feGaussianBlur-icon.png \ feGaussianBlur-icon.svg \ + feImage-icon.png \ + feImage-icon.svg \ feMerge-icon.png \ feMerge-icon.svg \ feMorphology-icon.png \ diff --git a/share/icons/feConvolveMatrix-icon.svg b/share/icons/feConvolveMatrix-icon.svg index c4bbd2666..4bfeb5ad4 100644 --- a/share/icons/feConvolveMatrix-icon.svg +++ b/share/icons/feConvolveMatrix-icon.svg @@ -18,11 +18,32 @@ sodipodi:docbase="/home/tsoots/ohj/translations/po" version="1.0" inkscape:output_extension="org.inkscape.output.svg.inkscape" - inkscape:export-filename="/home/felipe/devel/inkscape/inkscape/share/icons/feConvolveMatrix.png" + inkscape:export-filename="/home/felipe/devel/inkscape/inkscape/share/icons/feConvolveMatrix-icon.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90"> + + + Felipe Corrêa da Silva Sanches - - - - - + + http://www.flickr.com/photos/dariosanches + + + - + This file is derived from ticotico.jpg which is: +(C) 2007 Dario Sanches under the CC by-sa license + @@ -172,7 +195,7 @@ height="124.7063" width="168.06779" sodipodi:absref="ticotico.jpg" - xlink:href="/home/felipe/Desktop/ticotico.jpg" + xlink:href="./ticotico.jpg" style="filter:url(#filter2688)" /> JWv5mnbz-n^Ng{eS=OJ4d|rFUmTTaVX{M9G~uz&z8yB1)A+c3i%4Q zm7&!?rCMqrB=iPtYUM@zAYd@+vQS=P?2Z{vhb-0B7)*Q2+%fBmn{%^j3hTwJ@(_TeK;!(erBlf9#77^cN?ZJqs-=h#-3N^yas<}Qw%rI@R5 zbb3S~TO{Y?Iqe-&F4Qqii%$QTN@WSH6#Y?$dU+8q^cjtNEYwyRk4H@00Za9DI{h}T zKV@z49Ibv6&vRK{y1-Fuk0A6pzkHe9<7XfQo2ysYK6;9jCaVkQ*gJZLW!fy&RykN(&sd_Q*MT3b`W9_7TNwIg(wsO(|bON`rp4O{rW*DaD}Q!m@Kn1Y|6SO1XxR z;5ZKDaup=xvN`g(GN8$2^W?Kd01CMhIVTT5sZ=HF8TNZ9r5`mNw9bFbmgCPW=*3mHKX@c3DRkrQ-vc|7eYlP8Xjr`lybtTWNtI1PUEr zw?v5e2t%ZT|I&|$1%Lolbg0Y_=qaYKFqA>TvZ)s;)G8H1qfV#2Mc|I{RX}gz)1FQ- zr9fzfCIo395oqT2pb@D66_DJv)*2xq!AOz3JO8Xk&y^!1Woj84nAWjTM)xKW2rU7P z((!leLuf+z$i87Vb%dGW$a6vGRw)^4-+utl~Zaa~Eqs^a?- zCbJ3Mfrlk6as`WSdxTO`{AnM{n6Y_vnd^7&@ag@h%;XWfC--Sj4w!lxVMN~}WMl}5 zY!U+!XN}|RbD3DTMhYViLoyAcXM;m@n+94(p;2iadA}B*6(WfoXY{MJh&^Hc5AoLT zRw8@QptOp#rX%YRTBiyic2}*5+%i_W6apbMhBUagafdKi#GMJy7EZB>Z53Et$WX2r zxNgYEHPFL8ay2svYzod zQTt5kLu@FC^(V>z9VJl_$8HgWgtM4JCV4F~N+}@9`5K{RB5RUFOp;raMrwgD=6Ob; zks<;EQG%9et@*}Rehu;F@0Ijx*ME+uyPwb-bx=vdMq?zYOG8L(`C3QsN`a6fwIm@l zQYe%FBgj+X5;eKW(%P#OY7HFAW;!{gd-N%$HmH_EUVGU|%^ha`43#F@B=9P+4k4lo6miCraZuF4LWl?xO=Od<@t96)pXSb| zOu94dTpcU7!qKw_s0;+2V0XJuD7yG&f$>mqdeUcicSf(%#0^{&4y|sFaj(hBLY}qd zWxoE+H*pv-7%7~biD?8_R)&mivbIrUsa9rp{1lADx;0WJAtb&jsgS}*EjF`bU^m4{F| zQiK*sltCrv1weu!K+D7pRdf+4Tni(uC!ZGr14(9Dq{(HL)^RxOm0lpWgdNiVHb%mQLMy)#8x3L%-tC;=KZmo_R=t1Z?KgU?R zow;{%x{K@0=0cAxB~(#m89~Z3@h1UgA}Z0f&`6;XaUG!3+AS`(ght@uYnSn;&q98g zeoHZK?=x~ecK1$r_V^i&KjC!NASdC`gZEjxaGO$n4YZ4?%Q!iQYNbf7kj2U8C>9ox zs!63LIX-g9)-Ta)Hfb!a@ci`qxS@xZ2AU8-5^j>xGPZtnT(cyJIC(z*O~dXy!pET~ z)=8Q-NRO9VfiMt+vBN}(Sfi1#UKeUB7#lBS?=`9`c!5Wtg6IHbl!%1_Wq^pw?btP? z5GV;E#>dDIApX3~e#+kI94%or59Sash>bX(&8TG95hU z^ym?Oe-GhQ=yiMCynYAIm8_j##?0DeGK!3J$Yv$Y{ap&xt91KT6+k&acY>I9O` z)hB?LZ@rDFlwzT_#$-0e^SsnGlLU+i(ORJ~kV2&=H)53p1mr@+M!iV6bc4EGrR+h6B@15T&Xb- z&;ow=;a_5`-E!_VJBPUb>`a~!^O8QsusZd#_(ZWg7cGZP`2rX7zraT68bvA?VI8H{ zki{CEX`cGZ71lN`bFq4vit{S{1E1xEIS7lf*p_BtrOf+3_&)8?jM1QnRz3^$8hyV_U=Pwt zKDogJKqMj&aWbA8f1;e^Ju&whn8WWg?~y=uafXwc^9m$IoFJ;uL9?>3fw6i!dvCe1 zf#>;z%8$vkGljR9yXf3qqc4&ITmm}slCPqXP^Fv(WAd+C``)BS5cwQ{RhwZD%1qyrv((z8~SY6 zh{J69jz|Q4=5;I^k;)~luhVnR3yYsQP9zB*u3vZ&@yc(N^tB6j**|{Hcs4)?6}z5} zp;`1);PSE0i(i`QsxVKYE6c8rM}cmM>DSu5jnhC2rh2N4=3n z1p?0%y#M`w$AA3WkGZtA%y{V$Q)3h*U?PGp0;G`;66z)qW)lD98916)ex!gHo@yh_ zA0jTyQma2(NI{x#6IsR=LP7-^E4S=>tzOi*G6WHl5i%lJ|(c6((9HEMv@$ zY5_(R0}Wf@6dU~3fA$vj`dwN_9fsSxbWh>@!U$iO^o|a2tvbzCk7rL0I6XRIef>J+ z#yZ!oZ4v}iie;N_YeK19V>~!vIGo`s53RenlOuK>J>dQa4;Tz3wR#zMdP=M7L(rww z>a$QQFfaxYs1RWSkYgDLWPI&XB-ELnhp9C5%)?ZqNJ$#U)3i*S7*fIqNn9JLFG0(Q z2a*!46&F^oW31h>@2xLi!1rf_$_E+q=R%@U(PJDwO(R6hxLnu9ylg+irJx0dnc<}i z8~m%^`8SMQ$#l3+C`X(gZQ~hv@cSI?w3&{Y6!R4})-9^FD!oC6kAM7AcDD~HR{epcFEg zwb7UesZzQ<2_!0FcN=O6E|GKh_p;jkWdl=0u_Olx%J0Ni)*V3 zYu7L}U}qdmDe;JD=$JW@Qk=>5iZEt}42&<4Tr%cOP@siGc^(@ZOE{Sg)-L7=MgceO zzQy=k20wi7b9V3l7;iSE7{KYteJ1V-rCOFSFbKpHD`&EL?KXy6V*)I?S0 zPQQg81PB??2qrSZ`OGN>LlD0bC@Ih?$`w*3u`VJ{gbK)JukvsI+rPk-Ce6+iFU<0z zfBYe#hFr#{x?I6D;OpMUoG*u*YZO^utnlQ~XSmZ5m#anosrv|NWwDJ6uJR)< zNGip7P(}zDBflgJr4(vp>1V7v$*&5X(#%O+pyyye0ikH6qL7{hwpamI&)vaTyY1Y& zeC`G_Z$hXd#GvB1FOozhL(no}^kme8LBw^2mT~fmSP>;8T8I3}-+aukedRXFUgmJ` zDLY#S*tslzSZ37zf;Zm%2Cu&PYZ!*X)9oF;c<>41(SU=!eTJPOrfKjOfBGjp`s^Vg z0Yc?@^6&mFKmGCFFl_Cz+Q>8Z18TK0*UvYol(TgDJ%0Gp$GrW{&(Uw4U}UoNl*_KS zixvTBg%(Bv3ePA&kcvwuu<;BoieIL@(3wxkR4;K(OhM;d5lOa?BJzkN@h>;dVXWSE z?iKSzrn3=Y7{ukdNP%daaxj2UMrHJzvW_lFrR8JncFcJFmA5D~ehpKO=yn9%lM^o8 zzCgX+;G{Rg_aRqW=XigM%h%82`+bg&2lzq2cs!uj>)<#B!Z2t)`J77UeX6;DYGVl< zYC8Qs%L_{c;~pyTs1*v-Dh;k*S?05c4{+=PrFs=B=kTEMSRF%uVspD&SY zahQndm!v0>6s4)K&uAd3yAn7RQSynk%NTX4gi(!1we&ov-NPul?HxU3G8;$djFWb# zqbL~=ojlZ_104}>N#&?j6yu2c1S*VKP$l@sAO8{m=l}6CSJoEsIU@tC%p3FZML30W-u60keWA^G~d2eq>#0#RO+0z z+bFFlWD8^ri|%9sp-Ulev$E14TgWpR_6YnD86(SSufr$fk7)ZYiZJfUCNMLO#c_y{ zGKP#I>VeJUPm*{O>pv5~V!5bfT0)DTN$!H!j#HqL1TiTjl|l_;?Y4a{W7Wqe%;%P0Y);*bC8Z#nHBp+u3D+Ijk8lOO!$|3z;&V$we( zuouue&;1X6KsF;$p(Hyv;x{hCtwoECx`X4CF-(aH0-UUYlrS6z_WStT%X*!c|kN&{h+$>toM_gumt;IQpdEEG6B z?lNG^-t1(~`x8~Ckwc3)nt?Bcl_WJJEmw*BCo!tb zU%v4*Oaa`w@-oj49y6NsA-3)aF2ya2Gf7sTxw-@s%eZfyZv@_fHVC<1bYC4TjdOI%&fAPg`}o3;b;hlIi)6ehm1(7uaf1RS=; zv__gnSyIkgG|C3=eLBLjZEjtzaddQoRX$I*J>uL8WB&Y;zegKE3>S^~HU)}s&eued zD6&>DM=McpBmp1EoJ2fOnShY^Z}M4ms$7F(32Bn-yXEI}FYnx)JPJb-fJ3M85sX{duA++&i#$Ynxlcye* zA-R5`jFm4Uycu6?_qct1ll_x6c_+ts*y9`Dex3jEum5|ntjM^ONG<+sCm@PKD)x{$ zW>0$g=_IR;bD)l9Srg;eIv!z(Wc(%Lj7Ur)P0Vk-`12SmH|%>a-~1}m$q?6b6R;D@ zeIDzH$*af{qN2=@BE{6io^keK>qdd$(`7E_kNB7Gtg%=r&{!(7a{fH|g%y?#nlRzFBa%`yR`c* zuiakf(eph#nImJHTs&9i;|I^lW=-yYe!?Gq_YZlp^%*^X6cw6?2sS1zAd^qh7k=4>liTx0mkxm``%`^RB9zA+OvC!b=ovR2xq}A)=xjx@`ZIvH<@SM-LS~#*!vp3_? z`T{S%bQRmsv`TzW1f7UY zH6B7pCg^m6NMfWEMTn%w9LpwUSV@_J)Kp{sW;E_c9^iVjFI9yRp(JD2G>>5c(MXDn zzf8wImNqt${GbH?^;iBAzP4(Uw=D{lMRX=hcRZ$SXR)$^=5Ze{vq-*DAzQ3~kw;iI zh9}6C3RKGrOv4OYyC<9+byzxIXE5;CJsFY9m$-VV%wkoLEd;DC6?pHneZK#rPgz-P zuy(G787My9I>s>#Zd_jG@MuhTFr-?lP;yGVe&rQ@y88h#ZMKNikX4LeqBgRO!-q^q zSD1_P%buV5L>#(Aswt!v>F9h?S%3Z2U%^D+t$&d)KK4w!kfG>HnSQcXwAcNvAC z7{eyGG#yV*=3lhH@HPM4AN(&o{OEg_jZNB}HkMz@{M?d-yCo`eCbcxoe$HZLWs5?NJ6;6i+-ZIg9aR%9Zo$EH_HnS;4{4DG#2U zV(0RFz7~QY5PG+Dn=ZUAT`|t zyC<}Sm=ll*+)qMKOhiO0X#hhT#LIqC7CD(K{pK6L5qZE{FMf;3bjZ}5q!vBza)~b` zc_}1X=$IpqA(;@VC1@o7;@AH*)p8ZT^#Pt$AYZItlomKX9b)E+xGH3O>yYgy+suYt zoMMjI%tdRLQlZT5?h%#@C{(j_M>8ftG-EWJP8oEEj0RnD`3lFa5tXuooiX|GPrl%b zrw6PpRyk^&Ahp2tTn0mr#kCc#u5GZox`u5_)-GH{NRLNP4*2F*ud@HV%cZ4t4#qo# zp+aausKYc5B&My>7(!j?sO#`R_xD>vNJjk*=gzNCEM-uhoYyc}FAJ zk?v)($SYcU5Z50GO_AXj-~LrB*-cBzD#O&LvnE^b-pB~<_b zAOJ~3K~yf|%@khXV&#iy*XQ~6Aur!t!_N48`sf%_&d69colX}+34|d~9@NT!RFq0-#4=74BBESMgb;PYE@;?2eiFgZ?Sscm-O0Q= z6ysjvxq5LX2P9zz^qI#qOE+~$y|h82ehb^t6mkpLc>|fNVo1q&Ji+y5NG&;S_wcpJ zY&ND?$aC81Ll96bRk1P#l~RdP|@pmF_mJsIb~xZ$9{9baeIUil9k0e zlku39l_IvI(Y_)>i0gr!m8>q;5LO1;2)O^nF~vd-OInPlLkywmkH*-tfY1}Rd%H0b z0;M7W%%>m3oHacwm_&An81c+UAQR6?do3D*(8pN0>D)6CVu+*|i-)a}=SlpJm6BlQ zgoa3`pmns|fxlBFLbnftn3@@c59`oAN@D?Y$Ff3k`;&HYe>VFI>OGEC|?ox`$~yJb3tof=QlLh$J6M^OmcJ$}l}oy-}#81F|X zi{e`9Uvd7KD|A;OARJ77fFEcON11R-3aboJXd3-ULaH7E^qgZutq@dp$((CmxEQ{vxDgD03;_4#G^=O}VxN>Qg?Po)r zvSb=ezFd^X;f3^d0#(I4{3J9%63XL{ld#8$2T5T@N!YS7pu$MRXBHUeN*Id=aLU9Dn2ZOMY6~dklFQTy z3O=*h1Sxg0Uh+(wPfRlDABc$gOe{WGDtjgms3aKx|LhyTi?MpczW2u6cNvZQ%=~HW z0i0QgCgOr42|e=666CX^*z<7~B>=5B?sfUk|M|Zr5DFDKbh}3!?QVnVQD0o7d)jBv zY0)}(%EenRv%0=cM$DK_#;mTcvADFs>PnqXcgX(kAurs$Nf-v?av7v)(QS8V^(HhH z${ZaJIoR(~s#Ljl^Cn9x8+g+p#f)Hap@Cs&whubAn=LYxBKd5d>DVO*;M?!K&hlc7 zz2h#P>oFNm$U1pSv$|hsPtswjPMgmI%ArA^_4e}vV!M^D1U^~l3}-p zp#?~XljaG9lFjgRm&(dI84QkgclhGTKIhJ_B8m;x&RybgYloRK`1RlYeZIK=luNg7 zFdlSh?eE4jq!vm|$z)6}UcAe#J9jzWdPHv)U}&Gs#S*2wNypV3H~Zx6$YT$V+w}WG z&TlO8;NcF%N)4%JNIOHn)8x{vZ(4(L}`^SwG=VT6fx?VR1Z&kCw{HA0 z?RJ}P=M)`!1ffR|_#B4&rEI{#>4@7mF0-|} zL-W~FEWgF}))tMNz!N6JvCE`8z_d%4hJz^u3KM^Pis|<_>5P~KA=P}Am6avj;gI8Y z2gfql*jVEDw9jxfVK5vsngtlbVX;vKQ=&b1_4Qxo@$PU=lOC==i>*IyP{f)|`2Qr!N0aLs5qp44>a}=` zT8L
`z%4)1>b_h}uUpcM>918mc#*=k}MA-#5sPG^D}1S~Et&>g`n49Nr&4o`>Z za7^oPk5+S^oGIAa+ed~yY(rDBz|Q6vPXhuJlhG72W1*EImv^{&=QSQZctF-MD42?7 zZ^UpgVH5@ohMGZt!ok)d(l9BO%2)=>rXH^6GIbR>$HX>Vq|Q;QF0g&_d5rDnKgmc= zx=>V#w38d5rwH{#a@Xi^?ln($9z;~cVRHx9o02TW6EPJ#4?&5WMXHrD?hC|;D2YQx zI?Ap=M;_1_cKPb7?-GO++{qBnA2aB7@qG`i1zLto2SY+%5GsR=<6t{wrqcl@^Sv%PD+I0CI-YQGDa&EI&)Q;%;WQxdLWbiJnQRsi7=}eIW3zvFh;VB3riz8E z!1EQ2Qi1MxKyL!3C2?m{!ccMj;wpJt;tB(QHo^52`MiVchBOve7)|>0r_BhAoau?A z9KR509!MfjT71RRc3OjBSlD)!m8EkSt2ZDU=T9u`FRj(+w=<$;F6Ocy`@Y z)Y>Dp{y7TBP$*P+;qu!wPuf_v!ZZuyawb6-;!gXN$_1K7$0((kx&fgAUrQD%2FFJ| zdgCcqHu(0hMS*O4|um38>+Rf~}>lg1bo(}MQ7eoR*;|)7x z9P8tFCne~F)r&)qlu6Q#D`k>A5?jdZh_Ao?`-Do7%@xprhw?mh=wn+TrJ`J|aoRjV zs{o0_FfvpY8q}*MpFiHm3qveZF_{D`7c|GC8Lh5MIUBH4D>9pTw0jd=KSXGSV_2BE z9BZ5Bc=GwDm}tlt^hP$**_hGTrCKU+>&gb1ti|4Oo8frI*z*WSA=!L|uYB!go<4fW zX?H}qltcOfhy6nWJtIiywKU--p(Umo)LC6biC0Pk%e1j9hg>#KyWfmP6HnR)c%B<` z{Yi33gday4dB!UeqAq4j=Z-KhIz-$v5D2P#E31oa9SxXFW(dQ; zC&V@kHaE}l{F4vJRdQHT0v?^Q$;9=UPDj`lEG@5Mgo@7CWf}-vt@+~N$2@+z$MX7l zK(Vvi=IXU`jD|hB{xKp_X-rtotKO(4hznCqG-!m33tAJyw8&&^Y&*yD!Uo3rE$7}s zb(KIxf=SBeXem#`_e877=Yp51x)a_1OiW~+e55c4)QEC%h4s}}m<)T7l}M9e?-bKC zure7`s8PbhvJAq|$FZ|071A2Igx-i7=j&|m_E=lXv%NoJv1~%1`E<8Ky=t*k$F9ahjWc)LDLqpYM94>`kSg)NWO#QDdj%?96wz-z=hfT4z@R@S zm$OlU#d0~+Y=a%UW z$7m#@;RvM#wQ`=`s6(MxW~o-DTy)5YJe^=0FPvlih;NHWT%vVLb9NwIZE7H;#4s!j zX>rm%!dSg&-)psxqxc`k`D7Vo!UZKXl99%yx!}{4<0`R+=xWm8B_WW645uE~)-O=2 zU8dh@fguRIF{Y8j^+TLoj#8nBVS`Fs{>8Thjqt#%VZmO`z}{@xy&*KY9R zpFHMUU%O1ZJ7V`_!na;u=izpn_Gp6keGH*#)EpWm!Sme%vPM8TU!ah;Ic#;=tmUwC zHaiCcc22tZT65{*2D6cilg}_34l(R3ON~W(g8|umo_rz4pf#e_IL}e%3qmQQkrN#c zHX{&96DFZp$M7@Om6QfjSO{UVzPuUH(W^_F_<={L!YH04dnm*eF=9Tg1Ft`(4RWl}4bdGoFB(jN?&jHYNEkjXeWc9v|m#AMnhm(3CQJ~>mdyt+iW zSYdhN0^`w?!;>dWMv6+I%Cl$t-=E|)lJ_8E+a zoVG?NX%GgQS6;r3=MFhIX;CTF=yy+%N?@BlmT)+BchZ_Ct(y|&a~_-0UVu`X(Dw+H z&;HT#$OBrvV|+heJ0;H)6={Nvs^fUlB^^a1o}W=9d#|0LTVvNVVjL_m5td0VQ(|@H zF6C+ow25ijNCZyC!4Cqa?hGMKO4TI{(_k|7DVGam^F^#|iAH0AY_ZCtPe0+-on^jw z+TrEbHhBK%l-2bdfBz2;x&6v5wx8|NDB5h^IM36aJ;s9p%gaTk(~$9G%5ir@t>*B; zwJU6$3^{C#csOBX~ zNwQ9bM!mqL>z6q`JmvJLNzu;H9gexM*5I>8CsZo|+gnX;+&Ra8{LA;ad;2_JZ1r#) zhu)}*VOm%j*goho8xQ&FtCuJg$~@Wc;aG~V-B@Ng95Z$S2|N2uKD_^&a;=U#8POjO z@ZFHLbL%*nH9Wb?XyT&dB^xOQ(Gdhqydcqvj*a*H+U000rCO>pnG6V&A8|ZdfQ-c| z;uM?|2+4R|(m#%uttR?H>v%8GWPK&`ZNbn4p`<_DV`%7 zgbo8t3ucoU?rh3%IK^g4q1?cCeKJC`d0~@6ZGr8bZ43jtgE8mMR~U3=C@t7nt8;QR zn}5zh5YUNk9qmh0`J_c(;dwi zy8^>DnE5`Pevhjcme@Wzrc^W-o}5r{Yz{}qAOp~H-X|v7k|1eWCbUFS9~?IKFjlT- z?)8UleC44;BHT2sM4V63;7OrYlpB&}e6*feq}CqlWEqf5X^Dgf5kk}Lwa~6h-pNv~ zuAwvpt_wO~G92Q~M(8kPI5IshuY^ zQwmhh2tVl&-@N={W;i-vbM+22Tv@<#r+{KK9wD^PbUeg&hx7+srlSr*L_2y}wu7gmZ30AS zV1zD83YHgZj7Bc)c8}$iIy=u!c=e6T{O|`4c_6*~%Sp5$37L^|D)_$7-cc7V zEsDhq%~lh_8E?P&67}UJ{x`IE=I{na;_cr#2ho03q2+%4bl#)F&6N1XqaCr177gp}z`5uGmn7k8>84BgoAC1UnOoBimO`A}K2pR27 zHyQTv0|l74;~~N{(6}faHG%AMm4kye(_p|-qegEy;?}K;{NNux=B;;b^W@Ve^~EB} z3&`d&xHGV%rZey`OhJD%WPg93&80GLzw;J9_}~ejJl^9wZ=PehQDOUJK+Y*3^LfrM z));ykt-G8~kK?Iw3*sm+FHR#R7>0puXD~AvI=vH&r5pCW!MH;hp4k99ftoR~WF)ik z@th1&BDIVr;fQyJ)lp@v^qd1qJwd6sawguHQ3C-ZcShh%xOm~KjE4h|7CH>^W>dWB z7|(YJ{V9PT5(WX&(U4#|M4>PYfq}tfHX_6z48YDvCes<^yh*9HOu68&zt^GJ9k9Mu zp}JULb$OA0`rvcE@$J|7^e5XaovShGjmehs1Oez!aNL`bE!iA5dlWMscW&N7OM^fA z-ltq$E%24w8$8)P;c$1KY}P^tf`YS#nRVz-JBWCT%w#emAqz~?pja%DFXYJQ9bUil zwWuR@xfBi?2ctrDUy8C5qR>6pcEOQxYkL_6!MxDZn+8d*sfa6~aU+2k5@ zv>Bk%G`ojPddJ+j`8LyWA0bS9Zx(a(0mIQ0lx8#f6%XFb+emsq>7$^ZTL_i3JX`RCuf#mM*g;FD*(diOR%H=vx$a5Vf3 zr86Yc5sBjq0i{xjQnf&#l%-h8QL9!lmT#E%Of$oHIwTCkc-2cXj1@0fl|~xdQsO7! zxwVQ`(e^_Uq4r3673UVQ^j~Rp-?WMv`M2>Ae)EDaKPbyoBJQ_ zv%P;pu4qtOtWaNUaDHCE~rmu3n*O-(l}whMHGSS$@aa z4%cgFv5pwRE#j-|2A7$!AJX$7!isTtJo%L91p$Zmk%zDSkRQJDud!BADq?+Vvd$c`tM!K`C`ea$mx4eR*Z4Y8C?{dpB$o%q4OERJCq6pC&^9A-rhco zI>W`5tSYHbE@+yD&7Dog8Grnz~KupmfgPwRco3MF(h3Q(!bY+AcY3^NnHzi_^9{hyGU~@11Z89Zk zHLviWcsXSwE&gR+6g~D^zUku916lSlij+t(jOx6lkH!CJG==Z9eYr$Sd7NgUE2A; zS6}@G;pdDe+c*MkQzNA&N=*!rsw^@23}G_b_#QM%&svxd7jM|c-lnM_&MOR8c-W)*8IQ`Xm~NMU*Qe3vIrpHhq_JiPyaZaL@t zyuJ4- z@2#J)s4r;RC700WrCEuW4tKEcseKJsKc}LLPx1bMhle0wARt|KTfCxWhZGOTA(A4# zx>2cZm_kW`%?;;!+R6BuEV*&>B$k^HFRBr zjFHi71+6VoYWjA;&1)65oFRqdn{S?S>(&jlmSiSpGM%!rIwmhlMuovn*2rVcA3pko zXU|@8|IwSw##8nWFPMzi*j%4+d~k$RlC8}h%6x?npZ_}5%3~leb7m_!qt%S@N=`Mk zj3x@5cc{&KgHU@h$GK#u(@9P{adjCkPilCT55!B`9)>(&c;2PhPYz8YxU&O0v7&&i`=<@zdDAUZ6Jb*$>*T9qj)r)4?V0{You3+=}ngR!Dz$S%AM{OAwL6fHZMMb(9#H zaB~?hHMjBVwTx6~Ezw$0mYT9M*iupC8e3TA%|2b+L&}=I=~yn4DC6bxFUg7=sVq&i z66Uyl-4`08Fl<@H%Kjq-?03!`WQKd+$lpO4z@cM%r>>uxA zO3iqZGn!>ovz*byP>nRVsy{(pf1~)|XFvQ)mhBSPw}@e}u1+*uv7@CF2$`g)VwgOU zqNTJ+VX*H?$XC62c*U8C3=|f5sjN)DS5hIhLK#g~D9W*=92tsAla&gaYizC%BGQXf zx=eZ#U@B8A4e4pdK(PdPn5f*255A+%szmFUdUELxhj z!-t5+uxMIF#hBF_cbSY0pMCa(Ng?Q^fTd&6Em@h35`-Zv<+vhvj|h(S+lJp9{~ug- z%9i;d&(1y}%M9a5GC$*~p_*hAl||Td)a|!tADmyD&~-INNsQJgC9lenf|xwJ6etBs zfl$L{Ty0J|*-C1pR6}?w(WDId3Jo0Oua_HXl)@N=)_PztXv)$s8C!~xp{NXbp|MtC zt-|JsL17Dn^F76Eg2?yKr9gNIy`py=E()q5Lo0)GbFzGe5Etaxn5K`EV@nVn!Wc|x zn5}LxUY(MaIrT-u`N=s!7ieLyMswrZ3QxZ|pfDb6Mix_sue1VVdE<@mvG?Mba$HjC zO*SWM?4Cd6+1aOTPF9GzXSQCjx?VC{t0=1sTWF*W=qxjY*pp`lASZma6a)OQ;8-JgTs(08Bv6P&M8s}MY2YrO{$D(qsU81K9Urp zbn3Mprcey39H9jSL0%SEb4u3@Ifp!CZTl`qyGz2{ljT#MKluU`1zA?JbNgM6UOvOH z#FiCC&RDiJ^N&B`+tWGX`h=VJ9Dzpa1AD>D+=4JG4osO)JQ(!e$DiBvJ{aO58^!B~nT< zYtbf0>ufmvW}sduq)@|919>HLl2>LdZGzGgn`!bQ!xomJuvAq>S!Lvvp~ww3yFC5r zh8UZOO*YF=Mx(VE#1jd;>h*$bq*yk4Ys&H2d*$Hx~`g<)D|^s*$glCF0|JY_y2 zG(9`3xB2$qQ;LyfJk6MH?oks2B)De%G5 zcRgM2=zB--5g!FwWoVNF7NW$5ge3NTNbHK326D#eiP60(;**%wQVOJs7^|_lB`+*_ zW+^H~F*0P8!e$aF14_Q4KSm)D(hLogG{HgNc~BW`eNHyYSuU5@odUBc;hPqjpK^FQ zr&u>k))e2bw)y+^2H|~AnC3cE2VYN%9;_F0dI`n@qV27wD|8 z$+l~SQZZe3AhMvNDC6d1)w0LslB{QeiWTwg#11 zOlB~dK^cYA5~bmC;6!S-A3!N?ue{BTlPSB8e@hq7P!9~_*9zX-`5Vsv@IP4`pA+9) z<7^c1s=;%J%}QeIuju7cq>XO-nzQ^d%YZcx@b+`6HN|)Zs;Q|2(Cg%~z ziVDb4YD@?vT^s3IhjSs#`f*7O5+dLnQfNXLGGh_Jha}M%aA~C!N=dX)nBf*AJFl_U zq{Cp;prV&3rARYve1blFk_?3yP)?wQw^Jo7TZF^RKwoRx6JK-VMnk66Z z?o&Lt#^GkqOj!^L83exXDXIcQhY&q|=ZPZC&e73uG(VzQUU1r;@Wb2pp_Wvuw>dlA zB?^u1dt3l%ESc5#=8OYha${$m?(i>&{4YXp=)0Pxaab$xVu>z_^@92OSeRC84%Db%O6Y#InI#ksiBB)O(_r5PGDs%$pN_`}p_V zpL`FkuCt6e)3N64tYfw!L0K}bsJoWZtnhqymxm7?^4Vwm)Z|ej1?Fw$P10ODn%;RkYzc>mS|gHbb*vQ6>NscM+`$5LlnfI2Au9P z+l@d-$S58uNwU*SlNC96QIHiGMUhjK`BhY8GK;Y$ZIae#ojT`UN^cW99tghUj`=aS z_9}LFKjpMOL;buYUzLpVH6Dpy^36Z|SD37^ct@bh5}g^ewrFDpvm;Y~XYbSEhf4@O zA-gdQvmjld?OK-I8P~=eWYu*R^CPtCsT++D4rvWmSmtd_F(CY&0H4%Y#3hzboU9l(hf#3qr69;IW z0UIL-q5@qQymQR!1&7@Wu1_Y&*&WVLz9O?ATx2}XnIA8y#$$YY&S@;k?GfAdUva$u zw-6d)Kjr4meYD98MW#WvAY6hRRKys8R1zgMNKK3yFvw`}QW1p22ak6VZBjeNFw~Bt z42S?iD3tU=zlBsaQ&Nx_O`aRFA|uNTd9E>;!5V{62B{QEngRJ71}n%kmmrOjm6%}Y zb>M#Sb8dfK@Xg^@9Mz8alYp2mkW%n&_HWqx$6w=@3;eq?xaBC&1TP70c;Oq0)24Xmi9urX5nrFaWNosJwzud)g$fN(YMP4%Q|4%`h}zOE9FL!$ z@%?)R&B3oY)&Gs$ZZnFjXr(oGwjXhH@db@P9V$2xZIV|{*iG7i7&Rd(L{xYW#wel| zc<)d?eVEkbBNFM81NM>N9l<5ym9`?q{6#@g6%=_+W(}FO*eoS=TIf`p2t(ZkzfJKuf_}+&B_f0r&Uzu! z=RjRqNt0bxn*<^zscl3ibL8U{%pQk!ZZ<18@F(nuF>P|7GHk-f;aA6XYb=Ti8~`6pZ_CLX~nmPAJX|n!exv`U7miWP)ehUa70fBzl9PH{h8V5CnO zxFUT9nLeW!oV!x$mDw`}Yi(K&HMFfHg7-up5Fw(3#%sg8>p6&f$Mjilj`sZZReaxs8%21I8vOLK}rtav+dNM9@SBK}M96cps6% zlIbnR~qS2Tkv9XK-hYTiX}Iu|BmHv8vgFH|H$J{9<%;$Un47EK&8@r zA{dgoIP{$wm;^(yUrK>c1Fr|WTD!la~9XdzHCFc(Ya{wb5?T65>@a*7sc%C9;f5mVJa$qq8kB~l@ zq04JH;Q3Zb$U4d{(8?r4lR6;1B;pC7gU})(C~442BZWpwgOU-g2UJlcz%4NzU_1X) zMmD2n31OXaKE@bLwl-l|NSgkP{g+Sq`iW!x!TV%;Ez8A}=IfR({^@|@-DmV0lJd6@0eX=v(}7*b@YghI)b2pSo2v!2*4 znVB7=grkE)=JN%!_0`142!ioQBa~(TXwJPG8GrwukI-A2Tbvw&6gN3LgRI;mD=v_t zO-QE<2&r&`>f3t=VPI}~iOGBD56D*6xo8Zg?FdfbVu$ON1ef@pCQDA&Xp7PYEi^*d z!DRVi3XvrEfIQ1N{`6Di^d>hR{R=Kk$I7)4OBFbaJvQ`o%_(1g^C=;$^5S>@4=E!j zuA*C>GFe;WWn1&+zaQgck90|V9%Lk(n%)Z5sNz zrE5D}=aAAT|KJ;Z7jaRbjiqkpDCOA*_bFzpOuInaG@PECV^l#|DfSMI8I>bUF=Frd zjGsLEKKk@*pN)fRIvR8IhgbWdGAI*!aOODDOnpAFR>m87FN=W;MBn#?9IL=36eF9I-jO2iXY+ zwdR7JYBXZ~+72c-ny&&Aaf8t~rw%o}Yr$!pi$ieW>6?J>J-&0a%a*!MrlxBgeIE(^ zAixs>V-#7Y(3wJ8iLw%7C3z-MdHTLJ7i_5!A*_&9mU`J!H%m;W$gCl{$jY_r)b%;L zU+6yWQ@i$v?ys7ip~MC$9wQTrf9?^M{TP!R<{HyFA>tzTBq$g&d!=E@T)nRQa|;)@&2DPdt=1Tz3cRu z;=E1m<|}LIW6gYVhz_?1dxljl*eW-8@Xnue=e2bvTW^wQIVQ_l%PT}b!M-S(Z_8g6L&BrBY#xz*vQ`D%DH0LTQ0A0+UO!T%!w( zHHy9p%<3(A8Brz>94s!DOjlQt%Jb~$8Mm&F5!o2^{h#0Zz(`9`D2h=jgqpARzdF>msKIHO;&u4vHJ4z+@7e72JFKF7N$h zo7ptycz({w;WCAGLKE5%x9d%-r1rvo<)Cw5{6ke!HSGN%<0>jX0M@LY!H=X z@7YJxr!P7A>VlQ#Z;aZRD9lrPU zF5;ae291b1DchCA7>OPh-dKgU3S%Tnr+mp?Za^l;vYc`GBUaWYbSDC-5_F-hWO;tU j#`Zc=^q|*R9cBD~zz>~hqCf=J00000NkvXXu0mjf3PK=^ literal 0 HcmV?d00001 diff --git a/share/icons/feImage-icon.svg b/share/icons/feImage-icon.svg new file mode 100644 index 000000000..e8a6a47ec --- /dev/null +++ b/share/icons/feImage-icon.svg @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + + + image/svg+xml + + + feImage filter primitive example + 23 Jan 2008 + + + Felipe Corrêa da Silva Sanches + + + + + Felipe Corrêa da Silva Sanches + + + + + Image filter primitive example + + + this is an image originaly intended to be used in Inkscape + + + Felipe Corrêa da Silva Sanches + + + + http://www.flickr.com/photos/dariosanches + + + + + + This file is derived from ticotico.jpg which is: +(C) 2007 Dario Sanches under the CC by-sa license + + + + + + + + + + + + + + + + + + + diff --git a/src/ui/dialog/filter-effects-dialog.cpp b/src/ui/dialog/filter-effects-dialog.cpp index a120b6a40..b3dd1a7d0 100644 --- a/src/ui/dialog/filter-effects-dialog.cpp +++ b/src/ui/dialog/filter-effects-dialog.cpp @@ -29,12 +29,14 @@ #include "desktop.h" #include "desktop-handles.h" #include "dialog-manager.h" +#include "dir-util.h" #include "document.h" #include "filter-chemistry.h" #include "filter-effects-dialog.h" #include "filter-enums.h" #include "inkscape.h" #include "path-prefix.h" +#include "prefs-utils.h" #include "selection.h" #include "sp-feblend.h" #include "sp-fecolormatrix.h" @@ -53,12 +55,14 @@ #include "style.h" #include "svg/svg-color.h" +#include "ui/dialog/filedialog.h" #include "verbs.h" #include "xml/node.h" #include "xml/node-observer.h" #include "xml/repr.h" #include +#include "io/sys.h" #include using namespace NR; @@ -545,6 +549,126 @@ private: double _angle_store; }; +static Inkscape::UI::Dialog::FileOpenDialog * selectFeImageFileInstance = NULL; + +//Displays a chooser for feImage input +//It may be a filename or the id for an SVG Element +//described in xlink:href syntax +class FileOrElementChooser : public Gtk::HBox, public AttrWidget +{ +public: + FileOrElementChooser(const SPAttributeEnum a) + : AttrWidget(a) + { + pack_start(_entry, false, false); + pack_start(_fromFile, false, false); + //pack_start(_fromSVGElement, false, false); + + _fromFile.set_label(_("Image File")); + _fromFile.signal_clicked().connect(sigc::mem_fun(*this, &FileOrElementChooser::select_file)); + + _fromSVGElement.set_label(_("Selected SVG Element")); + _fromSVGElement.signal_clicked().connect(sigc::mem_fun(*this, &FileOrElementChooser::select_svg_element)); + + _entry.signal_changed().connect(signal_attr_changed().make_slot()); + + show_all(); + + } + + // Returns the element in xlink:href form. + Glib::ustring get_as_attribute() const + { + return _entry.get_text(); + } + + + void set_from_attribute(SPObject* o) + { + const gchar* val = attribute_value(o); + if(val) { + _entry.set_text(val); + } + } + + void set_desktop(SPDesktop* d){ + _desktop = d; + } + +private: + void select_svg_element(){ + Inkscape::Selection* sel = sp_desktop_selection(_desktop); + if (sel->isEmpty()) return; + Inkscape::XML::Node* node = (Inkscape::XML::Node*) g_slist_nth_data((GSList *)sel->reprList(), 0); + if (!node || !node->matchAttributeName("id")) return; + + std::ostringstream xlikhref; + xlikhref << "#(" << node->attribute("id") << ")"; + _entry.set_text(xlikhref.str()); + } + + void select_file(){ + + //# Get the current directory for finding files + Glib::ustring open_path; + char *attr = (char *)prefs_get_string_attribute("dialogs.open", "path"); + if (attr) + open_path = attr; + + //# Test if the open_path directory exists + if (!Inkscape::IO::file_test(open_path.c_str(), + (GFileTest)(G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR))) + open_path = ""; + + //# If no open path, default to our home directory + if (open_path.size() < 1) + { + open_path = g_get_home_dir(); + open_path.append(G_DIR_SEPARATOR_S); + } + + //# Create a dialog if we don't already have one + if (!selectFeImageFileInstance) { + selectFeImageFileInstance = + Inkscape::UI::Dialog::FileOpenDialog::create( + *_desktop->getToplevel(), + open_path, + Inkscape::UI::Dialog::SVG_TYPES,/*TODO: any image, not justy svg*/ + (char const *)_("Select an image to be used as feImage input")); + } + + //# Show the dialog + bool const success = selectFeImageFileInstance->show(); + if (!success) + return; + + //# User selected something. Get name and type + Glib::ustring fileName = selectFeImageFileInstance->getFilename(); + + if (fileName.size() > 0) { + + Glib::ustring newFileName = Glib::filename_to_utf8(fileName); + + if ( newFileName.size() > 0) + fileName = newFileName; + else + g_warning( "ERROR CONVERTING OPEN FILENAME TO UTF-8" ); + + open_path = fileName; + open_path.append(G_DIR_SEPARATOR_S); + prefs_set_string_attribute("dialogs.open", "path", open_path.c_str()); + + _entry.set_text(fileName); + } + return; + } + + Gtk::Entry _entry; + Gtk::Button _fromFile; + Gtk::Button _fromSVGElement; + SPDesktop* _desktop; +}; + class FilterEffectsDialog::Settings { public: @@ -676,7 +800,7 @@ public: add_attr_widget(dsb); return dsb; } - + // MultiSpinButton MultiSpinButton* add_multispinbutton(const SPAttributeEnum attr1, const SPAttributeEnum attr2, const Glib::ustring& label, const double lo, const double hi, @@ -705,6 +829,16 @@ public: add_attr_widget(msb->get_spinbuttons()[i]); return msb; } + + // FileOrElementChooser + FileOrElementChooser* add_fileorelement(const SPAttributeEnum attr, const Glib::ustring& label) + { + FileOrElementChooser* foech = new FileOrElementChooser(attr); + foech->set_desktop(_dialog.getDesktop()); + add_widget(foech, label); + add_attr_widget(foech); + return foech; + } // ComboBoxEnum template ComboBoxEnum* add_combo(const SPAttributeEnum attr, @@ -1883,7 +2017,6 @@ FilterEffectsDialog::FilterEffectsDialog() _sizegroup = Gtk::SizeGroup::create(Gtk::SIZE_GROUP_HORIZONTAL); _sizegroup->set_ignore_hidden(); - _add_primitive_type.remove_row(NR_FILTER_IMAGE); _add_primitive_type.remove_row(NR_FILTER_TILE); _add_primitive_type.remove_row(NR_FILTER_COMPONENTTRANSFER); @@ -2017,8 +2150,10 @@ void FilterEffectsDialog::init_settings_widgets() _settings->add_dualspinslider(SP_ATTR_RADIUS, _("Radius"), 0, 100, 1, 0.01, 1); _settings->type(NR_FILTER_IMAGE); - _settings->add_notimplemented(); - + _settings->add_fileorelement(SP_ATTR_XLINK_HREF, _("Source of Image")); + _settings->add_multispinbutton(SP_ATTR_X, SP_ATTR_Y, _("Coordinates"), -10000, 10000, 1, 1, 0); + _settings->add_multispinbutton(SP_ATTR_WIDTH, SP_ATTR_HEIGHT, _("Dimensions"), 0, 10000, 1, 1, 0); + _settings->type(NR_FILTER_OFFSET); _settings->add_spinslider(SP_ATTR_DX, _("Delta X"), -100, 100, 1, 0.01, 1); _settings->add_spinslider(SP_ATTR_DY, _("Delta Y"), -100, 100, 1, 0.01, 1); -- 2.30.2