From df7f693cf4fa751a745b89741c5efd35a5416211 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Sun, 28 Jun 2020 23:59:28 +0200 Subject: [PATCH] Demo: new window icon --- flatlaf-core/svg/FlatLaf Icons.sketch | Bin 19911 -> 21806 bytes flatlaf-core/svg/FlatLaf.svg | 13 +++ .../com/formdev/flatlaf/demo/DemoFrame.java | 3 + .../com/formdev/flatlaf/demo/FlatLaf.svg | 13 +++ .../com/formdev/flatlaf/extras/SVGUtils.java | 86 ++++++++++++++++++ 5 files changed, 115 insertions(+) create mode 100644 flatlaf-core/svg/FlatLaf.svg create mode 100644 flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/FlatLaf.svg create mode 100644 flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/SVGUtils.java diff --git a/flatlaf-core/svg/FlatLaf Icons.sketch b/flatlaf-core/svg/FlatLaf Icons.sketch index c0fb85e5e58038b2598a970fe1a20651b1e0021e..708e7fd147b2082c8fba0c403ed542d95a9a6a7d 100644 GIT binary patch delta 19845 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 delta 17921 zcmce+Q+yy#&^8)lV{Xh1H@0otwrx$4jW)KOjcsdV+qP|g`+wi>=G>gSbLL{Eo}Qjx zP4};=tNN*~DgzzL0IflXfD@5JFF$1f0T~+vPauTQ1|+DPdC@+v;9?U+lvE^1Tn!aH zM+KGli4m)Qzw_-MbZ>nOz3ufyM7VEtaC5(V-d>)$6Uu$<-4A`Sdjc=ECxlE%Qp6$* ztme7Nu<=zGlw6hN^<>-|!2RCI$<6-t{?;VyW=;+P z;n&Cgu7%o^rzAya_v72Q;R^;FSpj!))Rno z72^pkGbh^JA8ar|RbiLoX-Minonp@(3wWfdiz-ryZC@2KDKN!xU zV?w`s?%bX2($Rf!=vDQfC+Hm{AOYMwU#3oe%s%2N#s+U+o4y6&-1JCO^y-%{OEV*( zpOJtMPT}Lp)80+-UEyvqVWg(AJb?K2rxknUDIr16r+cq^A>iY+{PWhl`)X-!=H27= z?#4$0i676mEtUW4`gU$X^5$c4x)C-cP9>>GQ}kr~gjADu+D>@k%~Me(LSMAO_yD=nRKSa;^I<+F3utndUp`-Wcr|-8tbrfn&7_+IrpX5DQ6S>owj#q3R zdKE+Wm5T8^H*<5-K_yN>k#Kj#N8rctvGkr0k-`7jk*;zDynODxoD}Eq>#^<~eJ*M0 zlNRUDrIg(@Uv+&vEXk)703#PZOfRL?Az!r)XE}F;EK>TIC(iObUVcjL_41S**m|gb#W!EdKT-TBtbUW4 zdXxNmIa)&UjP#qYS%)84aCqljXigq&Kll9_vx!*%E@%8Y6(*l8bbZ;gFHIV5ET|~) zGj9zIFSkCex{%enV^wR7%XjzhkBx3^)kVxYCf}#VMn(o2fH!e-=9jgq;;63A^S1)d zs0(-FI^{pb}W(<&VPh@%VcwU=1S+2N$k4V}CzE0koN4AE( zD+h0P@IMpYO<3H2JvZqh)h`Ohxi3}o5I&yR)=L&10lxgW&o2nV6fIPzQhliahg}xH zQn@pMlmd0F$Vz5%_V7^N-kc9@p#karQT8#Y%AX)gMF`*r+pZdQN`iaJ7V|5@Jz>^4fuodYuM)p}NQUK4&CB5U&CrnD;CCQL63O{H7p%I`NHCtv?oQNrRJIlg^M zRr=)coDDXI!^-xMW88zMwb`9FeJCq}ExChNjF8N{vZU&6-qP+VT);f+e(bF5 z=Y$@Khf>rR_=`fFUbm#Y#emXM;AiV}eJ#76X+DilpXMTU&t9HC1)LQlyD+V-$=k&~ z#*|NNIxOK4;`?fd>4fD?5&LIZ%TlBPH+#@Fn9fyaoPAU-njY2Xqxjyq)s-|pj zVscMnnJ}y$2MTlOLFt%Qua$~(e5NF~*y(hbC5Ax?I{p@!SJHp;7FlEI|Yh)1usEPe^} zP+UnHw{-BB^IsRTlZ7CVbD@3dAdyU_gD@iNu^eo{}GgETpfwlN;(5Ty`YGzEl@AUY~n?r%sC-D!#HbTGX z*;lslgY9K-2}=&FAN`{NyU#nD%e|45H;|1=t$gx&PWi5)l47fCmr8sOQ_RnL0)F|z zYT7;;j6kz`Vtsu!THR=e49)5kGhg-HE04eCp+1Gk{QU2=a9^JF#I;}BI9)5k!0&3p ze#a86vPxQk2Ws%b00?bWgOQ_U_<^zp2R!?!ce?=aCb;omTa1SRCCLiH5Rro5wPY}! zE&Khzp|<>Jc;rMnsSU*}HNUvv|TE9=PLxDiYuLk*;$s7FdojI0*Et-L__MxBTW zObYFf59~$PW(F$=lds@^-pP+fe{2_9}BIv>pDyG25=cgthOD+qGkuP8O&`Bg6x56T%AF?+_t@_Gey77yxY>H0bRDQzrGYW@c6B|`@Q5{(k*Q$H|dZccK*e{~W%1)VJMsHLa z5kf2l!CpjmRh|Mxasp{~p5H6We6hc-B!r228Z8MQ4XjGFwmfyA#95t|*Fg z*BAWA^R!LjyyMyt%TykhQRu5_XYUfiIou`~+!f9Y)dV`o0A-!&k-L1f#)9L0X;^R) z>~y`+a4#=9XYM`WMymE`aTO{=32w*=6>wob6Dh1r=QkHrzt^)EU9z|91@{7JH~x!X zm26@u$Q@Ia{ldvDOED2lM6l@8S#|nkPlYZ79LF&j-Q4ki$zvfwl z*+;uOd<%7;0Ot6xL^eR%!B`gD7;E zw4q*}<;uin>#S{n&{d}kBgSEV_~vUP;IKZre;hDsy1QHIcEHr+sKgTADQZgNaC%Bs zcsTrKu1=?};-ezN=jN;Fil44D?5oQTr^)(QB|0T~6)o1L^Q7bZvs6^VQwEZ`s8kMH zMO?0P70}gdq_L_vzo9P}EVG?oPD<4%np(&6(NDzpK_hwcWyIXBaHYZ%wt97S-8y*X zvWi^6k%(fArN?JUID3N>EAJRZ_wn-eE}=WZ#9X|ue))TPWokI0_;-wu43CE>CUt{{ zItpXgPk6UWI_vA*#l>ftVvbeJBbPIlF3z0{P>Z?O!R7|6d7GiT%ixWu#d@_4AtnM-d7)vEP+e8Z^WvFCRbo! zXX4Hh5x<)aH=l~Qmi7>4K5Nd|8c#%()H_sy*Op($NDptNq(*#zM7|GbVx=GsH7GjLOv2-vehiXr&$zXtHutp~+8-9CI z2$hQ7&-8AY5uP(J$F6rgSTAFHo=rPLdm2K5>AS#po{jYKTOKZpzf6?`wiK?Pl(!SJ#z&Hie}uMVa@j?}S3B?3=D_#+ z#is5Pcj#%YYxn6BA%O*CJh--Sc7hrjH{e6g;HS`aq9v&8CQ!?2z&;CMb>vb*-Z~zL zwdpfC#%UlRi9-@5I8P-AABbfV4rheiPZVa@EtBHjtKd1)f6bgc8X-0eHRT61o5XsA zUesYx^JnDM%@lF0iB*sj`rmQ{JFN=X(&i#kTV_1XD!i;EPNTM0cg&q zjOu>UhoiKAVjGAZh>4L+5oVgdjY8h0H%?XkZoM573(eK>=~E$Ewego4?;%$&fy$VI zLX$H_>5_7RIdZ!DgO*$7=s^G(He#(16&SH_+Aj%T5G;?*r}!+ggH|jysqQv)T)rstoej8t{Y%p4e41809FBo9Zf-lIKWx&y8TM$F~!wIsmOU&RcpzW&s zfty~0i_RSS9a>;NePRS$Ig<3)J!sn%Do1&Om3@r13lpSlFg}VbfQd9$8wMtBAq-O= zcBbr5Xl)TfJAsHuP$2&d77R7wTiPy|d4IkT4fSR^0$b4^BWcj^8{MgWC4d;hxHmnS zQRBNYJeZswXl4m|tdwj|9$T*AQcn@raGRM>9UJ6_);2`_UnN@Mk>P3UJ@M;2m_kx3 zQyx^d=EBD2me6l3D4nvozXj0#X_19Uhhaf6wr70AG`>QypfnyV!T)nAEiR@iJX(<} zw&8$PE$Y&4e;yUX{`k3-1CW0=I{6UQ^wK6v-ux#e({xs{Z6=oxL9$ka`v#^W6SFKq zHjl80(I;=xkCC+C*qy&cm$K9}Vv}fBcUU$ubYZ4wxLB+{X`(8`!0*g}98LGM z@Wh`lj!MyV2Fsu`DGrMeqYcbzKa1DiV@liC-fv1u+n-g)sgh9wg3!6C)ISCwbeEdu z!?13kpPJ;@dESjPZug`$;GZMLbeX)Wxc=rxo0zrkrZQ1a-DjJ@zX*?cfy7= zrCt_$xIMkxcCwHc_)A^@*Cq73!8gYE7(s8Exd$0>ewMWlNpAaB5A;kW1Rsn~ELB(a z_0Fivec_}~Le92TnVRc(+a+oEbWPGF@fUOl``U<#I4p zb@g}t#>4E#>V_npt2zu{(U+*z?xKAPyDulhb59;YdVb74;AkpAZB45ARY9|R1wx}r z&%qD9bC$}gowTHI5NFA}nv=*(%zBy|z6oFhy}05|*)43f>MJ@@YGC?d_U2qxh{!y; zIwfbpLliZLj7AD6B#)+G=c&gLGZ`#9I8PAkSP>EjVl@`veNvL`r;!r!Yu!a|^YuDA zxYMVbOlK|)uqzPk>fX2IHqdm@;MV1oPS9n{@FsrVnmeAsuhDVY^14h1;}6phe=fAyNm0VHE~phcSHgvn{)Hum z3O1^Tttz{9@W=$)`^Cw_e^M{KuGEFsjE>rj?kK$iC^sjL)rwXzPcd~JBeH;@Ycs{( z!YWl_Gc>R6xG>D@ec}c90CNaVFt?n=DDI^A3*%N&nPU6X!dQl!_sfLEaiWBAWZzK^ z&pZi}`NZNyiH1n3w@Hnz8q3?d4sI|xwY^9?OmU0oB0lf_F&TzAGD}|P;2$JmGe%L6 zQn^)t2gMXJwBoFm<)o+!wdYNQhjTjn7D}?-??c-3W=i~g&xqDI8ONFO0d2t!j7=?# z*Fjm)EIbxB2$4J?q6E+gWm@j?xOk!v_E4X8EC|LhF0wE|-L+Rwhg1Jfdyp&=qJ%XbVK?}8qI;DmImIs(F@$k9{|qzvuowISl(sV049`b#zog8cu+h z!@fwRod_dcP&Cki_35#!T2(5MHnc$%t*K7QhE$!4;y&~s1vQpbUr$Zi^_F?Br%9E{ z!SwKu#{=r9Zj(O?70)D7*7gY+G5j4kIlxWwzZzux1vu3%$3zD9`OS$O%9!=9K}hw z8a`W>dG^&uQAmr6d>;qGu=1>$o!UQw)T#>cm>u-X1$t3`SmTydG(@DTE;>G)aD6DW z(dB%;?#+zs_o;71(V^gWPBB}uC$Qlv0@ZvOTh5)x;~2qg@-LL-yR>MQ&2sM5vOapp z9x3(T`a%nSup*we9b%1;IW%5vsHx-Y>Xp+|b8h&erSIq_PR5`a#-1jC2mf^k{4kGVFLwO;b+4`n|B_w8@gzDFVCPvFG! z2i2}`!xIDrsCD|%aqO7k2+$pO>vfTnAxYV#**iQctA+Yl>NeRQZ z`j1sji6j*KeTH$9Q>4C>>;h^t+yGQdwmHntU5WpHUZ6MQK` zIEhqj|F{W#`7FW}k$sO$w^(fJ3!~^Pv8$8(eMULKk^mCH} z*DJ>bD82i~Nk=2SnY1mc6COL*bs(T~3W#9@oJ!Q}GJ`T}RlBM!)No{W?~L!QrAdZ| z(Bd?e;2E`1;xx&)&(sX;>F`Vr?D_EXPNo>DiWF8LAeP-ig~{MP(h+o2C1FwJHOcQ6 zbs1&E<|~2n9v>nPdqbahg5hf}%o1)Y`TA`Ej~Mpk(Wy>9a(B9AiY&rpFoawQB)_A{ zc!GsKW0(uuW7kq{bLn7JHX=I-U-N0<4f^SoS9Tm1Fm96RgBV{9bFM+ih$xKw7}Gik zGvn_(9-{tmdOwzytu;M|n>L0lTM#aj3XtW=ge{$t^D_3kuY@e0(YA=TBml`Tf&Xm; z&~mxJ7T#m}-EZ==6Y`qd2SzCPUMSHuJJQ(fUCSdXYOACEB*yNK`E2|+{z*P(MdHvH zdB2eKDs+dUlhZ`*b=al7Ws1hwn0K-FeB;JP4KLZO(c6~#x`>G!*au_7@Cd0Z)no;5 ztj$2`V-wq4q4armnsZ;KnztK??L0|+C!S|KG`^voi{gAg)FB2I9;G(Kt5eY-1k z`wgk4e#<>SAI>86dA2Kl~h&{`+e=UE>7i*i|aY@-WT$0G9$k2B@=I6zD*b6 zjaQ7pHVk@5wC|E{+f6^u_Sy}6vE}E$&qn=bZMI@A{h?ECL`ti3+QH`oh6(`y*OXgd zeK5h4yIb`UQ;}`4wTizEoIq!=iIMG+?oE<=dq#S@*OW&Vn&$#lgKEo`HNmqK}L&pEUwCr++T=Trvz zFWTovV;z*bDpm;((*aMjr!0`6!*-nANeR^dZg<+67`u=^^aOSx8=9%kjIB+|@QK@$ z#3fZ=jo|Rtzi$;<-b-nB$9No;`*=MLT^75QvASPuaabT~L)V5AJ21tTT3^eVM=f-# zSy2QF9vRT6{DDY}0BvFuY{K`)>m<+;PaXc-g7`@?gy8doJ zD^zl58wpavf-CIBg|K?o$cpX`E|k1#fsCq)Ii=+#s`zWDN}OY-y9RJ|IOqMj07+cr z4#^EiTz=aE0(;~52Nm#NjJbj;(z*L98JXb%Q6b3M@`)$~73!!V1Y!Td#wnQ5)Ir&` zZ`kSKt0|0Fj?c%lX@VqzP%2_T3c&ius}h4q{evaGPzt3)nC!Qg ze*m)pYBCAZNa3hds}h`y#y7ZJiziTYHdWo+Z@Pkne3EVD=UUd3keZ_UQQ2ZOo){pe zxJ~CS0a`YpXxOkEq0tXUR$MBkK6Y!MC0Wd+%v7a(I53S5Zpw2AMvVk5`jwROke&Zc zW&Y1^|IKT;5OU&wP~XN(9TxKa8c^s_sZb>2x}I?5IS~V6H*cG)OjjjaR%76orZh;f zR+Td!HY<7ltrIFi{rOidw`7$Rn>_YhOr%QsRxM-4^kDZ`j-KkAfyTCdWdg?IQ0SVA z@+cHsiz~F+X0ZfMA3OtHC4g}sJO8lD$M_g^q6|KH9LBTC8IHydt{ROgLRU!_Ici%) zm#!6LTz9feqmq{Hpo*#^-4|(4sm9)Cv`n!%j-T}&A0?`4aXIj2r?mY<>u^qGKO@T} zR$*WT6Pj3Gyv}J#_lt!pa7r%8NGU=UuPZnUlR$3S(y-W66^5Jk9B8PS^S0e8h%&sQ z7FG`-RZxRfdeCKefoexa7-bp? zYQZ1?<$t)p^Bv(|iOVR#2~-fHFjTzpSBWZ=OKRsudUJ-C3V)}!XWufldJt*>wj`~p zxWuBcaAmDYUBIk#dkVWUGxgB4M}OyH8c}dhEZp06`h;Ezg*!b(|2nZZ)J2KA2p*|H z6y(^*b6BaPgLZ3*HOq0h)3i&SzyR@&a)4IlyO3&OAzrutoSILh_e+TlC(iNH{d>%Y z3*DAI{|$m}S9?cVs}JtmKMZy@;Qc1r*-Us5rYl<`mRs+<+^A`WG!1hkOB?DJSO3~C-F%2Sf)r|Rrf1dU*jtE&z0 zF|?|8%)z0wLTf>bZt8a5Mk}@Zb`oh82&>k>6{QWX+2;(xK5N#e2<^Q57N6mB@D2bO@D<(G ziU+JK2!#-PNRl3M=pzq1cpX4++EU*tfm1MWBRxyB?5Tn)&doH7P|UctQdDbwRtr@O z`mNDkGKF9iiC_iKsNDp7JLy$adx%PUj5S&c2y~-^({N5zonWdF~2f2ENas_j zZOf@U`R92MnSsw7z_e1@HZ;-Rl;@dCt-j0#IGge^xmmzTK9wO_chSYwQw!RDH*sI8 zajqvvYu(|FeYF567m*Vbkt0-B9|q0o@yZR%{{{RkNbZ01^ZC2Q1KxeW)1<}_d90E} zQkH+yQ(pGe*ZGXs>rwa``~Ks3*BXBq?F?yWFz2a`5jYzcSYy@mP(Oy#E|#uUw5}(n zz2UcoH5IENKT>Gsv(N27_-v(0+8}h&&W2_O*X&YAXiK1lQF$7c!~LM0%sS9Xu@*u8 zk~UMwQb!luSe!-!%}bo+N^H@>j#@?Bj@#Z4!>DY<%7FL0zy$``_;;+zFmXA`OUe@s z_Ctvc-^atb@>XQO=JS{%=A&3<@BoY@e^zj@&hdSh>!UxTxUlb6CFy|%_Df=VfKmQ$ zVwYU>i%US-;zI#;gX}KG_ty9Mw0(xGeK?{EdEkYJafDq7wO9$&or%OacN*ZUsIkR1 zG}j4H={RXq9E^)-2Yzm_OE*5a&=|e zHbz|6Ka$L`5^r&Acb=e$x< z`R=sOJU?xPFS?f&<`F|MK$Y*Ohx<>?XSH_6;fD>QE$r!&k5|XI3l5pC}fN;+NN*-gc$fj6Arcb8jIad_4jvYaU6B(l(H4UNWCYu zAig3;h-ZXjtFd8X9Kqw={ioHqLEg9ZaUwzP`BS(`^f1xT-rq*Dn?cLpSNC|qRpCL6 z8yPB?y$ne$?*9>FRrVYxn%I-O*w2TyY{?pGPp3c1C5(5ZgRxP&RGyXoCHnh7b6$de z1#PlFtO^cjJbVoLZJAqR9mgygvlo3xTQxHI(m*tK#-c7EQ|Z~;pup`4*daQTnR)(Q zH3oSz^+H86DQGkftOJjr$kNT{^hTg_HmiMwp53V&HnH#V~sU8$BQAXW?( z!9Z1&Q2AfsA;Q(>#{}oUd~@*J-|D(YmQ!KHbl@DNe)&Fpv6=fb@A#y;+&>$7XQbkF4KJ{o3Wm$encpdeA2cSE-cF^IQLmNQlp)aL`49kn01X2Or zK(&c(sCh%K|UXIKl21><>c14L6Qu2X3L^XdL z)(xePS`!1z5n>mnKhESlKJw#&%owRe${Hry6=F1%*mN>iN21DMB5s_3%=l|;|Cz?O zt%HX*ZkT`@X9e7zfo(D~g$pm6t=FdTU|EjD`(I5n=6`CMLyNbN%wo`-rU-vjL8>%* z5{%4i%B&tfmzmzzD&T@V-ZND?U=w~b(gJJn7<9}k&|x8!?iLT{6lbjsngidd%7cq& z;+w&3s1BU2fkXt-D5x%>kIERtg>27UFqyoog7| z3lvog6uK<8Xk6?f-ScXV3Ilg7L%)e(Qjaj`usp}lo&p8c~feLz{+DVL<^Hm281vX9E2{4&QF9n>S=nms9- z#$_KkWpghLrW)rap0AA zvK|JXW(_Z`HQ;dW=I-YzRdDz+y2T_WC6Um%0BXliwWG`tNQ%``ELXlv({?924@UdE zqX(uH=ITt{2O}@H>T1?Mi(0n+?N)})W7}ZvEp}R4fle~9GbS-&tY@7T;Pe#;%Uv^G ziv%tfkR|znu}QzCZNAFHeg)`7%>pFSbgLjyM(R?eOb!gb^sJl;tW=l@1Z4<87-H6Q z=S)cJ?<17oCgJJILiBc!iMWPxWe+yHQJhukUd9f)>odMU^HteX$bE(-r}9tWwEYGW z2-5Wl%$LeW1)Al(?os&+ej%-*FX2B-j|OYww@wTRYKNkC!0o|8rO-9y*aMqN#Cx=x zE8!+aZV@*Z_81{h3A@! ze(pi5Pi4qzxlWPjsSl<~^8i);<6H_`;p|$A&}M~j>uz-K(0AliX!ADNa#O`A;tCth z6-(%KU2_E8W%zcMM>PsDip+#|W6S^kk))Y09+!}UkQCV^jN%G8-< zr#EkQPV&c+=nue2{m1Ye)}Lq?&I5==sRCk-z~wsaaAwakfqEh$PxzX2$UvO<;5cUc z<$0xWsSvBiKnQ16vyhR>3Ca>?_@NNj1{56l#zPGj%KG*yxeH}nsfcJsCwWJ+=@Q64 zmLc)6hU1zr(j{0K#+8bseGsk|(7(a+n(z#;C^>;eWihea!30#82Us;W*6)aT zP}U?v9UvhgDDf?^5Q3EPIP)@L>B^(NT$n8ixC0>OxJ0IRIvy>`XIc#pRx6CgDV3X; zn#|3}KTS|>@^y?Kg~ZOWN)zpfg)($~;U)9#If)^Z>L&S4UzbWz#ifwrd^^U$$drRp z%`DR6XVw9RA4T)RfxlS;??n^}xN%AoQC=$uc9VrF!t+cRqOeWi!PW@oE0~|k@;hzh zA{J&yga#4%lzJ*~=M{X!1G%d+l+PJGe~b)GUM4zteOm-|c1B9z{!(Q&Mxvk|&-B?^ zMz>My>ydNc#bc)T>dHQ!wLaN%d`FTR-)R<)B! z6DslG6HI)!VG9WFsyBjl{Ijh6_rgH$lJ4_*?%>(s-dba`Q+vD}Ng!YSYWL~o{rSMb zOFN}=U4%dBOTRwQgZv_-xWJE|{!`%$AUas(=Vo7k}wN#K$i7yGV?=Hr#8?8b>8&N-H*?+x-LHd^1lO8O zPiTu29!@v`0u~7K2mz(KyK}DIK&~7S|~X zd=W|bhTz>u2(lTlL;oHjI_wkdAB|?F?2&t8xP=ltkWS#lYYTCf4s(12Aa#HdC*~=-8e9_=*y=Dqmwg&n{pB+MG_HL5#wGlW1umb|MXB| zZ=B$fp{E#+w<1OU9^gpDi{C?4SmI2fCW ziM0jX#_Et4oETI#WiM+%Z_?;$hJVjY4?1hXITHS2ka>IUc;pFi9iYy2CL@X_$5847 ztsjQ0JJ0l)dbG2VUpuLFNmd~gQ+)YZ#NkoKU}e+W>N?n>vM9WvB;P5CQGlTY2c9nd z_h%v4RS=Zzw}?e7^aBcAhdKO1LRx{Gh|^Xe3o)^-Z8uO?1xc8HPUqw7Zh+}X9IWQV zZR7p+q-E3_r)N*1&gILAnWyQk>N3Mnn)&?px-lz5ymkDz*pp*^>Y}NQWZ}pwUv!Ln z@9`4z>I(Ssc+xIXotR&|t2=xEI#q{1G4u}_K|ex#S=F)y&c%|Smq z$jj!ZgD&1L58S^m907MP7li-oydeKKQlRbyc5EPnfGi^?j0)gFEF)7~C7cK_0Lbx@ zB7!O&pclH{kr)fuUv5uy6+dgn`s&Vatsq=xpdz$vB6An=BLr}b!z*nAPY6>nrC8q$ z%Nqj>7Ur#NekV0VrD7sjWRTEm82iLxwL1z*G$xy7&{dmy!qA=5jq!N{_1R+`lk1$! z&PUnYPjB&Ky7y7!yjS16Ok@;P!um=Ge?wzh?JbxdtHgSeKT?=OQdHJqO* zC^aP8M9aOupe^T$WLZ3KO|)7Zh-K552Fh+;7IykVPomg2b4kUcr*99&0L#?|%c_f( zniiBAWSgxn-v-k$%(kaZ?~}6fs@vf4AwobVgWbN!bS!x$lhfJf#GznUkVu%pq$&!R zeReeIXK7QD8f-vQ6WeNyA$X-mZ6I?Rs?&(Q4Kn;)#lzXs+=lzs#jsAQbLZo#waa!7 zD0oyFv-#|7p)|8I6DSH3uu@*#B^ASS3o|tWLFw~H$-p0$_fY3?jb!*?KS5qeSvi5R zb%=FRF~qrE;5(Z^L@)|63>HLRwW!STMV;*$+v(|P{z|?1+-jqBl)SHRr(#Hj+4p6C zT1+tkB86~Qx^KT1uoZsx>|T^qK3%C;>YBqoY&33_b4+sOd1DUMD53y zG;3ixnr{$Fe%`Q7yl?0AF1!7(Z6`$;I!88swvO$)g1PhdgDY*W<$_hXb}hXcld*z- z;!#Z5T6j2N5_fx9foxi{gu_F#f|1>U2;Pjpm^O6`U;;$JBOC-edn@^C^pc=+X!1P7 za)sjm29>=nO-$YP%@`lPo#c9ZRa&iDPxjdZ)}{v&j+6+Q0Vaf&eHkNQh*uD@?cdmF zBK-yY3Ekj+Jg1^TFhTrs-K>Zc5mL@b~dDg)QsDMyr9lpQ@Wd<8$3U2kE!VaKBF$fg>O}^$t)C1ux@E1~%qz57b zRkrCsz#sO|KL{>g#2*%uEZt@-00eCu6!yEwZxA#ZDVCLFa8UA8a8$Z5R8Vq_M2k9F zXfPQD=pQ=B02!D}4dsl9HX?*i_xF=&c+KnAv+6l~_w}8&DZ(rLx*y=6zYOf?omp5| zupov-*#)bzxZMxO{pgG)8)cgruWvOe^@S{nC|jD z>{W^4#hsaGO89r+6J3%(7vUAt8fq@Ln-dNc8%|RW?-!TSM55qFe_;wo;DNP&kiKK2 zHHhm|!awxQAzK+zn2ixa8Wq&Um#Y6f6)UhbkRG?+U~BHU@%&?kR}UKus`neKhh}k$ z4k3gQ;9I};S((_|6O=-%>~Zk#53aX&!um*h;3^GKOnl`bQVp`N9ZWU;J^w$!07L`v zGT~!3iH}Bnuspm03GZ?c?cnxJ`Ve7?; zyxZH`;aB>4dx{hyEsgk5;oY-;Ol3F)O*4EZe zlGOD^G%L*Bh-Tl$&X~I#2v}RMfhSfGwlR*~1P$b26NdKY!9lUV;^ez)WaU$8c1`xp z!S)rMG#R{#_ES3fI`1ecxoP7BF&|pbI|Ue^OYmm4N*wA;PQM8p$k8PF-4o4fo`u2& zmD!wN=>?h7QlWp3lT`)lz9}};r+Dj*xtJX2HMx{3lW5R!TV;nrfI35p> zKo8j4BWRspe#L2zAaBEy1HvI=q=EvRzeIPFqR7%`hWYh{0bpd^q0gq zK0X#!EB~o8(&qn*CHh=1R*B0S=pJJdkEmgC?Xu1G zTXObYFJ`$n-4{)379;Uw0WNz=OiZcEh&FDk)6>W+TQ0+mzRv3$->YjNeMc7U=u?)4 zb(m0Y3i$27HUf!KwXX%Y2wmzA)RKR`1?t%GxzZ$TU<%Utj0Cp;aWX|eU0gW4CVK_I z1RTmetLifT-{iJ|)9>zGaDl-Bd`w`V$YB@iCjQGBWS}q% zy{HUfT#=hbH`b$}u{zdAa+czERp)H zloFRWoSe5Np8B-bllk<07V_pF7rqD*3DuX%nZWv+ROQuOJ$txmbT{UaUwv`#5+=29UejPSD00Kfuz?g9qk>x9Ci7qPl;Go?*_K+!gmkrlEWPV%a-xkVT9tOXmV zfjL*zG>ftq*TAkBLjI53jAek<)EBPpV@f6xv!Rocq;rh`mQU+4jtZ#ym}S@=dT8)@9#@jO zyh*=BAx#d%fAcAzbvZ|6<7?-AbKT10SJr>ye%u{rJ)IU4rGe;E5~(7KM4}Ph*ZTV$ zd$RdDz?fW<^Lpgy#SV1pxi`5_KX2oin$@0#ait+C5pcZJ;v86w{sLcYSLQJ`6%jg{EqzZIobWEi&`_}uT9^e+;_KHZqY)! z^f1w{-;{4T9q&&ul9;D^Ox3Zb{^89C?!U8B)RR5FV4qCeC06F;QY*jL*B7n+q|@woRMdXSCeF_`w^NN~R200uX|?E- z!oD;6Hz{#BXQ_3pSFoD;^7f<4@$-`u!>g<2<{#|~vntB_;kY+?f@96jo1Xf1OXS(> z*ZS!@uF#KgX5Y2pp{it4rD@lmbw{?H5Z>8bz~-&-{i9;>-%r<0ewlhJaAv~BS@r+@ z@{1N0hI~}y{yIPB%#U!}#=LEBrYlNpyK_W!W!BgKToTcFk0yP5xz={oBB}eAzC2#E zbF$vLSIsdeVvg_Ll4iO-oAb49UAg@cX8WS?q195Gv_hJ=QSTmH}8pWYQFnPU3~ff z7y8|Y*>Ylw&Q|T_erz@Q;D$&8JIPgDfPwf3V-soq`8J_(*vzI~p^^ML~<)-na=B))>@~c+=xN!84dfB2?Yo2k> z*K+?65Syag@`Hu#@A3N!?=|0?ul~qzV&tZ~Mv21Pf`#+VRtKszFRT~2J*QYVu_j@5 zF(`|O#;&ET_mYw7}GO^N)r+bo}ZC0L)at9`TZxY_d< z&Ybp}%hy-ei1Yo?`@8AfzL z+b_GtpR4P|wpB-deaO78zQv+!%c7?3KHL>evU|7raCd9AAX7uOzd>fP(m970f-z?yD@BV9EET7XSMH@1S3l``E$E8~ zlq=S1l2YoEj|7LKoUx)75)=#@6Ne3n14qRf7(oPsttrv~d4M+~aNry + + + + + + + + + + + + diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoFrame.java b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoFrame.java index bf02a76e..71f85fb0 100644 --- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoFrame.java +++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoFrame.java @@ -27,6 +27,7 @@ import com.formdev.flatlaf.FlatLaf; import com.formdev.flatlaf.demo.extras.*; import com.formdev.flatlaf.demo.intellijthemes.*; import com.formdev.flatlaf.extras.FlatSVGIcon; +import com.formdev.flatlaf.extras.SVGUtils; import net.miginfocom.swing.*; /** @@ -49,6 +50,8 @@ class DemoFrame updateFontMenuItems(); controlBar.initialize( this, tabbedPane ); + setIconImages( SVGUtils.createWindowIconImages( "/com/formdev/flatlaf/demo/FlatLaf.svg" ) ); + if( tabIndex >= 0 && tabIndex < tabbedPane.getTabCount() && tabIndex != tabbedPane.getSelectedIndex() ) tabbedPane.setSelectedIndex( tabIndex ); } diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/FlatLaf.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/FlatLaf.svg new file mode 100644 index 00000000..41c42936 --- /dev/null +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/FlatLaf.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/SVGUtils.java b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/SVGUtils.java new file mode 100644 index 00000000..3a123865 --- /dev/null +++ b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/SVGUtils.java @@ -0,0 +1,86 @@ +/* + * Copyright 2020 FormDev Software GmbH + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.formdev.flatlaf.extras; + +import java.awt.Graphics2D; +import java.awt.Image; +import java.awt.RenderingHints; +import java.awt.image.BufferedImage; +import java.net.URISyntaxException; +import java.net.URL; +import java.util.Arrays; +import java.util.List; +import javax.swing.JWindow; +import com.kitfox.svg.SVGCache; +import com.kitfox.svg.SVGDiagram; +import com.kitfox.svg.SVGException; + +/** + * @author Karl Tauber + */ +public class SVGUtils +{ + /** + * Creates from the given SVG a list of icon images with different sizes that + * can be used for windows headers. The SVG should have a size of 16 x 16. + * + * @see JWindow#setIconImages(List) + */ + public static List createWindowIconImages( String svgName ) { + return Arrays.asList( + svg2image( svgName, 1f ), // 16 x 16 + svg2image( svgName, 1.5f ), // 24 x 24 + svg2image( svgName, 2f ), // 32 x 32 + svg2image( svgName, 3f ), // 48 x 48 + svg2image( svgName, 4f ) // 64 x 64 + ); + } + + /** + * Creates a buffered image and renders the given SVG into it. + */ + public static BufferedImage svg2image( String svgName, float scaleFactor ) { + try { + URL url = SVGUtils.class.getResource( svgName ); + SVGDiagram diagram = SVGCache.getSVGUniverse().getDiagram( url.toURI() ); + + BufferedImage image = new BufferedImage( + (int) (diagram.getWidth() * scaleFactor), + (int) (diagram.getHeight() * scaleFactor), + BufferedImage.TYPE_INT_ARGB ); + + Graphics2D g = image.createGraphics(); + try { + g.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON ); + g.setRenderingHint( RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR ); + + if( scaleFactor != 1f ) + g.scale( scaleFactor, scaleFactor ); + + diagram.setIgnoringClipHeuristic( true ); + + diagram.render( g ); + } finally { + g.dispose(); + } + return image; + + } catch( URISyntaxException | SVGException ex ) { + throw new RuntimeException( ex ); + } + } +}