From a92a539ee93da609e58501a1e0f21d8a90d40ede Mon Sep 17 00:00:00 2001 From: Chadi <130995657+PayneKev@users.noreply.github.com> Date: Tue, 24 Sep 2024 19:30:14 +0200 Subject: [PATCH] filled the methods in each class --- src/main/java/shape/AbstractShape.java | 24 +++++++++++++----------- src/main/java/shape/BorderDecorator.java | 11 +++++++++-- src/main/java/shape/CenterDecorator.java | 15 ++++++++++++++- src/main/java/shape/Decorator.java | 5 +++-- src/main/java/shape/Polygon.java | 11 ++++++++--- src/main/java/shape/Rectangle.java | 12 +++++++++--- src/main/java/shape/ShapeContainer.java | 4 +++- 7 files changed, 59 insertions(+), 23 deletions(-) diff --git a/src/main/java/shape/AbstractShape.java b/src/main/java/shape/AbstractShape.java index 3de5886..4947ec0 100644 --- a/src/main/java/shape/AbstractShape.java +++ b/src/main/java/shape/AbstractShape.java @@ -5,23 +5,19 @@ import javafx.scene.canvas.GraphicsContext; import java.util.List; -public class AbstractShape implements Shape { +public abstract class AbstractShape implements Shape { private List<Point2D> points; public AbstractShape(List<Point2D> points) { this.points = points; } - public List<Point2D> addPoints(Point2D points){ - this.points.add(points); - return this.points; + public void addPoints(Point2D... points){ + for (Point2D point: points) + this.points.add(point); } @Override public int pointsCount() { - int count = 0; - for (Point2D point : points) { - count++; - } - return count; + return points.size(); } @Override @@ -31,8 +27,14 @@ public class AbstractShape implements Shape { @Override public void draw(GraphicsContext context) { - for (Point2D point : points) { - + if (pointsCount()>0){ + context.beginPath(); + context.moveTo(point(0).getX(), point(0).getY()); + for (int i = 1; i<pointsCount(); i++){ + context.lineTo(point(i).getX(),point(i).getY()); + } + context.closePath(); + context.stroke(); } } diff --git a/src/main/java/shape/BorderDecorator.java b/src/main/java/shape/BorderDecorator.java index 05a6d64..ff3c0d3 100644 --- a/src/main/java/shape/BorderDecorator.java +++ b/src/main/java/shape/BorderDecorator.java @@ -1,6 +1,8 @@ package shape; +import javafx.geometry.Point2D; import javafx.scene.canvas.GraphicsContext; +import javafx.scene.paint.Color; public class BorderDecorator extends Decorator { @@ -10,7 +12,12 @@ public class BorderDecorator extends Decorator { super(decoratedShape); this.radius = radius; } - protected void drawDecoration(GraphicsContext context) { - + protected void drawDecoration(GraphicsContext context) { + context.setStroke(Color.BLACK); + context.setLineWidth(2); + for (int i=0; i<pointsCount(); i++){ + Point2D point = point(i); + context.strokeOval(point.getX() - radius, point.getY()- radius,radius*2,radius*2); + } } } diff --git a/src/main/java/shape/CenterDecorator.java b/src/main/java/shape/CenterDecorator.java index 0eece70..eb792b5 100644 --- a/src/main/java/shape/CenterDecorator.java +++ b/src/main/java/shape/CenterDecorator.java @@ -1,6 +1,8 @@ package shape; +import javafx.geometry.Point2D; import javafx.scene.canvas.GraphicsContext; +import javafx.scene.paint.Color; public class CenterDecorator extends Decorator{ private double radius; @@ -9,6 +11,17 @@ public class CenterDecorator extends Decorator{ this.radius = radius; } protected void drawDecoration(GraphicsContext context) { - + double centerX = 0; + double centerY = 0; + for (int i =0; i<pointsCount(); i++){ + Point2D point = point(i); + centerX += point.getX(); + centerY += point.getY(); + } + centerX /= pointsCount(); + centerY /= pointsCount(); + context.setStroke(Color.RED); + context.setLineWidth(2); + 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 index 2f08545..69ee423 100644 --- a/src/main/java/shape/Decorator.java +++ b/src/main/java/shape/Decorator.java @@ -15,12 +15,13 @@ public abstract class Decorator implements Shape { @Override public Point2D point(int index) { - return null; + return decoratedshape.point(index); } @Override public void draw(GraphicsContext context) { - + decoratedshape.draw(context); + drawDecoration(context); } protected void drawDecoration(GraphicsContext context) { diff --git a/src/main/java/shape/Polygon.java b/src/main/java/shape/Polygon.java index d5501cb..a53b2f4 100644 --- a/src/main/java/shape/Polygon.java +++ b/src/main/java/shape/Polygon.java @@ -4,27 +4,32 @@ import javafx.geometry.Point2D; import javafx.scene.canvas.GraphicsContext; import javafx.scene.paint.Color; -public class Polygon implements Shape { +import java.util.List; + +public class Polygon extends AbstractShape { private Color color; public Polygon(Color color, Point2D... points) { + super(List.of(points)); this.color = color; } @Override public int pointsCount() { - return 0; + return super.pointsCount(); } @Override public Point2D point(int index) { - return point(index); + return super.point(index); } @Override public void draw(GraphicsContext context) { context.setFill(color); + super.draw(context); + context.fill(); } } diff --git a/src/main/java/shape/Rectangle.java b/src/main/java/shape/Rectangle.java index ff2fcc4..e0ee83f 100644 --- a/src/main/java/shape/Rectangle.java +++ b/src/main/java/shape/Rectangle.java @@ -4,24 +4,30 @@ import javafx.geometry.Point2D; import javafx.scene.canvas.GraphicsContext; import javafx.scene.paint.Color; -public class Rectangle implements Shape{ +import java.util.List; + +public class Rectangle extends AbstractShape{ private Color color; Rectangle(Color color, Point2D point0, Point2D point1){ + super(List.of(point0, new Point2D(point1.getX(),point0.getY()), + point1,new Point2D(point0.getX(),point1.getY()))); this.color = color; } @Override public int pointsCount() { - return 2; + return super.pointsCount(); } @Override public Point2D point(int index) { - return point(index); + return super.point(index); } @Override public void draw(GraphicsContext context) { context.setFill(color); + super.draw(context); + context.fill(); } } diff --git a/src/main/java/shape/ShapeContainer.java b/src/main/java/shape/ShapeContainer.java index 91c7d29..aae70ed 100644 --- a/src/main/java/shape/ShapeContainer.java +++ b/src/main/java/shape/ShapeContainer.java @@ -9,7 +9,9 @@ public class ShapeContainer{ private List<Shape> shapes = new ArrayList<>(); - public void addShape(Shape shape){} + public void addShape(Shape shape){ + shapes.add(shape); + } public void draw(GraphicsContext context){ for(Shape shape : shapes) -- GitLab