New splash screen, renamed some rendering classes, Bugfixes

This commit is contained in:
XDrake99 2017-02-02 10:30:45 +01:00
parent bbdba7aeb3
commit b1a0fc9d3e
48 changed files with 285 additions and 261 deletions

View File

@ -2,7 +2,7 @@ eclipse.preferences.version=1
encoding//src/org/nevec/rjm/BigSurd.java=UTF-8 encoding//src/org/nevec/rjm/BigSurd.java=UTF-8
encoding//src/org/nevec/rjm/BigSurdVec.java=UTF-8 encoding//src/org/nevec/rjm/BigSurdVec.java=UTF-8
encoding//src/org/warp/picalculator/Main.java=UTF-8 encoding//src/org/warp/picalculator/Main.java=UTF-8
encoding//src/org/warp/picalculator/gui/graphicengine/cpu/CPUDisplay.java=UTF-8 encoding//src/org/warp/picalculator/gui/graphicengine/cpu/CPUEngine.java=UTF-8
encoding//src/org/warp/picalculator/gui/screens/MathInputScreen.java=UTF-8 encoding//src/org/warp/picalculator/gui/screens/MathInputScreen.java=UTF-8
encoding//src/org/warp/picalculator/math/MathematicalSymbols.java=UTF-8 encoding//src/org/warp/picalculator/math/MathematicalSymbols.java=UTF-8
encoding//src/org/warp/picalculator/math/functions/Expression.java=UTF-8 encoding//src/org/warp/picalculator/math/functions/Expression.java=UTF-8

Binary file not shown.

After

Width:  |  Height:  |  Size: 468 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 497 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

View File

@ -5,6 +5,6 @@ import org.warp.picalculator.gui.screens.KeyboardDebugScreen;
public class KeyboardTest { public class KeyboardTest {
public static void main(String[] args) throws InterruptedException { public static void main(String[] args) throws InterruptedException {
new Main(new KeyboardDebugScreen()); new Main(new KeyboardDebugScreen(), args);
} }
} }

View File

