1 // Copyright 2002-2007, FreeHEP. 2 package org.freehep.graphicsio.emf.gdi; 3 4 import java.awt.Point; 5 import java.awt.Rectangle; 6 import java.awt.geom.Arc2D; 7 import java.io.IOException; 8 9 import org.freehep.graphicsio.emf.EMFInputStream; 10 import org.freehep.graphicsio.emf.EMFTag; 11 import org.freehep.graphicsio.emf.EMFRenderer; 12 13 /** 14 * Arc TAG. 15 * 16 * @author Mark Donszelmann 17 * @version $Id: Arc.java 10377 2007-01-23 15:44:34Z duns $ 18 */ 19 public class Arc extends AbstractArc { 20 21 public Arc() { 22 super(45, 1, null, null, null); 23 } 24 25 public Arc(Rectangle bounds, Point start, Point end) { 26 super(45, 1, bounds, start, end); 27 } 28 29 public EMFTag read(int tagID, EMFInputStream emf, int len) 30 throws IOException { 31 32 return new Arc( 33 emf.readRECTL(), 34 emf.readPOINTL(), 35 emf.readPOINTL()); 36 } 37 38 /** 39 * displays the tag using the renderer 40 * 41 * @param renderer EMFRenderer storing the drawing session data 42 */ 43 public void render(EMFRenderer renderer) { 44 // The Arc function draws an elliptical arc. 45 // 46 // BOOL Arc( 47 // HDC hdc, // handle to device context 48 // int nLeftRect, // x-coord of rectangle's upper-left corner 49 // int nTopRect, // y-coord of rectangle's upper-left corner 50 // int nRightRect, // x-coord of rectangle's lower-right corner 51 // int nBottomRect, // y-coord of rectangle's lower-right corner 52 // int nXStartArc, // x-coord of first radial ending point 53 // int nYStartArc, // y-coord of first radial ending point 54 // int nXEndArc, // x-coord of second radial ending point 55 // int nYEndArc // y-coord of second radial ending point 56 // ); 57 // The points (nLeftRect, nTopRect) and (nRightRect, nBottomRect) 58 // specify the bounding rectangle. 59 // An ellipse formed by the specified bounding rectangle defines the 60 // curve of the arc. 61 // The arc extends in the current drawing direction from the point 62 // where it intersects the 63 // radial from the center of the bounding rectangle to the 64 // (nXStartArc, nYStartArc) point. 65 // The arc ends where it intersects the radial from the center of 66 // the bounding rectangle to 67 // the (nXEndArc, nYEndArc) point. If the starting point and ending 68 // point are the same, 69 // a complete ellipse is drawn. 70 71 renderer.fillAndDrawOrAppend( 72 getShape(renderer, Arc2D.OPEN)); 73 } 74 }