From 9cdb81654e3624003282375e8ec14c205855ce39 Mon Sep 17 00:00:00 2001 From: Ben Fry Date: Mon, 6 May 2013 15:43:14 -0400 Subject: [PATCH 1/3] new mode images and sizes from Casey --- app/src/processing/app/Mode.java | 35 ++++++++++++++++++++++++++----- experimental/theme/buttons.gif | Bin 6428 -> 0 bytes 2 files changed, 30 insertions(+), 5 deletions(-) delete mode 100755 experimental/theme/buttons.gif diff --git a/app/src/processing/app/Mode.java b/app/src/processing/app/Mode.java index 23b622714..e723d3339 100644 --- a/app/src/processing/app/Mode.java +++ b/app/src/processing/app/Mode.java @@ -82,8 +82,8 @@ public abstract class Mode { */ protected ClassLoader classLoader; - static final int BACKGROUND_WIDTH = 580; - static final int BACKGROUND_HEIGHT = 250; + static final int BACKGROUND_WIDTH = 1025; + static final int BACKGROUND_HEIGHT = 65; protected Image backgroundImage; // public Mode(Base base, File folder) { @@ -170,9 +170,13 @@ public abstract class Mode { */ public void setupGUI() { try { - //theme = new Settings(new File(folder, "theme/theme.txt")); + // First load the default theme data for the whole PDE. theme = new Settings(Base.getContentFile("lib/theme.txt")); + // The mode-specific theme.txt file should only contain additions, + // and in extremely rare cases, it might override entries from the + // main theme. Do not override for style changes unless they are + // objectively necessary for your Mode. File modeTheme = new File(folder, "theme/theme.txt"); if (modeTheme.exists()) { // Override the built-in settings with what the theme provides @@ -182,8 +186,7 @@ public abstract class Mode { // other things that have to be set explicitly for the defaults theme.setColor("run.window.bgcolor", SystemColor.control); - String suffix = Toolkit.highResDisplay() ? "-2x.png" : ".png"; - backgroundImage = loadImage("theme/mode" + suffix); + loadBackground(); } catch (IOException e) { Base.showError("Problem loading theme.txt", @@ -192,8 +195,30 @@ public abstract class Mode { } + protected void loadBackground() { + String suffix = Toolkit.highResDisplay() ? "-2x.png" : ".png"; + backgroundImage = loadImage("theme/mode" + suffix); + if (backgroundImage == null) { + // If the image wasn't available, try the other resolution. + // i.e. we don't (currently) have low-res versions of mode.png, + // so this will grab the 2x version and scale it when drawn. + suffix = !Toolkit.highResDisplay() ? "-2x.png" : ".png"; + backgroundImage = loadImage("theme/mode" + suffix); + } + } + + public void drawBackground(Graphics g, int offset) { if (backgroundImage != null) { + if (!Toolkit.highResDisplay()) { + // Image might be downsampled from a 2x version. If so, we need nice + // anti-aliasing for the very geometric images we're using. + Graphics2D g2 = (Graphics2D) g; + g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, + RenderingHints.VALUE_ANTIALIAS_ON); + g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, + RenderingHints.VALUE_INTERPOLATION_BICUBIC); + } g.drawImage(backgroundImage, 0, -offset, BACKGROUND_WIDTH, BACKGROUND_HEIGHT, null); } diff --git a/experimental/theme/buttons.gif b/experimental/theme/buttons.gif deleted file mode 100755 index a16fa330fae97658296fa1f3c3dcb3e0d811cb40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6428 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 aJxlxfEJI@czTSMc&3tZZJ{ucI_dfvA0{z|q