import java.awt.geom.AffineTransform;\r
import java.awt.image.AffineTransformOp;\r
import java.awt.image.BufferedImage;\r
+import java.awt.image.WritableRaster;\r
import java.io.File;\r
import java.io.FileOutputStream;\r
import java.io.IOException;\r
import java.io.PrintStream;\r
+import java.nio.ByteBuffer;\r
+import java.nio.ByteOrder;\r
+import java.nio.IntBuffer;\r
import java.util.ArrayList;\r
import java.util.HashMap;\r
import java.util.Iterator;\r
import javax.imageio.ImageIO;\r
import javax.swing.ImageIcon;\r
\r
+import org.lwjgl.BufferUtils;\r
+import org.lwjgl.opengl.GL11;\r
+import org.lwjgl.opengl.GL12;\r
+\r
import com.badlogic.gdx.Files.FileType;\r
import com.badlogic.gdx.Gdx;\r
+import com.badlogic.gdx.graphics.Texture;\r
import com.badlogic.gdx.hiero.unicodefont.Glyph;\r
import com.badlogic.gdx.hiero.unicodefont.GlyphPage;\r
import com.badlogic.gdx.hiero.unicodefont.UnicodeFont;\r
}\r
out.close();\r
\r
+ int width = unicodeFont.getGlyphPageWidth();\r
+ int height = unicodeFont.getGlyphPageHeight();\r
+ IntBuffer buffer = BufferUtils.createIntBuffer(width * height);\r
+ BufferedImage pageImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);\r
+ int[] row = new int[width];\r
+\r
pageIndex = 0;\r
for (Iterator pageIter = unicodeFont.getGlyphPages().iterator(); pageIter.hasNext();) {\r
GlyphPage page = (GlyphPage)pageIter.next();\r
fileName = outputName + ".png";\r
else\r
fileName = outputName + (pageIndex + 1) + ".png";\r
- File imageOutputFile = new File(outputDir, fileName);\r
- FileOutputStream imageOutput = new FileOutputStream(imageOutputFile);\r
- try {\r
- // BOZO - Save texture to PNG.\r
- // saveImage(page.getTexture(), "png", imageOutput, true);\r
- } finally {\r
- imageOutput.close();\r
+\r
+ page.getTexture().bind();\r
+ buffer.clear();\r
+ GL11.glGetTexImage(GL11.GL_TEXTURE_2D, 0, GL12.GL_BGRA, GL11.GL_UNSIGNED_BYTE, buffer);\r
+ WritableRaster raster = pageImage.getRaster();\r
+ for (int y = 0; y < height; y++) {\r
+ buffer.get(row);\r
+ raster.setDataElements(0, y, width, 1, row);\r
}\r
- // Flip output image.\r
- Image image = new ImageIcon(imageOutputFile.getAbsolutePath()).getImage();\r
- BufferedImage bufferedImage = new BufferedImage(image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_ARGB);\r
- Graphics g = bufferedImage.getGraphics();\r
- g.drawImage(image, 0, 0, null);\r
- AffineTransform tx = AffineTransform.getScaleInstance(1, -1);\r
- tx.translate(0, -image.getHeight(null));\r
- AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_NEAREST_NEIGHBOR);\r
- bufferedImage = op.filter(bufferedImage, null);\r
- ImageIO.write(bufferedImage, "png", imageOutputFile);\r
+ File imageOutputFile = new File(outputDir, fileName);\r
+ ImageIO.write(pageImage, "png", imageOutputFile);\r
\r
pageIndex++;\r
}\r