From f1fc86257537c641d0f25aceb8b740230a33f57e Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Wed, 30 Dec 2015 13:45:47 +0100 Subject: [PATCH] Added hi-res toolbar images Hi-resolution images are saved with the "@2x.png" suffix, the image loader will select the best image available based on the user selected scaling. Missing hi-res images can be added later together with lo-res images. --- app/src/processing/app/Base.java | 35 +++++++++++++----- build/shared/lib/theme/buttons@2x.png | Bin 0 -> 9604 bytes build/shared/lib/theme/close@2x.png | Bin 0 -> 375 bytes build/shared/lib/theme/lock@2x.png | Bin 0 -> 1693 bytes build/shared/lib/theme/newwindow@2x.png | Bin 0 -> 382 bytes build/shared/lib/theme/resize@2x.png | Bin 0 -> 233 bytes build/shared/lib/theme/tab-sel-left@2x.png | Bin 0 -> 211 bytes build/shared/lib/theme/tab-sel-menu@2x.png | Bin 0 -> 325 bytes build/shared/lib/theme/tab-sel-mid@2x.png | Bin 0 -> 169 bytes build/shared/lib/theme/tab-sel-right@2x.png | Bin 0 -> 223 bytes build/shared/lib/theme/tab-unsel-left@2x.png | Bin 0 -> 208 bytes build/shared/lib/theme/tab-unsel-menu@2x.png | Bin 0 -> 328 bytes build/shared/lib/theme/tab-unsel-mid@2x.png | Bin 0 -> 167 bytes build/shared/lib/theme/tab-unsel-right@2x.png | Bin 0 -> 222 bytes 14 files changed, 25 insertions(+), 10 deletions(-) create mode 100644 build/shared/lib/theme/buttons@2x.png create mode 100644 build/shared/lib/theme/close@2x.png create mode 100644 build/shared/lib/theme/lock@2x.png create mode 100644 build/shared/lib/theme/newwindow@2x.png create mode 100644 build/shared/lib/theme/resize@2x.png create mode 100644 build/shared/lib/theme/tab-sel-left@2x.png create mode 100644 build/shared/lib/theme/tab-sel-menu@2x.png create mode 100644 build/shared/lib/theme/tab-sel-mid@2x.png create mode 100644 build/shared/lib/theme/tab-sel-right@2x.png create mode 100644 build/shared/lib/theme/tab-unsel-left@2x.png create mode 100644 build/shared/lib/theme/tab-unsel-menu@2x.png create mode 100644 build/shared/lib/theme/tab-unsel-mid@2x.png create mode 100644 build/shared/lib/theme/tab-unsel-right@2x.png diff --git a/app/src/processing/app/Base.java b/app/src/processing/app/Base.java index bffa30abe..8b70c604e 100644 --- a/app/src/processing/app/Base.java +++ b/app/src/processing/app/Base.java @@ -36,12 +36,14 @@ import cc.arduino.packages.DiscoveryManager; import cc.arduino.view.Event; import cc.arduino.view.JMenuUtils; import cc.arduino.view.SplashScreenHelper; + import org.apache.commons.compress.utils.IOUtils; import org.apache.commons.lang3.StringUtils; import processing.app.debug.TargetBoard; import processing.app.debug.TargetPackage; import processing.app.debug.TargetPlatform; import processing.app.helpers.*; +import processing.app.helpers.FileUtils.SplitFile; import processing.app.helpers.filefilters.OnlyDirs; import processing.app.helpers.filefilters.OnlyFilesWithExtension; import processing.app.javax.swing.filechooser.FileNameExtensionFilter; @@ -2047,33 +2049,46 @@ public class Base { /** * Return an Image object from inside the Processing lib folder. */ - static public Image getLibImage(String name, Component who) { + static public Image getLibImage(String filename, Component who) { Toolkit tk = Toolkit.getDefaultToolkit(); + SplitFile name = FileUtils.splitFilename(filename); int scale = Theme.getInteger("gui.scalePercent"); - // TODO: create high-res enlarged copies and load those if - // the scale is more than 125% - File imageLocation = new File(getContentFile("lib"), name); - Image image = tk.getImage(imageLocation.getAbsolutePath()); + File libFolder = getContentFile("lib"); + File imageFile1x = new File(libFolder, name.basename + "." + name.extension); + File imageFile2x = new File(libFolder, name.basename + "@2x." + name.extension); + + File imageFile; + int sourceScale; + if ((scale > 125 && imageFile2x.exists()) || !imageFile1x.exists()) { + imageFile = imageFile2x; + sourceScale = 200; + } else { + imageFile = imageFile1x; + sourceScale = 100; + } + + Image image = tk.getImage(imageFile.getAbsolutePath()); MediaTracker tracker = new MediaTracker(who); tracker.addImage(image, 0); try { tracker.waitForAll(); } catch (InterruptedException e) { } - if (scale != 100) { - int width = image.getWidth(null) * scale / 100; - int height = image.getHeight(null) * scale / 100; + + if (scale != sourceScale) { + int width = image.getWidth(null) * scale / sourceScale; + int height = image.getHeight(null) * scale / sourceScale; image = image.getScaledInstance(width, height, Image.SCALE_SMOOTH); tracker.addImage(image, 1); try { tracker.waitForAll(); - } catch (InterruptedException e) { } + } catch (InterruptedException e) { + } } return image; } - // ................................................................... diff --git a/build/shared/lib/theme/buttons@2x.png b/build/shared/lib/theme/buttons@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9f38fe96d019e0408b0898c192de8d9805657c95 GIT binary patch literal 9604 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 Vtxt1zu#x}(002ovPDHLkV1ga_t1$oo literal 0 HcmV?d00001 diff --git a/build/shared/lib/theme/lock@2x.png b/build/shared/lib/theme/lock@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..76f3f7f031d0b612ab67a93d979dfd81fb94e7de GIT binary patch literal 1693 zcmV;O24eY%P)WdI<>Vcm)jxV7n?W}`;xglGVngp``Tti^v*SSr3x{PJn8a`oogCGIa z&2psb%6f6dqBPmSPTqp8^V*pjIT0#Usnw9NGd7X{1^aKt+w<0Rv zm!(J4#>NvQfM#R>NLTr~kx`T87FSuY}e;miIuF*(KKr+N3Aw7qv!Qu{>Qm7TZMw;T zkd$aVe3g(OloXFkL>yXm`Og4husSh92=eA)Q2{0Z1PBlS0RjX-fB*pyAV2^F2oL}P z0t7&S009snKmY^?5aN*bTvT2VPE%Yesb80b+B_VZ`Me&1U1$Z5%Jg@dm63jLo^WgF z%r;kokXq|S0H*NlDv8!SEUB!$8wr7D){*hA!={-<3n6QxW^fOMkYjNjbWkG~MGl0( z0NMyW#&u1CXdYS}0f1HA;w5FnJt5=rS4dyad^0Z>h3x4BUg`uOKmY^?5C8!Jgn)E3#*3bxE{bzAGvdW#$M%2s?~^Cu-sYzG^`A$8 zU{mj%eob6Idq$j`oE&=0Ut3$^o3-D?&DHyWVEW0wv2b3@6^n-+OMpH+^TsZ)585kH zct#-x0AIg*K?y)V3_9<^sZ)TEN3R^;Gvo^s6PeDZ^FDq1{4Pj9$fz3&3z-3=L400W z1cWT2Fmi6@B_p3jp^0(?AZY5^-0Ma^kE$v_&=A%Cro15S4WZ_SAR*{hLaL$;9w2Cx zrM5f_5F$6$a|MCMfdIj?Yz;Mp3O7gy4<6ZpK%=aHpz*~1@aIFLpGl*up$_H++gbbK z!EZ)CFXW-^U?EWGxVQPYvG7Lk7yu!I=zYL{+uON5gU z5BNI)9>2 z5O)oiw}6n+Tya|QxFR6flIrN{TQAQ5f-R}O515B1`1gdlX+W?dn*O3X^MYPw#`I1i z8VDyRk839JA|RNSZnBLjIY$FQH`&g^6D;%*G?Q&i$vFxLlw?OuhmSouM*$&gl8q%f zM*$)0Jfv8Xa~u#dKGE~=1b<06w&Xn4IU$zh96W@)lXzoD&cQ>VF(a2fZ66AL^(MXA z{OtZOInI9!2zj+P|7cT;v+%VFfB*pkAV7cs2v9$S1ZME6r1v$=v>g@pP4J^Pd*P@J zTX<1-?aJi@5d5l@PRvc%!;6~x5O|BiW!S{2HhP;I^>63Wg>9UvcA%fY+Y&Zl8z;Iw zbc-+fhb4q1>sl3k+vg1GG1vJ($U;df_V(cHjD)}kRK(s^wvbs5C{w?n{||?41xz{O zW7sc$4jAMCN)Q-CiR)SH!e*p#nsI0br1mq=4jg1+7zBWYScN8f$_(>+GO1?q>5F$6l1itO=7`T< zzJoPV3*5N-jP#JWdG8tAW@csvE-nrX#ee_)W%%~(2Yqq}$N`$_$`}eheg495WEQC zP~5UQbLlRqy*YwIf{&Mn!OTRDWP_1v--DNT^*D?s%%PViK7anoaO%vZksA_>g!-cN c0003705~XNC8VX!b^rhX07*qoM6N<$f@rLqgKfIUqT(2-`H_OB?97T84S+c#~iLBAw>Am4y>3k6%)tf(RSBU&%wEr0( Td*!Jn$WaWQu6{1-oD!M<*a1=O literal 0 HcmV?d00001 diff --git a/build/shared/lib/theme/tab-sel-left@2x.png b/build/shared/lib/theme/tab-sel-left@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..1e0c3b6529fbd3de686d3c0c49446485c4663a35 GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^oIvc%!3HG#g7l?;6kC$Fy9>jA5L~c#`DBoi0*}aI z1_o|n5N2eUHAey{$X?><>&kwgM^;E(W@hAnU7%2cr;B5V$MNKls4Y+InHdipabS@M zb;)k&%X?XG=Du7fhUbFgJGXO2alL5!afW93D<7sUNa= zdU}30%A=f`77N;}$_Tl*Vo{*$;x0E)K_&*C2^>GC-lgTe~DWM4f{v|!> literal 0 HcmV?d00001 diff --git a/build/shared/lib/theme/tab-sel-menu@2x.png b/build/shared/lib/theme/tab-sel-menu@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..dc19ce636a21efd35d53889ab555fec3d2892fe9 GIT binary patch literal 325 zcmeAS@N?(olHy`uVBq!ia0vp^%0TSQ!3HG7boVd=DYhhUcNd2LAh=-f^2tCE&H|6f zVg?3oVGw3ym^DWND9B#o>FdgVpGQ_m-SSebb{0_RlBbJfNXEUl*B9~~a^Pur*q89^ zg86Z71IBsV6=u$K{h-Fd!{o`~&&byOM0FZZ>uj62h6AzrDzTr!5lvoofx5(w+vvrX58Uhb^0pbvwLjA5L~c#`DBoi0*}aI z1_o|n5N2eUHAey{$X?><>&kwgM^;FUXYSW~96%v6PZ!4!kK@TA@jJfQGcz7I;=m#i z>XPr;<34}Cf<$@G|NsBxdmjY4F79#@?bVVBHCdIRq0Pi_BAP4zuhZiXKob}|UHx3v IIVCg!04_r>`2YX_ literal 0 HcmV?d00001 diff --git a/build/shared/lib/theme/tab-sel-right@2x.png b/build/shared/lib/theme/tab-sel-right@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..6e431914a4a08447797e63fc8c8018eb917b16b2 GIT binary patch literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^oIvc%!3HG#g7l?;6kC$Fy9>jA5L~c#`DBoi0*}aI z1_o|n5N2eUHAey{$X?><>&kwgM^;ExTlkX20-#Wir;B5V$MNKls4Y+InHdipabS@M zb;)<_`40r=4;(nK;rU15w%C4o<28G$`L`=cSp57X>U^xRnP-08-$S``ckYmIUfXGy zXwIssZFu5CfpFQ5ojWWNU5#vP77N;}$_Tl*Vo{*$;x0GQh0F{FNirz~+g9EI+RNbS L>gTe~DWM4f#N0~n literal 0 HcmV?d00001 diff --git a/build/shared/lib/theme/tab-unsel-left@2x.png b/build/shared/lib/theme/tab-unsel-left@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d35565df8e71579f90cb66ddf4a8cf5dbd3cd57a GIT binary patch literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^oIvc%!3HG#g7l?;6kC$Fy9>jA5L~c#`DBoi0*}aI z1_o|n5N2eUHAey{$X?><>&kwgM^;EfG+j2@4JZ`r>EamTas2JYy<80jJS-2qFHc*x zh(mVw&liuXU%iQc`=rENPF|&8)0*3T{T3xHFY=$PKPsTqmHI@2kwL4-t#poodbNGH tj(wAKmfgHP?g6>VqQ@IMJ3yf70%L|Ii|$SFiVmPf44$rjF6*2Ung9&!LXQ9d literal 0 HcmV?d00001 diff --git a/build/shared/lib/theme/tab-unsel-menu@2x.png b/build/shared/lib/theme/tab-unsel-menu@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..db3ed4bd7726e4b07e96e62ccc14415f0c4d242a GIT binary patch literal 328 zcmeAS@N?(olHy`uVBq!ia0vp^%0TSQ!3HG7boVd=DYhhUcNd2LAh=-f^2tCE&H|6f zVg?3oVGw3ym^DWND9B#o>FdgVpGQ_mL+fI7Sv64Ts;7%%NXEUl*H`l$G7xEa$gG*9 za#-+4(?O%gSu-9aa`LxGoK)eQ$!5&V6vE3HeLMJ~YJINj{yEuJx96Ud_k40jbs;kw zkAy+Ofrgn}$KG6*R)TOR-STyw{(aqK@5?Tg8HqhIucM|#iiyq44Lq?>XR*VpRZ=Y$ zOFg+aO$eQLeC5o53H(P^H`F@r6L_Cj#M=l;RBKRwtl?~h-?32_CZaq1cIe|HsLZm~Rn66iq& MPgg&ebxsLQ0HT_AxBvhE literal 0 HcmV?d00001 diff --git a/build/shared/lib/theme/tab-unsel-mid@2x.png b/build/shared/lib/theme/tab-unsel-mid@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..cd943e64c754cf2af7cd9005be482b302a10e036 GIT binary patch literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^oIvc%!3HG#g7l?;6kC$Fy9>jA5L~c#`DBoi0*}aI z1_o|n5N2eUHAey{$X?><>&kwgM^;ExVA0KsEkGd?PZ!4!kK@TA@jJfQGcz7I;=m#i z>XPrOBgMqjBKmRT#$L8(D;5R1F79#@?bVVBHJKvH$k6?W+2ivGb6=o-22WQ%mvv4F FO#p?^EaCtF literal 0 HcmV?d00001 diff --git a/build/shared/lib/theme/tab-unsel-right@2x.png b/build/shared/lib/theme/tab-unsel-right@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..750754de3cc8efea5770d3653973b467839146a8 GIT binary patch literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^oIvc%!3HG#g7l?;6kC$Fy9>jA5L~c#`DBoi0*}aI z1_o|n5N2eUHAey{$X?><>&kwgM^;Eh^z;f5FQ8Dir;B5V$MLrpH*z%?@UUFSo-MYp zOIJ^?>Bao+{m)gjt~!=GK7KM~w*1cK6?qc=1{Z$_IMyp?Ik#-*JH0X4kMr_2yZBGn z7M|n&vau=f)m}Yir(m|a$=mrP1?}%dA6H(y)h1$sf@2d4=dR~WlmGAv`qz literal 0 HcmV?d00001