Skip to content
Snippets Groups Projects
Commit a92a539e authored by Chadi's avatar Chadi
Browse files

filled the methods in each class

parent f526be30
Branches
No related tags found
No related merge requests found
...@@ -5,23 +5,19 @@ import javafx.scene.canvas.GraphicsContext; ...@@ -5,23 +5,19 @@ import javafx.scene.canvas.GraphicsContext;
import java.util.List; import java.util.List;
public class AbstractShape implements Shape { public abstract class AbstractShape implements Shape {
private List<Point2D> points; private List<Point2D> points;
public AbstractShape(List<Point2D> points) { public AbstractShape(List<Point2D> points) {
this.points = points; this.points = points;
} }
public List<Point2D> addPoints(Point2D points){ public void addPoints(Point2D... points){
this.points.add(points); for (Point2D point: points)
return this.points; this.points.add(point);
} }
@Override @Override
public int pointsCount() { public int pointsCount() {
int count = 0; return points.size();
for (Point2D point : points) {
count++;
}
return count;
} }
@Override @Override
...@@ -31,8 +27,14 @@ public class AbstractShape implements Shape { ...@@ -31,8 +27,14 @@ public class AbstractShape implements Shape {
@Override @Override
public void draw(GraphicsContext context) { 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();
} }
} }
......
package shape; package shape;
import javafx.geometry.Point2D;
import javafx.scene.canvas.GraphicsContext; import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Color;
public class BorderDecorator extends Decorator { public class BorderDecorator extends Decorator {
...@@ -11,6 +13,11 @@ public class BorderDecorator extends Decorator { ...@@ -11,6 +13,11 @@ public class BorderDecorator extends Decorator {
this.radius = radius; 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);
}
} }
} }
package shape; package shape;
import javafx.geometry.Point2D;
import javafx.scene.canvas.GraphicsContext; import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Color;
public class CenterDecorator extends Decorator{ public class CenterDecorator extends Decorator{
private double radius; private double radius;
...@@ -9,6 +11,17 @@ public class CenterDecorator extends Decorator{ ...@@ -9,6 +11,17 @@ public class CenterDecorator extends Decorator{
this.radius = radius; this.radius = radius;
} }
protected void drawDecoration(GraphicsContext context) { 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);
} }
} }
...@@ -15,12 +15,13 @@ public abstract class Decorator implements Shape { ...@@ -15,12 +15,13 @@ public abstract class Decorator implements Shape {
@Override @Override
public Point2D point(int index) { public Point2D point(int index) {
return null; return decoratedshape.point(index);
} }
@Override @Override
public void draw(GraphicsContext context) { public void draw(GraphicsContext context) {
decoratedshape.draw(context);
drawDecoration(context);
} }
protected void drawDecoration(GraphicsContext context) { protected void drawDecoration(GraphicsContext context) {
......
...@@ -4,27 +4,32 @@ import javafx.geometry.Point2D; ...@@ -4,27 +4,32 @@ import javafx.geometry.Point2D;
import javafx.scene.canvas.GraphicsContext; import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
public class Polygon implements Shape { import java.util.List;
public class Polygon extends AbstractShape {
private Color color; private Color color;
public Polygon(Color color, Point2D... points) { public Polygon(Color color, Point2D... points) {
super(List.of(points));
this.color = color; this.color = color;
} }
@Override @Override
public int pointsCount() { public int pointsCount() {
return 0; return super.pointsCount();
} }
@Override @Override
public Point2D point(int index) { public Point2D point(int index) {
return point(index); return super.point(index);
} }
@Override @Override
public void draw(GraphicsContext context) { public void draw(GraphicsContext context) {
context.setFill(color); context.setFill(color);
super.draw(context);
context.fill();
} }
} }
...@@ -4,24 +4,30 @@ import javafx.geometry.Point2D; ...@@ -4,24 +4,30 @@ import javafx.geometry.Point2D;
import javafx.scene.canvas.GraphicsContext; import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
public class Rectangle implements Shape{ import java.util.List;
public class Rectangle extends AbstractShape{
private Color color; private Color color;
Rectangle(Color color, Point2D point0, Point2D point1){ 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; this.color = color;
} }
@Override @Override
public int pointsCount() { public int pointsCount() {
return 2; return super.pointsCount();
} }
@Override @Override
public Point2D point(int index) { public Point2D point(int index) {
return point(index); return super.point(index);
} }
@Override @Override
public void draw(GraphicsContext context) { public void draw(GraphicsContext context) {
context.setFill(color); context.setFill(color);
super.draw(context);
context.fill();
} }
} }
...@@ -9,7 +9,9 @@ public class ShapeContainer{ ...@@ -9,7 +9,9 @@ public class ShapeContainer{
private List<Shape> shapes = new ArrayList<>(); private List<Shape> shapes = new ArrayList<>();
public void addShape(Shape shape){} public void addShape(Shape shape){
shapes.add(shape);
}
public void draw(GraphicsContext context){ public void draw(GraphicsContext context){
for(Shape shape : shapes) for(Shape shape : shapes)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment