/* * @(#)BasicArcPainter.java * * Copyright 2002 EGANTT LLP. All rights reserved. * PROPRIETARY/QPL. Use is subject to license terms. */ package com.egantt.drawing.painter.basic; import com.egantt.awt.graphics.GraphicsContext; import com.egantt.drawing.DrawingPainter; import com.egantt.model.drawing.axis.AxisInterval; import com.egantt.model.drawing.painter.PainterState; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Rectangle; import java.awt.Shape; import java.awt.geom.Arc2D; /** * Arc painter is a different instance than the standard shape painter, * as we need to pass in parameters on the fly * the type is constant you should use this to specify the ArcType Arc2D.*; */ public class BasicArcPainter implements DrawingPainter { /** * The closure type for an open arc with no path segments * connecting the two ends of the arc segment. */ public final static int OPEN = Arc2D.OPEN; /** * The closure type for an arc closed by drawing a straight * line segment from the start of the arc segment to the end of the * arc segment. */ public final static int CHORD = Arc2D.CHORD; /** * The closure type for an arc closed by drawing straight line * segments from the start of the arc segment to the center * of the full ellipse and from that point to the end of the arc segment. */ public final static int PIE = Arc2D.PIE; protected final Arc2D arc; public BasicArcPainter(int type) { this.arc = new Arc2D.Double(type); } // __________________________________________________________________________ public Shape paint(Object key, Graphics g, Rectangle bounds, PainterState state, GraphicsContext context) { AxisInterval interval = (AxisInterval) key; double startAngle = ((Number) interval.getStart()).doubleValue(); double finishAngle = ((Number) interval.getFinish()).doubleValue(); arc.setFrame(bounds.x, bounds.y, bounds.width, bounds.height); arc.setAngleStart(startAngle); arc.setAngleExtent(finishAngle - startAngle); Graphics2D g2d = (Graphics2D) g; g2d.draw(arc); return null; } public long width(Object key, java.awt.Graphics g, Rectangle bounds, GraphicsContext context) { return 0; } }