Updated font kerning

This commit is contained in:
Andrea Cavalli 2017-09-24 13:09:30 +02:00
parent 209109d75c
commit 8eeca5ab09
15 changed files with 27 additions and 24 deletions

View File

@ -40,7 +40,8 @@ public final class DisplayManager implements RenderingLoop {
public String[] errorStackTrace;
public final static int[] glyphsHeight;
public static Screen screen;
private static Screen screen;
public static Semaphore screenChange = new Semaphore(0);
public static String displayDebugString;
public static ObjectArrayList<GUIErrorMessage> errorMessages;
@ -136,6 +137,7 @@ public final class DisplayManager implements RenderingLoop {
try {
screen.create();
DisplayManager.screen = screen;
screenChange.release();
if (screen.initialized == false) {
screen.initialize();
}
@ -160,6 +162,7 @@ public final class DisplayManager implements RenderingLoop {
try {
screen.create();
DisplayManager.screen = screen;
screenChange.release();
if (screen.initialized == false) {
screen.initialize();
}
@ -196,6 +199,7 @@ public final class DisplayManager implements RenderingLoop {
DisplayManager.currentSession += 1;
}
DisplayManager.screen = DisplayManager.sessions[DisplayManager.currentSession];
screenChange.release();
}
}
@ -228,10 +232,11 @@ public final class DisplayManager implements RenderingLoop {
DisplayManager.currentSession -= 1;
}
DisplayManager.screen = DisplayManager.sessions[DisplayManager.currentSession];
screenChange.release();
}
}
public Screen getScreen() {
public static Screen getScreen() {
return DisplayManager.screen;
}
@ -353,9 +358,10 @@ public final class DisplayManager implements RenderingLoop {
renderer.glColor3i(255, 255, 255);
if (error != null) {
Utils.getFont(false, false).use(engine);
BinaryFont fnt = Utils.getFont(false, false);
fnt.use(engine);
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] - (fnt.getCharacterHeight() + 2), Main.calculatorNameUPPER + " CALCULATOR");
renderer.glColor3i(149, 32, 26);
renderer.glDrawStringCenter((Main.screenSize[0] / 2), 22, error);
renderer.glColor3i(164, 34, 28);

View File

@ -40,7 +40,7 @@ public class BlockChar extends Block {
@Override
public void recomputeDimensions() {
width = BlockContainer.getDefaultCharWidth(small);
width = BlockContainer.getDefaultCharWidth(small)-1;
height = BlockContainer.getDefaultCharHeight(small);
line = height / 2;
}

View File

@ -217,7 +217,6 @@ public class BlockVariable extends Block {
@Override
public void draw(GraphicEngine ge, Renderer r, Caret caret) {
BlockContainer.getDefaultFont(true).use(ge);
r.glColor3f(1.0f, 1.0f, 1.0f);
DisplayManager.guiSkin.use(ge);
int popupX = location[0];
@ -242,6 +241,7 @@ public class BlockVariable extends Block {
r.glFillRect(popupX+2, popupY+5+height/2-7/2, 4, 7, 160, 21, 4, 7);
r.glFillRect(popupX+width-2-4, popupY+5+height/2-7/2, 4, 7, 172, 21, 4, 7);
r.glColor(color);
BlockContainer.getDefaultFont(true).use(ge);
r.glDrawStringCenter(popupX+width/2, popupY+2+5, text);
}

View File

@ -5,6 +5,7 @@ import java.awt.GraphicsEnvironment;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.ArrayList;
import java.util.concurrent.Semaphore;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
@ -24,6 +25,7 @@ public class CPUEngine implements GraphicEngine {
public final CPURenderer r = new CPURenderer();
public BufferedImage g = new BufferedImage(r.size[0], r.size[1], BufferedImage.TYPE_INT_RGB);
public volatile boolean initialized = false;
public Semaphore exitSemaphore = new Semaphore(0);
@Override
public void setTitle(String title) {
@ -88,6 +90,7 @@ public class CPUEngine implements GraphicEngine {
@Override
public void destroy() {
initialized = false;
exitSemaphore.release();
INSTANCE.setVisible(false);
INSTANCE.dispose();
}
@ -123,7 +126,7 @@ public class CPUEngine implements GraphicEngine {
@Deprecated()
public void refresh() {
if (DisplayManager.screen == null || (DisplayManager.error != null && DisplayManager.error.length() > 0) || DisplayManager.screen == null || DisplayManager.screen.mustBeRefreshed()) {
if (DisplayManager.getScreen() == null || (DisplayManager.error != null && DisplayManager.error.length() > 0) || DisplayManager.getScreen() == null || DisplayManager.getScreen().mustBeRefreshed()) {
INSTANCE.c.repaint();
}
}
@ -175,11 +178,8 @@ public class CPUEngine implements GraphicEngine {
@Override
public void waitUntilExit() {
try {
do {
Thread.sleep(500);
} while (initialized);
} catch (final InterruptedException e) {
exitSemaphore.acquire();
} catch (InterruptedException e) {
}
}

View File

@ -158,9 +158,9 @@ public class CPUFont implements BinaryFont {
@Override
public int getStringWidth(String text) {
final int w = (charW+1) * text.length();
final int w = charW * text.length();
if (text.length() > 0 && w > 0) {
return w-1;
return w;
} else {
return 0;
}

View File

@ -229,7 +229,7 @@ public class CPURenderer implements Renderer {
int j;
final int l = text.length;
for (int i = 0; i < l; i++) {
cpos = (i * (currentFont.charW + 1));
cpos = (i * (currentFont.charW));
final int charIndex = text[i];
for (int dy = 0; dy < currentFont.charH; dy++) {
for (int dx = 0; dx < currentFont.charW; dx++) {

View File

@ -6,6 +6,7 @@ import java.util.Collections;
import java.util.List;
import java.util.Vector;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.Semaphore;
import org.warp.picalculator.Main;
import org.warp.picalculator.Utils;
@ -25,6 +26,7 @@ public class GPUEngine implements GraphicEngine {
private GPURenderer r;
int[] size = new int[] { Main.screenSize[0], Main.screenSize[1] };
private final CopyOnWriteArrayList<BinaryFont> registeredFonts = new CopyOnWriteArrayList<BinaryFont>();
private Semaphore exitSemaphore = new Semaphore(0);
@Override
public int[] getSize() {
@ -94,6 +96,7 @@ public class GPUEngine implements GraphicEngine {
public void destroy() {
initialized = false;
created = false;
exitSemaphore.release();
wnd.window.destroy();
}
@ -128,11 +131,8 @@ public class GPUEngine implements GraphicEngine {
@Override
public void waitUntilExit() {
try {
do {
Thread.sleep(500);
} while (initialized | created);
} catch (final InterruptedException e) {
exitSemaphore.acquire();
} catch (InterruptedException e) {
}
}

View File

@ -618,10 +618,7 @@ public class MathInputScreen extends Screen {
final ChooseVariableValueScreen cvs = new ChooseVariableValueScreen(this, new VariableValue((Variable) f, new Number(calc, 0)));
DisplayManager.INSTANCE.setScreen(cvs);
try {
while (DisplayManager.screen == cvs) {
Utils.out.println(1, Thread.currentThread().getName());
Thread.sleep(200);
}
DisplayManager.screenChange.acquire();
} catch (final InterruptedException e) {}
if (cvs.resultNumberValue == null) {
cancelled = true;

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.