From e5d33fb80d3346f01c0c0c50fd4b49beb73818e6 Mon Sep 17 00:00:00 2001 From: bancika Date: Sat, 12 Feb 2011 20:35:09 +0000 Subject: [PATCH] switchable sticky points added themes fixed ruler precision improved board rendering --- .../DIYLC/.classpath | 2 +- .../DIYLC/config.xml | 42 +++++++++++-- .../DIYLC/lib/bancika-gui-framework.jar | Bin 88285 -> 88306 bytes .../DIYLC/library/main.jar | Bin 92543 -> 93124 bytes .../src/org/diylc/common/IPlugInPort.java | 19 +++++- .../diylc/components/AbstractComponent.java | 2 +- .../components/AbstractCurvedComponent.java | 1 + .../components/AbstractLeadedComponent.java | 32 ++++++---- .../DIYLC/src/org/diylc/core/IView.java | 1 + .../DIYLC/src/org/diylc/core/Theme.java | 18 +++--- .../src/org/diylc/images/IconLoader.java | 3 +- .../DIYLC/src/org/diylc/images/pens.png | Bin 0 -> 922 bytes .../org/diylc/presenter/DrawingManager.java | 59 ++++++++++++------ .../src/org/diylc/presenter/Presenter.java | 42 ++++++++++--- .../src/org/diylc/swing/ActionFactory.java | 29 +++++++++ .../src/org/diylc/swing/gui/MainFrame.java | 16 +++++ .../swing/plugins/canvas/CanvasPlugin.java | 4 +- .../swing/plugins/config/ConfigPlugin.java | 34 ++++++++++ .../plugins/file/ProjectDrawingProvider.java | 4 ++ .../DIYLC/src/org/diylc/utils/Constants.java | 2 +- .../diylc/components/MockDIYComponent.java | 3 +- .../DIYLC/themes/Blueprint.xml | 33 ++++++++++ .../DIYLC/themes/Dark.xml | 33 ++++++++++ .../DIYLC/themes/WhiteRealistic.xml | 21 +++++++ .../DIYLC/update.xml | 39 +++++++++++- .../Library/lib/diylc.jar | Bin 341292 -> 345224 bytes .../components/boards/AbstractBoard.java | 8 +-- .../diylc/components/boards/EyeletBoard.java | 11 +++- .../components/boards/MarshallPerfBoard.java | 9 ++- .../diylc/components/boards/PerfBoard.java | 9 ++- .../diylc/components/boards/VeroBoard.java | 18 ++++-- .../components/connectivity/CurvedTrace.java | 8 ++- .../diylc/components/connectivity/Eyelet.java | 1 + .../components/connectivity/HookupWire.java | 8 +-- .../components/connectivity/SolderPad.java | 1 + .../electromechanical/MiniToggleSwitch.java | 5 +- .../src/org/diylc/components/misc/BOM.java | 1 + .../src/org/diylc/components/misc/Image.java | 6 +- .../src/org/diylc/components/misc/Label.java | 1 + .../components/misc/ProjectInformation.java | 1 + .../passive/AxialElectrolyticCapacitor.java | 9 ++- .../components/passive/CapacitorSymbol.java | 1 + .../passive/PotentiometerPanel.java | 1 + .../passive/RadialElectrolytic.java | 1 + .../diylc/components/passive/Resistor.java | 5 +- .../passive/TrimmerPotentiometer.java | 11 ++-- .../components/semiconductors/DIL_IC.java | 3 +- .../semiconductors/DiodePlastic.java | 1 + .../diylc/components/semiconductors/LED.java | 1 + .../semiconductors/TransistorTO220.java | 1 + .../semiconductors/TransistorTO92.java | 1 + 51 files changed, 462 insertions(+), 99 deletions(-) create mode 100644 diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/images/pens.png create mode 100644 diy-layout-creator --username bancika@gmail.com/DIYLC/themes/Blueprint.xml create mode 100644 diy-layout-creator --username bancika@gmail.com/DIYLC/themes/Dark.xml create mode 100644 diy-layout-creator --username bancika@gmail.com/DIYLC/themes/WhiteRealistic.xml diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/.classpath b/ diy-layout-creator --username bancika@gmail.com/DIYLC/.classpath index 88431c45..aedd5a59 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/.classpath +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/.classpath @@ -9,9 +9,9 @@ - + diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml b/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml index 1a4eaa5d..51a87ee6 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/config.xml @@ -1,15 +1,43 @@ - metric - false + lastPath + C:\Documents and Settings\Branislav Stojkovic\My Documents\Downloads zoom 1.0 - lastPath - C:\Documents and Settings\Branislav Stojkovic\Desktop + metric + true + + + stickyPoints + true + + + theme + + White Realistic + + 255 + 255 + 255 + 255 + + + 240 + 240 + 240 + 240 + + + 0 + 0 + 0 + 255 + + antiAliasing @@ -17,12 +45,16 @@ hiQualityRender - false + true showTemplatesAtStartup false + + exportGrid + true + default.org.diylc.components.semiconductors.TransistorTO92:Orientation DEFAULT diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/lib/bancika-gui-framework.jar b/ diy-layout-creator --username bancika@gmail.com/DIYLC/lib/bancika-gui-framework.jar index acef8105d79b7a5feadaf00914324b80e13bbdd4..518c9aa9282796919428fd2102e31f3e02cf39e4 100644 GIT binary patch delta 9922 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 by;Y$L{2vvo06+-sHv;fbUI^cmkMREhbfW&B delta 9918 zcmZX41zc2H_cjNlOS-#Tx{>Z~k(Ll?X#_?>x(66ax+NtANd=@Eq-#h?6+s33hJkzU z>;K~i?1vT4TI=k6Hs|a$U+a*U>yWXv)sXICAl!WECP*b=vm)uh29XFR*dPTL-~GA= z8=ts3^ZaLjV+dtMg1Lcl0Z#ZR1qi^$Hvm1PS`I)3=KvUY0)F_o4hX?VazqjMXn@EE zAEOZk@nA%MMI;8-(Guc&x!Ab=PtcoaF!nS;7RoV=bBDF?V=sUNx5f(8eX*i?vc zP=_d(E3E-@BQXdPeJZB%GUxspvI4B1b|% zAVNyx0Z1U`3IKjRsU15K+)BaW(Jjb#;sLO4%-@)8*oDE&LEv0>8VIf;fL4FcCH~eZ z)xG8xD0z7x!Naxtj^1VxAGmdU@w`I=ZnHg$k-k-lB+A}aADAqDn{8XV6e`^PGWX)P z#`AoRTfkIEb<3Q2%3z?LH_028=kgbE}Qu9=}Rx_B;eeD%EJ&&5}4Y2-yRH`7_( zP!96y{g!YADm7z68wDl&H)3y%^=!=gQJzP)Rj-GKOUQ}+uub9Mz@NKS2zSC$4I z#+;!rcC(1fhe_=X*1{flB|Ib_(W7;#ek6(MlgLfp3d*d{1t{w5>_&D7NX?-{;a@%zJ z%~sDRp!*|spYEUNDvz;PEi^<#?P?a%(VIl+zFHq3E0l_o+VvOw!}8!LA+6GLc0ao* z_ln9Yy`<72OtT+?P2Sz(iy6OOS8Hp~_w5h&6X?3Dd7Ubcb2v2>KUQPpN2XoUXChi} zc(qK^jxZ)Ld&ewaF)&KW24a!8okB*5Cy`!1Unlr%#AreCLix!t0#h~&~El9sbyd1Ogl6Lge6=A1bVQ}0uAIu z6F>pQ8AZLIFv9y&g;UdDzWA1s$?Kq~NF}l|WzgNEnX&kD5>N5-gN1m#EZMhdvp@R2 zsw%$`LEk~`Eyk7_JS@vDRbHYLFE!W*ST>kpDWTJkJy3W_< zcH6M;ku2dh|LaaIN$fo2Kc@vmqRjn_^!)fBmp*qptp}n5P&4(F5vZj4%23OBlyB!f zG8&t07iJpk<;pjQt*FNv^OEXP2Mcp3EepAT{1S(iJGp#+t_#vdJUrP!=6rFt*Pc(zX>!<0@P&=c1AIe&A4$9P3K*4+cldq_?c`bO$O zr98Yp`5ZfY>TCQ@!sJ_PR4&9ix}hp~nDnFQC$=-OC5#a>>V|52sD)IBVONM1^lXxj ztgXD2j2;yfv$?cgRC_UJ*yF9Ab+*#+4eesx7*o}4e_)jDC9KSoQAjMUin@vT(@x5z z6(APnbOi4{T@B9vkv`P`jJfS}X$x3`PHiRyNvRH@?<}Nk*$c~C^GOM@=o+1Bp4l{r zWRNonl{)t2dFwJYsYy4Mur#z-7xCF8BHGBsXxaXr8J6iu3gQ%&s;q8401S>a=+^ZUutH2dH*!y&*Dqp&8biars_Qcfw}LK?>7wNK$k0u zq8N%wS>X;(lJrB=qdzJZawgVS@U~hH6CGGOFsT$4$F+uRFPIQlFXVDOHF;!Tu|ejQ z$v0EY;@jLHZl9QH5E_o3yKgWlH)yOYsO8r^t#f_ZQ2VfO(vJUGfzk{!Gxm^=M-Vx&yZJ|CJimni?$_E_7`nO}?t)p%vr9|#d0eD1 zr6nKG4?l`HixT8~a#&aAR;dR{UKp{o?F}A~93EP~F#FTop2|8W@jaC_3t6Buenzn1 z>k_$EW+~Su!Y`Zen>b`2NUaJ!MdoYtA)wfLeyc>)A(N93{{%%N1hQ(jpD%*AgI%L3 zXS@UnRM_V$Gi|4k$zqI?Pc^*18a6f3G!O0e9(uMG(~1jJV0DbXhq958oN|e=k*)Sk z@vR_6{}lHP$I#U)dHv ze$jghDSaj#rw7SW{yHN3N@b%b)RX9^qN`tf&)Q-cBR-Q4FPCGPSbu%{0jO`>U~DSRoT<5BK6z46+6rWFFN)J*`mHsWb3A5RWoBIF zf~A|+v7K6vyT7J3DZe3ZS$YFSn7yeQ^L)zuK!IUmZ{*-)0U1k1$Yh7 zC`o&B+tF!}Jj=25D@T`6GFGwf09z2=oUSF+eoL|%In#XWSIgHE?Q`<08PNklgq5Cs-&P)3ri^e}lJTgdi}@fT|6Owf(Ji#o@qK={VyOq- zDDoGMXbVE2B5dxHxtX|pg%;U(iKYBZ33gd*zsUSP35k3SKNA|aEjqj+K2N-_Xc`q5 zW!xqdy^Btc6a!S^l{kl%46!_UC6R5It~~3M-^W@|yz4N|aVVQW?m-mxeVa|+ae@Np zf7!En`|GUdj3fJwS}H{<9#d9~b_;*0nb{c-Lbp3+G2uParoQ%bvWgWzjp8MiW=9Hx zO6*5|o6;-&Jtuid8jz2dX+*`;d--*UqqS>KDMoC0k}G{Z0dE=oI5P5r&(`RE(#ufN zh=4VWq`8@KX*K^m(1LhHagq;on@ZA(#pZoVBFe%8mZI=ctExnQ0oS|@_xD}gTT`BH0FRbRR?Y|J-06J`U&NJ1{Pg(L zk9y)IkNl>8%b#ORzRpok?{;Nj6(tj&VMjK#ck5Z`#(qEa68fgNpT>>JGzu}~>`0B& zN}*kx_FcloGYrtvOeJBp!I!{5c%~2r+F^Oa?8W6->Y0n0@_grYa9CEC)E-*KyG4#+ z9*==mnr>+A~9LU{gvRTnl#gqtkRFaP9EJecKwo`9JKYG)A5T2 zTKPbpbKdAe2oo0gDGNHKCX4$>gkeQH#Y~QEc1Xm&$wwU!o*oYSDI>`mpT(=8-jGm? zO9PRxzF%E$o|2f$K#5vhU6uw%99xakZGCc|za8Q<%|#W{ZR&^@!~W7cJ~|;mskQJ@ zVC5aNG%F(Cr)u}P%CnO$Rzb)}NiyPTGpE(LpOa}%9P*MUb;pL+Zv>sFhu|uU(mzQ5 zKAPabpG|xdzVPG&2nfHy_b*Ao<83J5@zwj_*w5&o$7&QZgx8w*%Qj|Nz77Y-j^}5ir$+z8W{365CR6_}Z_v#~}yQo=o(x^i&=VH2la|qxRh3=Sd-9v1Y}u5l=Md zi!>Gk@%b*PY_N)9r99=eH)1dE#Lv_N?>|I;=S_(r8^v~Ij9#1|&(5QuT-J(O+Wp`p z#N)7zp}74AO;(@>)l|&y3WDBp{bd^2^NsPI%urE%NNI}^Jf?$M+fHo;pr3i zaa<%WW(W6gX#CYtSVTEZ61dcw!UNC>(55(^|#w5KF4iim$}Cb6Ajb9mpL6M zi55HfT(Z=HBB=B!J~4}upJ7<@fS;9j+c%7)?%5^p9C_!O@V`?DpUIFXS?!~+cfJ&4 zFy1A}zf<{Q0S{Et0I2>v#l4qe&1RV=a*Yt8tsTv!Kj_;LI^cO+$NTl+^33Pb4sJtP+Wy(m2?9>${B8g*%d}%?ONwNJ{M#~}V-xK)c^;!*d zJ^B_kIzBiHS_tX4nKHT>e6DnP+-t4K|C4b>ovdVClOJowOyD9@M%7q!bi81%+A4$0 z#nr?+YKPRnpq$HDNw3k&sQ5U&TI`DqaoBOHkgb^p2t3;~*APb!ISrGlx7=44;vEji zY(wT?c_IsvVPPg}D3tTn!^p8V>5C1qPd9iF5f`E#_vTN_rXDSr!#gHh`r%Su`oH<3V}!AWVWT zIy1w_NT{jhh|e?kjfR&_cbvjCTY259}qmq}LqoPXU)*DwdeLB%BnVa#DOUgU z4$P{Zyfd!0qm{1Mgw08a4{cHlN*g9W z=2LfWnLF-w&w*w_ReBj2W5F7!_m(S3|e8J6dYiXY*@=o z5F?jLoA_QA(l4*uv16Fa_Yz}L2i&o;1Ajjknsq9%2Uo93f~KVjuTh9wQxJznIOx%= zeddf^%t>U-9tb?*#`_Seg>%?KIOOSU4>{4hBx7tPr->cAW+K?kutf*x=b0r%JvuzD z{7X9jTwkDD64$hi$KVkJw%A$|HcyfA^TvxayI9ITX2xC;OzKOCdQsc>=^1Bf-TUC* zD3nN3Sg)T6D}$I->eS2|jxV~`QFRFF^r}%bO|ey86mF%FC|R`(6tij%%hDn>eoAx| zWo;WtWLNC4+^zbkqwsORwq?jR1B<}hAz`kio}ooOdxU>iRYQ3u@@QUn>32&XhwD#G zWt~8dNz6jV#4W*mZ-&*b*jF;cCcFJFXScD2ANxisVVQw~hKI6rXj6mxiF4MpWjc~Y&o$YSZ82kv`A&Lz)ZV|<{+RvB_V9hd>%&=;oNRl9&@ENA4eL)}c}A>^ zDOC#b7d?7dn}4X<2^m$j1wQCI3X&0Ls((e=A}qX8WfXit(wWpo`3=cB9%B~K;v@3h z3}N%4Nxb5a*P=UtV>y+jeS35MD{SYy=;LudOK3T%i8FvSU6nPVU22HqO2OUD+T( z?k7%G9v)S?6E0H^2qljOW$RIk+;Q&!7ZU%_b@;8{$op)jlAn-i05KvoH{0C#osXmx%BkD*Pa_ zN)k-9BL*_1v?uxlI_Tm2kl4j6otY>Uhi*o^AuAh)%_~T!GEazx7@S<;Zp=Ky*v2oy zuO>TflCVGaTWTY)zwnvvkahH|zhl*T;Obe&zM13V`8EP^T5Ia6>#Fdo`1Nt%@$U{{ z*OqVBi!P|OX8MK&B&8YZ{GuPAZ0b4e>kfSEZlNG`a4G*g9Yq?K#1kws17Bv3oL=ZW zzDsf)`B>74DOsa$PVCMmvby;vs6yp8YjmEdwPHTJZ#W`2WDPtpb={PIaMmij(< z;01)u(^T~wUXX&t83W#9EMMIF5|BJlnjT=%W6v01m{%~=fHi`zos1G^MmEzV_&Bd` zmeXtm%Q3Agt1k%}1h^~bwGIh5DG6p<34%dWgX>r5!7~IU#ksuLN+VcMJ}h4ct-)dD zzO%i}g%mrcNl{6wI>z-uarBta@j02oi5}rc2ScLq4rtS7+1jPkQ|P}_T#5)HB!tMS z_@>z;tHez5j58*jl?um2pU$x+d3;wdi1=J&AzD_7Ju~nqv&%s3W1CU*gFVIRO(Y-C z5nXolvY0}%QXbuQepzX@JS5|_0QQKRSXKmbkJ+|}-@Jjo)w?&)AhoUDv&Y*hQkpKL zPtN~1W~;yb`OGWe60MgkjQf5xX3~Z^Hf|+@zOGq9n)-0eF~P;U`bBt7*Kt)52Yy|S7cq%(A4} ztlBAju%Ig=MtBK;IL-d3B7=Hzi7t`PSuZ%Qnb(gouDih?zMmu>*Hvrgmr9`SKy~Ik zjtd@5_Lkh{Ms;CA30mo1IXu}EHhRV$#K&svR?)01v^p|5VPS2Ac-@kS8pW?PU$w89 za;M3YR4YtQaL(|SbE?)sb!t+o@{vB<+C6_%_*icbALq*g+d1++R(dIMy)3VxD_gr8 z7HS8kIVz%K`S6$)3H#Zs0uL@IM2L8vGsUkbwn)%kp2mlHDKS}pIBKG5Zx6kv`kM?N zd$CnwbzYKpoZ*CjxH><7krs|aDU~pw!UG(&NjFZ4EpIl)Sf5mvIC3RLgfjP=Q#hKB zTN3*qB4e>9r0@l*eq)~a+`UDdOtq%)L@n$<)4jJmd&HHVrz>yFf%`3}BXwoBF=eNn zErLAn6{D+p8dMg0uC@^>=}pk$m+>~oU@G&qatYdJD1m&;Zn4ofOT#VtT3gXez8FoO zFT-ojYysuG%^pGZm@Smr76Ye{&vT}-8H^~Y&+S_sLv(AnY#Ii}cGFA9y$f2>Fm<(P z+wDeY{YQEv-&xP+5bAh<=*agNJ;!`1R>Xdk8+K+)=uIsRwEWh|<*s0=4N@V;9T{TH zIO}CHXIsl*cPJ|Be(rkWZ;k!?@c1q3Y)K5-9tv?2o~IuhjT-mCdL4nupnKLkjGBzX zbJU-z3o`Y6!u@Ssc!3@1GyTNEY%)ok1OoXBfz?6=7>L*uM~otxAY{$G1$R`}7vf4u zGs$m))WoYFr3oF8P(BhanT{Pbqg!6?#V`kYw!Q~WDXkI`87K5xAs~hdaD2FbRmSl= zx8|GDK4j_CA5_E~{XKVAibhUQQcqmoGgjn_j;5)l!FyXAqC&3vL_559Yk{3^{m?Hn zN#>D#gT88xtO7BE$e>hrErp`pEBRb0Yer4h=K(kdh509attXr*WGVfd%>@z(&mc58 zI}sT)qu@WHmDH~lMz981lNTl~I1BtLqne?0X+d6o(_qyPPd%48xie%Uhh-`z0bRaK&^@Vcc^WV4ODsay6Sx1~|;l$WzNa%ZPU$=Z#8~P|r@yi#>PNVHp zR{xcOv4qjh3SVr6HjW%6du+0U__^twQ_{>M_fnZ2LCW*GFR~8Mq~gNkm1UC^M%8}v6+&vHQWm#KqxPin9)Svq(G5Ps(vijf{cFY>6fl;n?yzuM+YH|5$;eo~;kzw6u{8H#8>A&onSwiJBS;Y`6z|0vu8cPX&jE1S+F z?xe))JYQG#hq*wq&$INarzWiAI7@Lha?}y;^}M;noreqijl@moT8GM_Eb+B|U^_Y# z4tkI4Q$)g2O zAufghYI6-W&KmAi-jQ1RQjU0rGI5Ar4SL=*0onfBuq# z1F$%t2nS2zfHEAgNC2{M;3NSkz(IoqAOi<*4g$$L4k<}M3ocHS1T^4aO%l+C1AZw$ z6Ar?p06jQZkOFkzfcqh!3kRVO0V6nAet753B@L*-B`>7!Bt!oI3Yj~VgUnrs_cC|P z__BZn+{;t;F2pBUzz{B>lLJiPAV>}{hJ$&zI~AWi%>CvfM#=-~a4;ti=)(cG!ksEi z0Y-RZ^H~8F{RS{A-T_a=y8?R^fyZ!W1|`4}4#Ji0LaZtQPvH_(Wxx&&>XiXgIKWrA zOVv&Vu!T!TRRD81;8DFRC+Q#XO%*VMtMt?WYdC262T-Zs#qw6aD{w;nE|!?a9VpZQ zY~WrPnt0rhE#O0{wE!%*^?yev|JPc2`OX>>f}{-){C64xq0t725Mx&V zQG?f3Q8~2L07OEhn~&q%wz~g&as9u%QjjEVKoWj2CbR(xL{I3yM8i-lh@bpjX7KkK zShE}#A9h3kRqXlpod*V3a|ZO z`Y_emy?<4>5C?q#AFc|zQO#o9sK_CW`gZ}wZ=^@qw^C6Y7}vjrMuhrMU&B_+b6BzT zf2ALE|JL5j03e1}I&p!>)&bi@yI|&Af0@1~xG|-L;K24$NUH%rcsqdxu&BL6|EkE~ zQg%a_RGa!n%5t;$62KR4YAkb{9gJHR#{KtvYC-Z0VO#snmbr4{`iJhul^Iehb2kCj zn8eraFt=~8k8*MRmDUQ&ZEPM^*k=FI=x)9fj9@J3?Ek7zAjj;mwC7=Zc$uTy3?xY~ zz8csS`FldAxc_xRhOisoUGj&)UfkV_7k6hDm*Tc@io0upLUH%v?(VMrcDe6!&fDkX zkDd9=T$4<)vSub(3BMs00dsk?*Nh4@&&;0T5`VOek~o|2qA&-f_MQ{ zC6O=?5c$aQZEv`Mmd^MZm@mEB5^;Sp1k|LFQ&cuIHOnLiM3dvz{c)d4X_Bf53oRks z7$T3uwsG0m5n$kK1P+I|Z2%B>5Y?UjWzr1i;Is6;fkG*e@pidFvC*4@wx$IWE z&`wR;ZqIL?NA4g5ae70}j5uFn-wB3CpC4?tHY@Z}lXX8xL7R&-3HigE(L!e>ou{n% z0Y#q3?ih%G2%AoK{Hwe09gx49q@GOD6CLD5TFSMWwQ*({bhskB_VeEEtHUzFPE`?3 z+xJd)`eWI<2*-^tWkp6)P@~Pux(4R4^-ZIHmKE6VMltk3hWeP8j zP&#fJcbt3_qI46lvG!DTYnx_&k7Gf8&kp;veib_(kh5g9IM&-r%J6+65e`8-3U>$7 z$31%+OjToE&I8S67P%!xo+*2V+V|E6!NxM0Ze>TY+~k@43AXc5b7~&CIb4f)mIGc0 zu~I7a7aN>nsqE#gW*#kT`pe@P&uHEgCl0VLfhpAOPaZM?v_^v3GyI0dmu#M+Co(6+ zKWsbGfoWWbBlZ%6(-Q~%T}d9gLp(0K`xLm@^ybvG2Gs0U$b91>ypFXYzwTLFYQ7C< z#yRM3C9Xl?4zY%_s)yQXJ3Y|bPNN=Ij4kfOLUm2-);TQCNa-xSm%WJj?4Q$IJ40A6 z8<~I6+;uZ>?J?qrB?Vel+@)a!jOl;XvjO_l0cZGE3)I}TaBbZrFyQznv z!t_!W&gId-i;Dq;#!f~sbNp1S& z7@NY`GLtcCQO;)B1`K70YRO;Gl2&x74msk8LY(k~R#$e(%)qGc-kru1cw@PgM(@r+ z2qc;=M4Zl6Pk68B!dz*1tm!@J%D}N3p;cluR+`isdt2mn_&nb(*#RFD3jy`~QIV*$ za^#m96wH}76!N+el!HEHtg<}{BpfvEQI8;$CG;ciQn(K*6Wtvdk&->EL5{Y@8BLok zROK4|U5S6?`XOAKUmpg4RG*1=yhoPe8IaLir^C%Y#Q$`|3$AT!4aQx$16gZNvh1t@oPoBgI~Yo=NDSxwv)9JRiMzw z941tI&nd83VBI7@`MhWt@nadE>KBv zBGlR95Gfz%6Cg}wbZAPQ5*QgNiCaI3X{Kdr%bS|F}aH(^MHWIjwVqhJZ8bLCz` zmEh!5u%75FGBOfFKk`f3^4xdZqLER1xv>7}7tFCrYJA$hhK+#aKD)U%vN{stZ31`K zuK?2|Ug(Mbf!MpBA3QC-RQLv+D*(sxli94YS2YDve>iQx7X{tpCKB!XUaTuVHH5jF zxxZ&Jn!^-p zOYIqg^llSe25c3bBXfwbW4S;*bX(!%5Z3Z8{y3-tR3>{}Lm>q(Kg%R|*-hOwVdTP~ z^sGXjb=OI`)3+U>b!k)rS0-zkV{mzyQ3a-Vo^PUm0)M&1`q@GGP2~FOGm~ltdY__+ zMBI7ft`ilMk<>)&Tqy5ri43u7!`3tAKBqsjd?hu}%T>k^et;x8)$0NB0#OOY%i4`# zGt9qTV^yyweHeqX*6l2KtSaUzI@`H&Sjgm5KaU{eyq%P?Le*fgZTrH=bU>C@cHFSF zYy*-U#;&e+bNZ4$Fgb0GVia&o-Wq5{^hH+pSixYkVdN#GO0Sd0q20)zzksy@RpM?4+ydNvV?5hevIeKul3yKC_qCW9~j*-{p`HaXmktYZ6acyV$Fai%4 z(=jpzrvpyxT{;h=o(OE?0>SE?!{b}@u*7|3l2*4CFO<4EaSVpQ(Of374@z%$G+i`^ z)dpPBp;zu7mN0^zTQz&4CXF=qtG*(Ab*Czd{Yi0GeaoVZC7Cuk)2`?hX zUoPTH_Cz+=)t463)R{lRcNx}uF|RTt#|4^;H)vFwSNw6S}}YBOcN5Z7iobrqY}VTdo1D)^CDYSqT~nCDs4Q`)>j{o)db z&~j(x`)WoCADdgn%H8Tv<(s(>E^@JgPIqbsswvq)S!*gxD&kKY!1oU1XYbLoCm0mQ z0w;oN`BOJ1zEgSQ5F7arBW@bsaWi}S4^WfeVF-?R3FWTUqWWi=p9j6WS%aN%jV)AQ zU2~EZB<{dI!-#If=>?sc68QuTXo%k7RSFPx&SH9to;)IVQ~TR(DC3N+>6Be8I<6jq z?k*#i+;Vvp&j_Jbfr(Yq90V%0!H9hv#}@;-68_GrB2EiTEt%>!!5mh-@6;1T;>Lev zDIl847hVS3lP(Bw7ms|FI*tIzE+!pcNh>~Hil!VXB4(RO)&$I>*B2`@i zS{QX#=GrY&t})@0a9kK)!tJw<7r#sw4o`i`=vgW*3p|T`0vgT`)7y&Er))cP;y4AH zx_36bz5k}g`9l;94?Uv`?Tw`lSLl9}tAq$;_0i#%Ts5lUxEAKAmYJ`00(#X$67%$) zspe%mOx!nlN*6N&PPnWhOxu#QnYF=FLrCoLQIo$|${j`U>k*(<(S?7v`4iJLm92#& zc)~Jn27~lG!hthlyAMUZ!DfS*JT?ev6;jR0+ck18O1-+U0#+FlNgDB5%U5%}Jo+pI zc2Ukyg9~*XDX8k3`6csMZjr=`XjaQ>Y~uaPpBSGU9IuhIBAV#WTF}zE=0Ai^CDPBE z!Y*>jYcWyV!^k9Mow!+Jeeo1w3)XQQ4%aAG{(bh`umjx7D-#w5*J0t*c1KyGe-;EL#(<3%BlMKyLf&6GP0g6QYxWOj$a09-IL*@ zd!oEg>=5bS*7ko%th|8lI=g?Ro&?HJ25e}2nrTdSfWemDvX4C$gnUNikqVF z>GXT$=mI>u;TyDW<`Okj2|h9VhH0oh!L_ST^i8cAYWCPU$aGlI`G)w1uU>8;)4lXp z{D{(_TlvY@TydK}6@py2F9z()>bZJ3g4FuVew+rx4DfF+x}$$7SUaVA@dMUS|BkCN z-zE~OwN>tp3D@f$i+0~N>;F}B$fI2xtS9K=AW}NMJ=Y+-uC%~ugN1f7-=y<#uSvA! zn->|uWu^X9(MbLF7)G~*siy{F zuZ^*(VM(9aJ{B)geg~fs_Hb?Rb~tq)+6n_u#I7ayaN7mWiX?VF?=Eo36NC_%l9ZS= z%`m7!1}eQNNScm}PYtTzQAszOSS~r6a~w9~pW2XD^Kl$#PL(GlmdCWJEO^gKK_^91 zgk+jg)6KkO`&%|iok#&oAOx<|Er849kd?-GY&`7))7ZsjCUHDUemr6Y)Of+2ncEeR z;@SWfk;jW5K@eu0=5*z%) zlHh!dLSrr21KG7xL5#c^Uy}RkJVUtr23O5LiK*_Zl4=;;*SUT0dLpE!Ww+W27p+9p z9RpEZ6#w(WJ1pSI%>+G}Fr?Tc>Ju|7T-4Q40bMvvKP`93ngAR$CIR_(|4p>#M)6%6 zPuT72LlG4ss1l@#xE70Ewa$BZU>gP9`j0CsvUQZ_a3*;azA&Tq5^YNZNQdvGX>i5r zyr*5c_4jbL*GN9XRrmkS#(j$wB3PNO zy5dFG$08_AVFKiCuczVC)Vjrlv0+_El0 z)Lv09-&OG=QsPn5AS|WSCcAJ_1o?qj#dZ@#9pYGOwZM(LLjh7pIV)yA6KwJfV7T6LA0hp+K(F;6&ilbo!&E-Rtx*a^+>O{P!E~(BIwF z#L>OuUu$JYSv(>JfEp>@kpr`v+|hlTb?Dydp`>ASr_L+5u(F@Rf5`S3ehP-Fl`Z4m zF{~}m&B3CcwtK%AY0S)jv(xuJ8cMzC=N4JKI295_0LjqYz{T0xz4ZPPNs0%D62~zuRIG7<%|joi^^i#) zW*}UY?RZYh2GHMM+lG!wryuBufmoBiCvr3bhci(F$yk^ zMOPY*gD-{O>~gC$<9DE4rgncOIE~mpi(g>gYJWN%um%#QR-$ZgB$h;#8_piXYtl*m zFjk|ddGRZE)Mm7sI4h~py4)rSv}Tdakj_A>;9_K;*E`2%Bp3M96u%FUY~qC~Qsyfl zaEo1F&~knZO};H8)aV!mXv`Iuhe6dio0(-m)k<&3m}+n>^^1nombG`8B4a2JsHoEj0>s|K~Gk;b->+%N|FB;I8d z^{mmFw{F^+v!R9v+&lyJ39&z+S6bd-$Iqs;`pxdK95Z4>^SiHo3Ae&ave)ZEWT4+$ z_^hb6)TSk(!#o*4uu;Bds|9>m)scCe@EVBv1dtX$7kj}9xM$-jQJ$NMD{E5ITZ(sK<6MdlY?&l~E^%&R8ffIDqMCCIHniSdn^`wO| z4YMaIc1xC%;W`m-mB@+gdi%(l_qR;Vg2MSiI}yp)h(qyBa^;qwatHpd%OT!GfdpE! zV&CHW!_mir9?i+SlbCGv{w$&~jZ}lUBH6Nu=i%PdsK8RGshUCf&K%+X1ZhAp%M6es zSy@o}1F=2+;_;yXYUkcB<(J+g_#Dm7%t1A8&{@4u%Y6X$L=c}<6TVpm?Q-=_&fYM( zy^16JlN_T0-A85AU@p2CCC^fjM=*+(aGI36>uQqbSoqeFy_r)e-=b+>b;yhB5p`&! zA@;)=kN*Ne#)3Tri-h1pAI|NTbTW`;w#yNbgp87 zEjH9ViBu`I_J{M|`64286rP}}(x|a3>7G2i2Iqa*&W`p~??^ZRT zePL9nFDT-e)DME4f|$s((l zb=75sAnjS}85DWw3*>$}u|qHCM3h2YB)4ME#**3UG|kxSGOsl3lWpuL^RCLx)ut zFWFcFo3g|zXfzAKVEzYjTDhZ2n|dhC{{j$k;jWcIC(I?McgGi-O(r=`|Mwc;gow+(cROScU@zy51q@I%wj2odOP; zO@?Jdsp4KQTZG z_I2%U-o0TuKX61a=*CPE9NA)PeL$;hBj~A(cnJ5el!#hs8_cqD@J2LI%623Q@=fY?$S_4x0F=no(rg9iIW$w=vUhn`MbPZKzss#*cp8+Fy zT%AQefnQP?F}@1q*UpO=WQ#36O4PwJmS@~fY4tfSF#+;*hfOY@f4t#)BygiCPm5Ql z)N{}!7cjF}X|i(Pukn~5v8YQP$Y9(ZyL#6hh56v=U%#PNA8v_^`mJPNxf1wcE7UUW z#rRER@eROFab^NB)mej&Sy7I0apLgvv{CJbK-{6WkM9g_DK9wenHpS1a%|)rM&Muq z5rwjHMf)>5dEjOO*IlatX&)s`uL9KtiZf~vpfpUyDrxTu{OxG(IJY&wS@xfOm0@Bp zT$l|mt!KA=+(~9J^rWI4oC7w9_9`*)`}veIP9){;6D?oeThugvZhE2Ehnru(fufX< zq@u59OKbIn*H$h?G}PEIG4){Cl48AJvi$1ha<^O@x$gZTp*EqCyW!`}HCy7C%u;MP zrisUIi3;Xz7ISyZ*|G=LxDoL#LRnY7)KcoP!uTzYp!eF@vdBCq6l%a23{>Wv$j2^L zg5?Ucw9I@tilH_()&tpOOf&GP%zJ*IV#FR+(xSi=?u6Et3 z>GmP3KA~`_K80#9Z$bkxQ^JWisp(kv3Pe=SRi0#f#?HgTHO|BR4T{_mxzuFWlYZ{x zb7K=u-Q3SvVusvz;|`Z3ceREyQQ76@ZMZPd+~tQGWGnRG%RXuM*v-|gUYzkU6x|6_ zu5`cAn+S1C5lw*ub9ca6l?%b-F4R1A0ma7f7BtQ zgLV|5g>6^gfp~WBE7Z>+k7_ozjmo8OvrRL?(dVj-oKTwVo=-@s4w;VqazwG|tWu`c zH1t!ug0yit>2g`=iMmRH+b%xOd^tAXD?$7d2lv9w=y~#_6-mQeTX&p)TtU!KeLo{y zoRzgDUsq-78wBQjS1xGOXxPznvy7~hsx9fl+dn7>b|ky(o|iQ^*OV|^j6=kQ?)S+Y z0Bo9pkeT3uxDtV_qqm8Mla7KY=Wx6ms`3Y>JF@yX1kiVK8wP85GX7xlX5TGvfrD#~GbF z_!}gEla$V+!?_t;rIaRiku6FuqTA6N4*+AKRu4e~QB;gynAXzm(YBT~-!~MO-)NYW zisULVpUP2rncvf(PE~GZmB;=Z#f`bD+Y;glppxi)BMO_Mcy;KulJF(@Z8xvf$F>Gn zX%i73tWNVUCJk81?BP#dUpx$rHFb6|Tp2`jWKi@ebHetTQ)dF|e|YcS$)$W_h+Ka6 z8=D8}yN_ED?*^PF27kpjjSdzlk09|rsAqEVN5Wz98g(X)AH+VY$hz3KXgw|+_wemh z^y_b*Q$yz!+WkYwfSGd-7vxCYM?+w%0$wc&e%0%it}r>KQV-R#3GZ2b59H~Od;Y0Cpd1_ucjy=@ zp<$y*YFV0s)3cwiGtG>cSH>>H9UWpzTK7euuyJGEqtzI$n5S-4L^N_*sZaWsrWfU5 z249@Z@0>@1G6D81(p}m+;?58O@3+L)_E-u#-?BG^L)MMX{?9`3>!`t45IBTdBE|cW zvH|bi&}YFPQrG-cPZe0kGgY5USWIy)PjOg2GGBpiLS8b{C%v+IlT06zRWfoLmu`QYuDG50+>Vs~ z_SrXuxZNODS_+7LchXD4Ma5;jqzP1-qmi_{vd!d0wGJ2}kCxnIku{9F&5SmL!^U|c z()VHJI{muwdeZZO(PhkaJCnZ>J68*GoiBN z9qgdsbUFWCu&-!r=uV{Q^1<{)FKh$Xo5i1beQ4O5=NHd&CAAx);KQlnt`HEWCwjJ` z|1LbDQhILVASyfcxp@<>!G#W#NFu;sq|)1Bo06|O;Cl5dxuSV9 z>ZBmN7b?S5g8o;}Qi?5XtTFI@#TLlWVp?yaDf-qyppOP#4NXK6Vd#t~K{3mEAB56B zmnxsJQxuOjI8b6K5T#ATDSh%|K5ClNeN>#z2c4>Ex+;c#Oe9Tk|Rx5#+ zxO`Z@J#tptN?<%{10F%1t_`OnXt@;!AWLXZt!{cTxjG8bcn+cQm9jPRa6$f@Y2`<7X33Ew@(M4LHq%%+KPbd$aEPkR+VPo-=T%%O~sG%8GV&|E8sYjow;q7r0=>Z)XX#1QZ@`IY%z zy3U*Q)S?;P(_)|OTL;Q*ZeAA2>J87sHwS%@@mZ89?``O;(iR0bXq%9P&tbVikLZvH z(z19f?|X7&g{4EwTrJJC5^T0w0zapQ87=-=4m6_t6=W}Sy1<9|FQnVIw7weBulMoK)8-a}}Yb?>hF-(`- zRTkj^1+S@UPsl7a*Gdp7xLCzM<0IOEs{V-nq}nlbm*NlO{@|3ZdsT+cp|KnnQM2A(Lxa9KSafE_Z;s+Ss!3G%;b4wmdJ zKinz~+(ESZ8hCt&jSbskr=-_!>Ws)%pro(H5Ez-Tf|zdv{J~BqvdvmnW>t^f{KlF` zl*?$`URU9R)nH=`N}`x0!!}KjUdE)-rQalm0si8JY5=_A`;-w@EpDBUw^yMDZI4)q ziA2zXqSGOZR;8KD)VhisLtS+HM>!g6?hog+`zvk6mau$D6PD0r-@;LyM%$w>f=y2L z;10CkFRstb0jtTsXX5HQs`FND5GAch*nUfPr#=?kY_)CPxF1k2@$9YBTfV-)`z{nS z+z>$Oi_gDP=eR|^iSBeb}m;?q68_LE4nPTtmAilAmdBWE!~)ToNIS6Hl7pBlD<`( zMlz=MSz4Bye)LV9UbhLg$IN#Kq>tY#ZVP`2T@@mEfB@-ExWVZra~Bb)EQ;4IcT+00 z*Si3K%7+LCJBkW=hDaTjzrTMQ)B((Lkc8rd6)f(c@)B4_!t9b7NOd$s#B4J}CBknnTPvk06*^cj?+i%22w8cd-Z4SJ#)Vmjl$ zlC%G?V9YTh(y=pKw4~DhuxXSsyd)S+sGye$>?4HfV*koKM)tO3cfP|ym#Vx?D^ls0 z?gbs>W3`JCHdGk&v_$a9hN1xS*m{#Ow%1~upPG{^IG|vMH~^=+WCka*Pv?nH?)O-M z8B19OyF^_nR~Cw^SRi3+1MX1?t3+sFXMe5)+OYAhcF$o4+Ssyp0V5GvyWH0gt}1Dg zz&$x%spz(_N0Y0iyu9!MZYpx>O(Wds{=Iy0?N|rh96PgCzrxj@b8_L{7L4-anIx0E zv9gU*5%FOGMBYky3dGOG6y6ChP}t%J@*4?R-iURTQ4fk%i{ajfea44p(;D|8{?Xad zn^&Hy*D|W+XGlOFKUb(CpkHfC$TAiJkaIx0w#)&?ysAjku#RDUxl zoUDiAJ@HqXL$?sLvBo_ST`-jv;U;dv_r9Ry2hy}{(cT;i9%PXSDW$Ij(bY1I z3cIj;QO3f9)c`&PoN?0Q>VIv96u9QYL z%#_e9!r6n;9fO``kEWNT3apS82jt#=!xupq@spSrp6^jmM3X5%JQ8#8&@GmdWOrA2rDxuBby~JlR^^r zB^}dkoK|&DVuoa4@Qee{2;M_WROSPb!fDh~y){QEP>?^ilX?Wu_+i zlom%7wP7>LLA>uw7d0QbTlENh!g7s@Lh4XIw|{+Zgm{x&8P7N%Lk=KB0Y&GQ=az5755tCbNaV53V;d0Q?tQP(E)=(-Z* zvvl`_`5IvpFFzz2CZt-~;oSSGFh;^tJa^<%{JRff$ce|2(%umY2;Sji2)dogeh#hQ z*6%vv@Z6Ec@Ns&?7my&cauvE#a(k8fu%X+!HF(=N&k)JGe70p~=+RWI z?tTw3Ce<$I+T$sl{6$vI?Ukvwf%)h?MVx z1DQF5dvp#f56v{C-VF<~mafK`&I)jc2OE@obe+efEqn`!-eO7ZJGwe@{%o0=Bj89p zO1^ouu{A7fW*aQ6dOI{cwhVVC_-W>AVUj?Ru|`e`23F!dT--XlF7{rkp={ zB&WPkj53c}tcD3QQc2VN@pLz+8L!VpCbjY6l;2n?r%i@8I`XDa6-t?J3`@x__C;Huyw>;3a;77%JYgt=?(YcYy`_dE(wpNw)V0nWuL zoI#lE`Oorp;BTH=jgzs;H+{bMwpFPDI>_i3iSPA$to%rkcF}PhH9juxqm24Vv5*sU z(1siBB_rkrI^qyGDXVT7tA%^Oa{9mTdRs1a?iqTfzBWe;lc9j(iXtN1Qm&J(M(r}R zQ{X@qul_Avc|4UBQRls=Y|UrATQ6MAxDcfgCb>@Az%;8jZTBR)+HOB0eOOB~=M58H%u5peI z>?TcVib9EgBf~HFx(IX@Q7#H}XZgcq^Noqlu`}jcKj_lqF|8wAR!68*>*hX{*fPdQ zkv5bt?*n(d$<(seQ*)1GZYvKY7}V*VMv~I3q_lazUngU|MfYsqnvxc(AEYUjt4b*$ z64UFT+Th#>o|nrb;vBCyZzjEK6&$dUuZRmanxsuY*6DbOl$|T#WYOIcArdr8;aEnK z*%~sh^5AVt;YTO-3R2*|iE%cuU`3+7v|?%;i~uTsn%wH~ovkc94Yg5~fyuCPyJT~6 z_OB(@+8t4eX$O=aZ1bwFQ3ixHi?@ZG$no$P!+*8xlrnUnWP`*HLx|gjylrX2oT{_6 z!m5NVbkvqlHOtrkD(^5r`tu-%p|otXsRzMUV_u|=WcYjd_n#b}DwKEN+P`sK1o@H63Jx0#ZTEcz8S8DmH6tL2{eD)jYZim(qzv~z&1*mwiwyM zU^{P$X$)`1#QE&zrPKr9C+zkQ7pG9=rxYg;po`-s?v4wGcNZ0BzJWO}2ye7k>RD9Q zjZ1bL7rido&?A7`5Wqa$3?LCyb-*PqzQX}#6*c)QsCfsM(h2s7L#53cl!s$XUKDN8 zwS9>8UxArT@+v*aU%`J7^7!HOAni7lFQ7`Rf-QS{&9g~f%M_?YHCU&|hHc5vGr4bz zr@(i*c$To&Y46I-!6G}pjEsZyRz8|qQi7EyXMAU2AbT%TzI_K8m4>x6XK1jw55f`X zH4NWK-r&$SpubRkg0>^qby$coH7M2;*P#xekhf^=lARdMmSzP-_amHX zk)zhEuDQjr0j*xGUk}1ubLhM!(<6KMa|LV6P;@j^?L~&+ezTvzmG6QK$8neIQ5X6* z&|3ixQVBbu63bo2kBLVlMdOx;=)niTEE8e@8}c$TFR~Z(gge$$U$M(udC;9bN(jFy zUpd;gPVi}Sp+E$A=8cuL$d{R~sCVS=Bv8VCf7yZ7X3~)6%9a?{w*30d23Lnpd;0)& z^~Kcs8QMsjw}P}TqQCK7ytp}JG{N<)>pi}E-7Qsv%LCrtXG1SL1;}Vr_dbpz;DL)n z=8A!CKuj4Xzo;X;ccX*mdDgp)`9*H&IE=A%nxKW=kAYC<1N>YHuitg9X$IcR4Xm?-BX% z=Uiaox?z!P2J8HmD=y`5vIqHk97|8Tr*f55$R_&uUvQ2(4EG*TClEdy^`$sj{O zP=e1l;Ka9wLV;rR0Pw&>^)Q{q9o*lr)+YFsK&YFPNsI^9zeiek5L_ARd%SZOA|?iguDuuR??XrRen)KE zBY8IQ-jaWykLN|#yjO+ciA7M5sDt`Us=y~a`m*fN()UpoC#z>ybL;Zy9!l_^BZN0= z^hcu_ru>AYewF9v*C=frldA~pI;?Gk9d2h45vQyxw4bZf^6vx-|bSr!_2Tc)@ zcmm@1D#GWV|x^ zY&XXN=SXn@JMLaN4fB@ijQNXWkC=CziORicH=d>!;-4 z$C$vKy$_i=3ffRP&~OdSWZ4AE5xYh@jAOW|YzcTPpN3{O2TD2!JWA}073OAIE50x8 zrC{J@9|5DrlyL{Djaq!x ztu;~!ztbjxjO|!Hmv4DO!dy&|v?lrdk%srIxg6+Wo;&hzB880ra+2PrQNgZyp7DQ4 zZdOIxGGifs$HO7xo7#w9;+b%%9jeTCK>HB*!8t+P1PxaO+a>C=VWE<7MC)vOh7QF= zk`m4hiI1;FUF-;!>#Rzjxi~0{XwH9!?VX(%{rxi0D6Y7Q3&^@t{*<3DObbs~&8g6O z8oUKvQtrfjzZ5HBM?`klVwdoo`dQkIeUYXGOTp+T#y#uS@D(t&7 zVO@_6IQ#*8JutB8uDFkga+mlEKvOn`$?^X@4TXmEu|%cp(^C^rD6P3`N54KZHzHxDx_Kh2NKfw&UU=Hg#R8 zS39g)tb;Bp8nt~YA`lgy&wi-311-Mt>M7+wSxjGGB@{(dEEG@TJ;qD3$f2fH@9d0R z-*ND+3Vtr;FI1jXppqY>s6nSjbKabxKp!p(u-vYCVoItKO6AdqX;DkA!ZiPi?3Kg! z{pSF>{4RbC$>)zWMh?sFKY-i|{Gk$Gxpixd=O%wbSyHYQ*5M}*}jS@WpAAzgSDog$vlfLk%yoAt~Cwlj5rykhkRoKkp>R7K5Oqocz5L9-?Hybm~>#pnMF51Djixr&o7E;%m z>=`=Ko5CdWBaK(~0T!%TZ-AdrSQhNv#x>AS#F7g$SIAp?y5na+YZIT*6|}7>enb3d zoV*l%5GpZB#vvD}ihox}vhPjr(}R-7_08^#F0bRzf_G}k8*@Yh1!w8Q8JspWUvR~T zw!PDNAXj6dHsx~+J^ z!tez%k^b^n%+=!-`?%3)Ze028nHMQ5EOvH6=AG@023wwJ-d*xpIgKORhcX^KnXV3g zEP{lpy`O>G-y&|gtJd?@KBchU8vLC{q=X9plNl^W7r^|vF<2W6YJ+~w10*wj-@X$4 zIZ^Lk39ZtEe?({1E&mV|O~n6X597^m5MMFVeLH|xqHTcwpWU*f;iP}SK~ru2)FZLf z^bZHH$?^|}<4_y=HRpKOhhP#40OuUw{kQk8IR~)xUG2~F{C_I7xWtBh#a+97><$K} zJ+R;fCC?umNXP^L3(7PB;MWe{#QbBF!M)x;CbU1jMgC({V=p{_2l6#<$|o)e8wNKt z{w5yf13pN>9DoAiH3J|viX#JN0IzM-K7Y;)2ixHf&Vl}E;}w-^2EYJjBpf^8sbTbH zA--iYiML)!Ytyt+ffs8rA`J{=FNmAVu_&?1)x>NxkqN8HYwbPnGW-41qy zH+RiO%Ib9_ZN{!W^=c0r@ah}f#w)KEGAh2S&}qo@w z$|$vDYLZMC2ejixK5~lA?@hjxU;NP15j}Z{c@~SxFw3%|$@++-L#}I0-1I9lVZo~? zJAsCnw=ZhmxwYBymKU*7|0B}knpv0CRRjBQmQr29(kx0XzRTGDHQz5$nhyGsSt1C(87qvm?dj-f-peZQmTcFbl~FX@<3 zMi+F*8(WKH?q?MCh?&%1XK4z~rybckn@-ZtzrAuBcdu)K32r6!Gu`R7e$*pQ+Q0nI z3qZk@n?xKLc$9AP)4p5I*0&C;*Pm_I+h@koV~T+@()wfNErfV+%D<$1ng3D>a01M}*@3KpS$d~wh_~ypus4X>T@{4< z%_!{`e=N`eNW1_mp-*;Ix`!h-9pYyWAm6}C6Xw1q$Yn+)N|tcXq^YrlCViM%%THn! z6x|BLaqYQ6JuaX{D9Iql*O*eF4wWz6pM%{9aJFtvZkmpGP#I8XN6@W2U>s;*Epvl%yV{JTn{_(eXlrWWSG#$5O3Lq#Hwi8 z7S;pf-U>1A;rYa(XsDJPZ-xcTfFvdqi(@oDEN1jif)yxxPZemr-n!&_f)(h!J`~4= zns2OD6g!uRS>z))lmp#=cD(U%pl{OW%i_1OVQNUxsc zRs=xx>SY>9!~p}Zz7KSy4B-CbLqXIk0HIgHQU$>LN~EcPFIxW*O{oAr{HXwhr3#RI zB@9&oa<4>{DnR*_fKmg9zY=n4fRC?4vKm0)wLAa2mkqiG^GN=z(;}xV(~-eu(}R5# z!~b(LJkRe7T>JzLcKjI}Hi%mtfbfd`@69ko2nfc%(DMlYqG93{5m7X81uHTArNk`xsx&T+0Q#u+uZ90x(L+FR{)MKHjn9_m2GN=Ri!>Z| zAn^bPr%~_%o#ij&tvndX2s+aSpuL(MZH2(ds6x`5Z61`wYvSjcMg zM+mah1+c#wX7s{v3j~jpDF*o89Q@S=lKpEnf3_S}bpe>KXn{dPWMObO6p;S!=#P5- z7yVujK=DuA|L^|AUv(S!{}&D3&cJ@Py+jXeo_zSf0u;~*_<6hvp8p8qV*jHN|1Jgx zB(Dz^{&}7C^ua>Dl>Z1pN%{cHSFMUaf~PDHivfTHbf^!YdNnCvvMY)69R!3JDg=bU zUncqF{ejB7>H-bGx=7`J7!;tN1_0t$-4-RaTwCxww*=4gzo%Y)ZG84QF^I?zK>AO| zrFu0+zz=Q#>=d~EYQ?zu73pjEuRSljRAe>a>nrF45D*-HA%j}~Amd+}aX^oT|BeKl z5!kNqfqw;v@hJW9Abq2Mg*JbLPD8K4qXGE;&F42T3s!<)yEnn@{N3m5Q81b$=@Wqd zwcAXez%}qr|I32{*?$5My$WLg2p*UJBZ&80LI>F!{QDB%hs;qPg6BjN%K!Bs4O?Ih zY7mbx0PVFJd1G)j2S5o4|9oBy&IIo?F)0C?nZLc-QC?KTS7`ga!X5hr?fQE(w$ODOC$VSeBX0E&(C#j zp1Ee-bFVe)nVB`uMBhB@(^ps&RmB%Dh)}=(&eC2bpwPcKg*^BpXdn;K=j?y}!9boa z?lx@y#s3EG(EP?HAp_W7K#C`c0r;MuegKi@=O=*V^YanF^Zew6=6`;=L5rb6@S@dN zrJs2BdU6ZEkJ?)~=5&$LMm4 zWl#9lE?=KKkls!F+5`ODI5GRtXO7++=1P*ywhe1`b1G@v4x*32Hy*7wAZQQ6cqbgd z5DMn-6$o9%&op%nz_0FR>g5j5!ml21z;92zK8D})@)em_>-Kc9JS}2hi)lVxgA`*?xbf`W_xXoZdq~cNvS(La>w&#Za z*y@ynfDG*i=$0;%Ekll;-#|)fY9IBI0@r1S*>k9hlPVr?#9t z`USSiMOOo8$Z;y9N_2xSsXb8%ca@mSS#~*VW6a8GL4I1bxJt9pv3AWRee3F$_;Q8! zF9&FD;?FUt8`@gkqeZcZ>Vd!dxSaLbO@=$yRv)6gDn#^g&$q&gYB;EsQ z#LBHIK-rcqmtI%{foqdmtEBZf29*-=9|kaZEara{Cl!QM2@A_S3YMjJ1irCOOh{X< z-Wg0O&1B3cx9C4(`m9B8J=|h4Adr`#cGOvC&?wt#|EtN*Q=+-i&r7nNI}vx@D^yvI zLqfZw?2canfk@GcC*yK@>Y~h!Es;5=YBb5}0hHZoU9SFgC)eoT34G`A#oeQgsYh4q z11cpjSwPf`x#s&2iycCxmfRfpxXddc!a5}>c2VEjIbmG6k59g(LLu4$m!){|9n~x4 z5%f*eRDCP3J)`=xy%t$9mHO)s-0Na;gmf#aC-j0PoC~3Ig#F=iEC8g^1+r{+^Qdbk z8jwGHVhdB!g}ESi(b#@8u#`TxYs=WUTfg=u*(yU}fRqns^$Szcm(=T;Hv5VCHXT#3 zaB6Y#DD2zX^QD+y1>(f7q0u(l#Y1cYrr6luG<1u?wbjaQz`;#evPX(wuR-VZghJ;G z*jNT?Z+P6acjKMP1hZ|9VBbNbZ8AZd^n>PMI^!Z>JA)&v0+SHBXilAkDNjk15CZYm zv2H{|$u`u2$vCIubw}dQ=)c8vtFTjV7ekBnPQV5Qn|!%R>8?J*XWQTD`fQ=8T6V%> z+JiZ??T5L;bakwBd8yVYLU(HLpuBP2qSup(G%HR3LcgJUq~4x@27NYJR01VUYJuiy zlxrFN28KBiR9>$f=jW-WCN|jF@xu1p3DN+2=8)#N5s1Fy@hFtN(`-CPKT}^NlNVZ? zQlLqv|KVmKEmXD3Ot*Z%%(-W$Jffr3SgS`fv05O)Rc^hza@=j{$77%eGL#&@K`b7f zAZi8EBD}R!Wg?fcE2guyZDdhTy9dqwENFGoZ{(_f9bITe&mJQ{S3QE1(59G7@#QLyEWk<@O7;UU*aVz0KaGV7(ZZbNWnxHNL-%x)n1+mYJX*#&vu#KtwD` z<^xZ-EXR9E8q(X4P9ZQ8?#kZ^&9Jmq6Ejfq1h_%v$+nnmfqq(`Ae#V#(CNiHEf6F~ zeL)1d^cLFa#;-K&81ocujb9<5RF2pR9f`i@2(kI3P#6n8iRMeaWYpaXy>t?G;(5(D zcaOMFZ`zxpxZsP)NWo`x5})0Vm0EMl>Uf9>Z=A_5If8Y^$jY$s)p^N|!4xSTXj3~& zB4~&1P+qC$vv@#J4{JCF>R6muDX?3X57XORg=aCl7kM95c66rL9$0@OYDlr!;4!Zj zqC-Xg80%ma^9yO>qq9JE-V)Jr;Eyga=xg)=vaioaIhNLRLfD-!2{wA8A>J%ennO7O|9p3AnuaOZCi=y zKHp&FjQ1ZpNP}?GBTP=t>IJ00SDEMVai-%`wz&xigoN)#1x5o}c+vI@dg3UHQG0t? zdsMVxcJ+Ryk|HM2)sgwmE^Ob??`#hRmzsk9>04?s zHIOLtB2FePnN;X9#&U5#(*7OR+SMtMa3KBCFY;EzNL=}I-BUS*CB%L2Mp!pbmiVOP z^@k(JE_WQAED5ecQ-F#<=$uC+$zk_w`MzEc50mc_0nAFJ!$?y||929PvhlMgz`s)l z_}^2E`dCD5Xq4Z{$Q-ZXw#A)yx7j$7jVL*60e;?Vrm zLy23Fj0p*tp>~S84)a%n-;HY9ytht&gq{X9iYp$37PaeVyFI`cOr8r8-^4z>=?Y`_ zXiUr*Jgc=i9?cTs^4T44etaxe5qnvKwchu>PY!$DEIDe}GG>^A7B|U_mKQ4`mI
    S=U{4vpg}^88E%p!ZT~P&9Ew?mg%@xrX&s;%X^|wDZ(@T=?G!9mBMGdX z^t=tJ1e|Tx!W?{u6aBuD%K|?Ss~@jbgzX1QiV{`eROh7t1Hv3*70WI>gI0zY?o&2cnOH<_WmI zJR-hkm6D(@>_MOP`05(KAMCZ0ANb>=wm=1nUUPi!Q(lr*Qz~O1a@;EsdjbhsmeRnq`fq z5Mz@rZNTB`D8BI`4^z-(6dd@(i(7}z#_I5Ak%!K78C$1eqVcK+&&kKtYAH!s&z z&s5rTHyWZrn?QdT#M^2~-m%RR~Tl~#MGkHFV1t)H&%pEg8rPPSj*1n54Xla=0l z0FIy96UyM&aO9h6_Y3Z088jNM$c{ zs+?oGG3++doxnVTrKc%P+xj5k)-jLB{)(Ne-KKY@Yp`M{8!4c$1zc9&9#! z8F&_#8VCq0vSIMn1bGD>Vy4@dMSvC#_*C#y=~UAhyW$d+4B~8jgCvR{!!XmviB}Vg z)F{_>2s~BM^5nTSF{B)23XO0#9q zwoBm!%s0c01@%eR!(%1cV}Or+rE`5nayBV!zFa)@Gu2aL z9(l&DLMV35S z%17)JmEG2`UZ?1_s(p_I$+97Jt(T>e74{m;k0=*xc-ke)+Q&0(lIps6)R=nSro+ks zJpJ%+-(R?CQo|>wH)r>1*-*SwS{|qT8rY~BHm+l_ykXU{OI(%p%A7RIW=d7di$&e3 zqO6Hc-KlIgw7fa?rb83uaDeTM39W13HEDmR*b5XZG(lvvUa=Q{1vpV=3oR~YNL=eh zf`Z~o`V38$l!=WG(sJ;?(!vjFqF$sna(;_z@D4_T*6#C1_aw^qw1qH8r6`)+NRIW( z-pfbME33HCK5D1YKJ6b%=(k=MO!f@LZ1dSXz&=2C-OUo%OkRsDCa*Eyo@R@j{1V=4 zS9xqX8>xmm?pINxuHg&ezpCB0JY#?Niy5_se~2|+`jnn@8+5eIj4I=XZ;x$6KQyVE zFUx_p`Y?+ngWREZ$4Oc6-NHx=l!k%ay+xiOlhBXFOpNP{Z;Ty^Z|){NFg4lq9leV_ z+>JSe?hM-|NU-6kInj84i!(c=rhAq|ibu$6kjK%%gqKQUiN?%%smV~Kv0ZtVcqX(E zUk;No!=p5A6qM^(#WF83<@EaSeY$46?{I_Dl5!GEp}>5C-2r{T(Cw9`U|X?P4~bLL zbkapjJHE(-X^7Pp&ND*>b!mWG_Xhx&x z1ZiNtHWf|h2^?Y|^xurZ>60`rIAE^?Z~--#3Xg*GoInSu;A>5l9BXHvAEF%_z-b#U z&9L+#FAO=U*6BW!(L&<4kE`}>)k{`~p23)TBCTMyYod2_&R&yCaS|h3a6grMdFW-o z)Hxo$+wh^ONF%IRYoImY?%gh%aaHqaH~WI)MK@zin$y93O=i7Q2fLi8%E#ruSaG_n z&i;C5ejGG6&EG_@%EJF@3agsjwDg51u(3^R@JI{Dm3kcx6q&0MTCKG<@Pco24L;5r z^bS9WdmF7xrv9?ScsZe_WKoT!muHqDy5aurh$3Hn*Fr#cI&1RkJU}{yBHK=4UFvd) zq+^+%kz!w`Wac3iS@cMo)mcbW^PN|%l#-Xl>J{i?VZS5O?$Qf?$9991>LOKwn;4aIgyh|6hZ%n5d2JXuQ; z*#V7m%-P8T5OHV4l7L}gMplR;15`G0N!++`+o_g|n=COuV|7t^*H&0R&MK0jBwN;~ z#r~zvU{s(3W|sM?OxkWtnypRa9<6X`$)^ZJ%}mhs23shSe}3a<3ipWK6Htxo>_?pR z@)N(tqYT$5ni~1oPFS+y7M5Ne@hBJW5ijvPmWwGS7!jp7US-y8CXmqBoXVwo)tPt} zsG~}ilBHN#3|yWyVk^cN3ihQ6GagW0CzO^+mSS!(8%*M;ENGn#Cr?-DNk(bFh3GmOmsYmF=A)pC;W`G0PCLn@Ul! zu``^suP~?-O4uV+jx$pn784SkVpP~bZr@v^=~Ac3Kq2(3VS?Nr6H1(Uju>m;Fsw=M z;@D3jQ~2d8zV{KD`ePF)O`LbjW#PKAK~D*doMG$|>4npUdQ^NA)Uj zB*u{U6x`S6x?QF(b>oET#FM*|&J(dx35I;}(EW<9?(2~k-$YkYt~$VeO}I+}BLDWl zq+64g#6~PNTbg8{+dv_GDA2x4J`cxc!QoVHSDM=B!Ea2o^KqnvKnCb^`eu@hwBP)y zg28XDX0NLY$sx98jyukD7~k0e+jutjV`uM|OAoK@^y53;ALFKIOGd(BsCc(eP=AM( zd>9_Jct~ieL{17O;st48KXvd9QyI*RW+EF|zzZP)4w%&2l8L-~L1^RV; z;R5B{O{V7fiXj9z>BsK7|1CEj_7}zneA9C%G;QqAntWGP?NboC#|pisZ~J+^ZhS6% zWq6t}KE-DWW0Kuj3~m1p5wdx{*zsqFXYkqGNyvWD!^M7=$ko{>+w}R_8mED_gDNLy z7eUx;8@e!TTQqC?-zMXxsGb^fjBj0S2fI4X%@*BYtLc5UOh4JQ6j^%_RoMt$tr=>I zuTa!bZ~y*K3Ia7-qYy}Fl2UxMK7T7|F#o93NwqF>Nb+K-CiN@oU1^Mkfb+XI>dXaP zpT@m|nFNWO*$OivD%Hz&T3*>tPPS9bpQ_7TL`qD$Qe>@~jIJ)zqA#YL*p^q}R9B=Z zwZ%hO0m0s|lFPv5pDtJ>KweKI7|uB7$%3{eiC}m4rFf9H4%2l8%}Kc9$jUFSanr?G zlx4QNbeB;qJVTpq`rC_}Ps~n|k2?YMy1n7cJ*dnSM1?Qf8qY~92RSYIO*BqhL-?@U z<>m28zH>eFBtKmahu_vl`=Bg#3fOvPWXo%RZ8~~ylMJt7dSS>1SqLiw^1WUI8?q8r zfj&6GIy!;gQ)1?_U=@DJ_F7Xy)27}N?B0t^1osd7(hUv2+hIN&>#kN|McqT`$;>kx zu7%ZR%PcZf-f99@*hg0z{Mgr!A0;#%<{9aXv3&j6H2|wJZuc-Mv=k;QT@s&FE&ZPO zn%#(ufznux==|P_U*BkqS45FW8T+-(#v3ljRJlM9^~qs4QS0mTFZpZ9DXN@;44ts^ z`#fj}kgy(IW9-$lb5UtSM-1kj#S+2MQR))g6u?bWnl!r7Y%pz$&X}s$!XX@WQBaN2itvw?!G+0gojhSP`!(AlM6p#}L@6wpisE(DuXmJL^}Y{X|>sPbT@{ zOA1z>gkDcPddiyV=$pzw&Bu->j2>l9aa)HDcPbR}OZm-K++~Li z6Q1xGO@Obhv`11iQx~&xdn_ugH0wQWLGc>wXauQr25fJA5Cqa{i6>4U+Lh(usq0Zd z0)jMJX+y(BQqlfid=mYbsX<>zv5$FJn8YgdJgXBw85W*{$DI{5!&-Mq-*4`&sRa)f z=ZoxQ;9duRA^NfnR&T8rGRh2Om~GshHd>Tda9*UjC~w+rtD9zHv+JNlIN0ItQsvc_ zGPCnGDcf&L{*?+#cztfCI!BQAN@aPR?%ys*!_upX?RBOWX7WZ9bs zObNDhRCIsD#hc%DokvFf8u6L-&K`hWG0-TdmeCehLTDHd-%PD9+af>gr|7lDxCeF3 zBH)tL!hWExl7FV1H^P|CYP8ne7EGj@Zgoqm-$C|B1u)3C~v)qoh+h4AyCT_h*$rj}9^1CqWzJg%6Z z*);)yUXTqBmFp4gonb7!9Fwiqd$spklSQV*A1C;@4L??qW>O_D9WBTVZ&MpfV$&r^ zVLzx9vB*9Nny*Pb35j@4HV|da7R)CZqm1Pa6cPB1=hwXHSh5SCu#3<20p&VSXf!4j zMK5Tibjj!g(oH^|8jZUlz|GU&>C2D}5}H?LjkSj80<0_5m>*$p2ZK|7jO;2F)k$iq zf~EL{WzABljomn6Iy7h|8AxFCzt3k$Z81ad)dsCAIPyotQnlDa>*UA)-+GN9&($H8 zOVp)Pmj|8S5Ld)<`%G^#u-^D=lcL?bR!7{sf^gAHyCPoZ`t9G6{T;IaEGvpHAbWga zNpFa#lHjN?K=(RC^B9k~4f^uTsDMx=#8*v8+HgV&9>hW%&cqaE75D~qHS(E7jd(}U z@4!Z0K7i%dh4K8aX_de3t`>P^6gk~Reip`TmS1kTr2xr+?9TBDijPNUL(pAMOUI{P zkN!FyT}k`2zKZsAKi&p){P`uv%G)XWEAyBPH)kbhT9EH%AT}Ms;b`bZ*pK4;OY$Fo+(+1uwb>%E{dYZh~T?$*M)l zHw0kCQbChD1XZPaz2V=};$91aQ^-ZAb2*+P+GCA1kbsj>OkT2gvedlFl{blO6wmH@ zBaFAQuz^4<#SOCbm-6xI+q=cbElx=SMo3`8dV$%5CU~r?z{jRvs5$HwJ5!MBr%|<8 z7(S{9cNC+giS~{32#hY0PWA(BAX;Zmp-2Su3Vp(7td59A53klq8Vl zE15QOdL=2K=jGHr`(@jDxQ%YPZ7w2)OV8V}_bMWAjBkzw64`p_Z@=$+VkV%7Kc~X( zwCg>xdPyiRd+^{^8K^*1iwrAI)bbZ4?-}@7#OrN4LOcs+b zZLOQ(WQLuvw!Hn{=n3fPn_%bhdD!IMzd%CqH(lBBxWq&DnQvvI0ppvgnh*RO zWWcjhP?t<@kmXt~QqNzY;T}pQ4-3fF|>KrzjyW~`bCS13>zP$uS83MR)izD zwLV0H&k%7kqIJ$RaKw5Y7=z;Gu^%M+wI0;_t4~|QSePhSpFnQj41ep>xlGhDA*X<3M{bHm1gdQy_h0}T|p-*MX|E;&;q@%8;6wv?g4k> zD%6dTti{?1#hPgN+@;uuN)G%x>6_9ACFT4b{E8{Jjhd&7K5pC;XNLHFt`Yuxx`^mw z%{<5@ELN=nCpG-zm^dr(xK8?YsLkXnks8{mlo)t1*j|}ez!Api0{UUYsvaf-d-?dP z)~Zi?GWs9V7*Bn9m^470b{r#`*{{wO#|l)Ciz8CWgv_YLD)oXxzSQKh<*-_VIn1)! zcOnksHh!d9#}|HxIjUVlSqmv*r2npj(L4<(x>XyGSFkOFN3MdMEb6nyJL2Xj4HHaS zu-hvl9urshCjYe7S9$Fg_??!nHndaYm~t-WBMHL_@W-t{`s@_QMk`q_WhbZT82uf(M)p1$f?=2^I*EF~2Wz7O#k|hK01WkO=EGez6(d{H^Tsz-QIt%k2O>j} zYGPBX^)@cT4UwnWdi2$b@t4fx?yAR~ar?~XI<=K_73VwWFhI6tMO)oB{x4!}s;AqTkX&vaXKVGV^-aRv9hTqqNRmmZZ2o*zb_mu&+1@nGLVWiH$2WA=Sj#t%`n-{`Tq{w^tZTnoJ!jMrnf3 zz`R@;p?z)E_nNE}De2RpFJu0?!~p)eOx>P1fv`TkEsy=y;4GUa^LfnU%zhi(vqga! zE$LycyrSq5gUBm*wGsCM{wg0;Q23U#pFg(A=_!6E@&2YFe@4GRj4!>!wdn)eU*WR8 zn6c@_?=v#>rmS{w7{B+)Vq6~3XknqCbRfrcxRRzMXp)||F+tk*K3H1lkIw0y88vUe zs>4bv)!N^6lQVv-l*{NNWCl7Zpa*Vvdn~Vb*Aw};s7IsqU1OPmLhqPxfdc+LiWf4Asc1O55Fc(K+ybgWaj*l7iz@f5>ZGB?U+(*tOKqH)r@EQ z$kp4i^sL)J8W6G-XK`35whT?nIcIfWNVs~8r({$=eX6M){h(=YR9;APvV%@&u>_~5 z-wIB+);09TJTBWWg{Jy#)jX%jDzx1a$jpMNM>8xDk5Xs@_oa$ z^O=AK+ljhpvK-u7?JFZY#^bQG4!D;c&h5*I*5;aQC<~;OjU!C!kgCKx?$a9Pt78@w z^BRyBWxDs*eqy=!`aV#4^Pr%5_p3lYr^Be;3Y(6W6tK6Bt(x5yhUcUhlP>aF?yg&D zHZ^Y)sRx9$<1*Srf+$0CjUU%U%FEj@tfVIQ)^y2>aV3SR>`jweQAq+)9=&2%ufgCH zc!41NOL?g3J-D^BF4c^U8YzxG@dCBF^hCa)Y@Q@WFC}s6&@@oyyj$Yq`c}6N)60$w z9}karE6IuEr<8+YwH3z>9Ay~&T4cp2A%OX3!S&F+3W^*as){JxrJxJ-nSDj{TdKFL8t5x6J+D z>ZIC0O`ar7#%?f$Dv?#YE0jLV6Q10!vOjoWj3HHbez;O)Xv8n@@FKM4QIPS7(j zN;F(bs4+jh+A}bgh_G|&jHOdUwX4{!<$FguDB}y*QIoo4?)2&4MR@4b7>;MG4+T>A zOCQU3my+BEQF1YpbGEuRS$1x34YDWP4pQBdN8(64{l2g(9cgs=7!UR`bhOTCQEQgs3v4fGez8IR_g|qbDD56q6jAlyo3LcxMEx1pg}`RJy6aN z@@0&PRo;a*HXN||?qtSyFA9h+`HizTfdoN=AhA9v>WJd_we!a}qW%D~0t)1$K&S}u zO6e|1{+N<`5=?~;ndRA&pb7swZej=mf0S4BNDpBO=o4w z>kz9c1Gy$q&FLqNWr=3)?`JluZOf_Lx21h=c$Wfty==Wak;#l?e#-XQM*RxgXY~Gs z9IJFGC>RlOxKOz@^*%v3s!0fjHE**de2|Blhd6(TFnegyL$-gh3~{RI704AoyAPz1 z934{62SudjN@$x?WP|6F{c*1#LZd-A)aJ#_swb1aam^U zeZgPm(`$DeTUFwX01K3WITg%ur})-z)+gV2d_QH_yESn#65>0gfbaXpd;}8y24RB! zgcySF?Tnqoj1upDnDloVz&{1Ay$cX_-tN>|=?eeVjBYQEx(REdd?RyMT+fzggv0Qz zp47OfAj0Fr`TO362rx&|t4EW+2U%jlf|t(+5bX!mm*pU1>sJKu1Ui5S{A2(i0mW+T zc`R#UKPE3||DXph@lU3*9#4jB7qk>0y$$1zJ1TM}5$dy(Bp~ldz%i($B#>85uVX6| z&t%9rFxGwBzYNF~fklNxF3m$^`wa^KcCA zU(6#>Axt;BLR!ci#!-sIn49Qa@JwYiZ>M^&zb-ejsQ0v)dyS@-{=rvY+!8I{N`l>lp5z%1E zWpJ?PyR@%W6;pQzlQD%&_t8eCopFmNqLcOG+mCTA#y(gBFE0Z|e1Xlgepc#@nsu3z zUZK2&KXsw6c%d!ISA1JbmWW3_*lFTS8&evHW{pi>jajCh>N5G7PrU?%^@@B8;(uF1 zJ4ZOJcqT8!a@FQ75@gemFoxn;X*4!5I)ys!@0-OFFL4EDIi~o!=3}a-^}JG@h^Ng^ z6u}5@nxoJya}~AyM~oqIy)~ce)5?+}Y(?JLvLkHu?;O1)Gi3=3DHiZG=|;OU^8${X zMvdG}=nM-3hW)y#R+6kB4XWiLVnZTIB&92#j_6RIXk3BU51iOkSz z_DYH}H}&F~zXnPFaPKqbrcB0L=5COiRUNkJapQHt#o=O~*=#Bbd+n>!S9R z+zeR9E*qhBcU!9K*>Hk)DSOl)8-k%YLCrXCfAT$?dnZE#EmOPT;9L0{$NVNWtYXzs?rcmYJD zsHMgv8sa;7lPbE2Xs@`!7C6&`BrnjEk#1|qUJ93@`nxl%a|Y@NA4?FQw{+#hJ}3zj zg^M9`#F+k&<({AN?^JJvV~A-|2*5uYS

    j!b7|Dzhkr4a{4Mp#@@*RM;rTQ?DjW#C-a^K0Li?_-Y<W!rrU245z3zu@ zd8DKdb*IA0g{M7Fe~-Sxvga_*Q(O+EN$BSUj7tB@=ftS?uYVH8vVTOlX0*u9A~C1M zKRHCM9f;34%l>gMpJ&Li9=jn?kR>Jn8Wa=_WXByJJZS971uR<=JTWv;38|%z z%Fh=SQX936N6B_Hb~hCz3p6eJdnBRL9Ru>|>vrkYsHukK1&_1GX7!iYnVG z*#~$`4WFQ%5C(higA%cphXsc&c9MRQc3uBkn`V33yTyYd?pbepFAf}V#}ll<>4`-1pH-=Li@M|`+96BYgX_FYR~L;U#}2kxV9jJVk6 zLAtc7Qhe6!Y32ul#|LJzoOhcSH_${+lmX{71SZFn!PTc{v-H`P2h}oXUIgp=J$z>@ z1nbs2Cquppk~!r<;r6MXzqjCdb0Dipl(}>k235uSAY*wR2Y;By9BPT--MC^KB(6Oh zcN=T!J|v{Wx^zyh@M+P02LV9{#)aow6}kXq^kwolu4lpAw|j%lbs!nX z9H$tm>C}5ZL_wxzbf&JML~$1RxfK(x*df)1`GBUEXIDwYNw2Bcf2WCQGdRSWt+3s% zO*`!xr0r-k1*~k%&M#MF@RDNnDx$abY_nQD^Ng4R-$rAi;yM;5G7{k_vB>CZEq`U1 z0J0ENrJ8s3!|G!j0eR$WFG|b^);JJy`{bgWb81JVQNSc#GLk&CZaG+S`dNJ3*Q(wX z{i*rIoG76(=bGz%+3r7JjV^enF7!Ahr?N6Z`P_*X7C*$%%xvEk&m6`msO7aLpBW*j zT}7Nwn9a|Le!Hj;QJoTLE!9aUSh;+v=SG z8Y@g|<%)NX?Vb<%c_zjr7V)80$8GQDPtFOPU#*dQ*I(m-MM8Ww~0|w(4hOdXqJJ zzmD{No{S=8DT>6HF+`D##@SSsn_aZuB3U7ggYQsZNq(^$5GlW3b8rM4B5MFd22FsQy7AG$^^@{HIEn+y3Tk*62!Jm0}JXV z!+AhpWAbHMn{)LLp+FqpCP5_a1ud6a)Op7qb14na<3@-C=oTyEU;Wf-9hE33!Iv&U z)nNn=)0ZhmMOS}4LNSHpnS7>$t@G8nb% zoZ%i5D}!UC>G}|EY{jECN$XxnoVIc==2+`|o@?q*CKh(b=fvK$&^DD#py6dCwmjYH zFi$*wWfV1rL@5U@3@BYZfF@W1+ZH^934S0-oGW46;%AC<*xH-isf_opTynP^ z={>P>iQwa_DBNFU<-d+_7VjjCnd93wGf^{NHW8QTEuhk zDs85821$mq60#BmOYb&*A^VWLuQIctc44Rd$}kGc`@^*-@FobpbO~s_K9lvK*%;xzw5DPqvKg9bs~GkrxUP&Fm$2=p zgx-AIbnFDK%~kwvW45XrX-2H}Kc zlQh{;+Nb&JVY354-%?J;w^nG|SAm7HNOcUnqHDk(b}R2wEdz85;o_TYyT4qH`jk}$~LJnTx+E9#5A z+12(w5TT>lb;B{Sy>pL{lBgdi#FLL9^{q>5&_&ZqUR`%MRo{*!w zXdmm%?);%&cz@3Z45B6eg#4U@qL;sKlhwx-@bw$@v46_Bwvs_VPYfRSXesNEp`fscp`dt@rgq5dyW3~} zOees@yMSlPHzQ1c7Tl`FQ~wl~o$dUi4SucVk2a!+1)A@W2}TP#WlE6mzsc(W+&sm5HoiQ$+ zAybvV&^6sn@>fnlYpQN%a#xpJl2UbpZ{-lkp%qFo^J0Q$sRx6@Ntui$m34i!O z@q1%Rsjf4F#hvjYirP$QfUrim&;hk?Hf>s>deNsmkiHChl89ZP|1#fwFDVV~3BQXbo%&s6t-~4shgx zwkhbL^5~&ZU`gU@^0twSc!cN9U{qerLn-g$TgtH`b0BlYuu~JL^HbEg>^UJeEaMO! zOo$lxUwy5;l`nV#`G0vlQBmx`SX||-^?(^qbf}zyKNIV~W}DEf*5%DIT$s9l`z>v} zymfm?`O4(dh->n!+`6Sx!(BM~bL+QR5OJu9?-_ zL`NnV&go11fH22H$;cq=l%M;XEYiHmX6k80wmjcx_r2dZt^ieBB)=zTO#%DTK}Rs- z=CrO}SoMmD4imgTeZEk*DSKHA!W|)#xrk91?ynFn^>m^wR7(q2NJn619VvJ+Op&PN z$wnCiqeN*?;@{l}t=WeK@awskHv4b`82)s(9mvUMNmM8(HPU~(8ydKR8v@?r z1*oGw_flaQ0PS-RZnlyI45R$c19NBr_OKH*9M3` zgAKF+vd@V^Z2<5&aj6YZe@-aq0A!vMi8=te=ftWGK;?NL`0oW-u%IqLg8v=-*378Ba1n*^@bCXJ`$12DnIMgZ#PYPr0Zu^NXQLYF3jf)e=)ZEx}~I!W0K z7qSBdfX06D`xf}~6)o@^V~7Ds4*$XUIN^do{^AG^*^pX`CU9F^55dHV0u#k-ZO{kMNg(4B>eh9`sm;9 zXEOf3@BmXty&-*0G(G)o%Ns~L3V{5m{!-}&{x5vl6oB*04$$80V}e|7Z-h92|1Y>; zHh9wvKn`X%1JFL#P|plvVq4ztTD86AG(_JXWVXTc7l~5&Z@AR6 zs{hVf{wg@1=_A({4sj#` z#E}Aj(Rp3{MkcA;PsNeo0par|w{PU86ehcazo(0v9gkS};e;R-s z37f}H2>%O6BB2m^oCdm33H~Ig%#|8U8tZ-mOI{@ahLQ^}4!hNbgA{SZ!CiDM{BBK8Z zzW-lHI%WJ_Oz4@1%pSr+!}*5?5_Ivve)j*k;J;z{f2~*J{tq4vyk!56NhiOl4kiC1 qLI#UE0C1mcC(V3>=?SsJ74jkQcOS=+`9Js~2LL|Ysyd{VK>a^J<2vmC diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/IPlugInPort.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/IPlugInPort.java index 67dda404..b42b4320 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/IPlugInPort.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/IPlugInPort.java @@ -11,6 +11,7 @@ import java.util.Set; import org.diylc.core.IDIYComponent; import org.diylc.core.Project; +import org.diylc.core.Theme; import org.diylc.swing.plugins.edit.ComponentTransferable; import com.diyfever.gui.simplemq.IMessageListener; @@ -30,9 +31,11 @@ import com.diyfever.gui.update.VersionNumber; * @see EventType */ public interface IPlugInPort { - + public static final String ANTI_ALIASING_KEY = "antiAliasing"; public static final String HI_QUALITY_RENDER_KEY = "hiQualityRender"; + public static final String EXPORT_GRID_KEY = "exportGrid"; + public static final String STICKY_POINTS_KEY = "stickyPoints"; /** * Returns size of the canvas that takes project dimensions into account as @@ -330,9 +333,21 @@ public interface IPlugInPort { * Brings each of the selected components one step to front. */ void bringSelectionToFront(); - + /** * Causes the display to refresh. */ void refresh(); + + /** + * @return currently selected theme. + */ + Theme getSelectedTheme(); + + /** + * Changes the current theme. + * + * @param theme + */ + void setSelectedTheme(Theme theme); } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractComponent.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractComponent.java index 31cba9b6..251dd1cd 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractComponent.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractComponent.java @@ -24,7 +24,7 @@ public abstract class AbstractComponent implements IDIYComponent { public static Color SELECTION_COLOR = Color.red; public static Color LABEL_COLOR = Color.black; public static Color LABEL_COLOR_SELECTED = Color.red; - public static Font LABEL_FONT = new Font("Tahoma", Font.PLAIN, 12); + public static Font LABEL_FONT = new Font("Tahoma", Font.PLAIN, 14); @EditableProperty(defaultable = false) @Override diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractCurvedComponent.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractCurvedComponent.java index 76347721..d847dda5 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractCurvedComponent.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractCurvedComponent.java @@ -39,6 +39,7 @@ public abstract class AbstractCurvedComponent extends AbstractTransparentComp * @param curve * @param g2d * @param componentState + * @param theme */ protected abstract void drawCurve(CubicCurve2D curve, Graphics2D g2d, ComponentState componentState); diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractLeadedComponent.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractLeadedComponent.java index b4908428..71b6ef6d 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractLeadedComponent.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractLeadedComponent.java @@ -69,12 +69,14 @@ public abstract class AbstractLeadedComponent extends AbstractTransparentComp return; } g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(getLeadThickness())); - g2d.setColor(shouldShadeLeads() ? getLeadColor(componentState).darker() - : getLeadColor(componentState)); + Color leadColor = shouldShadeLeads() ? getLeadColor(componentState).darker() + : getLeadColor(componentState); + g2d.setColor(leadColor); g2d.drawLine(points[0].x, points[0].y, points[1].x, points[1].y); if (shouldShadeLeads()) { g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(getLeadThickness() - 2)); - g2d.setColor(getLeadColor(componentState)); + leadColor = getLeadColor(componentState); + g2d.setColor(leadColor); g2d.drawLine(points[0].x, points[0].y, points[1].x, points[1].y); } return; @@ -94,19 +96,23 @@ public abstract class AbstractLeadedComponent extends AbstractTransparentComp / MAX_ALPHA)); } if (bodyColor != null) { - g2d.setColor(bodyColor); - g2d.fill(shape); + if (bodyColor != null) { + g2d.setColor(bodyColor); + g2d.fill(shape); + } } decorateComponentBody(g2d); g2d.setComposite(oldComposite); g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1)); - g2d.setColor(componentState == ComponentState.SELECTED - || componentState == ComponentState.DRAGGING ? SELECTION_COLOR : borderColor); + Color finalBorderColor = componentState == ComponentState.SELECTED + || componentState == ComponentState.DRAGGING ? SELECTION_COLOR : borderColor; + g2d.setColor(finalBorderColor); g2d.draw(shape); // Draw label. g2d.setFont(LABEL_FONT); - g2d.setColor(componentState == ComponentState.SELECTED - || componentState == ComponentState.DRAGGING ? LABEL_COLOR_SELECTED : labelColor); + Color finalLabelFont = componentState == ComponentState.SELECTED + || componentState == ComponentState.DRAGGING ? LABEL_COLOR_SELECTED : labelColor; + g2d.setColor(finalLabelFont); FontMetrics fontMetrics = g2d.getFontMetrics(); String label = display == Display.NAME ? getName() : getValue().toString(); // Adjust label angle if needed to make sure that it's readable. @@ -123,8 +129,9 @@ public abstract class AbstractLeadedComponent extends AbstractTransparentComp int leadThickness = getClosestOdd(getLeadThickness()); double leadLength = (distance - shapeRect.width) / 2 - leadThickness / 2; g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness)); - g2d.setColor(shouldShadeLeads() ? getLeadColor(componentState).darker() - : getLeadColor(componentState)); + Color leadColor = shouldShadeLeads() ? getLeadColor(componentState).darker() + : getLeadColor(componentState); + g2d.setColor(leadColor); int endX = (int) (points[0].x + Math.cos(theta) * leadLength); int endY = (int) Math.round(points[0].y + Math.sin(theta) * leadLength); g2d.drawLine(points[0].x, points[0].y, endX, endY); @@ -133,7 +140,8 @@ public abstract class AbstractLeadedComponent extends AbstractTransparentComp g2d.drawLine(points[1].x, points[1].y, endX, endY); if (shouldShadeLeads()) { g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(leadThickness - 2)); - g2d.setColor(getLeadColor(componentState)); + leadColor = getLeadColor(componentState); + g2d.setColor(leadColor); g2d.drawLine(points[0].x, points[0].y, (int) (points[0].x + Math.cos(theta) * leadLength), (int) (points[0].y + Math.sin(theta) * leadLength)); g2d.drawLine(points[1].x, points[1].y, (int) (points[1].x + Math.cos(theta - Math.PI) diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/IView.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/IView.java index 14fa7e8a..17322ab7 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/IView.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/IView.java @@ -23,6 +23,7 @@ public interface IView { public static final int OK_OPTION = 0; public static final String CHECK_BOX_MENU_ITEM = "org.diylc.checkBoxMenuItem"; + public static final String RADIO_BUTTON_GROUP_KEY = "org.diylc.radioButtonGroup"; void showMessage(String message, String title, int messageType); diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/Theme.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/Theme.java index f3f50443..d75eb25e 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/Theme.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/Theme.java @@ -12,17 +12,17 @@ public class Theme implements Serializable { private Color gridColor; private Color componentBodyColor; private Color componentBorderColor; - private Color componentLabelColor; + private Color labelColor; public Theme(String name, Color bgColor, Color gridColor, Color componentBodyColor, - Color componentBorderColor, Color componentLabelColor) { + Color componentBorderColor, Color labelColor) { super(); this.name = name; this.bgColor = bgColor; this.gridColor = gridColor; this.componentBodyColor = componentBodyColor; this.componentBorderColor = componentBorderColor; - this.componentLabelColor = componentLabelColor; + this.labelColor = labelColor; } public String getName() { @@ -45,8 +45,8 @@ public class Theme implements Serializable { return componentBorderColor; } - public Color getComponentLabelColor() { - return componentLabelColor; + public Color getLabelColor() { + return labelColor; } @Override @@ -59,7 +59,7 @@ public class Theme implements Serializable { result = prime * result + ((componentBorderColor == null) ? 0 : componentBorderColor.hashCode()); result = prime * result - + ((componentLabelColor == null) ? 0 : componentLabelColor.hashCode()); + + ((labelColor == null) ? 0 : labelColor.hashCode()); result = prime * result + ((gridColor == null) ? 0 : gridColor.hashCode()); result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; @@ -89,10 +89,10 @@ public class Theme implements Serializable { return false; } else if (!componentBorderColor.equals(other.componentBorderColor)) return false; - if (componentLabelColor == null) { - if (other.componentLabelColor != null) + if (labelColor == null) { + if (other.labelColor != null) return false; - } else if (!componentLabelColor.equals(other.componentLabelColor)) + } else if (!labelColor.equals(other.labelColor)) return false; if (gridColor == null) { if (other.gridColor != null) diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/images/IconLoader.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/images/IconLoader.java index a72c3bdf..991ba3dc 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/images/IconLoader.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/images/IconLoader.java @@ -30,7 +30,8 @@ public enum IconLoader { "faq.png"), Component("component.png"), Plugin("plugin.png"), Manual("manual.png"), Donate( "donate.png"), Bug("bug.png"), IconLarge("icon_large.png"), IconMedium( "icon_medium.png"), IconSmall("icon_small.png"), DocumentEdit("document_edit.png"), EditComponent( - "edit_component.png"), Size("size.png"), Front("front.png"), Back("back.png"); + "edit_component.png"), Size("size.png"), Front("front.png"), Back("back.png"), Pens( + "pens.png"); protected String name; diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/images/pens.png b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/images/pens.png new file mode 100644 index 0000000000000000000000000000000000000000..16d091b22d48e845a5db81375f7e77f807546bad GIT binary patch literal 922 zcmV;L17-Y)P)WdKHUATc>0L}hv)GB7YRATcyLH90yoH6SZ6F)%QmsFr{L000McNliru z)&&<0GAc8UyD$I%010qNS#tmY3h)2`3h)6!tTdPa000DMK}|sb0I`n?{9y$E00Qz! zL_t(|+HI3dNR&|&$Ith0W z=vQ~@3;VENZ8Dk03*tgp4 z_D2lE*s$G(F=WnVmAY#UMQ_hn0$FOcjrNRpykOt8<`D=sIe(Y+>WFb}?v0jZ(-aPE z!8kFIYz7k(^Y;%AVXCK211MEmZnqCwsY|J{Kt2l}M5l4`sm*#CiNMUv>!zNbQAMCA zbGf1j_4U1t?VXkp+h8NqcD4{kI*u%tt2KJT49!Fb43yQ9o@aq<1O&$pu# z)sNx+sKn!e^^-shg!BcZWAdmV8_}3#8XU)aAno~xx)K90%S-YXQ>*OtZl~}Oty1^w z6BZU;?uSpgQ<=y^EoK@J7oaJUf^<@X8odz&9)Yp8MT*6E2!#$r_5FPAF9;q_U_(P| zq=TeRc7@FZ5+#VT2{4>C#LcU?z)W(X`m=dB8{aGaHjxQ z9n5+I@Ig`H+PcL}$9I={dmJO>3doWqt$Dm5qEaV`h|xoIr4+6^2cX6shQtjUcjOL{ ze!ue=#|AO!Ot)q;5XHn#pFc`oEYJea^T>PT1wmq=5a|TAu~+sSoY2R|`w1L+q6+-o zi4MoohRYR9(pnUH*u)2i;$Pv`x6k5MP5;);#<{907*qoM6N<$f=OwZ1poj5 literal 0 HcmV?d00001 diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/DrawingManager.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/DrawingManager.java index 3389f77b..f0dc28a0 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/DrawingManager.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/DrawingManager.java @@ -26,6 +26,7 @@ import org.diylc.common.ObjectCache; import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; import org.diylc.core.Project; +import org.diylc.core.Theme; import org.diylc.core.VisibilityPolicy; import org.diylc.utils.Constants; @@ -44,14 +45,17 @@ public class DrawingManager { public static int CONTROL_POINT_SIZE = 7; - public static final String ANTIALIASING_KEY = "anti-aliasing"; public static final String ZOOM_KEY = "zoom"; + public static final String THEME_KEY = "theme"; public static boolean DEBUG_COMPONENT_AREAS = false; public static Color GRID_COLOR = new Color(240, 240, 240); public static Color CONTROL_POINT_COLOR = Color.black; public static Color SELECTED_CONTROL_POINT_COLOR = Color.green; + private Theme theme = new Theme("White Realistic", Constants.CANVAS_COLOR, GRID_COLOR, null, + null, null); + // Keeps Area object of each drawn component. private Map, Area> componentAreaMap; // Maps components to the last state they are drawn in. Also, used to @@ -72,6 +76,10 @@ public class DrawingManager { this.messageDispatcher = messageDispatcher; componentAreaMap = new HashMap, Area>(); lastDrawnStateMap = new HashMap, ComponentState>(); + Theme theme = (Theme) ConfigurationManager.getInstance().readObject(THEME_KEY, null); + if (theme != null) { + this.theme = theme; + } } /** @@ -145,12 +153,11 @@ public class DrawingManager { // AffineTransform initialTx = g2d.getTransform(); Dimension d = getCanvasDimensions(project, zoom, true); - g2dWrapper.setColor(Constants.CANVAS_COLOR); + g2dWrapper.setColor(theme.getBgColor()); g2dWrapper.fillRect(0, 0, d.width, d.height); g2d.clip(new Rectangle(new Point(0, 0), d)); - GridType gridType = (GridType) ConfigurationManager.getInstance().readObject( - ANTIALIASING_KEY, GridType.LINES); + GridType gridType = GridType.LINES; if (drawOptions.contains(DrawOption.GRID) && gridType != GridType.NONE) { double zoomStep = project.getGridSpacing().convertToPixels() * zoom; if (gridType == GridType.CROSSHAIR) { @@ -162,7 +169,7 @@ public class DrawingManager { 10f, new float[] { 1f, (float) zoomStep - 1 }, 0f)); } - g2dWrapper.setColor(GRID_COLOR); + g2dWrapper.setColor(theme.getGridColor()); for (double i = zoomStep; i < d.width; i += zoomStep) { g2dWrapper.drawLine((int) i, 0, (int) i, d.height - 1); } @@ -224,22 +231,24 @@ public class DrawingManager { // Draw control points. if (drawOptions.contains(DrawOption.CONTROL_POINTS)) { // Draw unselected points first to make sure they are below. - for (IDIYComponent component : project.getComponents()) { - for (int i = 0; i < component.getControlPointCount(); i++) { - VisibilityPolicy visibilityPolicy = component - .getControlPointVisibilityPolicy(i); - if ((groupedComponents.contains(component) - && (visibilityPolicy == VisibilityPolicy.ALWAYS || (selectedComponents - .contains(component) && visibilityPolicy == VisibilityPolicy.WHEN_SELECTED)) || (!groupedComponents - .contains(component) - && !selectedComponents.contains(component) && component - .getControlPointVisibilityPolicy(i) == VisibilityPolicy.ALWAYS))) { - g2dWrapper.setColor(CONTROL_POINT_COLOR); + if (dragInProgress) { + for (IDIYComponent component : project.getComponents()) { + for (int i = 0; i < component.getControlPointCount(); i++) { + VisibilityPolicy visibilityPolicy = component + .getControlPointVisibilityPolicy(i); + if ((groupedComponents.contains(component) + && (visibilityPolicy == VisibilityPolicy.ALWAYS || (selectedComponents + .contains(component) && visibilityPolicy == VisibilityPolicy.WHEN_SELECTED)) || (!groupedComponents + .contains(component) + && !selectedComponents.contains(component) && component + .getControlPointVisibilityPolicy(i) == VisibilityPolicy.ALWAYS))) { + g2dWrapper.setColor(CONTROL_POINT_COLOR); - Point controlPoint = component.getControlPoint(i); - int pointSize = CONTROL_POINT_SIZE - 2; - g2dWrapper.fillOval(controlPoint.x - pointSize / 2, controlPoint.y - - pointSize / 2, pointSize, pointSize); + Point controlPoint = component.getControlPoint(i); + int pointSize = CONTROL_POINT_SIZE - 2; + g2dWrapper.fillOval(controlPoint.x - pointSize / 2, controlPoint.y + - pointSize / 2, pointSize, pointSize); + } } } } @@ -373,4 +382,14 @@ public class DrawingManager { messageDispatcher.dispatchMessage(EventType.ZOOM_CHANGED, zoomLevel); messageDispatcher.dispatchMessage(EventType.REPAINT); } + + public Theme getTheme() { + return theme; + } + + public void setTheme(Theme theme) { + this.theme = theme; + ConfigurationManager.getInstance().writeValue(THEME_KEY, theme); + messageDispatcher.dispatchMessage(EventType.REPAINT); + } } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/Presenter.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/Presenter.java index 092c36a7..5b71d956 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/Presenter.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/Presenter.java @@ -30,6 +30,7 @@ import org.diylc.common.PropertyWrapper; import org.diylc.core.IDIYComponent; import org.diylc.core.IView; import org.diylc.core.Project; +import org.diylc.core.Theme; import org.diylc.core.measures.SizeUnit; import org.diylc.swing.plugins.edit.ComponentTransferable; import org.diylc.utils.Constants; @@ -594,7 +595,12 @@ public class Presenter implements IPlugInPort { } } // Expand control points to include all stuck components. - if (!ctrlDown) { + boolean sticky = ConfigurationManager.getInstance().readBoolean( + IPlugInPort.STICKY_POINTS_KEY, true); + if (ctrlDown) { + sticky = !sticky; + } + if (sticky) { includeStuckComponents(controlPointMap); } } @@ -691,8 +697,9 @@ public class Presenter implements IPlugInPort { int actualDy = 0; // For each component, do a simulation of the move to see if any of - // them will - // overlap. + // them will overlap or go out of bounds. + int width = (int) currentProject.getWidth().convertToPixels(); + int height = (int) currentProject.getHeight().convertToPixels(); boolean isFirst = true; for (Map.Entry, Set> entry : controlPointMap.entrySet()) { IDIYComponent component = entry.getKey(); @@ -715,8 +722,15 @@ public class Presenter implements IPlugInPort { // Nothing to move. return true; } - } else { - controlPoints[index].translate(actualDx, actualDy); + } + // else { + controlPoints[index].translate(actualDx, actualDy); + if (controlPoints[index].x < 0 || controlPoints[index].y < 0 + || controlPoints[index].x > width + || controlPoints[index].y > height) { + // At least one control point went out of bounds. + return true; + // } } } // For control points that may overlap, just write null, @@ -730,7 +744,7 @@ public class Presenter implements IPlugInPort { for (int j = i + 1; j < controlPoints.length; j++) { if (controlPoints[i] != null && controlPoints[j] != null && controlPoints[i].equals(controlPoints[j])) { - LOG.error("Control points collision detected, cannot make this move."); + LOG.warn("Control points collision detected, cannot make this move."); return true; } } @@ -977,12 +991,22 @@ public class Presenter implements IPlugInPort { messageDispatcher.dispatchMessage(EventType.REPAINT); } } - + @Override public void refresh() { messageDispatcher.dispatchMessage(EventType.REPAINT); } + @Override + public Theme getSelectedTheme() { + return drawingManager.getTheme(); + } + + @Override + public void setSelectedTheme(Theme theme) { + drawingManager.setTheme(theme); + } + /** * Updates the selection with the specified {@link ComponentTransferable}. * Also, updates control point map with all components that are stuck to the @@ -1000,7 +1024,9 @@ public class Presenter implements IPlugInPort { } controlPointMap.put(component, indices); } - includeStuckComponents(controlPointMap); + if (ConfigurationManager.getInstance().readBoolean(IPlugInPort.STICKY_POINTS_KEY, true)) { + includeStuckComponents(controlPointMap); + } messageDispatcher.dispatchMessage(EventType.SELECTION_CHANGED, selectedComponents, controlPointMap.keySet()); } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/ActionFactory.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/ActionFactory.java index 3d9c2998..d1dbc7f0 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/ActionFactory.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/ActionFactory.java @@ -17,6 +17,7 @@ import org.diylc.common.ITask; import org.diylc.common.PropertyWrapper; import org.diylc.core.IDIYComponent; import org.diylc.core.IView; +import org.diylc.core.Theme; import org.diylc.images.IconLoader; import org.diylc.swing.gui.DialogFactory; import org.diylc.swing.gui.editor.PropertyEditorDialog; @@ -141,6 +142,10 @@ public class ActionFactory { boolean defaultValue) { return new ConfigAction(plugInPort, title, configKey, defaultValue); } + + public ThemeAction createThemeAction(IPlugInPort plugInPort, Theme theme) { + return new ThemeAction(plugInPort, theme); + } // File menu actions. @@ -825,4 +830,28 @@ public class ActionFactory { plugInPort.refresh(); } } + + public static class ThemeAction extends AbstractAction { + + private static final long serialVersionUID = 1L; + + private IPlugInPort plugInPort; + private Theme theme; + + public ThemeAction(IPlugInPort plugInPort, Theme theme) { + super(); + this.plugInPort = plugInPort; + this.theme = theme; + putValue(AbstractAction.NAME, theme.getName()); + putValue(IView.RADIO_BUTTON_GROUP_KEY, "theme"); + putValue(AbstractAction.SELECTED_KEY, plugInPort.getSelectedTheme().getName().equals( + theme.getName())); + } + + @Override + public void actionPerformed(ActionEvent e) { + LOG.info(getValue(AbstractAction.NAME) + " triggered"); + plugInPort.setSelectedTheme(theme); + } + } } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/gui/MainFrame.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/gui/MainFrame.java index 273c4152..67808c62 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/gui/MainFrame.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/gui/MainFrame.java @@ -15,6 +15,7 @@ import java.util.Map; import javax.swing.Action; import javax.swing.BoxLayout; +import javax.swing.ButtonGroup; import javax.swing.Icon; import javax.swing.JCheckBoxMenuItem; import javax.swing.JComponent; @@ -23,6 +24,7 @@ import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JOptionPane; import javax.swing.JPanel; +import javax.swing.JRadioButtonMenuItem; import javax.swing.SwingConstants; import javax.swing.SwingWorker; import javax.swing.Timer; @@ -62,6 +64,7 @@ public class MainFrame extends JFrame implements ISwingUI { private JMenuBar mainMenuBar; private Map menuMap; + private Map buttonGroupMap; private CanvasPlugin canvasPlugin; @@ -71,6 +74,7 @@ public class MainFrame extends JFrame implements ISwingUI { setPreferredSize(new Dimension(800, 600)); createBasePanels(); menuMap = new HashMap(); + buttonGroupMap = new HashMap(); setIconImages(Arrays.asList(IconLoader.IconSmall.getImage(), IconLoader.IconMedium .getImage(), IconLoader.IconLarge.getImage())); DialogFactory.getInstance().initialize(this); @@ -239,8 +243,20 @@ public class MainFrame extends JFrame implements ISwingUI { menu.addSeparator(); } else { Boolean isCheckBox = (Boolean) action.getValue(IView.CHECK_BOX_MENU_ITEM); + String groupName = (String) action.getValue(IView.RADIO_BUTTON_GROUP_KEY); if (isCheckBox != null && isCheckBox) { menu.add(new JCheckBoxMenuItem(action)); + } else if (groupName != null) { + ButtonGroup group; + if (buttonGroupMap.containsKey(groupName)) { + group = buttonGroupMap.get(groupName); + } else { + group = new ButtonGroup(); + buttonGroupMap.put(groupName, group); + } + JRadioButtonMenuItem item = new JRadioButtonMenuItem(action); + group.add(item); + menu.add(item); } else { menu.add(action); } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/canvas/CanvasPlugin.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/canvas/CanvasPlugin.java index 68eef8c0..baf1c725 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/canvas/CanvasPlugin.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/canvas/CanvasPlugin.java @@ -112,7 +112,7 @@ public class CanvasPlugin implements IPlugIn, ClipboardOwner { private RulerScrollPane getScrollPane() { if (scrollPane == null) { scrollPane = new RulerScrollPane(getCanvasPanel(), new ProjectDrawingProvider( - plugInPort, true), (int) new Size(1d, SizeUnit.cm).convertToPixels(), (int) new Size(1d, + plugInPort, true), new Size(1d, SizeUnit.cm).convertToPixels(), new Size(1d, SizeUnit.in).convertToPixels()); boolean metric = ConfigurationManager.getInstance().readBoolean(Presenter.METRIC_KEY, true); @@ -271,7 +271,7 @@ public class CanvasPlugin implements IPlugIn, ClipboardOwner { (int) (visibleRect.y * zoomFactor), visibleRect.width, visibleRect.height); canvasPanel.scrollRectToVisible(visibleRect); canvasPanel.revalidate(); - + zoomLevel = (Double) params[0]; break; case REPAINT: diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/config/ConfigPlugin.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/config/ConfigPlugin.java index 80456b97..f824dde8 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/config/ConfigPlugin.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/config/ConfigPlugin.java @@ -1,13 +1,22 @@ package org.diylc.swing.plugins.config; +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStream; import java.util.EnumSet; +import org.apache.log4j.Logger; import org.diylc.common.EventType; import org.diylc.common.IPlugIn; import org.diylc.common.IPlugInPort; +import org.diylc.core.Theme; +import org.diylc.images.IconLoader; import org.diylc.swing.ActionFactory; import org.diylc.swing.ISwingUI; +import com.thoughtworks.xstream.XStream; +import com.thoughtworks.xstream.io.xml.DomDriver; + /** * Controls configuration menu. * @@ -15,7 +24,10 @@ import org.diylc.swing.ISwingUI; */ public class ConfigPlugin implements IPlugIn { + private static final Logger LOG = Logger.getLogger(ConfigPlugin.class); + private static final String CONFIG_MENU = "Config"; + private static final String THEME_MENU = "Theme"; private ISwingUI swingUI; @@ -30,6 +42,28 @@ public class ConfigPlugin implements IPlugIn { "Anti-Aliasing", IPlugInPort.ANTI_ALIASING_KEY, true), CONFIG_MENU); swingUI.injectMenuAction(ActionFactory.getInstance().createConfigAction(plugInPort, "Hi-Quality Rendering", IPlugInPort.HI_QUALITY_RENDER_KEY, false), CONFIG_MENU); + swingUI.injectMenuAction(ActionFactory.getInstance().createConfigAction(plugInPort, + "Sticky Points", IPlugInPort.STICKY_POINTS_KEY, true), CONFIG_MENU); + swingUI.injectMenuAction(ActionFactory.getInstance().createConfigAction(plugInPort, + "Export Grid", IPlugInPort.EXPORT_GRID_KEY, false), CONFIG_MENU); + File themeDir = new File("themes"); + if (themeDir.exists()) { + XStream xStream = new XStream(new DomDriver()); + swingUI.injectSubmenu(THEME_MENU, IconLoader.Pens.getIcon(), CONFIG_MENU); + for (File file : themeDir.listFiles()) { + if (file.getName().toLowerCase().endsWith(".xml")) { + try { + InputStream in = new FileInputStream(file); + Theme theme = (Theme) xStream.fromXML(in); + LOG.debug("Found theme: " + theme.getName()); + swingUI.injectMenuAction(ActionFactory.getInstance().createThemeAction( + plugInPort, theme), THEME_MENU); + } catch (Exception e) { + LOG.error("Could not load theme file " + file.getName(), e); + } + } + } + } } @Override diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/file/ProjectDrawingProvider.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/file/ProjectDrawingProvider.java index d703858a..6d8cdbd2 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/file/ProjectDrawingProvider.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/swing/plugins/file/ProjectDrawingProvider.java @@ -9,6 +9,7 @@ import org.diylc.common.DrawOption; import org.diylc.common.IPlugInPort; import com.diyfever.gui.IDrawingProvider; +import com.diyfever.gui.miscutils.ConfigurationManager; /** * {@link IDrawingProvider} implementation that uses {@link IPlugInPort} to draw @@ -33,6 +34,9 @@ public class ProjectDrawingProvider implements IDrawingProvider { if (useZoom) { options.add(DrawOption.ZOOM); } + if (ConfigurationManager.getInstance().readBoolean(IPlugInPort.EXPORT_GRID_KEY, false)) { + options.add(DrawOption.GRID); + } plugInPort.draw((Graphics2D) g, options, null); } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/utils/Constants.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/utils/Constants.java index b4e665f9..992027cd 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/utils/Constants.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/utils/Constants.java @@ -7,7 +7,7 @@ import java.awt.Toolkit; public class Constants { - public static final int PIXELS_PER_INCH = 150; + public static final int PIXELS_PER_INCH = 200; public static final double PIXEL_SIZE = 1d * PIXELS_PER_INCH / Toolkit.getDefaultToolkit().getScreenResolution(); diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/test/org/diylc/components/MockDIYComponent.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/test/org/diylc/components/MockDIYComponent.java index cf8c81fe..7eb82402 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/test/org/diylc/components/MockDIYComponent.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/test/org/diylc/components/MockDIYComponent.java @@ -8,6 +8,7 @@ import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; import org.diylc.core.IDrawingObserver; import org.diylc.core.Project; +import org.diylc.core.Theme; import org.diylc.core.VisibilityPolicy; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; @@ -45,7 +46,7 @@ public class MockDIYComponent implements IDIYComponent { public MockDIYComponent() { super(); } - + @Override public boolean canControlPointOverlap(int index) { return false; diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/themes/Blueprint.xml b/ diy-layout-creator --username bancika@gmail.com/DIYLC/themes/Blueprint.xml new file mode 100644 index 00000000..0d7251b3 --- /dev/null +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/themes/Blueprint.xml @@ -0,0 +1,33 @@ + + Blueprint + + 3 + 122 + 198 + 255 + + + 29 + 140 + 193 + 255 + + + 255 + 255 + 255 + 255 + + + 255 + 255 + 255 + 0 + + + 255 + 255 + 255 + 255 + + \ No newline at end of file diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/themes/Dark.xml b/ diy-layout-creator --username bancika@gmail.com/DIYLC/themes/Dark.xml new file mode 100644 index 00000000..354380f3 --- /dev/null +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/themes/Dark.xml @@ -0,0 +1,33 @@ + + Dark + + 0 + 0 + 0 + 255 + + + 40 + 40 + 40 + 255 + + + 255 + 255 + 255 + 255 + + + 255 + 255 + 255 + 0 + + + 255 + 255 + 255 + 255 + + \ No newline at end of file diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/themes/WhiteRealistic.xml b/ diy-layout-creator --username bancika@gmail.com/DIYLC/themes/WhiteRealistic.xml new file mode 100644 index 00000000..fb924936 --- /dev/null +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/themes/WhiteRealistic.xml @@ -0,0 +1,21 @@ + + White Realistic + + 255 + 255 + 255 + 255 + + + 240 + 240 + 240 + 240 + + + 0 + 0 + 0 + 255 + + \ No newline at end of file diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/update.xml b/ diy-layout-creator --username bancika@gmail.com/DIYLC/update.xml index 20e08de1..7d7bb253 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/update.xml +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/update.xml @@ -144,7 +144,7 @@ 0 6 - 2011-01-30 20:00:00.000 CET + 2011-02-07 20:00:00.000 CET @@ -203,5 +203,42 @@ http://code.google.com/p/diy-layout-creator/downloads/list + + + 3 + 0 + 7 + + 2011-02-07 20:00:00.000 CET + + + + BUG_FIX + Resistor and capacitor symbols are not clickable + + + BUG_FIX + Boards sometimes render holes/pads on the edge + + + BUG_FIX + Ruler ticks don't always match with the grid + + + IMPROVEMENT + DIL IC now has more pin options + + + NEW_FEATURE + Added support for themes + + + NEW_FEATURE + Sticky points may be turned off + + + http://code.google.com/p/diy-layout-creator/downloads/list + + \ No newline at end of file diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/lib/diylc.jar b/ diy-layout-creator --username bancika@gmail.com/Library/lib/diylc.jar index 7fb591b15e334ae032acc713733a4606f02a983b..ffcf6c6702431f05613152f792af74c4d1fc5cf1 100644 GIT binary patch delta 66865 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

    5DBA+gRX9U& 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 diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/AbstractBoard.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/AbstractBoard.java index 697df7d6..23300cac 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/AbstractBoard.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/AbstractBoard.java @@ -5,12 +5,14 @@ import java.awt.Color; import java.awt.Composite; import java.awt.Graphics2D; import java.awt.Point; +import java.awt.Shape; import org.diylc.common.ObjectCache; import org.diylc.components.AbstractTransparentComponent; import org.diylc.core.ComponentState; import org.diylc.core.IDrawingObserver; import org.diylc.core.Project; +import org.diylc.core.Theme; import org.diylc.core.VisibilityPolicy; import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Size; @@ -26,7 +28,8 @@ public abstract class AbstractBoard extends AbstractTransparentComponent public static Size DEFAULT_HEIGHT = new Size(1.2d, SizeUnit.in); protected String value = ""; - protected Point[] controlPoints = new Point[] { new Point(0, 0), + protected Point[] controlPoints = new Point[] { + new Point(0, 0), new Point((int) DEFAULT_WIDTH.convertToPixels(), (int) DEFAULT_HEIGHT.convertToPixels()) }; protected Point firstPoint = new Point(); protected Point secondPoint = new Point(); @@ -37,9 +40,6 @@ public abstract class AbstractBoard extends AbstractTransparentComponent @Override public void draw(Graphics2D g2d, ComponentState componentState, Project project, IDrawingObserver drawingObserver) { - if (checkPointsClipped(g2d.getClip())) { - return; - } g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1)); if (componentState != ComponentState.DRAGGING) { Composite oldComposite = g2d.getComposite(); diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/EyeletBoard.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/EyeletBoard.java index 036bbba8..c40703fd 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/EyeletBoard.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/EyeletBoard.java @@ -4,11 +4,13 @@ import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Graphics2D; import java.awt.Point; +import java.awt.Shape; import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; import org.diylc.core.IDrawingObserver; import org.diylc.core.Project; +import org.diylc.core.Theme; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Size; @@ -31,7 +33,7 @@ public class EyeletBoard extends AbstractBoard { // private Area copperArea; protected Size spacing = SPACING; protected Color eyeletColor = EYELET_COLOR; - + public EyeletBoard() { super(); this.boardColor = BOARD_COLOR; @@ -41,6 +43,11 @@ public class EyeletBoard extends AbstractBoard { @Override public void draw(Graphics2D g2d, ComponentState componentState, Project project, IDrawingObserver drawingObserver) { + Shape clip = g2d.getClip(); + if (checkPointsClipped(clip) && !clip.contains(firstPoint.x, secondPoint.y) + && !clip.contains(secondPoint.x, firstPoint.y)) { + return; + } super.draw(g2d, componentState, project, drawingObserver); if (componentState != ComponentState.DRAGGING) { if (alpha < MAX_ALPHA) { @@ -55,7 +62,7 @@ public class EyeletBoard extends AbstractBoard { while (p.y < secondPoint.y - spacing) { p.x = firstPoint.x; p.y += spacing; - while (p.x < secondPoint.x - spacing) { + while (p.x < secondPoint.x - spacing - diameter) { p.x += spacing; g2d.setColor(eyeletColor); g2d.fillOval(p.x - diameter / 2, p.y - diameter / 2, diameter, diameter); diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/MarshallPerfBoard.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/MarshallPerfBoard.java index 472e976b..e635e753 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/MarshallPerfBoard.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/MarshallPerfBoard.java @@ -4,11 +4,13 @@ import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Graphics2D; import java.awt.Point; +import java.awt.Shape; import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; import org.diylc.core.IDrawingObserver; import org.diylc.core.Project; +import org.diylc.core.Theme; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Size; @@ -37,6 +39,11 @@ public class MarshallPerfBoard extends AbstractBoard { @Override public void draw(Graphics2D g2d, ComponentState componentState, Project project, IDrawingObserver drawingObserver) { + Shape clip = g2d.getClip(); + if (checkPointsClipped(clip) && !clip.contains(firstPoint.x, secondPoint.y) + && !clip.contains(secondPoint.x, firstPoint.y)) { + return; + } super.draw(g2d, componentState, project, drawingObserver); if (componentState != ComponentState.DRAGGING) { if (alpha < MAX_ALPHA) { @@ -50,7 +57,7 @@ public class MarshallPerfBoard extends AbstractBoard { while (p.y < secondPoint.y - spacing) { p.x = firstPoint.x; p.y += spacing; - while (p.x < secondPoint.x - spacing) { + while (p.x < secondPoint.x - spacing - holeDiameter) { p.x += spacing; g2d.setColor(Constants.CANVAS_COLOR); g2d.fillOval(p.x - holeDiameter / 2, p.y - holeDiameter / 2, holeDiameter, diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/PerfBoard.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/PerfBoard.java index 2aa9d8c8..461f9863 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/PerfBoard.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/PerfBoard.java @@ -4,11 +4,13 @@ import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Graphics2D; import java.awt.Point; +import java.awt.Shape; import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; import org.diylc.core.IDrawingObserver; import org.diylc.core.Project; +import org.diylc.core.Theme; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Size; @@ -33,6 +35,11 @@ public class PerfBoard extends AbstractBoard { @Override public void draw(Graphics2D g2d, ComponentState componentState, Project project, IDrawingObserver drawingObserver) { + Shape clip = g2d.getClip(); + if (checkPointsClipped(clip) && !clip.contains(firstPoint.x, secondPoint.y) + && !clip.contains(secondPoint.x, firstPoint.y)) { + return; + } super.draw(g2d, componentState, project, drawingObserver); if (componentState != ComponentState.DRAGGING) { if (alpha < MAX_ALPHA) { @@ -47,7 +54,7 @@ public class PerfBoard extends AbstractBoard { while (p.y < secondPoint.y - spacing) { p.x = firstPoint.x; p.y += spacing; - while (p.x < secondPoint.x - spacing) { + while (p.x < secondPoint.x - spacing - diameter) { p.x += spacing; g2d.setColor(padColor); g2d.fillOval(p.x - diameter / 2, p.y - diameter / 2, diameter, diameter); diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/VeroBoard.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/VeroBoard.java index 6f9f2324..af2ca95f 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/VeroBoard.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/boards/VeroBoard.java @@ -5,11 +5,13 @@ import java.awt.Color; import java.awt.Composite; import java.awt.Graphics2D; import java.awt.Point; +import java.awt.Shape; import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; import org.diylc.core.IDrawingObserver; import org.diylc.core.Project; +import org.diylc.core.Theme; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Size; @@ -34,8 +36,12 @@ public class VeroBoard extends AbstractBoard { @Override public void draw(Graphics2D g2d, ComponentState componentState, Project project, IDrawingObserver drawingObserver) { + Shape clip = g2d.getClip(); + if (checkPointsClipped(clip) && !clip.contains(firstPoint.x, secondPoint.y) + && !clip.contains(secondPoint.x, firstPoint.y)) { + return; + } super.draw(g2d, componentState, project, drawingObserver); - if (componentState != ComponentState.DRAGGING) { Composite oldComposite = g2d.getComposite(); if (alpha < MAX_ALPHA) { @@ -51,12 +57,12 @@ public class VeroBoard extends AbstractBoard { p.x = firstPoint.x; p.y += spacing; g2d.setColor(stripColor); - g2d.fillRect(p.x + spacing / 2, p.y - stripSize / 2, - secondPoint.x - spacing - p.x, stripSize); + g2d.fillRect(p.x + spacing / 2, p.y - stripSize / 2, secondPoint.x - spacing - p.x, + stripSize); g2d.setColor(stripColor.darker()); - g2d.drawRect(p.x + spacing / 2, p.y - stripSize / 2, - secondPoint.x - spacing - p.x, stripSize); - while (p.x < secondPoint.x - spacing) { + g2d.drawRect(p.x + spacing / 2, p.y - stripSize / 2, secondPoint.x - spacing - p.x, + stripSize); + while (p.x < secondPoint.x - spacing - holeSize) { p.x += spacing; g2d.setColor(Constants.CANVAS_COLOR); g2d.fillOval(p.x - holeSize / 2, p.y - holeSize / 2, holeSize, holeSize); diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/CurvedTrace.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/CurvedTrace.java index 74e64560..0255f09f 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/CurvedTrace.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/CurvedTrace.java @@ -8,6 +8,7 @@ import org.diylc.common.ObjectCache; import org.diylc.components.AbstractCurvedComponent; import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; +import org.diylc.core.Theme; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Size; @@ -32,11 +33,12 @@ public class CurvedTrace extends AbstractCurvedComponent { protected void drawCurve(CubicCurve2D curve, Graphics2D g2d, ComponentState componentState) { int thickness = (int) size.convertToPixels(); g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(thickness)); - g2d.setColor(componentState == ComponentState.SELECTED - || componentState == ComponentState.DRAGGING ? SELECTION_COLOR : color); + Color curveColor = componentState == ComponentState.SELECTED + || componentState == ComponentState.DRAGGING ? SELECTION_COLOR : color; + g2d.setColor(curveColor); g2d.draw(curve); } - + @EditableProperty(name = "Width") public Size getSize() { return size; diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/Eyelet.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/Eyelet.java index 9a65608e..5614bda1 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/Eyelet.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/Eyelet.java @@ -9,6 +9,7 @@ import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; import org.diylc.core.IDrawingObserver; import org.diylc.core.Project; +import org.diylc.core.Theme; import org.diylc.core.VisibilityPolicy; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/HookupWire.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/HookupWire.java index 912c04b1..aa9832e1 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/HookupWire.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/HookupWire.java @@ -29,11 +29,11 @@ public class HookupWire extends AbstractCurvedComponent { @Override protected void drawCurve(CubicCurve2D curve, Graphics2D g2d, ComponentState componentState) { - int thickness = (int) (Math. - pow(Math.E, -1.12436 - 0.11594 * gauge.getValue()) + int thickness = (int) (Math.pow(Math.E, -1.12436 - 0.11594 * gauge.getValue()) * Constants.PIXELS_PER_INCH * (1 + 2 * INSULATION_THICKNESS_PCT)); - g2d.setColor(componentState == ComponentState.SELECTED - || componentState == ComponentState.DRAGGING ? SELECTION_COLOR : color.darker()); + Color curveColor = componentState == ComponentState.SELECTED + || componentState == ComponentState.DRAGGING ? SELECTION_COLOR : color.darker(); + g2d.setColor(curveColor); g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(thickness)); g2d.draw(curve); if (componentState == ComponentState.NORMAL) { diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/SolderPad.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/SolderPad.java index 7941818a..f1b59ae3 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/SolderPad.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/connectivity/SolderPad.java @@ -9,6 +9,7 @@ import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; import org.diylc.core.IDrawingObserver; import org.diylc.core.Project; +import org.diylc.core.Theme; import org.diylc.core.VisibilityPolicy; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/electromechanical/MiniToggleSwitch.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/electromechanical/MiniToggleSwitch.java index 9a288300..e5f47aad 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/electromechanical/MiniToggleSwitch.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/electromechanical/MiniToggleSwitch.java @@ -14,6 +14,7 @@ import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; import org.diylc.core.IDrawingObserver; import org.diylc.core.Project; +import org.diylc.core.Theme; import org.diylc.core.VisibilityPolicy; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; @@ -116,12 +117,12 @@ public class MiniToggleSwitch extends AbstractTransparentComponent { double s = 1d * scale / DEFAULT_SCALE; Point endPoint = new Point((int) (image.getIconWidth() * s), (int) (image.getIconHeight() * s)); - if (!g2d.getClip().contains(point) && !g2d.getClip().contains(endPoint)) { + Shape clip = g2d.getClip(); + if (!clip.contains(point) && !clip.contains(endPoint) + && !clip.contains(point.x, endPoint.y) && !clip.contains(endPoint.x, point.y)) { return; } Composite oldComposite = g2d.getComposite(); diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/Label.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/Label.java index 600120ce..ff2d593e 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/Label.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/Label.java @@ -12,6 +12,7 @@ import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; import org.diylc.core.IDrawingObserver; import org.diylc.core.Project; +import org.diylc.core.Theme; import org.diylc.core.VisibilityPolicy; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/ProjectInformation.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/ProjectInformation.java index 28c09c1a..eed5f6c3 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/ProjectInformation.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/ProjectInformation.java @@ -12,6 +12,7 @@ import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; import org.diylc.core.IDrawingObserver; import org.diylc.core.Project; +import org.diylc.core.Theme; import org.diylc.core.VisibilityPolicy; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.measures.Size; diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/AxialElectrolyticCapacitor.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/AxialElectrolyticCapacitor.java index 177ceadc..c0fbf7bf 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/AxialElectrolyticCapacitor.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/AxialElectrolyticCapacitor.java @@ -9,6 +9,7 @@ import org.diylc.common.ObjectCache; import org.diylc.components.AbstractLeadedComponent; import org.diylc.core.CreationMethod; import org.diylc.core.IDIYComponent; +import org.diylc.core.Theme; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Capacitance; @@ -122,12 +123,14 @@ public class AxialElectrolyticCapacitor extends AbstractLeadedComponent { public void setValue(Resistance value) { this.value = value; } - + @EditableProperty public Power getPower() { return power; } - + public void setPower(Power power) { this.power = power; } diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/TrimmerPotentiometer.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/TrimmerPotentiometer.java index 9c9faa0a..e103a3b0 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/TrimmerPotentiometer.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/TrimmerPotentiometer.java @@ -19,6 +19,7 @@ import org.diylc.core.CreationMethod; import org.diylc.core.IDIYComponent; import org.diylc.core.IDrawingObserver; import org.diylc.core.Project; +import org.diylc.core.Theme; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Size; @@ -308,8 +309,8 @@ public class TrimmerPotentiometer extends AbstractPotentiometer { g2d.drawRect(margin, margin, width - 2 * margin, width - 2 * margin); int shaftSize = 11; int slotSize = 2; - Area area = new Area(new Ellipse2D.Double(width / 2 - shaftSize / 2, width / 2 - shaftSize / 2, - shaftSize, shaftSize)); + Area area = new Area(new Ellipse2D.Double(width / 2 - shaftSize / 2, width / 2 - shaftSize + / 2, shaftSize, shaftSize)); Area slot = new Area(new Rectangle2D.Double(0, width / 2 - slotSize / 2, width, slotSize)); slot.transform(AffineTransform.getRotateInstance(Math.PI / 4, width / 2, width / 2)); area.subtract(slot); @@ -317,18 +318,18 @@ public class TrimmerPotentiometer extends AbstractPotentiometer { g2d.fill(area); g2d.setColor(SHAFT_BORDER_COLOR); g2d.draw(area); - + int pinSize = 3; g2d.setColor(PIN_COLOR); g2d.fillOval(margin - pinSize / 2, 10 - pinSize / 2, pinSize, pinSize); g2d.setColor(PIN_BORDER_COLOR); g2d.drawOval(margin - pinSize / 2, 10 - pinSize / 2, pinSize, pinSize); - + g2d.setColor(PIN_COLOR); g2d.fillOval(margin - pinSize / 2, 21 - pinSize / 2, pinSize, pinSize); g2d.setColor(PIN_BORDER_COLOR); g2d.drawOval(margin - pinSize / 2, 21 - pinSize / 2, pinSize, pinSize); - + g2d.setColor(PIN_COLOR); g2d.fillOval(width - margin - pinSize / 2, width / 2 - pinSize / 2, pinSize, pinSize); g2d.setColor(PIN_BORDER_COLOR); diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DIL_IC.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DIL_IC.java index d8573c7a..af7f16a4 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DIL_IC.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DIL_IC.java @@ -19,6 +19,7 @@ import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; import org.diylc.core.IDrawingObserver; import org.diylc.core.Project; +import org.diylc.core.Theme; import org.diylc.core.VisibilityPolicy; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; @@ -307,7 +308,7 @@ public class DIL_IC extends AbstractTransparentComponent { public static enum PinCount { - _4, _8, _10, _12, _14, _16, _24, _32; + _4, _8, _10, _12, _14, _16, _18, _20, _22, _24, _26, _28, _30, _32; @Override public String toString() { diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DiodePlastic.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DiodePlastic.java index d70a770a..d22eb1da 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DiodePlastic.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DiodePlastic.java @@ -8,6 +8,7 @@ import java.awt.geom.Rectangle2D; import org.diylc.components.AbstractLeadedComponent; import org.diylc.core.CreationMethod; import org.diylc.core.IDIYComponent; +import org.diylc.core.Theme; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Size; diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/LED.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/LED.java index 144472e8..bc41eaaf 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/LED.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/LED.java @@ -11,6 +11,7 @@ import org.diylc.common.ObjectCache; import org.diylc.components.AbstractLeadedComponent; import org.diylc.core.CreationMethod; import org.diylc.core.IDIYComponent; +import org.diylc.core.Theme; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Size; diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/TransistorTO220.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/TransistorTO220.java index ab26c288..5af95c74 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/TransistorTO220.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/TransistorTO220.java @@ -17,6 +17,7 @@ import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; import org.diylc.core.IDrawingObserver; import org.diylc.core.Project; +import org.diylc.core.Theme; import org.diylc.core.VisibilityPolicy; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/TransistorTO92.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/TransistorTO92.java index c4d1765e..8890e497 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/TransistorTO92.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/TransistorTO92.java @@ -18,6 +18,7 @@ import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; import org.diylc.core.IDrawingObserver; import org.diylc.core.Project; +import org.diylc.core.Theme; import org.diylc.core.VisibilityPolicy; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty;