From 9dbc3e923333195fe1bcd68c653126c1e416f199 Mon Sep 17 00:00:00 2001 From: GHOMARI Ilyes <ilyes.ghomari@etu.univ-amu.fr> Date: Thu, 12 Oct 2023 10:45:46 +0200 Subject: [PATCH] Fini TP3 --- .idea/gradle.xml | 5 +---- .idea/misc.xml | 2 +- src/main/java/shape/AbstractShape.java | 6 ++--- src/main/java/shape/App.java | 11 +++++++++- src/main/java/shape/BorderDecorator.java | 8 ------- src/main/java/shape/CenterDecorator.java | 28 ++++++++++++++++++++++++ src/main/java/shape/Decorator.java | 10 +++++++++ src/main/java/shape/Polygon.java | 2 ++ src/main/java/shape/Rectangle.java | 2 +- 9 files changed, 55 insertions(+), 19 deletions(-) create mode 100644 src/main/java/shape/CenterDecorator.java diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 6622921..622f299 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -4,11 +4,8 @@ <component name="GradleSettings"> <option name="linkedExternalProjectsSettings"> <GradleProjectSettings> - <option name="delegatedBuild" value="true" /> - <option name="testRunner" value="GRADLE" /> - <option name="distributionType" value="DEFAULT_WRAPPED" /> <option name="externalProjectPath" value="$PROJECT_DIR$" /> - <option name="gradleJvm" value="11" /> + <option name="gradleJvm" value="openjdk-21" /> <option name="modules"> <set> <option value="$PROJECT_DIR$" /> diff --git a/.idea/misc.xml b/.idea/misc.xml index 480dc8a..5d98256 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -4,7 +4,7 @@ <component name="FrameworkDetectionExcludesConfiguration"> <file type="web" url="file://$PROJECT_DIR$" /> </component> - <component name="ProjectRootManager" version="2" languageLevel="JDK_11" project-jdk-name="11" project-jdk-type="JavaSDK"> + <component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="11" project-jdk-type="JavaSDK"> <output url="file://$PROJECT_DIR$/out" /> </component> </project> \ No newline at end of file diff --git a/src/main/java/shape/AbstractShape.java b/src/main/java/shape/AbstractShape.java index 81a833e..782e71f 100644 --- a/src/main/java/shape/AbstractShape.java +++ b/src/main/java/shape/AbstractShape.java @@ -3,6 +3,7 @@ package shape; import javafx.geometry.Point2D; import java.util.ArrayList; +import java.util.Collections; import java.util.List; @@ -13,10 +14,7 @@ public abstract class AbstractShape implements Shape { } public void addPoints(Point2D... points){ - for (Point2D point : points) { - points.add() - points[points.length] = point; - } + Collections.addAll(this.points, points); } } diff --git a/src/main/java/shape/App.java b/src/main/java/shape/App.java index 8952fff..3905038 100644 --- a/src/main/java/shape/App.java +++ b/src/main/java/shape/App.java @@ -26,8 +26,17 @@ public class App extends Application { ShapeContainer shapeContainer = new ShapeContainer(); graphicsContext.setFill(Color.PAPAYAWHIP); graphicsContext.fillOval(10,10,10,10); - shapeContainer.addShape(new Rectangle(Color.BLUE,new Point2D(10,10), new Point2D(40,40))); + Rectangle rec = new Rectangle(Color.BLUE,new Point2D(10,10), new Point2D(40,40)); + BorderDecorator borderDecorator = new BorderDecorator(rec,5) ; + shapeContainer.addShape(rec); + shapeContainer.addShape(borderDecorator); + Polygon polygon = new Polygon(Color.RED,new Point2D(40,40), new Point2D(60,60), new Point2D(80,40)); + CenterDecorator centerDecorator = new CenterDecorator(polygon, 5); + shapeContainer.addShape(polygon); + shapeContainer.addShape(centerDecorator); + shapeContainer.draw(graphicsContext); + root.getChildren().add(canvas); primaryStage.setScene(new Scene(root)); primaryStage.show(); diff --git a/src/main/java/shape/BorderDecorator.java b/src/main/java/shape/BorderDecorator.java index a8e924f..a4f898a 100644 --- a/src/main/java/shape/BorderDecorator.java +++ b/src/main/java/shape/BorderDecorator.java @@ -21,15 +21,7 @@ public class BorderDecorator extends Decorator { } } - @Override - public int pointsCount() { - return decoratedShape.pointsCount(); - } - @Override - public Point2D point(int index) { - return decoratedShape.point(index); - } } diff --git a/src/main/java/shape/CenterDecorator.java b/src/main/java/shape/CenterDecorator.java new file mode 100644 index 0000000..e5729f5 --- /dev/null +++ b/src/main/java/shape/CenterDecorator.java @@ -0,0 +1,28 @@ +package shape; + +import javafx.geometry.Point2D; +import javafx.scene.canvas.GraphicsContext; + +public class CenterDecorator extends Decorator{ + + private final double radius; + + protected CenterDecorator(Shape decoratedShape, double radius) { + super(decoratedShape); + this.radius = radius; + } + + @Override + protected void drawDecoration(GraphicsContext graphicsContext) { + double xAll = 0, yAll = 0; + for (int i = 0; i < decoratedShape.pointsCount(); i++) { + xAll += decoratedShape.point(i).getX(); + yAll += decoratedShape.point(i).getY(); + } + + graphicsContext.fillOval((xAll/pointsCount())-radius,(yAll/pointsCount())-radius,radius*2,radius*2); + + } + + +} diff --git a/src/main/java/shape/Decorator.java b/src/main/java/shape/Decorator.java index b22e003..a6e0aad 100644 --- a/src/main/java/shape/Decorator.java +++ b/src/main/java/shape/Decorator.java @@ -1,5 +1,6 @@ package shape; +import javafx.geometry.Point2D; import javafx.scene.canvas.GraphicsContext; public abstract class Decorator implements Shape{ @@ -14,4 +15,13 @@ public abstract class Decorator implements Shape{ drawDecoration(context); } abstract void drawDecoration(GraphicsContext graphicsContext); + + public int pointsCount() { + return decoratedShape.pointsCount(); + } + + @Override + public Point2D point(int index) { + return decoratedShape.point(index); + } } diff --git a/src/main/java/shape/Polygon.java b/src/main/java/shape/Polygon.java index 6239892..2d0f5e2 100644 --- a/src/main/java/shape/Polygon.java +++ b/src/main/java/shape/Polygon.java @@ -36,5 +36,7 @@ public class Polygon implements Shape{ } context.fillPolygon(xPoints, yPoints, points.length); + context.setFill(Color.BLACK); + } } diff --git a/src/main/java/shape/Rectangle.java b/src/main/java/shape/Rectangle.java index d476131..b1f2048 100644 --- a/src/main/java/shape/Rectangle.java +++ b/src/main/java/shape/Rectangle.java @@ -32,6 +32,6 @@ public class Rectangle implements Shape{ double h = points[1].getY() - y; context.setFill(color); context.fillRect(x,y,w,h); - + context.setFill(Color.BLACK); } } -- GitLab