From 41f41c8252942f733f543f945fdee082645e6d1a Mon Sep 17 00:00:00 2001 From: "guyslain.naves" <guyslain.naves@lis-lab.fr> Date: Mon, 10 Oct 2022 16:25:20 +0200 Subject: [PATCH] refactored package name, improved App --- src/main/java/com/univamu/App.java | 8 ----- src/main/java/com/univamu/svg/Tag.java | 5 --- src/main/java/fr/univamu/App.java | 31 +++++++++++++++++++ src/main/java/fr/univamu/Shapes.java | 18 +++++++++++ .../univamu/svg/SvgAttribute.java} | 24 +++++++------- .../univamu/svg/SvgElement.java} | 18 +++++------ src/main/java/fr/univamu/svg/Tag.java | 5 +++ 7 files changed, 75 insertions(+), 34 deletions(-) delete mode 100644 src/main/java/com/univamu/App.java delete mode 100644 src/main/java/com/univamu/svg/Tag.java create mode 100644 src/main/java/fr/univamu/App.java create mode 100644 src/main/java/fr/univamu/Shapes.java rename src/main/java/{com/univamu/svg/Attribute.java => fr/univamu/svg/SvgAttribute.java} (51%) rename src/main/java/{com/univamu/svg/Node.java => fr/univamu/svg/SvgElement.java} (75%) create mode 100644 src/main/java/fr/univamu/svg/Tag.java diff --git a/src/main/java/com/univamu/App.java b/src/main/java/com/univamu/App.java deleted file mode 100644 index 2bba92f..0000000 --- a/src/main/java/com/univamu/App.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.univamu; - -public class App { - - public static void main(String[] args) { - - } -} diff --git a/src/main/java/com/univamu/svg/Tag.java b/src/main/java/com/univamu/svg/Tag.java deleted file mode 100644 index 17344ba..0000000 --- a/src/main/java/com/univamu/svg/Tag.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.univamu.svg; - -public record Tag(String name, String stringValue) implements Attribute { - -} diff --git a/src/main/java/fr/univamu/App.java b/src/main/java/fr/univamu/App.java new file mode 100644 index 0000000..34dbeff --- /dev/null +++ b/src/main/java/fr/univamu/App.java @@ -0,0 +1,31 @@ +package fr.univamu; + +import fr.univamu.geo.Shape; +import fr.univamu.svg.SvgElement; + +import java.io.FileNotFoundException; + +import static fr.univamu.svg.SvgAttribute.tag; + +public class App { + + public static SvgElement makeSvg(Shape shape) { + return new SvgElement("svg") + .add(tag("viewBox","-10 -10 20 20")) + .add(tag("xmlns","http://www.w3.org/2000/svg")) + .add(shape.toSvg()); + } + + public static void write(Shape shape, String filepath) throws FileNotFoundException { + makeSvg(shape) +// .add(tag("stroke","black")) +// .add(tag("stroke-width",0.03)) +// .add(tag("fill","lightgray")) + .toFile(filepath); + + } + + public static void main(String[] args) throws FileNotFoundException { + // write(new Circle(1),"out/circle.svg"); + } +} diff --git a/src/main/java/fr/univamu/Shapes.java b/src/main/java/fr/univamu/Shapes.java new file mode 100644 index 0000000..70431cb --- /dev/null +++ b/src/main/java/fr/univamu/Shapes.java @@ -0,0 +1,18 @@ +package fr.univamu; + +import fr.univamu.geo.Shape; +import fr.univamu.geo.Star; +import fr.univamu.geo.Union; + +import java.util.List; + +public class Shapes { + + public static Shape stars() { + return new Union(List.of( + new Star(5,2).scale(1.5), + new Star(9,2).scale(1.5).translate(-4,0), + new Star(9,4).scale(1.5).translate(4,0) + )); + } +} diff --git a/src/main/java/com/univamu/svg/Attribute.java b/src/main/java/fr/univamu/svg/SvgAttribute.java similarity index 51% rename from src/main/java/com/univamu/svg/Attribute.java rename to src/main/java/fr/univamu/svg/SvgAttribute.java index f9ecd5e..170b94a 100644 --- a/src/main/java/com/univamu/svg/Attribute.java +++ b/src/main/java/fr/univamu/svg/SvgAttribute.java @@ -1,6 +1,6 @@ -package com.univamu.svg; +package fr.univamu.svg; -public interface Attribute { +public interface SvgAttribute { String name(); String stringValue(); @@ -9,36 +9,36 @@ public interface Attribute { return name() + "=\"" + stringValue() + "\""; } - static Attribute tag(String name, String value) { + static SvgAttribute tag(String name, String value) { return new Tag(name, value); } - static Attribute tag(String name, double value) { + static SvgAttribute tag(String name, double value) { return new Tag(name, String.valueOf(value)); } - static Attribute tag(String name, int value) { + static SvgAttribute tag(String name, int value) { return new Tag(name, String.valueOf(value)); } - static Attribute tag(String name, boolean value) { + static SvgAttribute tag(String name, boolean value) { return new Tag(name, String.valueOf(value)); } - static Attribute tag(String name, float value) { + static SvgAttribute tag(String name, float value) { return new Tag(name, String.valueOf(value)); } - static Attribute tag(String name, long value) { + static SvgAttribute tag(String name, long value) { return new Tag(name, String.valueOf(value)); } - static Attribute tag(String name, char value) { + static SvgAttribute tag(String name, char value) { return new Tag(name, String.valueOf(value)); } - static Attribute tag(String name, short value) { + static SvgAttribute tag(String name, short value) { return new Tag(name, String.valueOf(value)); } - static Attribute tag(String name, byte value) { + static SvgAttribute tag(String name, byte value) { return new Tag(name, String.valueOf(value)); } - static Attribute tag(String name, Object value) { + static SvgAttribute tag(String name, Object value) { return new Tag(name, value.toString()); } } diff --git a/src/main/java/com/univamu/svg/Node.java b/src/main/java/fr/univamu/svg/SvgElement.java similarity index 75% rename from src/main/java/com/univamu/svg/Node.java rename to src/main/java/fr/univamu/svg/SvgElement.java index 4e45ecf..1ff6dfb 100644 --- a/src/main/java/com/univamu/svg/Node.java +++ b/src/main/java/fr/univamu/svg/SvgElement.java @@ -1,4 +1,4 @@ -package com.univamu.svg; +package fr.univamu.svg; import java.io.FileNotFoundException; import java.io.PrintStream; @@ -7,27 +7,27 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -public class Node { +public class SvgElement { private final String name; - private final Map<String, Attribute> attributes = new HashMap<>(); - private final List<Node> children = new ArrayList<>(); + private final Map<String, SvgAttribute> attributes = new HashMap<>(); + private final List<SvgElement> children = new ArrayList<>(); - public Node(String name) { + public SvgElement(String name) { this.name = name; } - public Node add(Attribute attribute) { + public SvgElement add(SvgAttribute attribute) { attributes.put(attribute.name(),attribute); return this; // allows chaining of adds } - public List<Node> children() { + public List<SvgElement> children() { return children; } - public Node add(Node node) { - this.children.add(node); + public SvgElement add(SvgElement svgElement) { + this.children.add(svgElement); return this; // allows chaining of adds } diff --git a/src/main/java/fr/univamu/svg/Tag.java b/src/main/java/fr/univamu/svg/Tag.java new file mode 100644 index 0000000..b9da3e0 --- /dev/null +++ b/src/main/java/fr/univamu/svg/Tag.java @@ -0,0 +1,5 @@ +package fr.univamu.svg; + +public record Tag(String name, String stringValue) implements SvgAttribute { + +} -- GitLab