@ -2,11 +2,11 @@ package org.warp.picalculator;
import java.io.IOException; import java.io.IOException;
import org.warp.picalculator.gui.graphicengine.Display; import org.warp.picalculator.gui.graphicengine.GraphicEngine;
import org.warp.picalculator.gui.graphicengine.Drawable; import org.warp.picalculator.gui.graphicengine.RenderingLoop;
import org.warp.picalculator.gui.graphicengine.RAWFont; import org.warp.picalculator.gui.graphicengine.BinaryFont;
import org.warp.picalculator.gui.graphicengine.RAWSkin; import org.warp.picalculator.gui.graphicengine.Skin;
import org.warp.picalculator.gui.graphicengine.gpu.GPUDisplay; import org.warp.picalculator.gui.graphicengine.gpu.GPUEngine;
import org.warp.picalculator.gui.graphicengine.gpu.GPURenderer; import org.warp.picalculator.gui.graphicengine.gpu.GPURenderer;
import org.warp.picalculator.gui.screens.KeyboardDebugScreen; import org.warp.picalculator.gui.screens.KeyboardDebugScreen;
import org.warp.picalculator.gui.screens.MarioScreen; import org.warp.picalculator.gui.screens.MarioScreen;
@ -19,11 +19,9 @@ import java.util.ArrayList;
public class TestGPU { public class TestGPU {
public static final GPUDisplay d = new GPUDisplay(); public static final GPUEngine d = new GPUEngine();
public static void main(String[] args) throws IOException { public static void main(String[] args) throws IOException {
new Main(new KeyboardDebugScreen());
if (true) return;
Utils.debugOn = true; Utils.debugOn = true;
Utils.debugThirdScreen = false; Utils.debugThirdScreen = false;
d.create(); d.create();
@ -31,15 +29,15 @@ public class TestGPU {
final Scene s = new Scene(d); final Scene s = new Scene(d);
} }
private static class Scene implements Drawable { private static class Scene implements RenderingLoop {
private RAWFont exampleFont; private BinaryFont exampleFont;
private final RAWSkin exampleSkin; private final Skin exampleSkin;
private final GPURenderer r; private final GPURenderer r;
private final Display d; private final GraphicEngine d;
public Scene(Display d) throws IOException { public Scene(GraphicEngine d) throws IOException {
this.d = d; this.d = d;
r = (GPURenderer) d.getRenderer(); r = (GPURenderer) d.getRenderer();
@ -79,6 +77,12 @@ public class TestGPU {
exampleFont.use(d); exampleFont.use(d);
r.glColor3f(1, 0, 0); r.glColor3f(1, 0, 0);
r.glDrawStringLeft(10, 170, "Prova! 123456789"); r.glDrawStringLeft(10, 170, "Prova! 123456789");
//MSAA TEST
r.glDrawStringLeft(10f, 190.5f, "Test MSAA");
exampleSkin.use(d);
r.glColor3f(1.0f, 1.0f, 1.0f);
r.glFillRect(162, 2.5f, 160, 160, 0, 0, 16, 16);
} }
} }

View File

@ -21,7 +21,7 @@ import java.util.List;
import org.nevec.rjm.BigDecimalMath; import org.nevec.rjm.BigDecimalMath;
import org.nevec.rjm.Rational; import org.nevec.rjm.Rational;
import org.warp.picalculator.gui.DisplayManager; import org.warp.picalculator.gui.DisplayManager;
import org.warp.picalculator.gui.graphicengine.RAWFont; import org.warp.picalculator.gui.graphicengine.BinaryFont;
import org.warp.picalculator.math.functions.AnteriorFunction; import org.warp.picalculator.math.functions.AnteriorFunction;
import org.warp.picalculator.math.functions.Division; import org.warp.picalculator.math.functions.Division;
import org.warp.picalculator.math.functions.Expression; import org.warp.picalculator.math.functions.Expression;
@ -360,7 +360,9 @@ public class Utils {
var.draw(x + wsegno, y + (hsegno - h1)); var.draw(x + wsegno, y + (hsegno - h1));
DisplayManager.renderer.glDrawLine(x + 1, y + hsegno - 3, x + 3, y + hsegno - 1); DisplayManager.renderer.glDrawLine(x + 1, y + hsegno - 3, x + 1, y + hsegno - 3);
DisplayManager.renderer.glDrawLine(x + 2, y + hsegno - 2, x + 2, y + hsegno - 2);
DisplayManager.renderer.glDrawLine(x + 3, y + hsegno - 1, x + 3, y + hsegno - 1);
DisplayManager.renderer.glDrawLine(x + 3, y + (hsegno - 1) / 2 + 1, x + 3, y + hsegno - 1); DisplayManager.renderer.glDrawLine(x + 3, y + (hsegno - 1) / 2 + 1, x + 3, y + hsegno - 1);
DisplayManager.renderer.glDrawLine(x + 4, y, x + 4, y + (hsegno - 1) / 2); DisplayManager.renderer.glDrawLine(x + 4, y, x + 4, y + (hsegno - 1) / 2);
DisplayManager.renderer.glDrawLine(x + 4, y, x + 4 + 1 + w1 + 1, y); DisplayManager.renderer.glDrawLine(x + 4, y, x + 4 + 1 + w1 + 1, y);
@ -370,11 +372,11 @@ public class Utils {
return getFontHeight(false); return getFontHeight(false);
} }
public static final RAWFont getFont(boolean small) { public static final BinaryFont getFont(boolean small) {
return getFont(small, Main.zoomed); return getFont(small, Main.zoomed);
} }
public static final RAWFont getFont(boolean small, boolean zoomed) { public static final BinaryFont getFont(boolean small, boolean zoomed) {
return DisplayManager.fonts[getFontIndex(small, zoomed)]; return DisplayManager.fonts[getFontIndex(small, zoomed)];
} }

View File

@ -700,7 +700,7 @@ public class Keyboard {
} else { } else {
switch (k) { switch (k) {
case POWER: case POWER:
DisplayManager.display.destroy(); DisplayManager.engine.destroy();
break; break;
case NONE: case NONE:
break; break;

View File

@ -10,26 +10,26 @@ import java.util.ArrayList;
import org.warp.picalculator.Main; import org.warp.picalculator.Main;
import org.warp.picalculator.Utils; import org.warp.picalculator.Utils;
import org.warp.picalculator.device.Keyboard; import org.warp.picalculator.device.Keyboard;
import org.warp.picalculator.gui.graphicengine.Display; import org.warp.picalculator.gui.graphicengine.GraphicEngine;
import org.warp.picalculator.gui.graphicengine.Drawable; import org.warp.picalculator.gui.graphicengine.RenderingLoop;
import org.warp.picalculator.gui.graphicengine.Renderer; import org.warp.picalculator.gui.graphicengine.Renderer;
import org.warp.picalculator.gui.graphicengine.cpu.CPUDisplay; import org.warp.picalculator.gui.graphicengine.cpu.CPUEngine;
import org.warp.picalculator.gui.graphicengine.gpu.GPUDisplay; import org.warp.picalculator.gui.graphicengine.gpu.GPUEngine;
import org.warp.picalculator.gui.graphicengine.RAWFont; import org.warp.picalculator.gui.graphicengine.BinaryFont;
import org.warp.picalculator.gui.graphicengine.RAWSkin; import org.warp.picalculator.gui.graphicengine.Skin;
import org.warp.picalculator.gui.screens.Screen; import org.warp.picalculator.gui.screens.Screen;
import com.pi4j.wiringpi.Gpio; import com.pi4j.wiringpi.Gpio;
public final class DisplayManager implements Drawable { public final class DisplayManager implements RenderingLoop {
public static DisplayManager INSTANCE; public static DisplayManager INSTANCE;
private static float brightness; private static float brightness;
public static final Display display = chooseGraphicEngine(); public static final GraphicEngine engine = chooseGraphicEngine();
public static Renderer renderer; public static Renderer renderer;
private static RAWSkin skin; public static Skin guiSkin;
public static RAWFont[] fonts; public static BinaryFont[] fonts;
public static String error = null; public static String error = null;
public String[] errorStackTrace = null; public String[] errorStackTrace = null;
@ -72,12 +72,18 @@ public final class DisplayManager implements Drawable {
* } * }
*/ */
private static Display chooseGraphicEngine() { private static GraphicEngine chooseGraphicEngine() {
Display d; GraphicEngine d;
d = new GPUDisplay(); d = new GPUEngine();
if (d.isSupported()) return d; if (d.isSupported()) {
d = new CPUDisplay(); Utils.debug.println("Using GPU Graphic Engine");
if (d.isSupported()) return d; return d;
}
d = new CPUEngine();
if (d.isSupported()) {
Utils.debug.println("Using CPU Graphic Engine");
return d;
}
throw new UnsupportedOperationException("No graphic engines available."); throw new UnsupportedOperationException("No graphic engines available.");
} }
@ -197,30 +203,30 @@ public final class DisplayManager implements Drawable {
} }
private void load_skin() throws IOException { private void load_skin() throws IOException {
skin = display.loadSkin("skin.png"); guiSkin = engine.loadSkin("skin.png");
} }
private void load_fonts() throws IOException { private void load_fonts() throws IOException {
fonts = new RAWFont[7]; fonts = new BinaryFont[7];
fonts[0] = display.loadFont("big"); fonts[0] = engine.loadFont("big");
fonts[1] = display.loadFont("small"); fonts[1] = engine.loadFont("small");
fonts[2] = display.loadFont("ex"); fonts[2] = engine.loadFont("ex");
fonts[3] = display.loadFont("big"); fonts[3] = engine.loadFont("big");
fonts[4] = display.loadFont("32"); fonts[4] = engine.loadFont("32");
fonts[5] = display.loadFont("square"); fonts[5] = engine.loadFont("square");
} }
private void draw_init() { private void draw_init() {
renderer.glClear(display.getWidth(), display.getHeight()); renderer.glClear(engine.getWidth(), engine.getHeight());
} }
private void draw_status() { private void draw_status() {
renderer.glColor(0xFFc5c2af); renderer.glColor(0xFFc5c2af);
renderer.glFillColor(0, 0, display.getWidth(), 20); renderer.glFillColor(0, 0, engine.getWidth(), 20);
renderer.glColor3i(0, 0, 0); renderer.glColor3i(0, 0, 0);
renderer.glDrawLine(0, 20, display.getWidth() - 1, 20); renderer.glDrawLine(0, 20, engine.getWidth() - 1, 20);
renderer.glColor3i(255, 255, 255); renderer.glColor3i(255, 255, 255);
skin.use(display); guiSkin.use(engine);
if (Keyboard.shift) { if (Keyboard.shift) {
renderer.glFillRect(2 + 18 * 0, 2, 16, 16, 16 * 2, 16 * 0, 16, 16); renderer.glFillRect(2 + 18 * 0, 2, 16, 16, 16 * 2, 16 * 0, 16, 16);
} else { } else {
@ -291,18 +297,22 @@ public final class DisplayManager implements Drawable {
private void draw_bottom() { private void draw_bottom() {
renderer.glDrawStringLeft(2, 90, displayDebugString); renderer.glDrawStringLeft(2, 90, displayDebugString);
Utils.getFont(false, true).use(DisplayManager.display); Utils.getFont(true, false).use(DisplayManager.engine);
DisplayManager.renderer.glColor4i(255, 0, 0, 40); DisplayManager.renderer.glColor4i(255, 0, 0, 40);
DisplayManager.renderer.glDrawStringLeft(5 + 1, Main.screenSize[1] - 20 + 1, "WORK IN PROGRESS."); DisplayManager.renderer.glDrawStringLeft(1 + 1, Main.screenSize[1] - 7 - 7 + 1, "WORK IN");
DisplayManager.renderer.glColor4i(255, 0, 0, 80); DisplayManager.renderer.glColor4i(255, 0, 0, 80);
DisplayManager.renderer.glDrawStringLeft(5, Main.screenSize[1] - 20, "WORK IN PROGRESS."); DisplayManager.renderer.glDrawStringLeft(1, Main.screenSize[1] - 7 - 7, "WORK IN");
DisplayManager.renderer.glColor4i(255, 0, 0, 40);
DisplayManager.renderer.glDrawStringLeft(1 + 1, Main.screenSize[1] - 7 + 1, "PROGRESS.");
DisplayManager.renderer.glColor4i(255, 0, 0, 80);
DisplayManager.renderer.glDrawStringLeft(1, Main.screenSize[1] - 7, "PROGRESS.");
} }
private void draw_world() { private void draw_world() {
renderer.glColor3i(255, 255, 255); renderer.glColor3i(255, 255, 255);
if (error != null) { if (error != null) {
Utils.getFont(false, false).use(display); Utils.getFont(false, false).use(engine);
renderer.glColor3i(129, 28, 22); renderer.glColor3i(129, 28, 22);
renderer.glDrawStringRight(Main.screenSize[0] - 2, Main.screenSize[1] - DisplayManager.glyphsHeight[1] - 2, "ANDREA CAVALLI'S CALCULATOR"); renderer.glDrawStringRight(Main.screenSize[0] - 2, Main.screenSize[1] - DisplayManager.glyphsHeight[1] - 2, "ANDREA CAVALLI'S CALCULATOR");
renderer.glColor3i(149, 32, 26); renderer.glColor3i(149, 32, 26);
@ -313,11 +323,11 @@ public final class DisplayManager implements Drawable {
renderer.glDrawStringLeft(2, 22 + i, stackPart); renderer.glDrawStringLeft(2, 22 + i, stackPart);
i += 11; i += 11;
} }
fonts[0].use(display); fonts[0].use(engine);
renderer.glColor3i(129, 28, 22); renderer.glColor3i(129, 28, 22);
renderer.glDrawStringCenter((Main.screenSize[0] / 2), 11, "UNEXPECTED EXCEPTION"); renderer.glDrawStringCenter((Main.screenSize[0] / 2), 11, "UNEXPECTED EXCEPTION");
} else { } else {
fonts[0].use(display); fonts[0].use(engine);
draw_screen(); draw_screen();
draw_status(); draw_status();
draw_bottom(); draw_bottom();
@ -355,9 +365,9 @@ public final class DisplayManager implements Drawable {
} }
private void checkDisplayResized() { private void checkDisplayResized() {
if (display.wasResized()) { if (engine.wasResized()) {
Main.screenSize[0] = display.getWidth(); Main.screenSize[0] = engine.getWidth();
Main.screenSize[1] = display.getHeight(); Main.screenSize[1] = engine.getHeight();
} }
}; };
@ -365,8 +375,8 @@ public final class DisplayManager implements Drawable {
try { try {
load_skin(); load_skin();
load_fonts(); load_fonts();
display.create(); engine.create();
renderer = display.getRenderer(); renderer = engine.getRenderer();
try { try {
screen.initialize(); screen.initialize();
@ -438,9 +448,9 @@ public final class DisplayManager implements Drawable {
dbgthrd.setName("Debug performance thread"); dbgthrd.setName("Debug performance thread");
dbgthrd.start(); dbgthrd.start();
display.start(this); engine.start(this);
display.waitUntilExit(); engine.waitUntilExit();
} catch (final Exception ex) { } catch (final Exception ex) {
ex.printStackTrace(); ex.printStackTrace();
} finally {} } finally {}
@ -483,7 +493,7 @@ public final class DisplayManager implements Drawable {
renderer.glColor4f(f1,f2,f3,f4); renderer.glColor4f(f1,f2,f3,f4);
} }
public static Drawable getDrawable() { public static RenderingLoop getDrawable() {
return INSTANCE; return INSTANCE;
} }

View File

@ -4,7 +4,7 @@ package org.warp.picalculator.gui.graphicengine;
* *
* @author andreacv * @author andreacv
*/ */
public interface RAWFont extends RAWSkin { public interface BinaryFont extends Skin {
public int getStringWidth(String text); public int getStringWidth(String text);

View File

@ -2,7 +2,7 @@ package org.warp.picalculator.gui.graphicengine;
import java.io.IOException; import java.io.IOException;
public interface Display { public interface GraphicEngine {
public int[] getSize(); public int[] getSize();
@ -24,15 +24,15 @@ public interface Display {
public void destroy(); public void destroy();
public void start(Drawable d); public void start(RenderingLoop d);
public void repaint(); public void repaint();
public Renderer getRenderer(); public Renderer getRenderer();
public RAWFont loadFont(String file) throws IOException; public BinaryFont loadFont(String file) throws IOException;
public RAWSkin loadSkin(String file) throws IOException; public Skin loadSkin(String file) throws IOException;
public void waitUntilExit(); public void waitUntilExit();

View File

@ -23,19 +23,19 @@ public interface Renderer {
public void glClear(int screenWidth, int screenHeight); public void glClear(int screenWidth, int screenHeight);
public void glDrawLine(int x0, int y0, int x1, int y1); public void glDrawLine(float x0, float y0, float x1, float y1);
public void glFillRect(int x, int y, int width, int height, float uvX, float uvY, float uvWidth, float uvHeight); public void glFillRect(float x, float y, float width, float height, float uvX, float uvY, float uvWidth, float uvHeight);
public void glFillColor(int x, int y, int width, int height); public void glFillColor(float x, float y, float width, float height);
public void glDrawStringLeft(int x, int y, String text); public void glDrawStringLeft(float x, float y, String text);
public void glDrawStringCenter(int x, int y, String text); public void glDrawStringCenter(float x, float y, String text);
public void glDrawStringRight(int x, int y, String text); public void glDrawStringRight(float x, float y, String text);
public void glClearSkin(); public void glClearSkin();
public RAWFont getCurrentFont(); public BinaryFont getCurrentFont();
} }

View File

@ -1,5 +1,5 @@
package org.warp.picalculator.gui.graphicengine; package org.warp.picalculator.gui.graphicengine;
public interface Drawable { public interface RenderingLoop {
public void refresh(); public void refresh();
} }

View File

@ -2,11 +2,11 @@ package org.warp.picalculator.gui.graphicengine;
import java.io.IOException; import java.io.IOException;
public interface RAWSkin { public interface Skin {
public void load(String file) throws IOException; public void load(String file) throws IOException;
public void initialize(Display d); public void initialize(GraphicEngine d);
public void use(Display d); public void use(GraphicEngine d);
} }

View File

@ -8,13 +8,13 @@ import java.io.IOException;
import org.warp.picalculator.Main; import org.warp.picalculator.Main;
import org.warp.picalculator.Utils; import org.warp.picalculator.Utils;
import org.warp.picalculator.gui.DisplayManager; import org.warp.picalculator.gui.DisplayManager;
import org.warp.picalculator.gui.graphicengine.Display; import org.warp.picalculator.gui.graphicengine.GraphicEngine;
import org.warp.picalculator.gui.graphicengine.Drawable; import org.warp.picalculator.gui.graphicengine.RenderingLoop;
import org.warp.picalculator.gui.graphicengine.RAWFont; import org.warp.picalculator.gui.graphicengine.BinaryFont;
import org.warp.picalculator.gui.graphicengine.RAWSkin; import org.warp.picalculator.gui.graphicengine.Skin;
import org.warp.picalculator.gui.graphicengine.Renderer; import org.warp.picalculator.gui.graphicengine.Renderer;
public class CPUDisplay implements Display { public class CPUEngine implements GraphicEngine {
private SwingWindow INSTANCE; private SwingWindow INSTANCE;
public int[] size = new int[] { 1, 1 }; public int[] size = new int[] { 1, 1 };
@ -85,7 +85,7 @@ public class CPUDisplay implements Display {
} }
@Override @Override
public void start(Drawable d) { public void start(RenderingLoop d) {
Thread th = new Thread(() -> { Thread th = new Thread(() -> {
try { try {
double extratime = 0; double extratime = 0;
@ -254,49 +254,59 @@ public class CPUDisplay implements Display {
} }
@Override @Override
public void glDrawLine(int x0, int y0, int x1, int y1) { public void glDrawLine(float x0, float y0, float x1, float y1) {
x0 += Main.screenPos[0]; x0 += Main.screenPos[0];
x1 += Main.screenPos[0]; x1 += Main.screenPos[0];
y0 += Main.screenPos[1]; y0 += Main.screenPos[1];
y1 += Main.screenPos[1]; y1 += Main.screenPos[1];
if (x0 >= size[0] || y0 >= size[0]) { final int ix0 = (int) x0;
final int ix1 = (int) x1;
final int iy0 = (int) y0;
final int iy1 = (int) y1;
if (ix0 >= size[0] || iy0 >= size[0]) {
return; return;
} }
if (y0 == y1) { if (iy0 == iy1) {
for (int x = 0; x <= x1 - x0; x++) { for (int x = 0; x <= ix1 - ix0; x++) {
canvas2d[x0 + x + y0 * size[0]] = color; canvas2d[ix0 + x + iy0 * size[0]] = color;
} }
} else if (x0 == x1) { } else if (ix0 == ix1) {
for (int y = 0; y <= y1 - y0; y++) { for (int y = 0; y <= iy1 - iy0; y++) {
canvas2d[x0 + (y0 + y) * size[0]] = color; canvas2d[ix0 + (iy0 + y) * size[0]] = color;
} }
} else { } else {
final int m = (y1 - y0) / (x1 - x0); final int m = (iy1 - iy0) / (ix1 - ix0);
for (int texx = 0; texx <= x1 - x0; texx++) { for (int texx = 0; texx <= ix1 - ix0; texx++) {
if (x0 + texx < size[0] && y0 + (m * texx) < size[1]) { if (ix0 + texx < size[0] && iy0 + (m * texx) < size[1]) {
canvas2d[(x0 + texx) + (y0 + (m * texx)) * size[0]] = color; canvas2d[(ix0 + texx) + (iy0 + (m * texx)) * size[0]] = color;
} }
} }
} }
} }
@Override @Override
public void glFillRect(int x, int y, int width, int height, float uvX, float uvY, float uvWidth, public void glFillRect(float x, float y, float width, float height, float uvX, float uvY, float uvWidth,
float uvHeight) { float uvHeight) {
if (currentSkin != null) { if (currentSkin != null) {
glDrawSkin(x, y, (int) uvX, (int) uvY, (int) (uvWidth + uvX), (int) (uvHeight + uvY), true); glDrawSkin((int) x, (int) y, (int) uvX, (int) uvY, (int) (uvWidth + uvX), (int) (uvHeight + uvY), true);
} else { } else {
glFillColor(x, y, width, height); glFillColor(x, y, width, height);
} }
} }
@Override @Override
public void glFillColor(int x, int y, int width, int height) { public void glFillColor(float x, float y, float width, float height) {
x += Main.screenPos[0]; x += Main.screenPos[0];
y += Main.screenPos[1]; y += Main.screenPos[1];
int x1 = x + width;
int y1 = y + height; final int ix = (int) x;
if (x >= size[0] || y >= size[0]) { final int iy = (int) y;
final int iw = (int) width;
final int ih = (int) height;
int x1 = ix + iw;
int y1 = iy + ih;
if (ix >= size[0] || iy >= size[0]) {
return; return;
} }
if (x1 >= size[0]) { if (x1 >= size[0]) {
@ -306,18 +316,21 @@ public class CPUDisplay implements Display {
y1 = size[1]; y1 = size[1];
} }
final int sizeW = size[0]; final int sizeW = size[0];
for (int px = x; px < x1; px++) { for (int px = ix; px < x1; px++) {
for (int py = y; py < y1; py++) { for (int py = iy; py < y1; py++) {
canvas2d[(px) + (py) * sizeW] = color; canvas2d[(px) + (py) * sizeW] = color;
} }
} }
} }
@Override @Override
public void glDrawStringLeft(int x, int y, String textString) { public void glDrawStringLeft(float x, float y, String textString) {
x += Main.screenPos[0]; x += Main.screenPos[0];
y += Main.screenPos[1]; y += Main.screenPos[1];
final int ix = (int) x;
final int iy = (int) y;
final int[] text = currentFont.getCharIndexes(textString); final int[] text = currentFont.getCharIndexes(textString);
final int[] screen = canvas2d; final int[] screen = canvas2d;
final int[] screenSize = size; final int[] screenSize = size;
@ -335,13 +348,13 @@ public class CPUDisplay implements Display {
final int charIndex = text[i]; final int charIndex = text[i];
for (int dy = 0; dy < currentFont.charH; dy++) { for (int dy = 0; dy < currentFont.charH; dy++) {
for (int dx = 0; dx < currentFont.charW; dx++) { for (int dx = 0; dx < currentFont.charW; dx++) {
j = x + cpos + dx; j = ix + cpos + dx;
if (j > 0 & j < screenSize[0]) { if (j > 0 & j < screenSize[0]) {
final int bit = dx + dy * currentFont.charW; final int bit = dx + dy * currentFont.charW;
currentInt = (int) (Math.floor(bit) / (CPUFont.intBits)); currentInt = (int) (Math.floor(bit) / (CPUFont.intBits));
currentIntBitPosition = bit - (currentInt * CPUFont.intBits); currentIntBitPosition = bit - (currentInt * CPUFont.intBits);
bitData = (currentFont.chars32[charIndex * currentFont.charIntCount + currentInt] >> currentIntBitPosition) & 1; bitData = (currentFont.chars32[charIndex * currentFont.charIntCount + currentInt] >> currentIntBitPosition) & 1;
screenPos = x + cpos + dx + (y + dy) * screenSize[0]; screenPos = ix + cpos + dx + (iy + dy) * screenSize[0];
if (bitData == 1 & screenLength > screenPos) { if (bitData == 1 & screenLength > screenPos) {
screen[screenPos] = color; screen[screenPos] = color;
} }
@ -352,12 +365,12 @@ public class CPUDisplay implements Display {
} }
@Override @Override
public void glDrawStringCenter(int x, int y, String text) { public void glDrawStringCenter(float x, float y, String text) {
glDrawStringLeft(x - (currentFont.getStringWidth(text) / 2), y, text); glDrawStringLeft(x - (currentFont.getStringWidth(text) / 2), y, text);
} }
@Override @Override
public void glDrawStringRight(int x, int y, String text) { public void glDrawStringRight(float x, float y, String text) {
glDrawStringLeft(x - currentFont.getStringWidth(text), y, text); glDrawStringLeft(x - currentFont.getStringWidth(text), y, text);
} }
@ -377,7 +390,7 @@ public class CPUDisplay implements Display {
} }
@Override @Override
public RAWFont getCurrentFont() { public BinaryFont getCurrentFont() {
return currentFont; return currentFont;
} }
@ -414,12 +427,12 @@ public class CPUDisplay implements Display {
} }
@Override @Override
public RAWFont loadFont(String file) throws IOException { public BinaryFont loadFont(String file) throws IOException {
return new CPUFont(file); return new CPUFont(file);
} }
@Override @Override
public RAWSkin loadSkin(String file) throws IOException { public Skin loadSkin(String file) throws IOException {
return new CPUSkin(file); return new CPUSkin(file);
} }

View File

@ -12,11 +12,11 @@ import java.util.logging.Logger;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import org.warp.picalculator.Utils; import org.warp.picalculator.Utils;
import org.warp.picalculator.gui.graphicengine.Display; import org.warp.picalculator.gui.graphicengine.GraphicEngine;
import org.warp.picalculator.gui.graphicengine.RAWFont; import org.warp.picalculator.gui.graphicengine.BinaryFont;
import org.warp.picalculator.gui.graphicengine.cpu.CPUDisplay.CPURenderer; import org.warp.picalculator.gui.graphicengine.cpu.CPUEngine.CPURenderer;
public class CPUFont implements RAWFont { public class CPUFont implements BinaryFont {
public boolean[][] rawchars; public boolean[][] rawchars;
public int[] chars32; public int[] chars32;
@ -134,7 +134,7 @@ public class CPUFont implements RAWFont {
try { try {
ImageIO.write(bi, "PNG", new File(coutputpng)); ImageIO.write(bi, "PNG", new File(coutputpng));
} catch (final IOException ex) { } catch (final IOException ex) {
Logger.getLogger(RAWFont.class.getName()).log(Level.SEVERE, null, ex); Logger.getLogger(BinaryFont.class.getName()).log(Level.SEVERE, null, ex);
} }
} }
@ -149,13 +149,13 @@ public class CPUFont implements RAWFont {
} }
@Override @Override
public void initialize(Display d) { public void initialize(GraphicEngine d) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
@Override @Override
public void use(Display d) { public void use(GraphicEngine d) {
((CPURenderer) d.getRenderer()).currentFont = this; ((CPURenderer) d.getRenderer()).currentFont = this;
} }

View File

@ -6,11 +6,11 @@ import java.io.IOException;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import org.warp.picalculator.Main; import org.warp.picalculator.Main;
import org.warp.picalculator.gui.graphicengine.Display; import org.warp.picalculator.gui.graphicengine.GraphicEngine;
import org.warp.picalculator.gui.graphicengine.RAWSkin; import org.warp.picalculator.gui.graphicengine.Skin;
import org.warp.picalculator.gui.graphicengine.cpu.CPUDisplay.CPURenderer; import org.warp.picalculator.gui.graphicengine.cpu.CPUEngine.CPURenderer;
public class CPUSkin implements RAWSkin { public class CPUSkin implements Skin {
public int[] skinData; public int[] skinData;
public int[] skinSize; public int[] skinSize;
@ -40,13 +40,13 @@ public class CPUSkin implements RAWSkin {
} }
@Override @Override
public void initialize(Display d) { public void initialize(GraphicEngine d) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
@Override @Override
public void use(Display d) { public void use(GraphicEngine d) {
((CPURenderer) d.getRenderer()).currentSkin = this; ((CPURenderer) d.getRenderer()).currentSkin = this;
} }

View File

@ -19,16 +19,16 @@ import org.warp.picalculator.Utils;
import org.warp.picalculator.device.Keyboard; import org.warp.picalculator.device.Keyboard;
import org.warp.picalculator.device.Keyboard.Key; import org.warp.picalculator.device.Keyboard.Key;
import org.warp.picalculator.gui.DisplayManager; import org.warp.picalculator.gui.DisplayManager;
import org.warp.picalculator.gui.graphicengine.Drawable; import org.warp.picalculator.gui.graphicengine.RenderingLoop;
public class SwingWindow extends JFrame { public class SwingWindow extends JFrame {
private static final long serialVersionUID = 2945898937634075491L; private static final long serialVersionUID = 2945898937634075491L;
public CustomCanvas c; public CustomCanvas c;
private static Drawable d; private static RenderingLoop d;
public boolean wasResized = false; public boolean wasResized = false;
private final CPUDisplay display; private final CPUEngine display;
public SwingWindow(CPUDisplay disp, Drawable d) { public SwingWindow(CPUEngine disp, RenderingLoop d) {
SwingWindow.d = d; SwingWindow.d = d;
display = disp; display = disp;
c = new CustomCanvas(); c = new CustomCanvas();
@ -60,7 +60,7 @@ public class SwingWindow extends JFrame {
addComponentListener(new ComponentListener() { addComponentListener(new ComponentListener() {
@Override @Override
public void componentHidden(ComponentEvent e) { public void componentHidden(ComponentEvent e) {
DisplayManager.display.destroy(); DisplayManager.engine.destroy();
} }
@Override @Override
@ -231,7 +231,7 @@ public class SwingWindow extends JFrame {
final int[] a = ((DataBufferInt) display.g.getRaster().getDataBuffer()).getData(); final int[] a = ((DataBufferInt) display.g.getRaster().getDataBuffer()).getData();
// System.arraycopy(canvas2d, 0, a, 0, canvas2d.length); // System.arraycopy(canvas2d, 0, a, 0, canvas2d.length);
CPUDisplay.canvas2d = a; CPUEngine.canvas2d = a;
g.clearRect(0, 0, display.size[0], display.size[1]); g.clearRect(0, 0, display.size[0], display.size[1]);
g.drawImage(display.g, 0, 0, null); g.drawImage(display.g, 0, 0, null);
// long time2 = System.nanoTime(); // long time2 = System.nanoTime();

View File

@ -4,19 +4,19 @@ import java.io.IOException;
import org.warp.picalculator.Main; import org.warp.picalculator.Main;
import org.warp.picalculator.Utils; import org.warp.picalculator.Utils;
import org.warp.picalculator.gui.graphicengine.Drawable; import org.warp.picalculator.gui.graphicengine.RenderingLoop;
import org.warp.picalculator.gui.graphicengine.RAWFont; import org.warp.picalculator.gui.graphicengine.BinaryFont;
import org.warp.picalculator.gui.graphicengine.RAWSkin; import org.warp.picalculator.gui.graphicengine.Skin;
import com.jogamp.opengl.GLProfile; import com.jogamp.opengl.GLProfile;
import com.jogamp.opengl.egl.EGL; import com.jogamp.opengl.egl.EGL;
public class GPUDisplay implements org.warp.picalculator.gui.graphicengine.Display { public class GPUEngine implements org.warp.picalculator.gui.graphicengine.GraphicEngine {
private volatile boolean initialized = false; private volatile boolean initialized = false;
private volatile boolean created = false; private volatile boolean created = false;
private NEWTWindow wnd; private NEWTWindow wnd;
private Drawable d; private RenderingLoop d;
private GPURenderer r; private GPURenderer r;
int[] size = new int[]{Main.screenSize[0], Main.screenSize[1]}; int[] size = new int[]{Main.screenSize[0], Main.screenSize[1]};
@ -86,7 +86,7 @@ public class GPUDisplay implements org.warp.picalculator.gui.graphicengine.Displ
} }
@Override @Override
public void start(Drawable d) { public void start(RenderingLoop d) {
this.d = d; this.d = d;
wnd.window.setVisible(true); wnd.window.setVisible(true);
} }
@ -104,12 +104,12 @@ public class GPUDisplay implements org.warp.picalculator.gui.graphicengine.Displ
} }
@Override @Override
public RAWFont loadFont(String file) throws IOException { public BinaryFont loadFont(String file) throws IOException {
return new GPUFont(file); return new GPUFont(file);
} }
@Override @Override
public RAWSkin loadSkin(String file) throws IOException { public Skin loadSkin(String file) throws IOException {
return new GPUSkin(file); return new GPUSkin(file);
} }
@ -126,7 +126,7 @@ public class GPUDisplay implements org.warp.picalculator.gui.graphicengine.Displ
@Override @Override
public boolean isSupported() { public boolean isSupported() {
return GLProfile.isAnyAvailable() == false; return GLProfile.isAvailable(GLProfile.GL2ES1);
} }
} }

View File

@ -6,14 +6,14 @@ import java.io.IOException;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import org.warp.picalculator.gui.graphicengine.Display; import org.warp.picalculator.gui.graphicengine.GraphicEngine;
import org.warp.picalculator.gui.graphicengine.RAWFont; import org.warp.picalculator.gui.graphicengine.BinaryFont;
import org.warp.picalculator.gui.graphicengine.cpu.CPUFont; import org.warp.picalculator.gui.graphicengine.cpu.CPUFont;
import com.jogamp.opengl.GLException; import com.jogamp.opengl.GLException;
import com.jogamp.opengl.util.texture.Texture; import com.jogamp.opengl.util.texture.Texture;
public class GPUFont implements RAWFont { public class GPUFont implements BinaryFont {
public Texture texture; public Texture texture;
public int textureW; public int textureW;
@ -100,7 +100,7 @@ public class GPUFont implements RAWFont {
} }
@Override @Override
public void initialize(Display d) { public void initialize(GraphicEngine d) {
genTexture(tmpFont.rawchars); genTexture(tmpFont.rawchars);
tmpFont.chars32 = null; tmpFont.chars32 = null;
tmpFont.rawchars = null; tmpFont.rawchars = null;
@ -109,7 +109,7 @@ public class GPUFont implements RAWFont {
} }
@Override @Override
public void use(Display d) { public void use(GraphicEngine d) {
if (!initialized) { if (!initialized) {
initialize(d); initialize(d);
} }

View File

@ -11,7 +11,7 @@ import java.nio.Buffer;
import java.nio.FloatBuffer; import java.nio.FloatBuffer;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import org.warp.picalculator.gui.graphicengine.RAWFont; import org.warp.picalculator.gui.graphicengine.BinaryFont;
import org.warp.picalculator.gui.graphicengine.Renderer; import org.warp.picalculator.gui.graphicengine.Renderer;
import com.jogamp.common.nio.Buffers; import com.jogamp.common.nio.Buffers;
@ -112,12 +112,12 @@ public class GPURenderer implements Renderer {
} }
@Override @Override
public void glDrawLine(int x0, int y0, int x1, int y1) { public void glDrawLine(float x0, float y0, float x1, float y1) {
glFillColor(x0, y0, x1-x0+1, y1-y0+1); glFillColor(x0, y0, x1-x0+1, y1-y0+1);
} }
@Override @Override
public void glFillRect(int x, int y, int width, int height, float uvX, float uvY, float uvWidth, float uvHeight) { public void glFillRect(float x, float y, float width, float height, float uvX, float uvY, float uvWidth, float uvHeight) {
enableTexture(); enableTexture();
uvWidth/=currentTexWidth; uvWidth/=currentTexWidth;
uvX/=currentTexWidth; uvX/=currentTexWidth;
@ -132,7 +132,7 @@ public class GPURenderer implements Renderer {
} }
@Override @Override
public void glFillColor(int x0, int y0, int w1, int h1) { public void glFillColor(float x0, float y0, float w1, float h1) {
disableTexture(); disableTexture();
final float[] vertices = { x0, y0, 0.0f, x0, y0 + h1, 0.0f, x0 + w1, y0, 0.0f, x0 + w1, y0 + h1, 0.0f, }; final float[] vertices = { x0, y0, 0.0f, x0, y0 + h1, 0.0f, x0 + w1, y0, 0.0f, x0 + w1, y0 + h1, 0.0f, };
final float[] tex_vertices = { 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, }; final float[] tex_vertices = { 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, };
@ -143,7 +143,7 @@ public class GPURenderer implements Renderer {
} }
@Override @Override
public void glDrawStringLeft(int x, int y, String text) { public void glDrawStringLeft(float x, float y, String text) {
final int txtLen = text.length(); final int txtLen = text.length();
int[] txtArray = currentFont.getCharIndexes(text); int[] txtArray = currentFont.getCharIndexes(text);
int tableIndexX; int tableIndexX;
@ -151,22 +151,22 @@ public class GPURenderer implements Renderer {
for (int currentCharIndex = 0; currentCharIndex < txtLen; currentCharIndex++) { for (int currentCharIndex = 0; currentCharIndex < txtLen; currentCharIndex++) {
tableIndexX = txtArray[currentCharIndex] % currentFont.memoryWidthOfEachColumn; tableIndexX = txtArray[currentCharIndex] % currentFont.memoryWidthOfEachColumn;
tableIndexY = (txtArray[currentCharIndex] - tableIndexX) / currentFont.memoryWidthOfEachColumn; tableIndexY = (txtArray[currentCharIndex] - tableIndexX) / currentFont.memoryWidthOfEachColumn;
glFillRect(x + currentCharIndex * (currentFont.charW + 1), y, currentFont.charW, currentFont.charH, tableIndexX*currentFont.charW, tableIndexY*currentFont.charH, currentFont.charW, currentFont.charH); glFillRect(x + ((float)currentCharIndex) * ((float)(currentFont.charW + 1)), y, currentFont.charW, currentFont.charH, tableIndexX*currentFont.charW, tableIndexY*currentFont.charH, currentFont.charW, currentFont.charH);
} }
} }
@Override @Override
public void glDrawStringCenter(int x, int y, String text) { public void glDrawStringCenter(float x, float y, String text) {
glDrawStringLeft(x - (currentFont.getStringWidth(text) / 2), y, text); glDrawStringLeft(x - (currentFont.getStringWidth(text) / 2), y, text);
} }
@Override @Override
public void glDrawStringRight(int x, int y, String text) { public void glDrawStringRight(float x, float y, String text) {
glDrawStringLeft(x - currentFont.getStringWidth(text), y, text); glDrawStringLeft(x - currentFont.getStringWidth(text), y, text);
} }
@Override @Override
public RAWFont getCurrentFont() { public BinaryFont getCurrentFont() {
return currentFont; return currentFont;
} }

View File

@ -2,14 +2,14 @@ package org.warp.picalculator.gui.graphicengine.gpu;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.io.IOException; import java.io.IOException;
import org.warp.picalculator.gui.graphicengine.Display; import org.warp.picalculator.gui.graphicengine.GraphicEngine;
import org.warp.picalculator.gui.graphicengine.RAWSkin; import org.warp.picalculator.gui.graphicengine.Skin;
import com.jogamp.opengl.GL2ES1; import com.jogamp.opengl.GL2ES1;
import com.jogamp.opengl.GLException; import com.jogamp.opengl.GLException;
import com.jogamp.opengl.util.texture.Texture; import com.jogamp.opengl.util.texture.Texture;
public class GPUSkin implements RAWSkin { public class GPUSkin implements Skin {
public Texture t; public Texture t;
public int w; public int w;
@ -31,7 +31,7 @@ public class GPUSkin implements RAWSkin {
} }
@Override @Override
public void initialize(Display d) { public void initialize(GraphicEngine d) {
try { try {
BufferedImage i = GPURenderer.openTexture(texturePath); BufferedImage i = GPURenderer.openTexture(texturePath);
GL2ES1 gl = ((GPURenderer)d.getRenderer()).gl; GL2ES1 gl = ((GPURenderer)d.getRenderer()).gl;
@ -47,7 +47,7 @@ public class GPUSkin implements RAWSkin {
} }
@Override @Override
public void use(Display d) { public void use(GraphicEngine d) {
if (!initialized) { if (!initialized) {
initialize(d); initialize(d);
} }

View File

@ -36,6 +36,10 @@ import com.jogamp.opengl.GLProfile;
import com.jogamp.opengl.fixedfunc.GLMatrixFunc; import com.jogamp.opengl.fixedfunc.GLMatrixFunc;
import com.jogamp.opengl.fixedfunc.GLPointerFunc; import com.jogamp.opengl.fixedfunc.GLPointerFunc;
import com.jogamp.opengl.GLCapabilities; import com.jogamp.opengl.GLCapabilities;
import com.jogamp.nativewindow.util.DimensionImmutable;
import com.jogamp.nativewindow.util.PixelFormat;
import com.jogamp.nativewindow.util.PixelRectangle;
import com.jogamp.newt.NewtFactory;
import com.jogamp.newt.event.KeyEvent; import com.jogamp.newt.event.KeyEvent;
import com.jogamp.newt.event.KeyListener; import com.jogamp.newt.event.KeyListener;
import com.jogamp.newt.event.WindowEvent; import com.jogamp.newt.event.WindowEvent;
@ -47,11 +51,13 @@ import com.jogamp.opengl.util.*;
import java.awt.event.ComponentEvent; import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener; import java.awt.event.ComponentListener;
import java.nio.ByteBuffer;
import java.util.Collection;
import org.warp.picalculator.device.Keyboard; import org.warp.picalculator.device.Keyboard;
import org.warp.picalculator.device.Keyboard.Key; import org.warp.picalculator.device.Keyboard.Key;
import org.warp.picalculator.gui.DisplayManager; import org.warp.picalculator.gui.DisplayManager;
import org.warp.picalculator.gui.graphicengine.Display; import org.warp.picalculator.gui.graphicengine.GraphicEngine;
/** /**
* <pre> * <pre>
@ -88,12 +94,12 @@ import org.warp.picalculator.gui.graphicengine.Display;
* @author Xerxes Rånby (xranby) * @author Xerxes Rånby (xranby)
*/ */
public class NEWTWindow implements GLEventListener { class NEWTWindow implements GLEventListener {
private final GPUDisplay disp; private final GPUEngine disp;
private final GPURenderer renderer; private final GPURenderer renderer;
public NEWTWindow(GPUDisplay disp) { public NEWTWindow(GPUEngine disp) {
this.disp = disp; this.disp = disp;
renderer = disp.getRenderer(); renderer = disp.getRenderer();
} }
@ -116,13 +122,16 @@ public class NEWTWindow implements GLEventListener {
System.out.println("Loading OpenGL..."); System.out.println("Loading OpenGL...");
System.out.println(GLProfile.glAvailabilityToString()); System.out.println(GLProfile.glAvailabilityToString());
if (GLProfile.isAnyAvailable()) { if (!GLProfile.isAvailable(GLProfile.GL2ES1)) {
System.err.println("Le OpenGL non sono presenti su questo computer!"); System.err.println("Le OpenGL non sono presenti su questo computer!");
return;
} }
System.setProperty("jnlp.newt.window.icons", "res/icons/calculator-016.png res/icons/calculator-018.png res/icons/calculator-256.png");
final GLCapabilities caps = new GLCapabilities(GLProfile.get(GLProfile.GL2ES1)); final GLCapabilities caps = new GLCapabilities(GLProfile.get(GLProfile.GL2ES1));
System.out.println("Loaded OpenGL"); System.out.println("Loaded OpenGL");
// We may at this point tweak the caps and request a translucent drawable // We may at this point tweak the caps and request a translucent drawable
caps.setBackgroundOpaque(true); //transparency window caps.setBackgroundOpaque(true); //transparency window
caps.setSampleBuffers(false);
final GLWindow glWindow = GLWindow.create(caps); final GLWindow glWindow = GLWindow.create(caps);
window = glWindow; window = glWindow;
@ -138,7 +147,7 @@ public class NEWTWindow implements GLEventListener {
@Override @Override
public void windowDestroyed(WindowEvent e) { public void windowDestroyed(WindowEvent e) {
DisplayManager.display.destroy(); DisplayManager.engine.destroy();
} }
@Override @Override
@ -299,10 +308,11 @@ public class NEWTWindow implements GLEventListener {
//Textures //Textures
gl.glEnable(GL.GL_TEXTURE_2D); gl.glEnable(GL.GL_TEXTURE_2D);
//Transparency //Transparency
gl.glEnable(GL2ES1.GL_BLEND); gl.glEnable(GL2ES1.GL_BLEND);
gl.glBlendFunc(GL2ES1.GL_SRC_ALPHA, GL2ES1.GL_ONE_MINUS_SRC_ALPHA); gl.glBlendFunc(GL2ES1.GL_SRC_ALPHA, GL2ES1.GL_ONE_MINUS_SRC_ALPHA);
gl.glShadeModel(GL2ES1.GL_SMOOTH);
try { try {
renderer.currentTex = ((GPUSkin) disp.loadSkin("test.png")).t; renderer.currentTex = ((GPUSkin) disp.loadSkin("test.png")).t;

View File

@ -28,7 +28,7 @@ public class ChooseVariableValueScreen extends Screen {
@Override @Override
public void render() { public void render() {
Utils.getFont(false, true).use(DisplayManager.display); Utils.getFont(false, true).use(DisplayManager.engine);
DisplayManager.renderer.glColor4i(0, 0, 0, 64); DisplayManager.renderer.glColor4i(0, 0, 0, 64);
DisplayManager.renderer.glDrawStringCenter(Main.screenSize[0] / 2 + 1, Main.screenSize[1] / 2 - 20, "WORK IN PROGRESS."); DisplayManager.renderer.glDrawStringCenter(Main.screenSize[0] / 2 + 1, Main.screenSize[1] / 2 - 20, "WORK IN PROGRESS.");
DisplayManager.renderer.glDrawStringCenter(Main.screenSize[0] / 2, Main.screenSize[1] / 2 - 20 + 1, "WORK IN PROGRESS."); DisplayManager.renderer.glDrawStringCenter(Main.screenSize[0] / 2, Main.screenSize[1] / 2 - 20 + 1, "WORK IN PROGRESS.");
@ -36,7 +36,7 @@ public class ChooseVariableValueScreen extends Screen {
DisplayManager.renderer.glColor3i(255, 0, 0); DisplayManager.renderer.glColor3i(255, 0, 0);
DisplayManager.renderer.glDrawStringCenter(Main.screenSize[0] / 2, Main.screenSize[1] / 2 - 20, "WORK IN PROGRESS."); DisplayManager.renderer.glDrawStringCenter(Main.screenSize[0] / 2, Main.screenSize[1] / 2 - 20, "WORK IN PROGRESS.");
Utils.getFont(false, false).use(DisplayManager.display); Utils.getFont(false, false).use(DisplayManager.engine);
DisplayManager.renderer.glColor4i(0, 0, 0, 64); DisplayManager.renderer.glColor4i(0, 0, 0, 64);
DisplayManager.renderer.glDrawStringCenter(Main.screenSize[0] / 2 + 1, Main.screenSize[1] / 2, "THIS SCREEN MUST HAVE A GUI TO SELECT THE VARIABLE TO SOLVE."); DisplayManager.renderer.glDrawStringCenter(Main.screenSize[0] / 2 + 1, Main.screenSize[1] / 2, "THIS SCREEN MUST HAVE A GUI TO SELECT THE VARIABLE TO SOLVE.");
DisplayManager.renderer.glDrawStringCenter(Main.screenSize[0] / 2, Main.screenSize[1] / 2 + 1, "THIS SCREEN MUST HAVE A GUI TO SELECT THE VARIABLE TO SOLVE."); DisplayManager.renderer.glDrawStringCenter(Main.screenSize[0] / 2, Main.screenSize[1] / 2 + 1, "THIS SCREEN MUST HAVE A GUI TO SELECT THE VARIABLE TO SOLVE.");

View File

@ -30,18 +30,18 @@ public class KeyboardDebugScreen extends Screen {
@Override @Override
public void render() { public void render() {
Renderer renderer = DisplayManager.renderer; Renderer renderer = DisplayManager.renderer;
fonts[2].use(DisplayManager.display); fonts[2].use(DisplayManager.engine);
renderer.glColor4f(0.75f, 0.0f, 0.0f, 1.0f); renderer.glColor4f(0.75f, 0.0f, 0.0f, 1.0f);
renderer.glDrawStringRight(Main.screenSize[0] - 10, 30, "-" + keyevent.toUpperCase() + "-"); renderer.glDrawStringRight(Main.screenSize[0] - 10, 30, "-" + keyevent.toUpperCase() + "-");
if (keyevent != "NONE") { if (keyevent != "NONE") {
fonts[2].use(DisplayManager.display); fonts[2].use(DisplayManager.engine);
renderer.glColor4f(0.0f, 0.0f, 0.0f, 1.0f); renderer.glColor4f(0.0f, 0.0f, 0.0f, 1.0f);
renderer.glDrawStringLeft(10, 30, "Key position"); renderer.glDrawStringLeft(10, 30, "Key position");
renderer.glDrawStringLeft(10, 45, "X: " + keyX + ", Y:" + keyY); renderer.glDrawStringLeft(10, 45, "X: " + keyX + ", Y:" + keyY);
renderer.glDrawStringLeft(10, 65, "Key value"); renderer.glDrawStringLeft(10, 65, "Key value");
renderer.glDrawStringLeft(10, 80, key); renderer.glDrawStringLeft(10, 80, key);
} }
fonts[3].use(DisplayManager.display); fonts[3].use(DisplayManager.engine);
renderer.glColor4f(0.0f, 0.0f, 0.0f, 1.0f); renderer.glColor4f(0.0f, 0.0f, 0.0f, 1.0f);
for (int i = 0; i < 5; i++) { for (int i = 0; i < 5; i++) {
if (log[i] != null) { if (log[i] != null) {
@ -53,10 +53,10 @@ public class KeyboardDebugScreen extends Screen {
renderer.glColor4f(0.0f, 0.0f, 0.0f, 1.0f); renderer.glColor4f(0.0f, 0.0f, 0.0f, 1.0f);
renderer.glFillColor(-80 + 100 + 200, 90, 5, 5); renderer.glFillColor(-80 + 100 + 200, 90, 5, 5);
renderer.glFillColor(-80 + 100, 100, 200, 70); renderer.glFillColor(-80 + 100, 100, 200, 70);
fonts[2].use(DisplayManager.display); fonts[2].use(DisplayManager.engine);
renderer.glColor4f(1.0f, 1.0f, 1.0f, 1.0f); renderer.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
renderer.glDrawStringCenter(-80 + 100 + 200 / 2, 100 + 70 / 2 - (renderer.getCurrentFont().getCharacterHeight() / 2), "FROM SERIAL"); renderer.glDrawStringCenter(-80 + 100 + 200 / 2, 100 + 70 / 2 - (renderer.getCurrentFont().getCharacterHeight() / 2), "FROM SERIAL");
fonts[3].use(DisplayManager.display); fonts[3].use(DisplayManager.engine);
renderer.glColor4f(0.0f, 0.0f, 1.0f, 1.0f); renderer.glColor4f(0.0f, 0.0f, 1.0f, 1.0f);
for (int i = 0; i < 8; i++) { for (int i = 0; i < 8; i++) {
if (pinsA[i] == 1) { if (pinsA[i] == 1) {
@ -99,10 +99,10 @@ public class KeyboardDebugScreen extends Screen {
renderer.glColor4f(0.0f, 0.0f, 0.0f, 1.0f); renderer.glColor4f(0.0f, 0.0f, 0.0f, 1.0f);
renderer.glFillColor(150 + 90, 200, 5, 5); renderer.glFillColor(150 + 90, 200, 5, 5);
renderer.glFillColor(150 + 100, 100, 200, 70); renderer.glFillColor(150 + 100, 100, 200, 70);
fonts[2].use(DisplayManager.display); fonts[2].use(DisplayManager.engine);
renderer.glColor4f(1.0f, 1.0f, 1.0f, 1.0f); renderer.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
renderer.glDrawStringCenter(150 + 100 + 200 / 2, 100 + 70 / 2 - (renderer.getCurrentFont().getCharacterHeight() / 2), "TO SERIAL"); renderer.glDrawStringCenter(150 + 100 + 200 / 2, 100 + 70 / 2 - (renderer.getCurrentFont().getCharacterHeight() / 2), "TO SERIAL");
fonts[3].use(DisplayManager.display); fonts[3].use(DisplayManager.engine);
renderer.glColor4f(0.0f, 0.0f, 1.0f, 1.0f); renderer.glColor4f(0.0f, 0.0f, 1.0f, 1.0f);
for (int i = 15; i >= 8; i--) { for (int i = 15; i >= 8; i--) {
if (pinsB[i] == 1) { if (pinsB[i] == 1) {

View File

@ -43,31 +43,13 @@ public class LoadingScreen extends Screen {
@Override @Override
public void render() { public void render() {
fonts[2].use(DisplayManager.display); DisplayManager.guiSkin.use(DisplayManager.engine);
DisplayManager.renderer.glClearColor(0xFF000000);
DisplayManager.renderer.glClear(DisplayManager.display.getWidth(), DisplayManager.display.getWidth());
DisplayManager.renderer.glColor3i(230, 33, 23);
DisplayManager.renderer.glDrawStringCenter((Main.screenSize[0] / 2) - 1, (int) ((Main.screenSize[1] / 2) - 25 + loadingTextTranslation), titleString);
DisplayManager.renderer.glDrawStringCenter((Main.screenSize[0] / 2) - 2, (int) ((Main.screenSize[1] / 2) - 25 + loadingTextTranslation), titleString);
DisplayManager.renderer.glDrawStringCenter((Main.screenSize[0] / 2) + 1, (int) ((Main.screenSize[1] / 2) - 25 + loadingTextTranslation), titleString);
DisplayManager.renderer.glDrawStringCenter((Main.screenSize[0] / 2) + 2, (int) ((Main.screenSize[1] / 2) - 25 + loadingTextTranslation), titleString);
DisplayManager.renderer.glDrawStringCenter((Main.screenSize[0] / 2), (int) ((Main.screenSize[1] / 2) - 25 - 1 + loadingTextTranslation), titleString);
DisplayManager.renderer.glDrawStringCenter((Main.screenSize[0] / 2), (int) ((Main.screenSize[1] / 2) - 25 - 2 + loadingTextTranslation), titleString);
DisplayManager.renderer.glDrawStringCenter((Main.screenSize[0] / 2), (int) ((Main.screenSize[1] / 2) - 25 + 1 + loadingTextTranslation), titleString);
DisplayManager.renderer.glDrawStringCenter((Main.screenSize[0] / 2), (int) ((Main.screenSize[1] / 2) - 25 + 2 + loadingTextTranslation), titleString);
DisplayManager.renderer.glDrawStringCenter((Main.screenSize[0] / 2) + 1, (int) ((Main.screenSize[1] / 2) - 25 + 1 + loadingTextTranslation), titleString);
DisplayManager.renderer.glDrawStringCenter((Main.screenSize[0] / 2) - 1, (int) ((Main.screenSize[1] / 2) - 25 + 1 + loadingTextTranslation), titleString);
DisplayManager.renderer.glDrawStringCenter((Main.screenSize[0] / 2) - 1, (int) ((Main.screenSize[1] / 2) - 25 - 1 + loadingTextTranslation), titleString);
DisplayManager.renderer.glDrawStringCenter((Main.screenSize[0] / 2) + 1, (int) ((Main.screenSize[1] / 2) - 25 - 1 + loadingTextTranslation), titleString);
DisplayManager.renderer.glColor3i(255, 255, 255); DisplayManager.renderer.glColor3i(255, 255, 255);
DisplayManager.renderer.glDrawStringCenter((Main.screenSize[0] / 2), (int) ((Main.screenSize[1] / 2) - 25 + loadingTextTranslation), titleString); DisplayManager.renderer.glFillRect(Main.screenSize[0]/2f-80, Main.screenSize[1]/2f-64, 160, 48, 0, 32, 160, 48);
DisplayManager.renderer.glColor4f(0.0f, 0.0f, 0.0f, 0.75f); DisplayManager.renderer.glFillRect(Main.screenSize[0]/2f-24, Main.screenSize[1]/2f-loadingTextTranslation, 48, 48, 160, 32, 48, 48);
fonts[0].use(DisplayManager.display);
DisplayManager.renderer.glDrawStringCenter((Main.screenSize[0] / 2), (Main.screenSize[1] / 2) + 11, "LOADING"); DisplayManager.renderer.glFillRect(Main.screenSize[0]-224, Main.screenSize[1]-48, 224, 48, 0, 80, 224, 48);
fonts[1].use(DisplayManager.display); DisplayManager.renderer.glFillRect(Main.screenSize[0]-160-24-224, Main.screenSize[1]-48, 160, 48, 224, 80, 160, 48);
DisplayManager.renderer.glColor4f(0.0f, 0.0f, 0.0f, 0.5f);
DisplayManager.renderer.glDrawStringCenter((Main.screenSize[0] / 2), (Main.screenSize[1] / 2) + 22, "PLEASE WAIT...");
} }

View File

@ -9,12 +9,12 @@ import org.warp.picalculator.Main;
import org.warp.picalculator.device.Keyboard; import org.warp.picalculator.device.Keyboard;
import org.warp.picalculator.device.Keyboard.Key; import org.warp.picalculator.device.Keyboard.Key;
import org.warp.picalculator.gui.DisplayManager; import org.warp.picalculator.gui.DisplayManager;
import org.warp.picalculator.gui.graphicengine.RAWSkin; import org.warp.picalculator.gui.graphicengine.Skin;
public class MarioScreen extends Screen { public class MarioScreen extends Screen {
private RAWSkin skin; private Skin skin;
private RAWSkin groundskin; private Skin groundskin;
private boolean errored; private boolean errored;
public float[] marioPos = new float[] { 30, 0 }; public float[] marioPos = new float[] { 30, 0 };
public float[] marioForces = new float[] { 0, 0 }; public float[] marioForces = new float[] { 0, 0 };
@ -35,8 +35,8 @@ public class MarioScreen extends Screen {
@Override @Override
public void init() { public void init() {
try { try {
skin = DisplayManager.display.loadSkin("marioskin.png"); skin = DisplayManager.engine.loadSkin("marioskin.png");
groundskin = DisplayManager.display.loadSkin("marioground.png"); groundskin = DisplayManager.engine.loadSkin("marioground.png");
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -125,8 +125,8 @@ public class MarioScreen extends Screen {
if (errored) { if (errored) {
DisplayManager.renderer.glDrawStringLeft(0, 20, "ERROR"); DisplayManager.renderer.glDrawStringLeft(0, 20, "ERROR");
} else { } else {
DisplayManager.fonts[0].use(DisplayManager.display); DisplayManager.fonts[0].use(DisplayManager.engine);
groundskin.use(DisplayManager.display); groundskin.use(DisplayManager.engine);
DisplayManager.renderer.glFillRect(16 * 0, 25 + 25, 16, 16, 0, 0, 16, 16); DisplayManager.renderer.glFillRect(16 * 0, 25 + 25, 16, 16, 0, 0, 16, 16);
DisplayManager.renderer.glFillRect(16 * 1, 25 + 25, 16, 16, 0, 0, 16, 16); DisplayManager.renderer.glFillRect(16 * 1, 25 + 25, 16, 16, 0, 0, 16, 16);
DisplayManager.renderer.glFillRect(16 * 2, 25 + 25, 16, 16, 0, 0, 16, 16); DisplayManager.renderer.glFillRect(16 * 2, 25 + 25, 16, 16, 0, 0, 16, 16);
@ -165,7 +165,7 @@ public class MarioScreen extends Screen {
// glDrawStringRight(0, Main.screenSize[1]-glGetCurrentFontHeight(), "G"); // glDrawStringRight(0, Main.screenSize[1]-glGetCurrentFontHeight(), "G");
//DRAW MARIO //DRAW MARIO
skin.use(DisplayManager.display); skin.use(DisplayManager.engine);
DisplayManager.renderer.glFillRect(getPosX() - 18, 25 + getPosY(), 35, 27, 35 * (marioSkinPos[0] + 1), 27 * marioSkinPos[1], 35, 27); DisplayManager.renderer.glFillRect(getPosX() - 18, 25 + getPosY(), 35, 27, 35 * (marioSkinPos[0] + 1), 27 * marioSkinPos[1], 35, 27);
// PIDisplay.renderer.glDrawSkin(getPosX() - 18, 25 + getPosY(), 35 * (marioSkinPos[0] + (flipped ? 2 : 1)), 27 * marioSkinPos[1], 35 * (marioSkinPos[0] + (flipped ? 1 : 2)), 27 * (marioSkinPos[1] + 1), true); // PIDisplay.renderer.glDrawSkin(getPosX() - 18, 25 + getPosY(), 35 * (marioSkinPos[0] + (flipped ? 2 : 1)), 27 * marioSkinPos[1], 35 * (marioSkinPos[0] + (flipped ? 1 : 2)), 27 * (marioSkinPos[1] + 1), true);
} }

View File

@ -16,7 +16,7 @@ import org.warp.picalculator.Utils;
import org.warp.picalculator.device.Keyboard; import org.warp.picalculator.device.Keyboard;
import org.warp.picalculator.device.Keyboard.Key; import org.warp.picalculator.device.Keyboard.Key;
import org.warp.picalculator.gui.DisplayManager; import org.warp.picalculator.gui.DisplayManager;
import org.warp.picalculator.gui.graphicengine.RAWFont; import org.warp.picalculator.gui.graphicengine.BinaryFont;
import org.warp.picalculator.gui.graphicengine.Renderer; import org.warp.picalculator.gui.graphicengine.Renderer;
import org.warp.picalculator.math.AngleMode; import org.warp.picalculator.math.AngleMode;
import org.warp.picalculator.math.Calculator; import org.warp.picalculator.math.Calculator;
@ -142,7 +142,7 @@ public class MathInputScreen extends Screen {
} }
} }
private static final RAWFont fontBig = Utils.getFont(false); private static final BinaryFont fontBig = Utils.getFont(false);
@Override @Override
public void renderStatusbar() { public void renderStatusbar() {
@ -161,7 +161,7 @@ public class MathInputScreen extends Screen {
@Override @Override
public void render() { public void render() {
fontBig.use(DisplayManager.display); fontBig.use(DisplayManager.engine);
final int textColor = 0xFF000000; final int textColor = 0xFF000000;
final int padding = 4; final int padding = 4;
DisplayManager.renderer.glColor(textColor); DisplayManager.renderer.glColor(textColor);
@ -221,14 +221,14 @@ public class MathInputScreen extends Screen {
int bottomSpacing = 0; int bottomSpacing = 0;
for (final Function f : calc.f2) { for (final Function f : calc.f2) {
bottomSpacing += f.getHeight() + 2; bottomSpacing += f.getHeight() + 2;
f.draw(DisplayManager.display.getWidth() - 2 - f.getWidth(), DisplayManager.display.getHeight() - bottomSpacing); f.draw(DisplayManager.engine.getWidth() - 2 - f.getWidth(), DisplayManager.engine.getHeight() - bottomSpacing);
} }
if (calc.resultsCount > 1 && calc.resultsCount != calc.f2.size()) { if (calc.resultsCount > 1 && calc.resultsCount != calc.f2.size()) {
final String resultsCountText = calc.resultsCount + " total results".toUpperCase(); final String resultsCountText = calc.resultsCount + " total results".toUpperCase();
DisplayManager.renderer.glColor(0xFF9AAEA0); DisplayManager.renderer.glColor(0xFF9AAEA0);
Utils.getFont(true).use(DisplayManager.display); Utils.getFont(true).use(DisplayManager.engine);
bottomSpacing += fontBig.getCharacterHeight() + 2; bottomSpacing += fontBig.getCharacterHeight() + 2;
DisplayManager.renderer.glDrawStringRight(DisplayManager.display.getWidth() - 2, DisplayManager.display.getHeight() - bottomSpacing, resultsCountText); DisplayManager.renderer.glDrawStringRight(DisplayManager.engine.getWidth() - 2, DisplayManager.engine.getHeight() - bottomSpacing, resultsCountText);
} }
} }
} }

View File

@ -5,7 +5,7 @@ import java.util.ArrayList;
import org.warp.picalculator.Error; import org.warp.picalculator.Error;
import org.warp.picalculator.Utils; import org.warp.picalculator.Utils;
import org.warp.picalculator.gui.DisplayManager; import org.warp.picalculator.gui.DisplayManager;
import org.warp.picalculator.gui.graphicengine.cpu.CPUDisplay; import org.warp.picalculator.gui.graphicengine.cpu.CPUEngine;
import org.warp.picalculator.math.Calculator; import org.warp.picalculator.math.Calculator;
import com.rits.cloning.Cloner; import com.rits.cloning.Cloner;
@ -83,7 +83,7 @@ public abstract class AnteriorFunction implements Function {
variable.setSmall(small); variable.setSmall(small);
variable.generateGraphics(); variable.generateGraphics();
width = DisplayManager.renderer.glGetStringWidth(Utils.getFont(small), getSymbol()) + 1 + getVariable().getWidth(); width = Utils.getFont(small).getStringWidth(getSymbol()) + 1 + getVariable().getWidth();
height = variable.getHeight(); height = variable.getHeight();
line = variable.getLine(); line = variable.getLine();
} }
@ -91,10 +91,10 @@ public abstract class AnteriorFunction implements Function {
@Override @Override
public void draw(int x, int y) { public void draw(int x, int y) {
final float h1 = getVariable().getHeight(); final float h1 = getVariable().getHeight();
final int wsegno = DisplayManager.renderer.glGetStringWidth(Utils.getFont(small), getSymbol()); final int wsegno = Utils.getFont(small).getStringWidth(getSymbol());
final float hsegno = Utils.getFontHeight(small); final float hsegno = Utils.getFontHeight(small);
final float maxh = getHeight(); final float maxh = getHeight();
DisplayManager.renderer.glSetFont(Utils.getFont(small)); Utils.getFont(small).use(DisplayManager.engine);
DisplayManager.renderer.glDrawStringLeft(x, (int) Math.floor(y + (maxh - hsegno) / 2), getSymbol()); DisplayManager.renderer.glDrawStringLeft(x, (int) Math.floor(y + (maxh - hsegno) / 2), getSymbol());
getVariable().draw(x + wsegno + 1, (int) Math.floor(y + (maxh - h1) / 2)); getVariable().draw(x + wsegno + 1, (int) Math.floor(y + (maxh - h1) / 2));

View File

@ -5,7 +5,7 @@ import java.util.ArrayList;
import org.warp.picalculator.Error; import org.warp.picalculator.Error;
import org.warp.picalculator.Utils; import org.warp.picalculator.Utils;
import org.warp.picalculator.gui.DisplayManager; import org.warp.picalculator.gui.DisplayManager;
import org.warp.picalculator.gui.graphicengine.cpu.CPUDisplay; import org.warp.picalculator.gui.graphicengine.cpu.CPUEngine;
import org.warp.picalculator.math.Calculator; import org.warp.picalculator.math.Calculator;
import org.warp.picalculator.math.MathematicalSymbols; import org.warp.picalculator.math.MathematicalSymbols;
import org.warp.picalculator.math.rules.FractionsRule1; import org.warp.picalculator.math.rules.FractionsRule1;
@ -112,7 +112,7 @@ public class Division extends FunctionTwoValues {
} }
int w1 = 0; int w1 = 0;
int h1 = 0; int h1 = 0;
Utils.getFont(small).use(DisplayManager.display); Utils.getFont(small).use(DisplayManager.engine);
if (minus) { if (minus) {
w1 = Utils.getFont(small).getStringWidth(numerator); w1 = Utils.getFont(small).getStringWidth(numerator);
h1 = Utils.getFont(small).getCharacterHeight(); h1 = Utils.getFont(small).getCharacterHeight();

View File

@ -5,7 +5,7 @@ import java.util.List;
import org.warp.picalculator.Error; import org.warp.picalculator.Error;
import org.warp.picalculator.Utils; import org.warp.picalculator.Utils;
import org.warp.picalculator.gui.DisplayManager; import org.warp.picalculator.gui.DisplayManager;
import org.warp.picalculator.gui.graphicengine.cpu.CPUDisplay; import org.warp.picalculator.gui.graphicengine.cpu.CPUEngine;
import org.warp.picalculator.math.Calculator; import org.warp.picalculator.math.Calculator;
public class EmptyNumber implements Function { public class EmptyNumber implements Function {
@ -44,17 +44,17 @@ public class EmptyNumber implements Function {
@Override @Override
public int getWidth() { public int getWidth() {
return DisplayManager.renderer.glGetStringWidth(Utils.getFont(small), ""); return Utils.getFont(small).getStringWidth("");
} }
@Override @Override
public int getHeight() { public int getHeight() {
return Utils.getFont(small).charH; return Utils.getFont(small).getCharacterHeight();
} }
@Override @Override
public int getLine() { public int getLine() {
return Utils.getFont(small).charH / 2; return Utils.getFont(small).getCharacterHeight() / 2;
} }
@Override @Override

View File

@ -5,7 +5,7 @@ import java.util.ArrayList;
import org.warp.picalculator.Error; import org.warp.picalculator.Error;
import org.warp.picalculator.Utils; import org.warp.picalculator.Utils;
import org.warp.picalculator.gui.DisplayManager; import org.warp.picalculator.gui.DisplayManager;
import org.warp.picalculator.gui.graphicengine.cpu.CPUDisplay; import org.warp.picalculator.gui.graphicengine.cpu.CPUEngine;
import org.warp.picalculator.math.Calculator; import org.warp.picalculator.math.Calculator;
import com.rits.cloning.Cloner; import com.rits.cloning.Cloner;
@ -112,7 +112,7 @@ public abstract class FunctionTwoValues implements Function {
variable1.draw(dx + x, ln - variable1.getLine() + y); variable1.draw(dx + x, ln - variable1.getLine() + y);
dx += 1 + variable1.getWidth(); dx += 1 + variable1.getWidth();
if (drawSignum()) { if (drawSignum()) {
Utils.getFont(small).use(DisplayManager.display); Utils.getFont(small).use(DisplayManager.engine);
DisplayManager.renderer.glDrawStringLeft(dx + x, ln - Utils.getFontHeight(small) / 2 + y, getSymbol()); DisplayManager.renderer.glDrawStringLeft(dx + x, ln - Utils.getFontHeight(small) / 2 + y, getSymbol());
dx += Utils.getFont(small).getStringWidth(getSymbol()); dx += Utils.getFont(small).getStringWidth(getSymbol());
} }

View File

@ -5,8 +5,8 @@ import java.util.List;
import org.warp.picalculator.Error; import org.warp.picalculator.Error;
import org.warp.picalculator.Utils; import org.warp.picalculator.Utils;
import org.warp.picalculator.gui.DisplayManager; import org.warp.picalculator.gui.DisplayManager;
import org.warp.picalculator.gui.graphicengine.RAWFont; import org.warp.picalculator.gui.graphicengine.BinaryFont;
import org.warp.picalculator.gui.graphicengine.cpu.CPUDisplay; import org.warp.picalculator.gui.graphicengine.cpu.CPUEngine;
import org.warp.picalculator.math.Calculator; import org.warp.picalculator.math.Calculator;
public class Joke implements Function { public class Joke implements Function {
@ -46,31 +46,31 @@ public class Joke implements Function {
@Override @Override
public void draw(int x, int y) { public void draw(int x, int y) {
final RAWFont rf = DisplayManager.renderer.getCurrentFont(); final BinaryFont rf = DisplayManager.renderer.getCurrentFont();
if (jokesFont[joke] >= 0) { if (jokesFont[joke] >= 0) {
DisplayManager.renderer.glSetFont(DisplayManager.fonts[jokesFont[joke]]); DisplayManager.fonts[jokesFont[joke]].use(DisplayManager.engine);
} }
DisplayManager.renderer.glDrawStringLeft(x, y, jokes[joke]); DisplayManager.renderer.glDrawStringLeft(x, y, jokes[joke]);
if (jokesFont[joke] >= 0) { if (jokesFont[joke] >= 0) {
DisplayManager.renderer.glSetFont(rf); rf.use(DisplayManager.engine);
} }
} }
@Override @Override
public int getWidth() { public int getWidth() {
if (jokesFont[joke] >= 0) { if (jokesFont[joke] >= 0) {
return DisplayManager.renderer.glGetStringWidth(DisplayManager.fonts[jokesFont[joke]], jokes[joke]); return DisplayManager.fonts[jokesFont[joke]].getStringWidth(jokes[joke]);
} else { } else {
return DisplayManager.renderer.glGetStringWidth(Utils.getFont(small), jokes[joke]); return Utils.getFont(small).getStringWidth(jokes[joke]);
} }
} }
@Override @Override
public int getHeight() { public int getHeight() {
if (jokesFont[joke] >= 0) { if (jokesFont[joke] >= 0) {
return DisplayManager.fonts[jokesFont[joke]].charH; return DisplayManager.fonts[jokesFont[joke]].getCharacterHeight();
} else { } else {
return Utils.getFont(small).charH; return Utils.getFont(small).getCharacterHeight();
} }
} }

View File

@ -6,7 +6,7 @@ import org.warp.picalculator.Error;
import org.warp.picalculator.Errors; import org.warp.picalculator.Errors;
import org.warp.picalculator.Utils; import org.warp.picalculator.Utils;
import org.warp.picalculator.gui.DisplayManager; import org.warp.picalculator.gui.DisplayManager;
import org.warp.picalculator.gui.graphicengine.cpu.CPUDisplay; import org.warp.picalculator.gui.graphicengine.cpu.CPUEngine;
import org.warp.picalculator.math.Calculator; import org.warp.picalculator.math.Calculator;
import org.warp.picalculator.math.MathematicalSymbols; import org.warp.picalculator.math.MathematicalSymbols;
import org.warp.picalculator.math.rules.ExpandRule1; import org.warp.picalculator.math.rules.ExpandRule1;
@ -34,7 +34,7 @@ public class Negative extends AnteriorFunction {
variable.generateGraphics(); variable.generateGraphics();
height = getVariable().getHeight(); height = getVariable().getHeight();
width = DisplayManager.renderer.glGetStringWidth(Utils.getFont(small), "-") + getVariable().getWidth(); width = Utils.getFont(small).getCharacterWidth() /* Width of - */ + getVariable().getWidth();
line = getVariable().getLine(); line = getVariable().getLine();
} }

View File

@ -10,7 +10,7 @@ import org.nevec.rjm.BigDecimalMath;
import org.warp.picalculator.Error; import org.warp.picalculator.Error;
import org.warp.picalculator.Utils; import org.warp.picalculator.Utils;
import org.warp.picalculator.gui.DisplayManager; import org.warp.picalculator.gui.DisplayManager;
import org.warp.picalculator.gui.graphicengine.RAWFont; import org.warp.picalculator.gui.graphicengine.BinaryFont;
import org.warp.picalculator.math.Calculator; import org.warp.picalculator.math.Calculator;
import com.rits.cloning.Cloner; import com.rits.cloning.Cloner;
@ -130,7 +130,7 @@ public class Number implements Function {
@Override @Override
public void draw(int x, int y) { public void draw(int x, int y) {
Utils.getFont(small).use(DisplayManager.display); Utils.getFont(small).use(DisplayManager.engine);
String t = toString(); String t = toString();
if (t.startsWith("-")) { if (t.startsWith("-")) {
@ -141,12 +141,12 @@ public class Number implements Function {
} }
} }
if (t.contains("")) { if (t.contains("")) {
final RAWFont defaultf = Utils.getFont(small); final BinaryFont defaultf = Utils.getFont(small);
final RAWFont smallf = Utils.getFont(true); final BinaryFont smallf = Utils.getFont(true);
final String s = t.substring(0, t.indexOf("") + 2); final String s = t.substring(0, t.indexOf("") + 2);
final int sw = defaultf.getStringWidth(s); final int sw = defaultf.getStringWidth(s);
DisplayManager.renderer.glDrawStringLeft(x + 1, y + smallf.getCharacterHeight() - 2, s); DisplayManager.renderer.glDrawStringLeft(x + 1, y + smallf.getCharacterHeight() - 2, s);
smallf.use(DisplayManager.display); smallf.use(DisplayManager.engine);
DisplayManager.renderer.glDrawStringLeft(x + 1 + sw - 3, y, t.substring(t.indexOf("") + 2)); DisplayManager.renderer.glDrawStringLeft(x + 1 + sw - 3, y, t.substring(t.indexOf("") + 2));
} else { } else {
DisplayManager.renderer.glDrawStringLeft(x + 1, y, t); DisplayManager.renderer.glDrawStringLeft(x + 1, y, t);
@ -191,8 +191,8 @@ public class Number implements Function {
} }
} }
if (t.contains("")) { if (t.contains("")) {
final RAWFont defaultf = Utils.getFont(small); final BinaryFont defaultf = Utils.getFont(small);
final RAWFont smallf = Utils.getFont(true); final BinaryFont smallf = Utils.getFont(true);
final String s = t.substring(0, t.indexOf("") + 2); final String s = t.substring(0, t.indexOf("") + 2);
final int sw = defaultf.getStringWidth(s); final int sw = defaultf.getStringWidth(s);
return 1 + sw - 3 + smallf.getStringWidth(t.substring(t.indexOf("") + 2)); return 1 + sw - 3 + smallf.getStringWidth(t.substring(t.indexOf("") + 2));

View File

@ -98,7 +98,9 @@ public class Root extends FunctionTwoValues {
getVariable1().draw(x + 1, y); getVariable1().draw(x + 1, y);
getVariable2().draw(x + 1 + w2 + 2, y + h2 - 2); getVariable2().draw(x + 1 + w2 + 2, y + h2 - 2);
DisplayManager.renderer.glDrawLine(x + 1 + w2 - 2, y + height - 3, x + 1 + w2, y + height); DisplayManager.renderer.glDrawLine(x + 1 + w2 - 2, y + height - 2, x + 1 + w2 - 2, y + height - 2);
DisplayManager.renderer.glDrawLine(x + 1 + w2 - 1, y + height - 1, x + 1 + w2 - 1, y + height - 1);
DisplayManager.renderer.glDrawLine(x + 1 + w2 - 0, y + height - 0, x + 1 + w2 - 0, y + height - 0);
DisplayManager.renderer.glDrawLine(x + 1 + w2, y + height - 1 - hh, x + 1 + w2, y + height - 1); DisplayManager.renderer.glDrawLine(x + 1 + w2, y + height - 1 - hh, x + 1 + w2, y + height - 1);
DisplayManager.renderer.glDrawLine(x + 1 + w2 + 1, y + height - 2 - h1, x + 1 + w2 + 1, y + height - 1 - hh - 1); DisplayManager.renderer.glDrawLine(x + 1 + w2 + 1, y + height - 2 - h1, x + 1 + w2 + 1, y + height - 1 - hh - 1);
DisplayManager.renderer.glDrawLine(x + 1 + w2 + 1, y + height - h1 - 2, x + 1 + w2 + 2 + w1 + 1, y + height - h1 - 2); DisplayManager.renderer.glDrawLine(x + 1 + w2 + 1, y + height - h1 - 2, x + 1 + w2 + 2 + w1 + 1, y + height - h1 - 2);

View File

@ -129,7 +129,7 @@ public class Sum extends FunctionTwoValues {
int dx = 0; int dx = 0;
dx += variable1.getWidth(); dx += variable1.getWidth();
dx += 1; dx += 1;
dx += DisplayManager.renderer.glGetStringWidth(Utils.getFont(small), getSymbol()); dx += Utils.getFont(small).getStringWidth(getSymbol());
return dx += variable2.getWidth(); return dx += variable2.getWidth();
} }

View File

@ -6,7 +6,7 @@ import org.warp.picalculator.Error;
import org.warp.picalculator.Errors; import org.warp.picalculator.Errors;
import org.warp.picalculator.Utils; import org.warp.picalculator.Utils;
import org.warp.picalculator.gui.DisplayManager; import org.warp.picalculator.gui.DisplayManager;
import org.warp.picalculator.gui.graphicengine.cpu.CPUDisplay; import org.warp.picalculator.gui.graphicengine.cpu.CPUEngine;
import org.warp.picalculator.math.Calculator; import org.warp.picalculator.math.Calculator;
import org.warp.picalculator.math.MathematicalSymbols; import org.warp.picalculator.math.MathematicalSymbols;
import org.warp.picalculator.math.rules.ExpandRule1; import org.warp.picalculator.math.rules.ExpandRule1;
@ -94,10 +94,10 @@ public class SumSubtraction extends FunctionTwoValues {
int dx = 0; int dx = 0;
variable1.draw(dx + x, ln - variable1.getLine() + y); variable1.draw(dx + x, ln - variable1.getLine() + y);
dx += variable1.getWidth(); dx += variable1.getWidth();
DisplayManager.renderer.glSetFont(Utils.getFont(small)); Utils.getFont(small).use(DisplayManager.engine);
dx += 1; dx += 1;
DisplayManager.renderer.glDrawStringLeft(dx + x, ln - Utils.getFontHeight(small) / 2 + y, getSymbol()); DisplayManager.renderer.glDrawStringLeft(dx + x, ln - Utils.getFontHeight(small) / 2 + y, getSymbol());
dx += DisplayManager.renderer.glGetStringWidth(Utils.getFont(small), getSymbol()); dx += Utils.getFont(small).getStringWidth(getSymbol());
variable2.draw(dx + x, ln - variable2.getLine() + y); variable2.draw(dx + x, ln - variable2.getLine() + y);
} }
@ -111,7 +111,7 @@ public class SumSubtraction extends FunctionTwoValues {
int dx = 0; int dx = 0;
dx += variable1.getWidth(); dx += variable1.getWidth();
dx += 1; dx += 1;
dx += DisplayManager.renderer.glGetStringWidth(Utils.getFont(small), getSymbol()); dx += Utils.getFont(small).getStringWidth(getSymbol());
return dx += variable2.getWidth(); return dx += variable2.getWidth();
} }

View File

@ -5,7 +5,7 @@ import java.util.List;
import org.warp.picalculator.Error; import org.warp.picalculator.Error;
import org.warp.picalculator.Utils; import org.warp.picalculator.Utils;
import org.warp.picalculator.gui.DisplayManager; import org.warp.picalculator.gui.DisplayManager;
import org.warp.picalculator.gui.graphicengine.cpu.CPUDisplay; import org.warp.picalculator.gui.graphicengine.cpu.CPUEngine;
import org.warp.picalculator.math.Calculator; import org.warp.picalculator.math.Calculator;
public class Undefined implements Function { public class Undefined implements Function {
@ -36,14 +36,14 @@ public class Undefined implements Function {
@Override @Override
public void generateGraphics() { public void generateGraphics() {
width = DisplayManager.renderer.glGetStringWidth(Utils.getFont(small), "UNDEFINED"); width = Utils.getFont(small).getStringWidth("UNDEFINED");
height = Utils.getFontHeight(small); height = Utils.getFontHeight(small);
line = height / 2; line = height / 2;
} }
@Override @Override
public void draw(int x, int y) { public void draw(int x, int y) {
DisplayManager.renderer.glSetFont(Utils.getFont(small)); Utils.getFont(small).use(DisplayManager.engine);
DisplayManager.renderer.glDrawStringLeft(x, y, "UNDEFINED"); DisplayManager.renderer.glDrawStringLeft(x, y, "UNDEFINED");
} }

View File

@ -62,7 +62,7 @@ public class Variable implements Function {
@Override @Override
public void draw(int x, int y) { public void draw(int x, int y) {
Utils.getFont(small).use(DisplayManager.display); Utils.getFont(small).use(DisplayManager.engine);
DisplayManager.renderer.glDrawStringLeft(x + 1, y, toString()); DisplayManager.renderer.glDrawStringLeft(x + 1, y, toString());
} }

View File

@ -4,6 +4,7 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.warp.picalculator.Error; import org.warp.picalculator.Error;
import org.warp.picalculator.gui.DisplayManager;
import org.warp.picalculator.math.Calculator; import org.warp.picalculator.math.Calculator;
import org.warp.picalculator.math.MathematicalSymbols; import org.warp.picalculator.math.MathematicalSymbols;
import org.warp.picalculator.math.functions.AnteriorFunction; import org.warp.picalculator.math.functions.AnteriorFunction;
@ -17,7 +18,7 @@ public class EquationsSystemPart extends AnteriorFunction {
@Override @Override
protected Function NewInstance(Calculator root, Function value) { protected Function NewInstance(Calculator root, Function value) {
return new EquationsSystemPart(root, value); return new EquationsSystemPart(root, (Equation) value);
} }
@Override @Override
@ -42,13 +43,13 @@ public class EquationsSystemPart extends AnteriorFunction {
final int spazioSotto = (h - 3 - 2) / 2 + paddingTop; final int spazioSotto = (h - 3 - 2) / 2 + paddingTop;
final int spazioSopra = h - spazioSotto; final int spazioSopra = h - spazioSotto;
variable.draw(x + 5, y + paddingTop); variable.draw(x + 5, y + paddingTop);
glDrawLine(x + 2, y + 0, x + 3, y + 0); DisplayManager.renderer.glDrawLine(x + 2, y + 0, x + 3, y + 0);
glDrawLine(x + 1, y + 1, x + 1, y + spazioSotto / 2); DisplayManager.renderer.glDrawLine(x + 1, y + 1, x + 1, y + spazioSotto / 2);
glDrawLine(x + 2, y + spazioSotto / 2 + 1, x + 2, y + spazioSotto - 1); DisplayManager.renderer.glDrawLine(x + 2, y + spazioSotto / 2 + 1, x + 2, y + spazioSotto - 1);
glDrawLine(x + 0, y + spazioSotto, x + 1, y + spazioSotto); DisplayManager.renderer.glDrawLine(x + 0, y + spazioSotto, x + 1, y + spazioSotto);
glDrawLine(x + 2, y + spazioSotto + 1, x + 2, y + spazioSotto + spazioSopra / 2 - 1); DisplayManager.renderer.glDrawLine(x + 2, y + spazioSotto + 1, x + 2, y + spazioSotto + spazioSopra / 2 - 1);
glDrawLine(x + 1, y + spazioSotto + spazioSopra / 2, x + 1, y + h - 1); DisplayManager.renderer.glDrawLine(x + 1, y + spazioSotto + spazioSopra / 2, x + 1, y + h - 1);
glDrawLine(x + 2, y + h, x + 3, y + h); DisplayManager.renderer.glDrawLine(x + 2, y + h, x + 3, y + h);
} }
@Override @Override