Skip to content
Snippets Groups Projects
Commit 41f41c82 authored by guyslain.naves's avatar guyslain.naves
Browse files

refactored package name, improved App

parent cbe35edd
No related branches found
No related tags found
No related merge requests found
package com.univamu;
public class App {
public static void main(String[] args) {
}
}
package com.univamu.svg;
public record Tag(String name, String stringValue) implements Attribute {
}
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");
}
}
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)
));
}
}
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());
}
}
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
}
......
package fr.univamu.svg;
public record Tag(String name, String stringValue) implements SvgAttribute {
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment