1 26 27 package org.nightlabs.editor2d.render; 28 29 import java.awt.Color ; 30 import java.awt.Font ; 31 import java.awt.Graphics2D ; 32 import java.awt.Point ; 33 import java.awt.Rectangle ; 34 import java.awt.font.FontRenderContext ; 35 import java.awt.font.GlyphVector ; 36 import java.awt.geom.AffineTransform ; 37 import java.awt.geom.GeneralPath ; 38 import java.awt.geom.Rectangle2D ; 39 40 import org.apache.log4j.Logger; 41 import org.nightlabs.editor2d.DrawComponent; 42 import org.nightlabs.editor2d.ShapeDrawComponent; 43 import org.nightlabs.editor2d.j2d.GeneralShape; 44 import org.nightlabs.editor2d.util.EditorModelUtil; 45 import org.nightlabs.editor2d.util.GeomUtil; 46 47 public abstract class AbstractShapeStringRenderer 48 extends BaseShapeRenderer 49 implements StringRenderer, ShapeRenderer 50 { 51 public static final Logger LOGGER = Logger.getLogger(AbstractShapeStringRenderer.class); 52 53 public AbstractShapeStringRenderer() { 54 super(); 55 } 56 57 public static final Font DEFAULT_FONT = new Font ("Arial", Font.BOLD, 12); 58 public static final Color DEFAULT_COLOR = Color.BLACK; 59 60 protected void init() 61 { 62 super.init(); 63 fontColor = DEFAULT_COLOR; 64 font = DEFAULT_FONT; 65 } 66 67 protected String s = null; 68 69 73 public void paint(DrawComponent dc, Graphics2D g2d) 74 { 75 ShapeDrawComponent sdc = (ShapeDrawComponent) dc; 76 GeneralShape shape = sdc.getGeneralShape(); 77 if (showFillColor) { 78 g2d.setPaint(getFillColor(sdc)); 79 g2d.fill(shape); 80 } 81 if (showLineColor) { 82 g2d.setPaint(getLineColor(sdc)); 83 g2d.setStroke(stroke); 84 g2d.draw(shape); 85 } 86 if (showString == true) 87 { 88 String s = getString(sdc); 89 paintString(sdc, s, g2d); 90 } 91 } 92 93 protected GlyphVector glyphVector = null; 94 protected Rectangle glyphBounds = null; 95 protected Rectangle shapeBounds = null; 96 protected Point glyphLocation = null; 97 98 protected GlyphVector createGlyphVector(String s, FontRenderContext frc) { 99 return font.createGlyphVector(frc, s); 100 } 101 102 protected void paintString(ShapeDrawComponent sdc, String s, Graphics2D g2d) 103 { 104 if (s != null) 105 { 106 glyphVector = createGlyphVector(getString(sdc), g2d.getFontRenderContext()); 107 glyphBounds = glyphVector.getVisualBounds().getBounds(); 108 shapeBounds = sdc.getBounds(); 109 glyphLocation = EditorModelUtil.getLeftTopCenterLocation(glyphBounds.getBounds(), shapeBounds); 110 g2d.drawGlyphVector(glyphVector, glyphLocation.x, glyphLocation.y); 111 } 112 } 113 114 140 168 173 public abstract String getString(ShapeDrawComponent sdc); 174 175 184 protected Color getFillColor(ShapeDrawComponent sdc) { 185 return sdc.getFillColor(); 186 } 187 188 197 protected Color getLineColor(ShapeDrawComponent sdc) { 198 return sdc.getLineColor(); 199 } 200 201 protected boolean showString = true; 202 203 206 public boolean isShowString() { 207 return showString; 208 } 209 210 213 public void setShowString(boolean showString) { 214 this.showString = showString; 215 } 216 217 protected Font font = DEFAULT_FONT; 218 219 222 public Font getFont() { 223 return font; 224 } 225 226 229 public void setFont(Font f) { 230 this.font = f; 231 } 232 233 protected Color fontColor = null; 234 235 238 public Color getFontColor() { 239 return fontColor; 240 } 241 242 245 public void setFontColor(Color fontColor) { 246 this.fontColor = fontColor; 247 } 248 249 protected boolean showLineColor = true; 250 251 256 public boolean isShowLineColor() { 257 return showLineColor; 258 } 259 260 264 public void setShowLineColor(boolean showLineColor) { 265 this.showLineColor = showLineColor; 266 } 267 268 protected boolean showFillColor = true; 269 270 274 public boolean isShowFillColor() { 275 return showFillColor; 276 } 277 278 282 public void setShowFillColor(boolean showColor) { 283 this.showFillColor = showColor; 284 } 285 286 } 287 | Popular Tags |