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 }