X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fsixth%2Fe3d%2Frenderer%2Fraster%2Fshapes%2Fcomposite%2Ftextcanvas%2FTextCanvas.java;h=7a0c5e58f1da0ccbe5bdf84187d62bd26e0a11fe;hb=a38bc412f8c6ae6c8fdf9466ae9b2073c2a73614;hp=ca06706e7a198e098cc2c23fe900655023040584;hpb=a40c9c2a3ef372ea0f2c87af644ca2302315baca;p=sixth-3d.git diff --git a/src/main/java/eu/svjatoslav/sixth/e3d/renderer/raster/shapes/composite/textcanvas/TextCanvas.java b/src/main/java/eu/svjatoslav/sixth/e3d/renderer/raster/shapes/composite/textcanvas/TextCanvas.java index ca06706..7a0c5e5 100644 --- a/src/main/java/eu/svjatoslav/sixth/e3d/renderer/raster/shapes/composite/textcanvas/TextCanvas.java +++ b/src/main/java/eu/svjatoslav/sixth/e3d/renderer/raster/shapes/composite/textcanvas/TextCanvas.java @@ -8,7 +8,7 @@ import eu.svjatoslav.sixth.e3d.geometry.Point3D; import eu.svjatoslav.sixth.e3d.gui.RenderingContext; import eu.svjatoslav.sixth.e3d.gui.TextPointer; import eu.svjatoslav.sixth.e3d.math.Transform; -import eu.svjatoslav.sixth.e3d.math.TransformPipe; +import eu.svjatoslav.sixth.e3d.math.TransformsStack; import eu.svjatoslav.sixth.e3d.renderer.raster.Color; import eu.svjatoslav.sixth.e3d.renderer.raster.shapes.composite.TexturedRectangle; @@ -22,14 +22,21 @@ import static eu.svjatoslav.sixth.e3d.renderer.raster.Color.WHITE; public class TextCanvas extends TexturedRectangle { - public static final int FONT_CHAR_WIDTH_PIXELS = 8; - public static final int FONT_CHAR_HEIGHT_PIXELS = 16; - public static final Font FONT = CanvasCharacter.getFont(15); + // character size in world coordinates + public static final int FONT_CHAR_WIDTH = 8; + public static final int FONT_CHAR_HEIGHT = 16; + + // character size on texture + public static final int FONT_CHAR_WIDTH_TEXTURE_PIXELS = 16; + public static final int FONT_CHAR_HEIGHT_TEXTURE_PIXELS = 32; + + + public static final Font FONT = CanvasCharacter.getFont((int)(FONT_CHAR_HEIGHT_TEXTURE_PIXELS / 1.066)); private static final String GROUP_TEXTURE = "texture"; private static final String GROUP_CHARACTERS = "characters"; private final TextPointer size; private final TextPointer cursorLocation = new TextPointer(); - CanvasCharacter lines[][]; + CanvasCharacter[][] lines; private RenderMode renderMode = null; private Color backgroundColor = BLACK; private Color foregroundColor = WHITE; @@ -54,7 +61,12 @@ public class TextCanvas extends TexturedRectangle { this.foregroundColor = foregroundColor; // initialize underlying textured rectangle - initialize(columns * FONT_CHAR_WIDTH_PIXELS, rows * FONT_CHAR_HEIGHT_PIXELS, 0); + initialize( + columns * FONT_CHAR_WIDTH, + rows * FONT_CHAR_HEIGHT, + columns * FONT_CHAR_WIDTH_TEXTURE_PIXELS, + rows * FONT_CHAR_HEIGHT_TEXTURE_PIXELS, + 0); getTexture().primaryBitmap.fillColor(backgroundColor); getTexture().resetResampledBitmapCache(); @@ -106,7 +118,7 @@ public class TextCanvas extends TexturedRectangle { } @Override - public void beforeTransformHook(final TransformPipe transformPipe, + public void beforeTransformHook(final TransformsStack transformPipe, final RenderingContext context) { final double textRelativeSize = context.width @@ -133,7 +145,7 @@ public class TextCanvas extends TexturedRectangle { setRenderMode(RenderMode.CHARACTERS); } - public void cls() { + public void clear() { for (final CanvasCharacter[] line : lines) for (final CanvasCharacter character : line) { character.setValue(' '); @@ -150,15 +162,19 @@ public class TextCanvas extends TexturedRectangle { final char character, final Color foreground) { final Graphics2D graphics = getTexture().graphics; - getTexture().primaryBitmap.drawRectangle(column * FONT_CHAR_WIDTH_PIXELS, row - * FONT_CHAR_HEIGHT_PIXELS, (column * FONT_CHAR_WIDTH_PIXELS) - + FONT_CHAR_WIDTH_PIXELS, (row * FONT_CHAR_HEIGHT_PIXELS) + FONT_CHAR_HEIGHT_PIXELS, + getTexture().primaryBitmap.drawRectangle( + column * FONT_CHAR_WIDTH_TEXTURE_PIXELS, + row * FONT_CHAR_HEIGHT_TEXTURE_PIXELS, + (column * FONT_CHAR_WIDTH_TEXTURE_PIXELS) + FONT_CHAR_WIDTH_TEXTURE_PIXELS, + (row * FONT_CHAR_HEIGHT_TEXTURE_PIXELS) + FONT_CHAR_HEIGHT_TEXTURE_PIXELS, backgroundColor); graphics.setFont(FONT); graphics.setColor(foreground.toAwtColor()); - graphics.drawChars(new char[]{character,}, 0, 1, - (column * FONT_CHAR_WIDTH_PIXELS) - 0, (row * FONT_CHAR_HEIGHT_PIXELS) + 13); + graphics.drawChars( + new char[]{character,}, 0, 1, + (column * FONT_CHAR_WIDTH_TEXTURE_PIXELS) - 0, + (row * FONT_CHAR_HEIGHT_TEXTURE_PIXELS) + (int)(FONT_CHAR_HEIGHT_TEXTURE_PIXELS / 1.23f)); getTexture().resetResampledBitmapCache(); } @@ -166,11 +182,11 @@ public class TextCanvas extends TexturedRectangle { public Point3D getCharLocation(final int row, final int column) { final Point3D coordinate = topLeft.clone(); - coordinate.translateY((row * FONT_CHAR_HEIGHT_PIXELS) - + ((FONT_CHAR_HEIGHT_PIXELS / 2) - 3)); + coordinate.translateY((row * FONT_CHAR_HEIGHT) + + (FONT_CHAR_HEIGHT / 3.2)); - coordinate.translateX((column * FONT_CHAR_WIDTH_PIXELS) - + (FONT_CHAR_WIDTH_PIXELS / 2)); + coordinate.translateX((column * FONT_CHAR_WIDTH) + + (FONT_CHAR_WIDTH / 2)); return coordinate; } @@ -279,11 +295,4 @@ public class TextCanvas extends TexturedRectangle { character.setForegroundColor(color); } - // @Override - // public void transform(final TransformPipe transformPipe, - // final RenderAggregator aggregator, final RenderingContext buffer) { - // - // super.transform(transformPipe, aggregator, buffer); - // - // } }