diff --git a/src/main/java/serializer/DrawerWithSave.java b/src/main/java/serializer/DrawerWithSave.java index e3b746fd415672722e43a9b679e9588d9e837fd8..2852edf47f756a132226ce5463599bdf1b95601c 100644 --- a/src/main/java/serializer/DrawerWithSave.java +++ b/src/main/java/serializer/DrawerWithSave.java @@ -1,10 +1,14 @@ package serializer; +import javafx.scene.canvas.Canvas; import javafx.scene.control.Alert; import javafx.stage.FileChooser; +import shape.Shape; import java.io.File; import java.io.IOException; +import java.util.List; +import java.util.stream.Collectors; public class DrawerWithSave extends state.Drawer { diff --git a/src/main/java/serializer/ShapeReader.java b/src/main/java/serializer/ShapeReader.java index 54540cca74b29246f5f44d2344925d4792a3e4a0..4905948e502223776ff4e2f8367b633669915e01 100644 --- a/src/main/java/serializer/ShapeReader.java +++ b/src/main/java/serializer/ShapeReader.java @@ -7,6 +7,7 @@ import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.List; +import java.util.stream.Collector; public class ShapeReader { public static List<Shape> read(File file) throws IOException { diff --git a/src/main/java/shape/AbstractShape.java b/src/main/java/shape/AbstractShape.java deleted file mode 100644 index db97daddd5da35efae50a2178be048ab9c716e3f..0000000000000000000000000000000000000000 --- a/src/main/java/shape/AbstractShape.java +++ /dev/null @@ -1,33 +0,0 @@ -package shape; - -import javafx.geometry.Point2D; -import javafx.scene.canvas.GraphicsContext; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -public abstract class AbstractShape implements Shape { - - protected List<Point2D> points = new ArrayList<>(); - - public void addPoints(Point2D... points){ - this.points.addAll(Arrays.asList(points)); - } - @Override - public int pointsCount() { - return points.size(); - } - - @Override - public Point2D point(int index) { - if( index >= 0 && index < points.size()){ - return points.get(index); - }else { - throw new IndexOutOfBoundsException("Index out of bounds"); - } - } - - @Override - public abstract void draw(GraphicsContext context) ; -} diff --git a/src/main/java/shape/App.java b/src/main/java/shape/App.java index 0ba88a56c91b19fc643b0488c92db27a9362a639..1a519e1401fe032f06aeee35967a27e48ca362fe 100644 --- a/src/main/java/shape/App.java +++ b/src/main/java/shape/App.java @@ -7,6 +7,7 @@ import javafx.scene.Scene; import javafx.scene.canvas.Canvas; import javafx.scene.canvas.GraphicsContext; import javafx.scene.paint.Color; +import javafx.scene.paint.Paint; import javafx.stage.Stage; @@ -20,20 +21,12 @@ public class App extends Application { @Override public void start(Stage primaryStage) { Group root = new Group(); - Canvas canvas = new Canvas(300, 300); + Canvas canvas = new Canvas(130, 110); GraphicsContext graphicsContext = canvas.getGraphicsContext2D(); ShapeContainer shapeContainer = new ShapeContainer(); - - Shape rectangle = new Rectangle(Color.BLUE, new Point2D(50, 50), new Point2D(150, 100)); - rectangle = new BorderDecorator(rectangle, 10); - rectangle = new CenterDecorator(rectangle, 5); - shapeContainer.addShape(rectangle); - - Shape polygone = new Polygon(Color.YELLOW, new Point2D(210,100),new Point2D(250,100),new Point2D(150,160), new Point2D(90,100)); - polygone = new BorderDecorator(polygone, 15); - polygone = new CenterDecorator(polygone, 5); - shapeContainer.addShape(polygone); - + 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.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 deleted file mode 100644 index bb0865612f230286f105742efda3e9c2a4fe51b0..0000000000000000000000000000000000000000 --- a/src/main/java/shape/BorderDecorator.java +++ /dev/null @@ -1,30 +0,0 @@ -package shape; - -import javafx.geometry.Point2D; -import javafx.scene.canvas.GraphicsContext; -import javafx.scene.paint.Color; - -public class BorderDecorator extends Decorator { - - private final double radius; - - public BorderDecorator(Shape decoratedShape ,double radius) { - super(decoratedShape); - this.radius = radius; - } - protected void drawDecoration(GraphicsContext context) { - context.setStroke(Color.BLACK); - context.setLineWidth(2); - - if (decoratedshape.pointsCount() >= 2){ - Point2D point0 = decoratedshape.point(0); - Point2D point1 = decoratedshape.point(1); - - double x = Math.min(point0.getX(), point1.getX()); - double y = Math.min(point0.getY(), point1.getY()); - double width = Math.abs(point1.getX() - point0.getX()); - double height = Math.abs(point1.getY() - point0.getY()); - context.strokeRoundRect(x,y, width,height,radius, radius); - } - } -} diff --git a/src/main/java/shape/CenterDecorator.java b/src/main/java/shape/CenterDecorator.java deleted file mode 100644 index 8a7c68a07a6b52549afdd6e8ba75520136c3c5d6..0000000000000000000000000000000000000000 --- a/src/main/java/shape/CenterDecorator.java +++ /dev/null @@ -1,26 +0,0 @@ -package shape; - -import javafx.geometry.Point2D; -import javafx.scene.canvas.GraphicsContext; -import javafx.scene.paint.Color; - -public class CenterDecorator extends Decorator{ - private final double radius; - public CenterDecorator(Shape decoratedShape, double radius) { - super(decoratedShape); - this.radius = radius; - } - protected void drawDecoration(GraphicsContext context) { - - if (decoratedshape.pointsCount() >= 2) { - Point2D point0 = decoratedshape.point(0); - Point2D point1 = decoratedshape.point(1); - - double centerX = point0.getX() + point1.getX() / 2; - double centerY = point0.getY() + point1.getY() / 2; - - context.setFill(Color.RED); - context.strokeOval(centerX - radius, centerY - radius, radius * 2, radius * 2); - } - } -} diff --git a/src/main/java/shape/Decorator.java b/src/main/java/shape/Decorator.java deleted file mode 100644 index 08bed2e38c7ac74ec230676535c0101f24189c61..0000000000000000000000000000000000000000 --- a/src/main/java/shape/Decorator.java +++ /dev/null @@ -1,27 +0,0 @@ -package shape; - -import javafx.geometry.Point2D; -import javafx.scene.canvas.GraphicsContext; - -public abstract class Decorator implements Shape { - protected final Shape decoratedshape; - public Decorator(Shape decoratedShape) { - this.decoratedshape = decoratedShape; - } - @Override - public int pointsCount() { - return decoratedshape.pointsCount(); - } - - @Override - public Point2D point(int index) { - return decoratedshape.point(index); - } - - @Override - public void draw(GraphicsContext context) { - decoratedshape.draw(context); - drawDecoration(context); - } - protected abstract void drawDecoration(GraphicsContext context) ; -} diff --git a/src/main/java/shape/Polygon.java b/src/main/java/shape/Polygon.java deleted file mode 100644 index 9140320794131795fca7aed9cfd9cf713c133f65..0000000000000000000000000000000000000000 --- a/src/main/java/shape/Polygon.java +++ /dev/null @@ -1,29 +0,0 @@ -package shape; - -import javafx.geometry.Point2D; -import javafx.scene.canvas.GraphicsContext; -import javafx.scene.paint.Color; - -public class Polygon extends AbstractShape { - - private final Color color; - - public Polygon(Color color, Point2D... points) { - this.color = color; - addPoints(points); - } - - - @Override - public void draw(GraphicsContext context) { - context.setStroke(color); - context.beginPath(); - context.moveTo(points.get(0).getX(), points.get(0).getY()); - for (int i = 1; i < pointsCount() ; i++) { - context.lineTo(points.get(i).getX(), points.get(i).getY()); - } - context.closePath(); - context.stroke(); - - } -} diff --git a/src/main/java/shape/Rectangle.java b/src/main/java/shape/Rectangle.java index efb2f0a8c1921129416949b2c95e29f6d50ab0b3..b0e90627b6345f22ac31ab8bf5fb40f81e4d4f66 100644 --- a/src/main/java/shape/Rectangle.java +++ b/src/main/java/shape/Rectangle.java @@ -4,26 +4,24 @@ import javafx.geometry.Point2D; import javafx.scene.canvas.GraphicsContext; import javafx.scene.paint.Color; -public class Rectangle extends AbstractShape{ - private final Color color; - - public Rectangle(Color color, Point2D point0, Point2D point1){ +public class Rectangle implements Shape{ + Color color; + Rectangle(Color color, Point2D point0, Point2D point1){ this.color = color; - addPoints(point0, point1); } @Override - public void draw(GraphicsContext context) { - context.setStroke(color); + public int pointsCount() { + return 0; + } - Point2D point0 = points.get(0); - Point2D point1 = points.get(1); + @Override + public Point2D point(int index) { + return null; + } - double x = Math.min(point0.getX(), point1.getX()); - double y = Math.min(point0.getY(), point1.getY()); - double width = Math.abs(point1.getX() - point0.getX()); - double height = Math.abs(point1.getY() - point0.getY()); + @Override + public void draw(GraphicsContext context) { - context.strokeRect(x,y,width,height); } } diff --git a/src/main/java/shape/ShapeContainer.java b/src/main/java/shape/ShapeContainer.java index aae70ed5e542047b60b0f7147f021811017bdbc7..91c7d2977ecd7352ceb7ffbe45f9c541bfd8d45f 100644 --- a/src/main/java/shape/ShapeContainer.java +++ b/src/main/java/shape/ShapeContainer.java @@ -9,9 +9,7 @@ public class ShapeContainer{ private List<Shape> shapes = new ArrayList<>(); - public void addShape(Shape shape){ - shapes.add(shape); - } + public void addShape(Shape shape){} public void draw(GraphicsContext context){ for(Shape shape : shapes) diff --git a/src/main/java/state/Drawer.java b/src/main/java/state/Drawer.java index c6e5f278d50e2910a22e24478b246c9a9679dc87..67b9e1c37ec55c09b9965103ca38cab002b1d815 100644 --- a/src/main/java/state/Drawer.java +++ b/src/main/java/state/Drawer.java @@ -1,6 +1,7 @@ package state; import javafx.scene.canvas.Canvas; +import shape.Circle; import shape.Shape; import java.util.ArrayList;