diff --git a/src/main/java/shape/AbstractShape.java b/src/main/java/shape/AbstractShape.java index 8cd7b1d187193eb5193a24441b1bd57ab5734b41..4a711681ca81eb1f9f07ef1eec33c65763b7f055 100644 --- a/src/main/java/shape/AbstractShape.java +++ b/src/main/java/shape/AbstractShape.java @@ -3,23 +3,28 @@ package shape; import javafx.geometry.Point2D; import javafx.scene.canvas.GraphicsContext; +import java.util.ArrayList; import java.util.List; public abstract class AbstractShape implements Shape { private List<Point2D> points; + + public AbstractShape(){ + this.points = new ArrayList<>(); + } @Override public int pointsCount() { - return points.size(); + return this.points.size(); } @Override public Point2D point(int index) { - return points.get(index); + return this.points.get(index); } @Override abstract public void draw(GraphicsContext context) ; public void addPoints(List<Point2D> points) { - points.addAll(points); + this.points.addAll(points); } } diff --git a/src/main/java/shape/App.java b/src/main/java/shape/App.java index 1a519e1401fe032f06aeee35967a27e48ca362fe..e019cb7d3fae1e5f06830975a686bb4110969818 100644 --- a/src/main/java/shape/App.java +++ b/src/main/java/shape/App.java @@ -10,6 +10,8 @@ import javafx.scene.paint.Color; import javafx.scene.paint.Paint; import javafx.stage.Stage; +import java.util.ArrayList; +import java.util.List; public class App extends Application { @@ -26,7 +28,13 @@ public class App extends Application { ShapeContainer shapeContainer = new ShapeContainer(); graphicsContext.setFill(Color.AQUAMARINE); graphicsContext.fillOval(10,10,10,10); - shapeContainer.addShape(new Rectangle(Color.BLUE,new Point2D(10,10), new Point2D(40,40))); + shapeContainer.addShape(new Rectangle(Color.BLUE,new Point2D(50,50), new Point2D(100,100))); + List<Point2D> points = new ArrayList<>(); + points.add(new Point2D(20,20)); + points.add(new Point2D(30,30)); + //points.add(new Point2D(80,80)); + + shapeContainer.addShape(new Polygon(Color.BLACK,points)); shapeContainer.draw(graphicsContext); root.getChildren().add(canvas); primaryStage.setScene(new Scene(root)); diff --git a/src/main/java/shape/BorderDecorator.java b/src/main/java/shape/BorderDecorator.java index 27a54e21d5a3e99fb83ffe9cfd89f993e52dc1d7..e96987dd829a51081d6bff3c7739a84146d58386 100644 --- a/src/main/java/shape/BorderDecorator.java +++ b/src/main/java/shape/BorderDecorator.java @@ -19,5 +19,11 @@ public class BorderDecorator extends Decorator{ @Override protected void drawDecoration(GraphicsContext graphicsContext) { List<Point2D> list = new ArrayList<>(); + for(int index = 0 ; index<pointsCount() ; index++){ + list.add(point(index)); + } + for(Point2D point : list){ + graphicsContext.strokeOval(point.getX(),point.getY(),radius,radius); + } } } diff --git a/src/main/java/shape/CenterDecorator.java b/src/main/java/shape/CenterDecorator.java new file mode 100644 index 0000000000000000000000000000000000000000..dbd3ecf9d1f01ee788940dd7a729f93a5ff0f2bc --- /dev/null +++ b/src/main/java/shape/CenterDecorator.java @@ -0,0 +1,18 @@ +package shape; + +import javafx.scene.canvas.GraphicsContext; + +public class CenterDecorator extends Decorator { + + double radius; + + public CenterDecorator(Shape decoratedShape, double radius) { + super(decoratedShape); + this.radius = radius; + } + + @Override + protected void drawDecoration(GraphicsContext graphicsContext) { + + } +} diff --git a/src/main/java/shape/Circle.java b/src/main/java/shape/Circle.java index 81d9175dc3977c5c95dec3693569c12ad12d8315..3bda54d9e45db1c1629ccd1e56ef7efa8fb4d252 100644 --- a/src/main/java/shape/Circle.java +++ b/src/main/java/shape/Circle.java @@ -3,19 +3,10 @@ package shape; import javafx.geometry.Point2D; import javafx.scene.canvas.GraphicsContext; -public class Circle implements Shape { +public class Circle extends AbstractShape implements Shape { public Circle(double x, double y, double sqrt) { - } - @Override - public int pointsCount() { - return 0; - } - - @Override - public Point2D point(int index) { - return null; } @Override diff --git a/src/main/java/shape/Polygon.java b/src/main/java/shape/Polygon.java index e142846338c4934a66ddb2d2ca9c6cd742788d08..967ad06a64e3600da1c41d38407d8ec2a97134de 100644 --- a/src/main/java/shape/Polygon.java +++ b/src/main/java/shape/Polygon.java @@ -23,6 +23,7 @@ public class Polygon extends AbstractShape { coordinateX[index]=point(index).getX(); coordinateY[index]=point(index).getY(); } - context.strokePolygon(coordinateX,coordinateY,pointsCount()); + context.setFill(color); + context.fillPolygon(coordinateX,coordinateY,pointsCount()); } } diff --git a/src/main/java/shape/Rectangle.java b/src/main/java/shape/Rectangle.java index 4192ff4bad6c5d72327863a9ffc6927b03fe22d2..6bcb4332f2fcfeb9576cea01e7a4527c5f172056 100644 --- a/src/main/java/shape/Rectangle.java +++ b/src/main/java/shape/Rectangle.java @@ -19,7 +19,9 @@ public class Rectangle extends AbstractShape implements Shape{ @Override public void draw(GraphicsContext context) { - context.strokeRect(point(0).getX(),point(0).getY(),point(1).getX()-point(0).getX(), - point(1).getY()-point(0).getY()); + context.setFill(color); + context.fillRect(point(0).getX(),point(0).getY(),(point(1).getX())-(point(0).getX()), + (point(1).getY())-(point(0).getY())); + } } \ No newline at end of file