diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 66229213367b0b0a3d7068fb2c7013558ce98ced..41f2f906b9835158893a62198be0f7864908f415 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -8,7 +8,7 @@ <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="jbr-11" /> <option name="modules"> <set> <option value="$PROJECT_DIR$" /> diff --git a/.idea/misc.xml b/.idea/misc.xml index 6624aa5239bd87293312b297feabe77375fc86df..ca6d6650b257d5a33947c2f35120003e5eefff2f 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,9 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> <project version="4"> <component name="ExternalStorageConfigurationManager" enabled="true" /> <component name="FrameworkDetectionExcludesConfiguration"> <file type="web" url="file://$PROJECT_DIR$" /> </component> - <component name="ProjectRootManager" version="2" languageLevel="JDK_11" project-jdk-name="corretto-16" project-jdk-type="JavaSDK"> + <component name="ProjectRootManager" version="2" languageLevel="JDK_11" project-jdk-name="jbr-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 new file mode 100644 index 0000000000000000000000000000000000000000..8cd7b1d187193eb5193a24441b1bd57ab5734b41 --- /dev/null +++ b/src/main/java/shape/AbstractShape.java @@ -0,0 +1,25 @@ +package shape; + +import javafx.geometry.Point2D; +import javafx.scene.canvas.GraphicsContext; + +import java.util.List; + +public abstract class AbstractShape implements Shape { + private List<Point2D> points; + @Override + public int pointsCount() { + return points.size(); + } + + @Override + public Point2D point(int index) { + return points.get(index); + } + + @Override + abstract public void draw(GraphicsContext context) ; + public void addPoints(List<Point2D> points) { + points.addAll(points); + } +} diff --git a/src/main/java/shape/BorderDecorator.java b/src/main/java/shape/BorderDecorator.java new file mode 100644 index 0000000000000000000000000000000000000000..27a54e21d5a3e99fb83ffe9cfd89f993e52dc1d7 --- /dev/null +++ b/src/main/java/shape/BorderDecorator.java @@ -0,0 +1,23 @@ +package shape; + +import javafx.geometry.Point2D; +import javafx.scene.canvas.GraphicsContext; + +import java.util.ArrayList; +import java.util.List; + +public class BorderDecorator extends Decorator{ + + private double radius; + + public BorderDecorator(Shape decoratedShape, double radius) { + super(decoratedShape); + this.radius = radius; + } + + + @Override + protected void drawDecoration(GraphicsContext graphicsContext) { + List<Point2D> list = new ArrayList<>(); + } +} diff --git a/src/main/java/shape/Decorator.java b/src/main/java/shape/Decorator.java new file mode 100644 index 0000000000000000000000000000000000000000..260248579ba05e1d0411718133f17546ed83d710 --- /dev/null +++ b/src/main/java/shape/Decorator.java @@ -0,0 +1,29 @@ +package shape; + +import javafx.geometry.Point2D; +import javafx.scene.canvas.GraphicsContext; + +abstract public class Decorator implements Shape { + + protected 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); + } + + protected abstract void drawDecoration(GraphicsContext graphicsContext); +} diff --git a/src/main/java/shape/Polygon.java b/src/main/java/shape/Polygon.java new file mode 100644 index 0000000000000000000000000000000000000000..e142846338c4934a66ddb2d2ca9c6cd742788d08 --- /dev/null +++ b/src/main/java/shape/Polygon.java @@ -0,0 +1,28 @@ +package shape; + +import javafx.geometry.Point2D; +import javafx.scene.canvas.GraphicsContext; +import javafx.scene.paint.Color; + +import java.util.ArrayList; +import java.util.List; + +public class Polygon extends AbstractShape { + Color color; + + public Polygon(Color color , List<Point2D> points){ + this.color = color; + addPoints(points); + } + + @Override + public void draw(GraphicsContext context) { + double[] coordinateX = new double[pointsCount()]; + double[] coordinateY = new double[pointsCount()]; + for(int index = 0 ; index<pointsCount() ; index++){ + coordinateX[index]=point(index).getX(); + coordinateY[index]=point(index).getY(); + } + context.strokePolygon(coordinateX,coordinateY,pointsCount()); + } +} diff --git a/src/main/java/shape/Rectangle.java b/src/main/java/shape/Rectangle.java index b0e90627b6345f22ac31ab8bf5fb40f81e4d4f66..4192ff4bad6c5d72327863a9ffc6927b03fe22d2 100644 --- a/src/main/java/shape/Rectangle.java +++ b/src/main/java/shape/Rectangle.java @@ -4,24 +4,22 @@ import javafx.geometry.Point2D; import javafx.scene.canvas.GraphicsContext; import javafx.scene.paint.Color; -public class Rectangle implements Shape{ +import java.util.ArrayList; +import java.util.List; + +public class Rectangle extends AbstractShape implements Shape{ Color color; Rectangle(Color color, Point2D point0, Point2D point1){ this.color = color; - } - - @Override - public int pointsCount() { - return 0; - } - - @Override - public Point2D point(int index) { - return null; + List<Point2D> list = new ArrayList<>(); + list.add(point0); + list.add(point1); + addPoints(list); } @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()); } -} +} \ No newline at end of file diff --git a/src/main/java/shape/ShapeContainer.java b/src/main/java/shape/ShapeContainer.java index 91c7d2977ecd7352ceb7ffbe45f9c541bfd8d45f..aae70ed5e542047b60b0f7147f021811017bdbc7 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)