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 000000000..9f38fe96d Binary files /dev/null and b/build/shared/lib/theme/buttons@2x.png differ diff --git a/build/shared/lib/theme/close@2x.png b/build/shared/lib/theme/close@2x.png new file mode 100644 index 000000000..8041c8bde Binary files /dev/null and b/build/shared/lib/theme/close@2x.png differ diff --git a/build/shared/lib/theme/lock@2x.png b/build/shared/lib/theme/lock@2x.png new file mode 100644 index 000000000..76f3f7f03 Binary files /dev/null and b/build/shared/lib/theme/lock@2x.png differ diff --git a/build/shared/lib/theme/newwindow@2x.png b/build/shared/lib/theme/newwindow@2x.png new file mode 100644 index 000000000..0e08b4c98 Binary files /dev/null and b/build/shared/lib/theme/newwindow@2x.png differ diff --git a/build/shared/lib/theme/resize@2x.png b/build/shared/lib/theme/resize@2x.png new file mode 100644 index 000000000..b29c3f5bb Binary files /dev/null and b/build/shared/lib/theme/resize@2x.png differ 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 000000000..1e0c3b652 Binary files /dev/null and b/build/shared/lib/theme/tab-sel-left@2x.png differ 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 000000000..dc19ce636 Binary files /dev/null and b/build/shared/lib/theme/tab-sel-menu@2x.png differ diff --git a/build/shared/lib/theme/tab-sel-mid@2x.png b/build/shared/lib/theme/tab-sel-mid@2x.png new file mode 100644 index 000000000..77fe7cb96 Binary files /dev/null and b/build/shared/lib/theme/tab-sel-mid@2x.png differ 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 000000000..6e431914a Binary files /dev/null and b/build/shared/lib/theme/tab-sel-right@2x.png differ 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 000000000..d35565df8 Binary files /dev/null and b/build/shared/lib/theme/tab-unsel-left@2x.png differ 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 000000000..db3ed4bd7 Binary files /dev/null and b/build/shared/lib/theme/tab-unsel-menu@2x.png differ 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 000000000..cd943e64c Binary files /dev/null and b/build/shared/lib/theme/tab-unsel-mid@2x.png differ 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 000000000..750754de3 Binary files /dev/null and b/build/shared/lib/theme/tab-unsel-right@2x.png differ