Skip to content
Snippets Groups Projects
Commit 237f718e authored by Anthony Viola's avatar Anthony Viola
Browse files

TP3 décorateur formes

parent 7234ee7d
Branches
No related tags found
No related merge requests found
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<component name="FrameworkDetectionExcludesConfiguration"> <component name="FrameworkDetectionExcludesConfiguration">
<file type="web" url="file://$PROJECT_DIR$" /> <file type="web" url="file://$PROJECT_DIR$" />
</component> </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" /> <output url="file://$PROJECT_DIR$/out" />
</component> </component>
</project> </project>
\ No newline at end of file
...@@ -16,6 +16,7 @@ repositories { ...@@ -16,6 +16,7 @@ repositories {
mavenCentral() mavenCentral()
} }
dependencies { dependencies {
implementation 'org.junit.jupiter:junit-jupiter:5.8.1'
testImplementation group: 'junit', name: 'junit', version: '4.12' testImplementation group: 'junit', name: 'junit', version: '4.12'
testImplementation 'org.hamcrest:hamcrest-library:1.3' testImplementation 'org.hamcrest:hamcrest-library:1.3'
} }
......
package shape; package shape;
import javafx.geometry.Point2D;
import javafx.scene.canvas.GraphicsContext;
import java.util.ArrayList;
import java.util.List;
abstract public class AbstractShape implements Shape { abstract public class AbstractShape implements Shape {
private List<Point2D> points = new ArrayList<>();
public void addPoints(List<Point2D> lpoints){
for (Point2D point : lpoints) {
points.add(point);
}
}
public int pointsCount() {
return points.size();
}
public Point2D point(int index) {
return points.get(index);
}
public abstract void draw(GraphicsContext graphicsContext);
} }
package shape; package shape;
import javafx.application.Application; import javafx.application.Application;
import javafx.beans.binding.BooleanExpression;
import javafx.geometry.Point2D; import javafx.geometry.Point2D;
import javafx.scene.Group; import javafx.scene.Group;
import javafx.scene.Scene; import javafx.scene.Scene;
...@@ -26,6 +27,8 @@ public class App extends Application { ...@@ -26,6 +27,8 @@ public class App extends Application {
ShapeContainer shapeContainer = new ShapeContainer(); ShapeContainer shapeContainer = new ShapeContainer();
graphicsContext.setFill(Color.AQUAMARINE); graphicsContext.setFill(Color.AQUAMARINE);
graphicsContext.fillOval(10,10,10,10); graphicsContext.fillOval(10,10,10,10);
Rectangle rect = new Rectangle(Color.BLUE,new Point2D(10,10), new Point2D(40,40));
System.out.println(rect.pointsCount());
shapeContainer.addShape(new Rectangle(Color.BLUE,new Point2D(10,10), new Point2D(40,40))); shapeContainer.addShape(new Rectangle(Color.BLUE,new Point2D(10,10), new Point2D(40,40)));
shapeContainer.draw(graphicsContext); shapeContainer.draw(graphicsContext);
root.getChildren().add(canvas); root.getChildren().add(canvas);
......
package shape;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Color;
public class BorderDecorator extends Decorator {
private double radius;
BorderDecorator(Shape decoratedShape, double radius){
super(decoratedShape);
this.radius = radius;
}
@Override
void drawDecoration(GraphicsContext graphicsContext) {
graphicsContext.setFill(Color.BLUE);
for(int i = 0; i< decoratedShape.pointsCount(); i++){
graphicsContext.fillOval(decoratedShape.point(i).getX(),decoratedShape.point(i).getY(),5,5);
}
}
}
package shape;
import javafx.scene.canvas.GraphicsContext;
public class CenterDecorator extends Decorator{
private double radius;
CenterDecorator(Shape decoratedShape, double radius){
super(decoratedShape);
this.radius = radius;
}
@Override
void drawDecoration(GraphicsContext graphicsContext) {
}
}
package shape;
import javafx.geometry.Point2D;
import javafx.scene.canvas.GraphicsContext;
public class Circle implements Shape {
public Circle(double x, double y, double sqrt) {
}
@Override
public int pointsCount() {
return 0;
}
@Override
public Point2D point(int index) {
return null;
}
@Override
public void draw(GraphicsContext context) {
}
}
...@@ -4,9 +4,11 @@ import javafx.geometry.Point2D; ...@@ -4,9 +4,11 @@ import javafx.geometry.Point2D;
import javafx.scene.canvas.GraphicsContext; import javafx.scene.canvas.GraphicsContext;
abstract public class Decorator implements Shape{ abstract public class Decorator implements Shape{
private Shape decoratedShape; protected Shape decoratedShape;
Decorator(Shape decoratedShape){
this.decoratedShape = decoratedShape;
}
public int pointsCount() { public int pointsCount() {
return decoratedShape.pointsCount(); return decoratedShape.pointsCount();
} }
...@@ -15,7 +17,6 @@ abstract public class Decorator implements Shape{ ...@@ -15,7 +17,6 @@ abstract public class Decorator implements Shape{
return decoratedShape.point(index); return decoratedShape.point(index);
} }
@Override
public void draw(GraphicsContext context) { public void draw(GraphicsContext context) {
decoratedShape.draw(context); decoratedShape.draw(context);
} }
......
package shape;
import javafx.geometry.Point2D;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Color;
import java.util.List;
public class Polygon extends AbstractShape{
Color color;
Polygon(Color color, List<Point2D> points){
this.color = color;
addPoints(points);
}
@Override
public void draw(GraphicsContext context) {
context.setFill(color);
double[] xPoints = new double[pointsCount()];
double[] yPoints = new double[pointsCount()];
for (int i = 0; i < pointsCount(); i++){
xPoints[i] = point(i).getX();
yPoints[i] = point(i).getY();
}
context.fillPolygon(xPoints, yPoints, pointsCount());
}
}
...@@ -4,24 +4,22 @@ import javafx.geometry.Point2D; ...@@ -4,24 +4,22 @@ import javafx.geometry.Point2D;
import javafx.scene.canvas.GraphicsContext; import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
import java.util.ArrayList;
import java.util.List;
public class Rectangle extends AbstractShape{ public class Rectangle extends AbstractShape{
Color color; Color color;
Rectangle(Color color, Point2D point0, Point2D point1){ Rectangle(Color color, Point2D point0, Point2D point1){
this.color = color; this.color = color;
} List<Point2D> points = new ArrayList<>();
points.add(point0);
@Override points.add(point1);
public int pointsCount() { addPoints(points);
return 0;
}
@Override
public Point2D point(int index) {
return null;
} }
@Override @Override
public void draw(GraphicsContext context) { public void draw(GraphicsContext context) {
context.setFill(color);
context.fillRect(point(0).getX(), point(0).getY(), point(1).getX() - point(0).getX(), point(1).getY() - point(0).getY());
} }
} }
...@@ -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)
......
package state; package state;
import javafx.scene.canvas.Canvas; import javafx.scene.canvas.Canvas;
import shape.Circle;
import shape.Shape; import shape.Shape;
import java.util.ArrayList; import java.util.ArrayList;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment