1 30 31 package com.jgoodies.animation.renderer; 32 33 import java.awt.Graphics2D ; 34 35 36 42 public final class BasicTextRenderer extends AbstractTextRenderer { 43 44 private float offsetX = 0.0f; 45 private float offsetY = 0.0f; 46 private float scaleX = 1.0f; 47 private float scaleY = 1.0f; 48 private float space = 0.0f; 49 50 51 57 public BasicTextRenderer(String text) { super(text); } 58 59 60 public float getOffsetX() { return offsetX; } 61 public float getOffsetY() { return offsetY; } 62 public float getSpace() { return space; } 63 public void setOffsetX(float offsetX){ this.offsetX = offsetX; } 64 public void setOffsetY(float offsetY){ this.offsetY = offsetY; } 65 public void setSpace(float space) { this.space = space; } 66 public float getScaleX() { return scaleX; } 67 public float getScaleY() { return scaleY; } 68 69 70 public void setScaleX(float scaleX) { 71 if (scaleX <= 0.0f) 72 throw new IllegalArgumentException ("scaleX must be positive."); 73 74 this.scaleX = scaleX; 75 } 76 77 78 public void setScaleY(float scaleY) { 79 if (scaleY <= 0.0f) 80 throw new IllegalArgumentException ("scaleY must be positive."); 81 82 this.scaleY = scaleY; 83 } 84 85 86 94 public void render(Graphics2D g2, int width, int height) { 95 ensureValidCache(g2); 96 97 int glyphCount = cachedGlyphShapes.length; 98 float totalSpace = (glyphCount - 1) * space; 99 float totalWidth = cachedTextWidth + totalSpace; 100 float textHeight = getAdjustedAscent(); 101 float xOffset = getOffsetX() + (width - totalWidth * scaleX) / 2.0f; 102 float yOffset = getOffsetY() + (height + textHeight * scaleY) / 2.0f - getAdjustedDescent(); 103 104 g2.setColor(getColor()); 105 g2.translate(xOffset, yOffset); 106 g2.scale(scaleX, scaleY); 107 for (int i = 0; i < glyphCount; i++) { 108 g2.fill(cachedGlyphShapes[i]); 109 g2.translate(space, 0); 110 } 111 g2.scale(1.0f / scaleX, 1.0f / scaleY); 112 g2.translate(-totalSpace -xOffset, -yOffset); 113 } 114 115 } | Popular Tags |