/* * @(#)AbstractFormatPainter.java * * Copyright 2002 EGANTT LLP. All rights reserved. * PROPRIETARY/QPL. Use is subject to license terms. */ package com.egantt.drawing.painter.format; import java.awt.FontMetrics; import java.awt.Graphics; import java.awt.Rectangle; import java.awt.Shape; import java.awt.font.LineMetrics; import com.egantt.awt.graphics.GraphicsContext; import com.egantt.drawing.DrawingPainter; import com.egantt.model.drawing.painter.PainterState; public abstract class AbstractFormatPainter implements DrawingPainter { // _________________________________________________________________________ public Shape paint(Object key, Graphics g, Rectangle bounds, PainterState state, GraphicsContext context) { String value = getValue(key, context); //FontMetrics fm = g.getFontMetrics(); LineMetrics metrics = g.getFontMetrics().getLineMetrics(value, g); //Rectangle2D rect = fm.getStringBounds(value, g); g.drawString(getValue(key, context), bounds.x, bounds.y + (int) metrics.getAscent()); return bounds; // to do use the line metrics } public long width(Object key, Graphics g, Rectangle bounds, GraphicsContext context) { FontMetrics metrics = g.getFontMetrics(); return metrics.stringWidth(getValue(key, context)); } // __________________________________________________________________________ protected abstract String getValue(Object key, GraphicsContext context); }