aboutsummaryrefslogtreecommitdiffstats
path: root/src/jogl/classes/com/jogamp/opengl/util/awt/TextRenderer.java
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2013-10-18 08:11:19 +0200
committerSven Gothel <[email protected]>2013-10-18 08:11:19 +0200
commit1c51abc1872b3cb984800fd76941a82dacd9e7b1 (patch)
tree1b26b1536c8b139b802573ea2a37260c51ea17b1 /src/jogl/classes/com/jogamp/opengl/util/awt/TextRenderer.java
parent47d73819a71b7d9c4d2182a4de5712435832c5a1 (diff)
parentf1ae8ddb87c88a57dce4593f006881ef6a7f0932 (diff)
Merge remote-tracking branch 'hharrison/master'
Diffstat (limited to 'src/jogl/classes/com/jogamp/opengl/util/awt/TextRenderer.java')
-rw-r--r--src/jogl/classes/com/jogamp/opengl/util/awt/TextRenderer.java44
1 files changed, 38 insertions, 6 deletions
diff --git a/src/jogl/classes/com/jogamp/opengl/util/awt/TextRenderer.java b/src/jogl/classes/com/jogamp/opengl/util/awt/TextRenderer.java
index c67141525..73d06cae0 100644
--- a/src/jogl/classes/com/jogamp/opengl/util/awt/TextRenderer.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/awt/TextRenderer.java
@@ -129,7 +129,7 @@ import jogamp.opengl.Debug;
*/
public class TextRenderer {
private static final boolean DEBUG;
-
+
static {
Debug.initSingleton();
DEBUG = Debug.isPropertyDefined("jogl.debug.TextRenderer", true);
@@ -200,10 +200,10 @@ public class TextRenderer {
// Debugging purposes only
private boolean debugged;
Pipelined_QuadRenderer mPipelinedQuadRenderer;
-
+
//emzic: added boolean flag
private boolean useVertexArrays = true;
-
+
//emzic: added boolean flag
private boolean isExtensionAvailable_GL_VERSION_1_5;
private boolean checkFor_isExtensionAvailable_GL_VERSION_1_5;
@@ -707,7 +707,7 @@ public class TextRenderer {
/**
* emzic: here the call to glBindBuffer crashes on certain graphicscard/driver combinations
* this is why the ugly try-catch block has been added, which falls back to the old textrenderer
- *
+ *
* @param ortho
* @throws GLException
*/
@@ -755,6 +755,7 @@ public class TextRenderer {
// Iterate through the contents of the backing store, removing
// text strings that haven't been used recently
packer.visit(new RectVisitor() {
+ @Override
public void visit(Rect rect) {
TextData data = (TextData) rect.getUserData();
@@ -891,7 +892,7 @@ public class TextRenderer {
data.markUsed();
Rectangle2D origRect = data.origRect();
-
+
// Align the leftmost point of the baseline to the (x, y, z) coordinate requested
renderer.draw3DRect(x - (scaleFactor * data.origOriginX()),
y - (scaleFactor * ((float) origRect.getHeight() - data.origOriginY())), z,
@@ -914,11 +915,13 @@ public class TextRenderer {
final FPSAnimator anim = new FPSAnimator(dbgCanvas, 10);
dbgFrame.addWindowListener(new WindowAdapter() {
+ @Override
public void windowClosing(WindowEvent e) {
// Run this on another thread than the AWT event queue to
// make sure the call to Animator.stop() completes before
// exiting
new Thread(new Runnable() {
+ @Override
public void run() {
anim.stop();
}
@@ -1009,12 +1012,14 @@ public class TextRenderer {
mCurrentIndex = 0;
}
+ @Override
public char last() {
mCurrentIndex = Math.max(0, mLength - 1);
return current();
}
+ @Override
public char current() {
if ((mLength == 0) || (mCurrentIndex >= mLength)) {
return CharacterIterator.DONE;
@@ -1023,36 +1028,43 @@ public class TextRenderer {
return mSequence.charAt(mCurrentIndex);
}
+ @Override
public char next() {
mCurrentIndex++;
return current();
}
+ @Override
public char previous() {
mCurrentIndex = Math.max(mCurrentIndex - 1, 0);
return current();
}
+ @Override
public char setIndex(int position) {
mCurrentIndex = position;
return current();
}
+ @Override
public int getBeginIndex() {
return 0;
}
+ @Override
public int getEndIndex() {
return mLength;
}
+ @Override
public int getIndex() {
return mCurrentIndex;
}
+ @Override
public Object clone() {
CharSequenceIterator iter = new CharSequenceIterator(mSequence);
iter.mCurrentIndex = mCurrentIndex;
@@ -1060,6 +1072,7 @@ public class TextRenderer {
return iter;
}
+ @Override
public char first() {
if (mLength == 0) {
return CharacterIterator.DONE;
@@ -1143,6 +1156,7 @@ public class TextRenderer {
class Manager implements BackingStoreManager {
private Graphics2D g;
+ @Override
public Object allocateBackingStore(int w, int h) {
// FIXME: should consider checking Font's attributes to see
// whether we're likely to need to support a full RGBA backing
@@ -1165,10 +1179,12 @@ public class TextRenderer {
return renderer;
}
+ @Override
public void deleteBackingStore(Object backingStore) {
((TextureRenderer) backingStore).dispose();
}
+ @Override
public boolean preExpand(Rect cause, int attemptNumber) {
// Only try this one time; clear out potentially obsolete entries
// NOTE: this heuristic and the fact that it clears the used bit
@@ -1204,6 +1220,7 @@ public class TextRenderer {
return false;
}
+ @Override
public boolean additionFailed(Rect cause, int attemptNumber) {
// Heavy hammer -- might consider doing something different
packer.clear();
@@ -1222,10 +1239,12 @@ public class TextRenderer {
return false;
}
+ @Override
public boolean canCompact() {
return true;
}
+ @Override
public void beginMovement(Object oldBackingStore, Object newBackingStore) {
// Exit the begin / end pair if necessary
if (inBeginEndPair) {
@@ -1259,6 +1278,7 @@ public class TextRenderer {
g = newRenderer.createGraphics();
}
+ @Override
public void move(Object oldBackingStore, Rect oldLocation,
Object newBackingStore, Rect newLocation) {
TextureRenderer oldRenderer = (TextureRenderer) oldBackingStore;
@@ -1280,6 +1300,7 @@ public class TextRenderer {
}
}
+ @Override
public void endMovement(Object oldBackingStore, Object newBackingStore) {
g.dispose();
@@ -1316,10 +1337,12 @@ public class TextRenderer {
}
public static class DefaultRenderDelegate implements RenderDelegate {
+ @Override
public boolean intensityOnly() {
return true;
}
+ @Override
public Rectangle2D getBounds(CharSequence str, Font font,
FontRenderContext frc) {
return getBounds(font.createGlyphVector(frc,
@@ -1327,20 +1350,24 @@ public class TextRenderer {
frc);
}
+ @Override
public Rectangle2D getBounds(String str, Font font,
FontRenderContext frc) {
return getBounds(font.createGlyphVector(frc, str), frc);
}
+ @Override
public Rectangle2D getBounds(GlyphVector gv, FontRenderContext frc) {
return gv.getVisualBounds();
}
+ @Override
public void drawGlyphVector(Graphics2D graphics, GlyphVector str,
int x, int y) {
graphics.drawGlyphVector(str, x, y);
}
+ @Override
public void draw(Graphics2D graphics, String str, int x, int y) {
graphics.drawString(str, x, y);
}
@@ -1715,7 +1742,7 @@ public class TextRenderer {
return glyph;
}
}
-
+
private static class CharacterCache {
private CharacterCache() {
}
@@ -1896,6 +1923,7 @@ public class TextRenderer {
this.frame = frame;
}
+ @Override
public void display(GLAutoDrawable drawable) {
GL2 gl = GLContext.getCurrentGL().getGL2();
gl.glClear(GL2.GL_DEPTH_BUFFER_BIT | GL2.GL_COLOR_BUFFER_BIT);
@@ -1913,6 +1941,7 @@ public class TextRenderer {
if ((frame.getWidth() != w) || (frame.getHeight() != h)) {
EventQueue.invokeLater(new Runnable() {
+ @Override
public void run() {
frame.setSize(w, h);
}
@@ -1920,6 +1949,7 @@ public class TextRenderer {
}
}
+ @Override
public void dispose(GLAutoDrawable drawable) {
glu.destroy();
glu=null;
@@ -1927,9 +1957,11 @@ public class TextRenderer {
}
// Unused methods
+ @Override
public void init(GLAutoDrawable drawable) {
}
+ @Override
public void reshape(GLAutoDrawable drawable, int x, int y, int width,
int height) {
}