org.stathissideris.ascii2image.graphics.DiagramText Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of plantuml Show documentation
Show all versions of plantuml Show documentation
PlantUML is a component that allows to quickly write :
* sequence diagram,
* use case diagram,
* class diagram,
* activity diagram,
* component diagram,
* state diagram
* object diagram
/*
* DiTAA - Diagrams Through Ascii Art
*
* Copyright (C) 2004 Efstathios Sideris
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
*/
package org.stathissideris.ascii2image.graphics;
import java.awt.Color;
import java.awt.Font;
import java.awt.geom.Rectangle2D;
/**
*
* @author Efstathios Sideris
*/
public class DiagramText extends DiagramComponent {
public static final Color DEFAULT_COLOR = Color.black;
private String text;
private Font font;
private int xPos, yPos;
private Color color = Color.black;
private boolean isTextOnLine = false;
private boolean hasOutline = false;
private Color outlineColor = Color.white;
private final FontMeasurer fontMeasurer;
public DiagramText(int x, int y, String text, Font font, FontMeasurer fontMeasurer){
if(text == null) throw new IllegalArgumentException("DiagramText cannot be initialised with a null string");
if(font == null) throw new IllegalArgumentException("DiagramText cannot be initialised with a null font");
this.xPos = x;
this.yPos = y;
this.text = text;
this.font = font;
this.fontMeasurer = fontMeasurer;
}
public void centerInBounds(Rectangle2D bounds){
centerHorizontallyBetween((int) bounds.getMinX(), (int) bounds.getMaxX());
centerVerticallyBetween((int) bounds.getMinY(), (int) bounds.getMaxY());
}
public void centerHorizontallyBetween(int minX, int maxX){
int width = fontMeasurer.getWidthFor(text, font);
int center = Math.abs(maxX - minX) / 2;
xPos += Math.abs(center - width / 2);
}
public void centerVerticallyBetween(int minY, int maxY){
int zHeight = fontMeasurer.getZHeight(font);
int center = Math.abs(maxY - minY) / 2;
yPos -= Math.abs(center - zHeight / 2);
}
public void alignRightEdgeTo(int x){
int width = fontMeasurer.getWidthFor(text, font);
xPos = x - width;
}
/**
* @return
*/
public Color getColor() {
return color;
}
/**
* @return
*/
public Font getFont() {
return font;
}
/**
* @return
*/
public String getText() {
return text;
}
/**
* @return
*/
public int getXPos() {
return xPos;
}
/**
* @return
*/
public int getYPos() {
return yPos;
}
/**
* @param color
*/
public void setColor(Color color) {
this.color = color;
}
/**
* @param font
*/
public void setFont(Font font) {
this.font = font;
}
/**
* @param string
*/
public void setText(String string) {
text = string;
}
/**
* @param i
*/
public void setXPos(int i) {
xPos = i;
}
/**
* @param i
*/
public void setYPos(int i) {
yPos = i;
}
public Rectangle2D getBounds(){
Rectangle2D bounds = fontMeasurer.getBoundsFor(text, font);
bounds.setRect(
bounds.getMinX() + xPos,
bounds.getMinY() + yPos,
bounds.getWidth(),
bounds.getHeight());
return bounds;
}
public String toString(){
return "DiagramText, at ("+xPos+", "+yPos+"), within "+getBounds()+" '"+text+"', "+color+" "+font;
}
/**
* @return
*/
public boolean isTextOnLine() {
return isTextOnLine;
}
/**
* @param b
*/
public void setTextOnLine(boolean b) {
isTextOnLine = b;
}
public boolean hasOutline() {
return hasOutline;
}
public void setHasOutline(boolean hasOutline) {
this.hasOutline = hasOutline;
}
public Color getOutlineColor() {
return outlineColor;
}
public void setOutlineColor(Color outlineColor) {
this.outlineColor = outlineColor;
}
}