package org.anddev.andengine.opengl.texture.buffer; import org.anddev.andengine.opengl.buffer.BufferObject; import org.anddev.andengine.opengl.font.Font; import org.anddev.andengine.opengl.font.Letter; import org.anddev.andengine.opengl.util.FastFloatBuffer; /** * (c) 2010 Nicolas Gramlich * (c) 2011 Zynga Inc. * * @author Nicolas Gramlich * @since 11:05:56 - 03.04.2010 */ public class TextTextureBuffer extends BufferObject { // =========================================================== // Constants // =========================================================== // =========================================================== // Fields // =========================================================== // =========================================================== // Constructors // =========================================================== public TextTextureBuffer(final int pCapacity, final int pDrawType, final boolean pManaged) { super(pCapacity, pDrawType, pManaged); } // =========================================================== // Getter & Setter // =========================================================== // =========================================================== // Methods for/from SuperClass/Interfaces // =========================================================== // =========================================================== // Methods // =========================================================== public synchronized void update(final Font pFont, final String[] pLines) { final FastFloatBuffer textureFloatBuffer = this.getFloatBuffer(); textureFloatBuffer.position(0); final Font font = pFont; final String[] lines = pLines; final int lineCount = lines.length; for (int i = 0; i < lineCount; i++) { final String line = lines[i]; final int lineLength = line.length(); for (int j = 0; j < lineLength; j++) { final Letter letter = font.getLetter(line.charAt(j)); final float letterTextureX = letter.mTextureX; final float letterTextureY = letter.mTextureY; final float letterTextureX2 = letterTextureX + letter.mTextureWidth; final float letterTextureY2 = letterTextureY + letter.mTextureHeight; textureFloatBuffer.put(letterTextureX); textureFloatBuffer.put(letterTextureY); textureFloatBuffer.put(letterTextureX); textureFloatBuffer.put(letterTextureY2); textureFloatBuffer.put(letterTextureX2); textureFloatBuffer.put(letterTextureY2); textureFloatBuffer.put(letterTextureX2); textureFloatBuffer.put(letterTextureY2); textureFloatBuffer.put(letterTextureX2); textureFloatBuffer.put(letterTextureY); textureFloatBuffer.put(letterTextureX); textureFloatBuffer.put(letterTextureY); } } textureFloatBuffer.position(0); this.setHardwareBufferNeedsUpdate(); } // =========================================================== // Inner and Anonymous Classes // =========================================================== }