1 package org.catacomb.graph.drawing; 2 3 import org.catacomb.graph.gui.Painter; 4 5 6 7 public class Oval extends FixedDrawingComponent { 8 9 10 11 public double x; 12 public double y; 13 public double rx; 14 public double ry; 15 16 public Oval() { 17 super(); 18 } 19 20 21 public void setSize(double sx, double sy) { 22 rx = sx; 23 ry = sy; 24 } 25 26 27 28 29 public void instruct(Painter p, double offx, double offy, double scale) { 30 double w = getWidth(); 31 if (isFilled()) { 32 p.drawFilledOval(offx + scale * x, offy + scale * y, 33 scale * rx, scale * ry, getFillColor(), getColor(), 34 w, widthIsPixels()); 35 } else if (w > 0.5) { 36 p.drawOval(offx + scale * x, offy + scale * y, 37 scale * rx, scale * ry, getColor(), w, widthIsPixels()); 38 39 } 40 } 41 42 43 public void applyToShape(Shape shp) { 44 shp.setCurviness(1.0); 45 applySymmetryToShape(shp); 46 47 double[] xpts = { x - rx, x - rx, x + rx, x + rx }; 48 double[] ypts = { y - ry, y + ry, y + ry, y - ry }; 49 shp.setXpts(xpts); 50 shp.setYpts(ypts); 51 } 52 53 54 public void applySymmetryToShape(Shape shp) { 55 shp.setSymmetry(ShapeSymmetry.RECTANGLE); 56 } 57 58 }