You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
2.0 KiB
86 lines
2.0 KiB
package rendering;
|
|
|
|
import gameobjects.GameObject;
|
|
import java.awt.Color;
|
|
import java.awt.Font;
|
|
import java.awt.Graphics2D;
|
|
import java.awt.font.FontRenderContext;
|
|
import java.awt.font.TextAttribute;
|
|
import java.text.AttributedString;
|
|
|
|
/**
|
|
* Rendering an object as a text of a specified color, size and font.
|
|
*/
|
|
public class TextArtist extends Artist {
|
|
|
|
private String text = null;
|
|
private Color textColor = null;
|
|
protected double textWidth, textHeight;
|
|
Font serifFont = null;
|
|
|
|
/** Constructor to intitialize the TextArtist attributes
|
|
*
|
|
* @param go GameObject to be used for xy coordinate reference
|
|
* @param text the text to draw
|
|
* @param size point size to be used for font "Serif"
|
|
* @param textColor color to draw the text with (foreground)
|
|
*/
|
|
public TextArtist(GameObject go, String text, int size, Color textColor) {
|
|
super(go);
|
|
this.text = text;
|
|
|
|
this.serifFont = new Font("Serif", Font.PLAIN, size);
|
|
FontRenderContext frc = new FontRenderContext(null, false, false);
|
|
this.textWidth = (int) (serifFont.getStringBounds(text, frc).getWidth());
|
|
this.textHeight = (int) (serifFont.getStringBounds(text, frc).getHeight());
|
|
|
|
this.textColor = textColor;
|
|
}
|
|
|
|
|
|
public String getText() {
|
|
return this.text;
|
|
}
|
|
|
|
public void setText(String s) {
|
|
this.text = s;
|
|
}
|
|
|
|
|
|
|
|
public double getTextWidth() {
|
|
return textWidth;
|
|
}
|
|
|
|
|
|
public void setTextWidth(double textWidth) {
|
|
this.textWidth = textWidth;
|
|
}
|
|
|
|
|
|
|
|
public double getTextHeight() {
|
|
return textHeight;
|
|
}
|
|
|
|
|
|
public void setTextHeight(double textHeight) {
|
|
this.textHeight = textHeight;
|
|
}
|
|
|
|
/**
|
|
* Draw the text.
|
|
*
|
|
* @param g The Swing graphics context.
|
|
*/
|
|
@Override
|
|
public void draw(Graphics2D g) {
|
|
AttributedString as = new AttributedString(this.text);
|
|
as.addAttribute(TextAttribute.FONT, this.serifFont);
|
|
as.addAttribute(TextAttribute.FOREGROUND, this.textColor);
|
|
|
|
g.drawString(as.getIterator(), (int) Math.round(this.getX() - this.textWidth / 2.),
|
|
(int) Math.round(this.getY() + this.textHeight / 2.));
|
|
}
|
|
|
|
}
|