diff --git a/src/main/java/org/warp/picalculator/Main.java b/src/main/java/org/warp/picalculator/Main.java index be22cc22..75b6939f 100755 --- a/src/main/java/org/warp/picalculator/Main.java +++ b/src/main/java/org/warp/picalculator/Main.java @@ -54,11 +54,6 @@ public class Main { if (Utils.isRunningOnRaspberry() && !Utils.isInArray("-noraspi", args) && isRaspi) { Gpio.wiringPiSetupPhys(); Gpio.pinMode(12, Gpio.PWM_OUTPUT); - try { - Files.createFile(Paths.get("/boot/warppi_loaded")); - } catch (IOException e) { - e.printStackTrace(); - } } else { StaticVars.screenPos = new int[] { 0, 0 }; StaticVars.debugOn = true; diff --git a/src/main/java/org/warp/picalculator/StaticVars.java b/src/main/java/org/warp/picalculator/StaticVars.java index 9c2f04b7..68ef257c 100644 --- a/src/main/java/org/warp/picalculator/StaticVars.java +++ b/src/main/java/org/warp/picalculator/StaticVars.java @@ -13,8 +13,17 @@ public class StaticVars { public static int outputLevel = 0; public static boolean debugWindow2x = false; public static Class classLoader; + public static float windowZoom = 2; private StaticVars() { } + + public static float getCurrentZoomValue() { + if (StaticVars.debugOn & StaticVars.debugWindow2x) { + return 2; + } else { + return StaticVars.windowZoom; + } + } } diff --git a/src/main/java/org/warp/picalculator/device/Key.java b/src/main/java/org/warp/picalculator/device/Key.java index 71238e7c..f8907f1c 100644 --- a/src/main/java/org/warp/picalculator/device/Key.java +++ b/src/main/java/org/warp/picalculator/device/Key.java @@ -8,5 +8,5 @@ public enum Key { PLUS, MINUS, PLUS_MINUS, MULTIPLY, DIVIDE, EQUAL, DELETE, RESET, LEFT, RIGHT, UP, DOWN, OK, debug1, debug2, debug3, debug4, debug5, SQRT, ROOT, POWER_OF_2, POWER_OF_x, SINE, COSINE, TANGENT, ARCSINE, ARCCOSINE, ARCTANGENT, PI, SETTINGS, - F1, F2, F3, F4, BACK + F1, F2, F3, F4, BACK, ZOOM_MODE } \ No newline at end of file diff --git a/src/main/java/org/warp/picalculator/device/Keyboard.java b/src/main/java/org/warp/picalculator/device/Keyboard.java index 6dad4530..08011767 100755 --- a/src/main/java/org/warp/picalculator/device/Keyboard.java +++ b/src/main/java/org/warp/picalculator/device/Keyboard.java @@ -178,7 +178,7 @@ public class Keyboard { } else if (!Keyboard.shift && !Keyboard.alpha) { Keyboard.keyPressed(Key.BRIGHTNESS_CYCLE); } else { - Keyboard.keyPressed(Key.NONE); + Keyboard.keyPressed(Key.ZOOM_MODE); } break; case com.jogamp.newt.event.KeyEvent.VK_ENTER: @@ -463,7 +463,7 @@ public class Keyboard { {Key.NONE, Key.NONE, Key.NONE}, /* 0,3 */ {Key.NONE, Key.NONE, Key.NONE}, /* 0,4 */ {Key.SETTINGS, Key.NONE, Key.NONE}, /* 0,5 */ - {Key.BRIGHTNESS_CYCLE, Key.BRIGHTNESS_CYCLE_REVERSE, Key.NONE}, /* 0,6 */ + {Key.BRIGHTNESS_CYCLE, Key.BRIGHTNESS_CYCLE_REVERSE, Key.ZOOM_MODE}, /* 0,6 */ {Key.SIMPLIFY, Key.STEP, Key.NONE} /* 0,7 */ }, { /* ROW 1 */ @@ -603,6 +603,9 @@ public class Keyboard { DisplayManager.INSTANCE.cycleBrightness(true); refresh = true; break; + case ZOOM_MODE: + StaticVars.windowZoom = ((StaticVars.windowZoom - 0.5f) % 2f) + 1f; + refresh = true; case HISTORY_BACK: DisplayManager.INSTANCE.goBack(); refresh = true; @@ -704,7 +707,7 @@ Keyboard: |0,0-----|0,1-----|########|0,3-----|########|0,5-----|0,6-----| | SHIFT | ALPHA |########| ^ |########|SETTINGS|+BRIGHT | | NORMAL | ALPHA |########| |########| |-BRIGHT | - | SHIFT | NORMAL |########| |########| | | + | SHIFT | NORMAL |########| |########| |ZOOMMODE| |1,0-----|1,1-----|1,2-----|1,3-----|1,4-----|1,5-----|1,6-----| | F_4 | | < | OK | > | Back | Fwd | | F_4 | | | | | | | diff --git a/src/main/java/org/warp/picalculator/gui/graphicengine/cpu/SwingWindow.java b/src/main/java/org/warp/picalculator/gui/graphicengine/cpu/SwingWindow.java index 99a2c025..27bca8f2 100755 --- a/src/main/java/org/warp/picalculator/gui/graphicengine/cpu/SwingWindow.java +++ b/src/main/java/org/warp/picalculator/gui/graphicengine/cpu/SwingWindow.java @@ -39,8 +39,8 @@ public class SwingWindow extends JFrame { // Transparent 16 x 16 pixel cursor image. final BufferedImage cursorImg = new BufferedImage(16, 16, BufferedImage.TYPE_INT_ARGB); + if ((StaticVars.windowZoom != 1) | (StaticVars.debugOn & StaticVars.debugWindow2x)) mult = 2; if (StaticVars.debugOn) { - if (StaticVars.debugWindow2x) mult = 2; if (Utils.debugThirdScreen) { this.setLocation(2880, 900); setResizable(false); diff --git a/src/main/java/org/warp/picalculator/gui/graphicengine/gpu/GPUEngine.java b/src/main/java/org/warp/picalculator/gui/graphicengine/gpu/GPUEngine.java index 6e4792d9..6d895bc7 100755 --- a/src/main/java/org/warp/picalculator/gui/graphicengine/gpu/GPUEngine.java +++ b/src/main/java/org/warp/picalculator/gui/graphicengine/gpu/GPUEngine.java @@ -57,7 +57,7 @@ public class GPUEngine implements GraphicEngine { public void setDisplayMode(int ww, int wh) { size[0] = ww; size[1] = wh; - wnd.window.setSize((StaticVars.debugOn & StaticVars.debugWindow2x) ? ww * 2 : ww, (StaticVars.debugOn & StaticVars.debugWindow2x) ? wh * 2 : wh); + wnd.window.setSize(ww, wh); } @Override diff --git a/src/main/java/org/warp/picalculator/gui/graphicengine/gpu/NEWTWindow.java b/src/main/java/org/warp/picalculator/gui/graphicengine/gpu/NEWTWindow.java index d08bbcaa..f1718a8b 100755 --- a/src/main/java/org/warp/picalculator/gui/graphicengine/gpu/NEWTWindow.java +++ b/src/main/java/org/warp/picalculator/gui/graphicengine/gpu/NEWTWindow.java @@ -28,6 +28,10 @@ package org.warp.picalculator.gui.graphicengine.gpu; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; + import org.warp.picalculator.StaticVars; import org.warp.picalculator.device.Key; import org.warp.picalculator.device.Keyboard; @@ -60,11 +64,14 @@ class NEWTWindow implements GLEventListener { private final GPUEngine disp; private final GPURenderer renderer; + public float windowZoom; + public int[] realWindowSize; public Runnable onInitialized; public NEWTWindow(GPUEngine disp) { this.disp = disp; renderer = disp.getRenderer(); + realWindowSize = new int[] {1,1}; } public GLWindow window; @@ -173,7 +180,7 @@ class NEWTWindow implements GLEventListener { } else if (!Keyboard.shift && !Keyboard.alpha) { Keyboard.keyReleased(Key.BRIGHTNESS_CYCLE); } else { - Keyboard.keyReleased(Key.NONE); + Keyboard.keyReleased(Key.ZOOM_MODE); } break; case KeyEvent.VK_ENTER: @@ -284,7 +291,7 @@ class NEWTWindow implements GLEventListener { final GL2ES1 gl = drawable.getGL().getGL2ES1(); //Vsync - gl.setSwapInterval(2); + gl.setSwapInterval(1); //Textures gl.glEnable(GL.GL_TEXTURE_2D); @@ -313,33 +320,47 @@ class NEWTWindow implements GLEventListener { @Override public void reshape(GLAutoDrawable glad, int x, int y, int width, int height) { - disp.size[0] = (StaticVars.debugOn & StaticVars.debugWindow2x) ? width / 2 : width; - disp.size[1] = (StaticVars.debugOn & StaticVars.debugWindow2x) ? height / 2 : height; + realWindowSize[0] = width; + realWindowSize[1] = height; + disp.size[0] = width; + disp.size[1] = height; final GL2ES1 gl = glad.getGL().getGL2ES1(); - if (width == 0) { - width = 1; - } - if (height == 0) { - height = 1; - } + onZoomChanged(gl, true); + } + + private void onZoomChanged(GL2ES1 gl, boolean sizeChanged) { + float precWindowZoom = windowZoom; + windowZoom = StaticVars.getCurrentZoomValue(); + System.out.println("sizechange" + windowZoom); + + final int width = realWindowSize[0]; + final int height = realWindowSize[1]; + + disp.size[0] = (int) (realWindowSize[0] / windowZoom); + disp.size[1] = (int) (realWindowSize[1] / windowZoom); + gl.glViewport(0, 0, width, height); gl.glMatrixMode(GLMatrixFunc.GL_PROJECTION); gl.glLoadIdentity(); - gl.glOrtho(0.0, (StaticVars.debugOn & StaticVars.debugWindow2x) ? width / 2 : width, (StaticVars.debugOn & StaticVars.debugWindow2x) ? height / 2 : height, 0.0, -1, 1); + gl.glOrtho(0.0, disp.size[0], disp.size[1], 0.0, -1, 1); gl.glMatrixMode(GLMatrixFunc.GL_MODELVIEW); gl.glLoadIdentity(); } - + @Override public void display(GLAutoDrawable glad) { final GL2ES1 gl = glad.getGL().getGL2ES1(); GPURenderer.gl = gl; + if (windowZoom != StaticVars.getCurrentZoomValue()) { + onZoomChanged(gl, false); + } + gl.glEnableClientState(GLPointerFunc.GL_COLOR_ARRAY); gl.glEnableClientState(GLPointerFunc.GL_VERTEX_ARRAY); gl.glEnableClientState(GLPointerFunc.GL_TEXTURE_COORD_ARRAY); diff --git a/src/main/java/org/warp/picalculator/gui/graphicengine/nogui/NoGuiEngine.java b/src/main/java/org/warp/picalculator/gui/graphicengine/nogui/NoGuiEngine.java index 4ab5d633..a5a3ba2d 100644 --- a/src/main/java/org/warp/picalculator/gui/graphicengine/nogui/NoGuiEngine.java +++ b/src/main/java/org/warp/picalculator/gui/graphicengine/nogui/NoGuiEngine.java @@ -37,6 +37,7 @@ public class NoGuiEngine implements GraphicEngine { public void setDisplayMode(int ww, int wh) { } + @Override public void create(Runnable onInitialized) { initialized = true; diff --git a/src/main/java/org/warp/picalculator/gui/screens/LoadingScreen.java b/src/main/java/org/warp/picalculator/gui/screens/LoadingScreen.java index df553dfd..0816cd80 100755 --- a/src/main/java/org/warp/picalculator/gui/screens/LoadingScreen.java +++ b/src/main/java/org/warp/picalculator/gui/screens/LoadingScreen.java @@ -11,6 +11,7 @@ public class LoadingScreen extends Screen { boolean mustRefresh = true; public float loadingTextTranslation = 0.0f; public boolean loaded = false; + private float previousZoomValue = 1; public LoadingScreen() { super(); @@ -23,7 +24,10 @@ public class LoadingScreen extends Screen { } @Override - public void initialized() throws InterruptedException {} + public void initialized() throws InterruptedException { + previousZoomValue = StaticVars.getCurrentZoomValue(); + StaticVars.windowZoom = 1; + } @Override public void beforeRender(float dt) { @@ -31,6 +35,7 @@ public class LoadingScreen extends Screen { endLoading += dt; if (loaded && (StaticVars.debugOn || endLoading >= 3.5f)) { + StaticVars.windowZoom = previousZoomValue; DisplayManager.INSTANCE.setScreen(new MathInputScreen()); } mustRefresh = true;