From af1ae582cf110665d1b3d970311d0b690e38a3f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Victor=20Glind=C3=A5s?= Date: Mon, 19 Feb 2018 13:03:29 +0100 Subject: [PATCH 1/3] Refactors LetterQuad --- Engine/src/mini/font/LetterQuad.java | 34 ++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/Engine/src/mini/font/LetterQuad.java b/Engine/src/mini/font/LetterQuad.java index b1be335..d596d06 100644 --- a/Engine/src/mini/font/LetterQuad.java +++ b/Engine/src/mini/font/LetterQuad.java @@ -72,8 +72,7 @@ protected LetterQuad(char c, LetterQuad prev) { } LetterQuad addNextCharacter(char c) { - LetterQuad n = new LetterQuad(c, this); - return n; + return new LetterQuad(c, this); } BitmapCharacter getBitmapChar() { @@ -88,9 +87,10 @@ void setBitmapChar(BitmapCharacter bitmapChar) { alignX = 0; alignY = 0; - BitmapCharacterSet charSet = font.getCharSet(); - this.bitmapChar = bitmapChar; + this.bitmapChar = bitmapChar; + if (bitmapChar != null) { + BitmapCharacterSet charSet = font.getCharSet(); u0 = (float) bitmapChar.getX() / charSet.getWidth(); v0 = (float) bitmapChar.getY() / charSet.getHeight(); u1 = u0 + (float) bitmapChar.getWidth() / charSet.getWidth(); @@ -400,7 +400,14 @@ boolean isBlank() { } public void storeToArrays(float[] pos, float[] tc, short[] idx, byte[] colors, int quadIdx) { - float x = x0 + alignX; + storePositionToArray(pos); + storeTcToArray(tc); + storeColorsToArray(colors); + storeIndicesToArray(idx, quadIdx); + } + + private void storePositionToArray(float[] pos) { + float x = x0 + alignX; float y = y0 - alignY; float xpw = x + width; float ymh = y - height; @@ -417,8 +424,10 @@ public void storeToArrays(float[] pos, float[] tc, short[] idx, byte[] colors, i pos[9] = xpw; pos[10] = y; pos[11] = 0; + } - float v0 = 1f - this.v0; + private void storeTcToArray(float[] tc) { + float v0 = 1f - this.v0; float v1 = 1f - this.v1; tc[0] = u0; @@ -429,16 +438,21 @@ public void storeToArrays(float[] pos, float[] tc, short[] idx, byte[] colors, i tc[5] = v1; tc[6] = u1; tc[7] = v0; - - colors[3] = (byte) (colorInt & 0xff); + } + + private void storeColorsToArray(byte[] colors) { + colors[3] = (byte) (colorInt & 0xff); colors[2] = (byte) ((colorInt >> 8) & 0xff); colors[1] = (byte) ((colorInt >> 16) & 0xff); colors[0] = (byte) ((colorInt >> 24) & 0xff); + System.arraycopy(colors, 0, colors, 4, 4); System.arraycopy(colors, 0, colors, 8, 4); System.arraycopy(colors, 0, colors, 12, 4); + } - short i0 = (short) (quadIdx * 4); + private void storeIndicesToArray(short[] idx, int quadIdx) { + short i0 = (short) (quadIdx * 4); short i1 = (short) (i0 + 1); short i2 = (short) (i0 + 2); short i3 = (short) (i0 + 3); @@ -449,7 +463,7 @@ public void storeToArrays(float[] pos, float[] tc, short[] idx, byte[] colors, i idx[3] = i0; idx[4] = i2; idx[5] = i3; - } + } public void appendPositions(FloatBuffer fb) { float sx = x0 + alignX; From 5f4fd67ce7e0d541d6c2b4cc18e189a89a17b84e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Victor=20Glind=C3=A5s?= Date: Mon, 19 Feb 2018 13:12:12 +0100 Subject: [PATCH 2/3] Renames storeTcToArray to storeTexCoordsToArray --- Engine/src/mini/font/LetterQuad.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Engine/src/mini/font/LetterQuad.java b/Engine/src/mini/font/LetterQuad.java index d596d06..a8dc365 100644 --- a/Engine/src/mini/font/LetterQuad.java +++ b/Engine/src/mini/font/LetterQuad.java @@ -401,7 +401,7 @@ boolean isBlank() { public void storeToArrays(float[] pos, float[] tc, short[] idx, byte[] colors, int quadIdx) { storePositionToArray(pos); - storeTcToArray(tc); + storeTexCoordsToArray(tc); storeColorsToArray(colors); storeIndicesToArray(idx, quadIdx); } @@ -426,7 +426,7 @@ private void storePositionToArray(float[] pos) { pos[11] = 0; } - private void storeTcToArray(float[] tc) { + private void storeTexCoordsToArray(float[] tc) { float v0 = 1f - this.v0; float v1 = 1f - this.v1; From 30da4a0f82ab6af14d3c768890499fa5cc9d057c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Victor=20Glind=C3=A5s?= Date: Mon, 19 Feb 2018 13:13:16 +0100 Subject: [PATCH 3/3] Early returns in computeLineY --- Engine/src/mini/font/LetterQuad.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Engine/src/mini/font/LetterQuad.java b/Engine/src/mini/font/LetterQuad.java index a8dc365..b6005dd 100644 --- a/Engine/src/mini/font/LetterQuad.java +++ b/Engine/src/mini/font/LetterQuad.java @@ -384,11 +384,11 @@ boolean isLineWrap() { private float computeLineY(StringBlock block) { if (isHead()) { return getBound(block).y; - } else if (previous.eol) { + } + if (previous.eol) { return previous.getNextLine(); - } else { - return previous.lineY; } + return previous.lineY; } boolean isLineStart() {