From c0d682eec1a97a8eb42a09201a1ac1606fea4837 Mon Sep 17 00:00:00 2001 From: hneemann Date: Sun, 18 Aug 2019 09:13:49 +0200 Subject: [PATCH] refactoring of graphic flags --- .../digital/draw/elements/VisualElement.java | 2 +- .../digital/draw/graphics/Graphic.java | 24 ++++--------------- .../digital/draw/graphics/GraphicMinMax.java | 4 ++-- .../digital/draw/graphics/GraphicSVG.java | 24 +++++++++---------- .../draw/graphics/GraphicTransform.java | 4 ++-- .../graphics/linemerger/GraphicSkipLines.java | 4 ++-- .../digital/draw/shapes/AsyncClockShape.java | 2 +- .../digital/draw/shapes/ClockShape.java | 2 +- .../digital/draw/shapes/InputShape.java | 2 +- .../digital/draw/shapes/OutputShape.java | 2 +- .../digital/draw/shapes/TestCaseShape.java | 2 +- src/main/resources/lang/lang_de.xml | 6 ++--- src/main/resources/lang/lang_en.xml | 2 +- 13 files changed, 31 insertions(+), 49 deletions(-) diff --git a/src/main/java/de/neemann/digital/draw/elements/VisualElement.java b/src/main/java/de/neemann/digital/draw/elements/VisualElement.java index bc3ccb344..14e50079d 100644 --- a/src/main/java/de/neemann/digital/draw/elements/VisualElement.java +++ b/src/main/java/de/neemann/digital/draw/elements/VisualElement.java @@ -228,7 +228,7 @@ public class VisualElement implements Drawable, Movable, AttributeListener { Graphic gr = new GraphicTransform(graphic, getTransform()); Shape shape = getShape(); shape.drawTo(gr, highLight); - if (!graphic.isFlagSet(GraphicSVG.NO_PIN_MARKER)) + if (!graphic.isFlagSet(Graphic.Flag.noPinMarker)) for (Pin p : shape.getPins()) gr.drawCircle(p.getPos().add(-PIN, -PIN), p.getPos().add(PIN, PIN), p.getDirection() == Pin.Direction.input ? Style.WIRE : Style.WIRE_OUT); diff --git a/src/main/java/de/neemann/digital/draw/graphics/Graphic.java b/src/main/java/de/neemann/digital/draw/graphics/Graphic.java index c01390ec9..a77c75865 100644 --- a/src/main/java/de/neemann/digital/draw/graphics/Graphic.java +++ b/src/main/java/de/neemann/digital/draw/graphics/Graphic.java @@ -16,25 +16,9 @@ import java.io.IOException; public interface Graphic extends Closeable { /** - * The shape filling flag + * The available flags */ - String NO_SHAPE_FILLING = "noShapeFilling"; - /** - * the small IO flag - */ - String SMALL_IO = "smallIO"; - /** - * flag used to hide the test cases - */ - String HIDE_TEST = "hideTest"; - /** - * flag used to hide the pin marker - */ - String NO_PIN_MARKER = "noPinMarker"; - /** - * flag used to make lines thinner - */ - String THINNER_LINES = "thinnerLines"; + enum Flag {noShapeFilling, smallIO, hideTest, noPinMarker, thinnerLines} /** * Sets the bounding box of the future usage of this instance @@ -114,10 +98,10 @@ public interface Graphic extends Closeable { /** * Returns true if the given flag is set * - * @param name the flags name + * @param flag the flag * @return true if the given flag is set */ - default boolean isFlagSet(String name) { + default boolean isFlagSet(Flag flag) { return false; } diff --git a/src/main/java/de/neemann/digital/draw/graphics/GraphicMinMax.java b/src/main/java/de/neemann/digital/draw/graphics/GraphicMinMax.java index 962edacae..6ba5f4568 100644 --- a/src/main/java/de/neemann/digital/draw/graphics/GraphicMinMax.java +++ b/src/main/java/de/neemann/digital/draw/graphics/GraphicMinMax.java @@ -154,10 +154,10 @@ public class GraphicMinMax implements Graphic { } @Override - public boolean isFlagSet(String name) { + public boolean isFlagSet(Flag flag) { if (parent == null) return false; else - return parent.isFlagSet(name); + return parent.isFlagSet(flag); } } diff --git a/src/main/java/de/neemann/digital/draw/graphics/GraphicSVG.java b/src/main/java/de/neemann/digital/draw/graphics/GraphicSVG.java index d8211287a..98837cce2 100644 --- a/src/main/java/de/neemann/digital/draw/graphics/GraphicSVG.java +++ b/src/main/java/de/neemann/digital/draw/graphics/GraphicSVG.java @@ -24,7 +24,7 @@ public class GraphicSVG implements Graphic { private BufferedWriter w; private TextStyle textStyle = new TextFormatSVG(); private ColorStyle colorStyle = Style::getColor; - private HashSet flags = new HashSet<>(); + private HashSet flags = new HashSet<>(); /** * Creates a new instance. @@ -39,17 +39,15 @@ public class GraphicSVG implements Graphic { if (a.get(SVGSettings.HIGH_CONTRAST)) setColorStyle(new ColorStyleHighContrast()); if (a.get(SVGSettings.SMALL_IO)) - setFlag(SMALL_IO); + setFlag(Flag.smallIO); if (a.get(SVGSettings.HIDE_TEST)) - setFlag(HIDE_TEST); + setFlag(Flag.hideTest); if (a.get(SVGSettings.NO_SHAPE_FILLING)) - setFlag(NO_SHAPE_FILLING); - if (a.get(SVGSettings.NO_SHAPE_FILLING)) - setFlag(NO_SHAPE_FILLING); + setFlag(Flag.noShapeFilling); if (a.get(SVGSettings.NO_PIN_MARKER)) - setFlag(NO_PIN_MARKER); + setFlag(Flag.noPinMarker); if (a.get(SVGSettings.THINNER_LINES)) - setFlag(THINNER_LINES); + setFlag(Flag.thinnerLines); if (a.get(SVGSettings.MONOCHROME)) setColorStyle(new ColorStyleMonochrome(colorStyle)); @@ -140,7 +138,7 @@ public class GraphicSVG implements Graphic { if (p.getEvenOdd() && style.isFilled()) w.write(" fill-rule=\"evenodd\""); - if (style.isFilled() && p.isClosed() && !isFlagSet(NO_SHAPE_FILLING)) + if (style.isFilled() && p.isClosed() && !isFlagSet(Flag.noShapeFilling)) w.write(" stroke=\"" + getColor(style) + "\" stroke-width=\"" + getStrokeWidth(style) + "\" fill=\"" + getColor(style) + "\" fill-opacity=\"" + getOpacity(style) + "\"/>\n"); else { double strokeWidth = getStrokeWidth(style); @@ -154,7 +152,7 @@ public class GraphicSVG implements Graphic { } private double getStrokeWidth(Style style) { - if (isFlagSet(THINNER_LINES)) + if (isFlagSet(Flag.thinnerLines)) return style.getThickness() * 0.7; else return style.getThickness(); @@ -319,13 +317,13 @@ public class GraphicSVG implements Graphic { this.colorStyle = colorStyle; } - private void setFlag(String flag) { + private void setFlag(Flag flag) { flags.add(flag); } @Override - public boolean isFlagSet(String name) { - return flags.contains(name); + public boolean isFlagSet(Flag flag) { + return flags.contains(flag); } /** diff --git a/src/main/java/de/neemann/digital/draw/graphics/GraphicTransform.java b/src/main/java/de/neemann/digital/draw/graphics/GraphicTransform.java index 868319973..d8d23ccf8 100644 --- a/src/main/java/de/neemann/digital/draw/graphics/GraphicTransform.java +++ b/src/main/java/de/neemann/digital/draw/graphics/GraphicTransform.java @@ -45,7 +45,7 @@ public class GraphicTransform implements Graphic { } @Override - public boolean isFlagSet(String name) { - return parent.isFlagSet(name); + public boolean isFlagSet(Flag flag) { + return parent.isFlagSet(flag); } } diff --git a/src/main/java/de/neemann/digital/draw/graphics/linemerger/GraphicSkipLines.java b/src/main/java/de/neemann/digital/draw/graphics/linemerger/GraphicSkipLines.java index ab40d5494..9870d093a 100644 --- a/src/main/java/de/neemann/digital/draw/graphics/linemerger/GraphicSkipLines.java +++ b/src/main/java/de/neemann/digital/draw/graphics/linemerger/GraphicSkipLines.java @@ -55,7 +55,7 @@ public class GraphicSkipLines implements Graphic { } @Override - public boolean isFlagSet(String name) { - return delegate.isFlagSet(name); + public boolean isFlagSet(Flag flag) { + return delegate.isFlagSet(flag); } } diff --git a/src/main/java/de/neemann/digital/draw/shapes/AsyncClockShape.java b/src/main/java/de/neemann/digital/draw/shapes/AsyncClockShape.java index 64ecfdaef..150987086 100644 --- a/src/main/java/de/neemann/digital/draw/shapes/AsyncClockShape.java +++ b/src/main/java/de/neemann/digital/draw/shapes/AsyncClockShape.java @@ -49,7 +49,7 @@ public class AsyncClockShape implements Shape { @Override public void drawTo(Graphic graphic, Style highLight) { - if (!graphic.isFlagSet(Graphic.HIDE_TEST)) { + if (!graphic.isFlagSet(Graphic.Flag.hideTest)) { Polygon pol = new Polygon(true) .add(SIZE2, SIZE2) .add(SIZE2 + SIZE * 4, SIZE2) diff --git a/src/main/java/de/neemann/digital/draw/shapes/ClockShape.java b/src/main/java/de/neemann/digital/draw/shapes/ClockShape.java index 983f6076a..ce2968fe3 100644 --- a/src/main/java/de/neemann/digital/draw/shapes/ClockShape.java +++ b/src/main/java/de/neemann/digital/draw/shapes/ClockShape.java @@ -74,7 +74,7 @@ public class ClockShape implements Shape { @Override public void drawTo(Graphic graphic, Style heighLight) { Vector wavePos; - if (graphic.isFlagSet(Graphic.SMALL_IO)) { + if (graphic.isFlagSet(Graphic.Flag.smallIO)) { Vector center = new Vector(-LATEX_RAD.x, 0); graphic.drawCircle(center.sub(LATEX_RAD), center.add(LATEX_RAD), Style.NORMAL); Vector textPos = new Vector(-SIZE2 - LATEX_RAD.x, 0); diff --git a/src/main/java/de/neemann/digital/draw/shapes/InputShape.java b/src/main/java/de/neemann/digital/draw/shapes/InputShape.java index e1fb1ed7c..64e6d06b7 100644 --- a/src/main/java/de/neemann/digital/draw/shapes/InputShape.java +++ b/src/main/java/de/neemann/digital/draw/shapes/InputShape.java @@ -123,7 +123,7 @@ public class InputShape implements Shape { @Override public void drawTo(Graphic graphic, Style heighLight) { - if (graphic.isFlagSet(Graphic.SMALL_IO)) { + if (graphic.isFlagSet(Graphic.Flag.smallIO)) { Vector center = new Vector(-LATEX_RAD.x, 0); graphic.drawCircle(center.sub(LATEX_RAD), center.add(LATEX_RAD), Style.NORMAL); Vector textPos = new Vector(-SIZE2 - LATEX_RAD.x, 0); diff --git a/src/main/java/de/neemann/digital/draw/shapes/OutputShape.java b/src/main/java/de/neemann/digital/draw/shapes/OutputShape.java index c7c0d7eec..beee8420b 100644 --- a/src/main/java/de/neemann/digital/draw/shapes/OutputShape.java +++ b/src/main/java/de/neemann/digital/draw/shapes/OutputShape.java @@ -84,7 +84,7 @@ public class OutputShape implements Shape { @Override public void drawTo(Graphic graphic, Style highLight) { - if (graphic.isFlagSet(Graphic.SMALL_IO)) { + if (graphic.isFlagSet(Graphic.Flag.smallIO)) { Vector center = new Vector(LATEX_RAD.x, 0); graphic.drawCircle(center.sub(LATEX_RAD), center.add(LATEX_RAD), Style.NORMAL); Vector textPos = new Vector(SIZE2 + LATEX_RAD.x, 0); diff --git a/src/main/java/de/neemann/digital/draw/shapes/TestCaseShape.java b/src/main/java/de/neemann/digital/draw/shapes/TestCaseShape.java index 22821c1c3..0c936155f 100644 --- a/src/main/java/de/neemann/digital/draw/shapes/TestCaseShape.java +++ b/src/main/java/de/neemann/digital/draw/shapes/TestCaseShape.java @@ -49,7 +49,7 @@ public class TestCaseShape implements Shape { @Override public void drawTo(Graphic graphic, Style highLight) { - if (!graphic.isFlagSet(Graphic.HIDE_TEST)) { + if (!graphic.isFlagSet(Graphic.Flag.hideTest)) { Polygon pol = new Polygon(true) .add(SIZE2, SIZE2) .add(SIZE2 + SIZE * 4, SIZE2) diff --git a/src/main/resources/lang/lang_de.xml b/src/main/resources/lang/lang_de.xml index b831d0c42..e463863dd 100644 --- a/src/main/resources/lang/lang_de.xml +++ b/src/main/resources/lang/lang_de.xml @@ -1361,7 +1361,7 @@ Sind evtl. die Namen der Variablen nicht eindeutig? Aktiviert das Tutorial. SVG Exporteinstellungen - Text als LaTeX + Text im LaTeX-Format Text wird in LaTeX-Notation eingefügt. Inkscape ist für die Weiterverabeitung erforderlich. Testfälle verbergen Die Testfälle werden nicht mit exportiert. @@ -1373,9 +1373,9 @@ Sind evtl. die Namen der Variablen nicht eindeutig? Die blauen und roten Pin-Marker an den Symbolen entfallen. hoher Kontrast Leitungen und der Text der Pins werden in Schwarz ausgegeben. - Monochrom + monochrom Es werden nur Graustufen verwendet. - Dünne Linien + dünne Linien Wenn gesetzt, werden die Linen etwas dünner gezeichnet. Leitung eingefügt. diff --git a/src/main/resources/lang/lang_en.xml b/src/main/resources/lang/lang_en.xml index 849cd87e4..59627b61c 100644 --- a/src/main/resources/lang/lang_en.xml +++ b/src/main/resources/lang/lang_en.xml @@ -1347,7 +1347,7 @@ Enables the tutorial. SVG Export Settings - Text as LaTeX + Text in LaTeX notation Text is inserted in LaTeX notation. Inkscape is required for further processing. Hide Test Cases The test cases are not exported.