Fix for bug when assigning an empty text string to a BitmapText already showing content

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@9389 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
3.0
sky..ok 13 years ago
parent eca1fae8bc
commit 96fce01608
  1. 27
      engine/src/core/com/jme3/font/BitmapText.java
  2. 6
      engine/src/core/com/jme3/font/BitmapTextPage.java
  3. 37
      engine/src/core/com/jme3/font/LetterQuad.java

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2009-2010 jMonkeyEngine * Copyright (c) 2009-2012 jMonkeyEngine
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
@ -44,6 +44,7 @@ import java.util.regex.Pattern;
* @author YongHoon * @author YongHoon
*/ */
public class BitmapText extends Node { public class BitmapText extends Node {
private BitmapFont font; private BitmapFont font;
private StringBlock block; private StringBlock block;
private boolean needRefresh = true; private boolean needRefresh = true;
@ -110,16 +111,38 @@ public class BitmapText extends Node {
* @param text String to change text to * @param text String to change text to
*/ */
public void setText(String text) { public void setText(String text) {
System.out.println("HI");
text = text == null ? "" : text; text = text == null ? "" : text;
if (text == block.getText() || block.getText().equals(text)) { if (block.getText().equals(text)) {
return; return;
} else {
// If the text is empty, reset
if (text.isEmpty()) {
System.out.println("text is different");
detachAllChildren();
for (int page = 0; page < textPages.length; page++) {
textPages[page] = new BitmapTextPage(font, true, page);
attachChild(textPages[page]);
} }
System.out.println("Creating new StringBlock and Letters");
block = new StringBlock();
letters = new Letters(font, block, letters.getQuad().isRightToLeft());
}
// Update the text content
block.setText(text); block.setText(text);
letters.setText(text); letters.setText(text);
// Flat for refresh
needRefresh = true; needRefresh = true;
} }
}
/** /**
* @return returns text * @return returns text
*/ */

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2009-2010 jMonkeyEngine * Copyright (c) 2009-2012 jMonkeyEngine
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
@ -86,6 +86,10 @@ class BitmapTextPage extends Geometry {
arrayBased = true; arrayBased = true;
/*
* TODO: Since this is forced to true, should we just lose the conditional?
* - Skye (sbook)
*/
if (arrayBased) { if (arrayBased) {
pos = new float[4 * 3]; // 4 verticies * 3 floats pos = new float[4 * 3]; // 4 verticies * 3 floats
tc = new float[4 * 2]; // 4 verticies * 2 floats tc = new float[4 * 2]; // 4 verticies * 2 floats

@ -1,3 +1,34 @@
/*
* Copyright (c) 2009-2012 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package com.jme3.font; package com.jme3.font;
import com.jme3.math.ColorRGBA; import com.jme3.math.ColorRGBA;
@ -6,7 +37,7 @@ import java.nio.FloatBuffer;
import java.nio.ShortBuffer; import java.nio.ShortBuffer;
/** /**
* LetterQuad contains the position, color, uv texture information for a character in text. * LetterQuad contains the position, color, and UV texture information for a character in text.
* @author YongHoon * @author YongHoon
*/ */
class LetterQuad { class LetterQuad {
@ -117,6 +148,10 @@ class LetterQuad {
return v1; return v1;
} }
boolean isRightToLeft(){
return rightToLeft;
}
boolean isInvalid() { boolean isInvalid() {
return x0 == Integer.MIN_VALUE; return x0 == Integer.MIN_VALUE;
} }

Loading…
Cancel
Save