Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • master
1 result

Target

Select target project
  • b21228304/graphic-2020-2-0
  • l21221596/graphic-2020
  • c19014407/graphic-2020
  • b23019494/graphic-2020
  • g21212987/graphic-2020
  • couetoux.b/graphic-2020
  • s22029480/graphic-2020
  • c23025119/tp-3-graphique
  • m19023837/graphic-2020-tp-5
  • s22029480/graphic-tp-4
  • m19023837/graphic-2020-tp-7
  • n22021899/tp-3-programmation-conception
  • r24025701/graphic-2020
  • a23022716/exo-2-tp-3-algo
  • m23000189/graphic-2024
  • b21228304/graphic-2020
  • t21234458/graphic-2020
  • v23014723/graphic-2020
  • h22021483/graphic-2020
  • t21234458/graphic-2020-tiakout-khaled
  • m19023837/graphic-2020-chadi
  • b20031964/graphic-2020
22 results
Select Git revision
  • master
1 result
Show changes
Commits on Source (2)
......@@ -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$" />
......
<?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" default="true" project-jdk-name="11" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>
\ No newline at end of file
package shape;
import javafx.geometry.Point2D;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public abstract class AbstractShape implements Shape {
private ArrayList<Point2D> points ;
public AbstractShape(){
points = new ArrayList<>();
}
public void addPoints(Point2D... points){
Collections.addAll(this.points, points);
}
}
......@@ -24,10 +24,19 @@ public class App extends Application {
Canvas canvas = new Canvas(130, 110);
GraphicsContext graphicsContext = canvas.getGraphicsContext2D();
ShapeContainer shapeContainer = new ShapeContainer();
graphicsContext.setFill(Color.AQUAMARINE);
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();
......
package shape;
import javafx.geometry.Point2D;
import javafx.scene.canvas.GraphicsContext;
public class BorderDecorator extends Decorator {
private final double radius;
protected BorderDecorator(Shape decoratedShape, double radius) {
super(decoratedShape);
this.radius = radius;
}
@Override
protected void drawDecoration(GraphicsContext graphicsContext) {
for (int i = 0; i < decoratedShape.pointsCount(); i++) {
double x = decoratedShape.point(i).getX();
double y = decoratedShape.point(i).getY();
graphicsContext.fillOval(x-radius,y-radius,radius*2,radius*2);
}
}
}
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);
}
}
......@@ -5,21 +5,28 @@ import javafx.scene.canvas.GraphicsContext;
public class Circle implements Shape {
public Circle(double x, double y, double sqrt) {
private final double centerX;
private final double centerY;
private final double radius;
public Circle(double centerX, double centerY, double radius) {
this.centerX = centerX;
this.centerY = centerY;
this.radius = radius;
}
@Override
public int pointsCount() {
return 0;
return 1;
}
@Override
public Point2D point(int index) {
return null;
return new Point2D(centerX, centerY);
}
@Override
public void draw(GraphicsContext context) {
context.fillOval(centerX-radius,centerY-radius,radius*2,radius*2);
}
}
package shape;
import javafx.geometry.Point2D;
import javafx.scene.canvas.GraphicsContext;
public abstract class Decorator implements Shape{
protected Shape decoratedShape;
protected Decorator(Shape decoratedShape){
this.decoratedShape = decoratedShape;
}
@Override
public void draw(GraphicsContext context) {
drawDecoration(context);
}
abstract void drawDecoration(GraphicsContext graphicsContext);
public int pointsCount() {
return decoratedShape.pointsCount();
}
@Override
public Point2D point(int index) {
return decoratedShape.point(index);
}
}
package shape;
import javafx.geometry.Point2D;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Color;
public class Polygon implements Shape{
private final Point2D[] points;
private final Color color;
Polygon(Color color, Point2D... points){
this.color = color;
this.points = points;
}
@Override
public int pointsCount() {
return points.length;
}
@Override
public Point2D point(int index) {
return points[index];
}
@Override
public void draw(GraphicsContext context) {
context.setFill(color);
double[] xPoints = new double[points.length];
double[] yPoints = new double[points.length];
for (int i = 0; i < points.length; i++) {
xPoints[i] = points[i].getX();
yPoints[i] = points[i].getY();
}
context.fillPolygon(xPoints, yPoints, points.length);
context.setFill(Color.BLACK);
}
}
......@@ -6,22 +6,32 @@ import javafx.scene.paint.Color;
public class Rectangle implements Shape{
Color color;
private final Point2D[] points = new Point2D[2];
Rectangle(Color color, Point2D point0, Point2D point1){
this.color = color;
this.points[0] = point0;
this.points[1] = point1;
}
@Override
public int pointsCount() {
return 0;
return 2;
}
@Override
public Point2D point(int index) {
return null;
return points[index];
}
@Override
public void draw(GraphicsContext context) {
double x = points[0].getX();
double y = points[0].getY();
double w = points[1].getX() - x;
double h = points[1].getY() - y;
context.setFill(color);
context.fillRect(x,y,w,h);
context.setFill(Color.BLACK);
}
}
......@@ -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)
......