diff --git a/src/main/java/de/neemann/digital/draw/graphics/Style.java b/src/main/java/de/neemann/digital/draw/graphics/Style.java index 18b22b821..2dcdcade0 100644 --- a/src/main/java/de/neemann/digital/draw/graphics/Style.java +++ b/src/main/java/de/neemann/digital/draw/graphics/Style.java @@ -15,28 +15,33 @@ public class Style { public static final Style WIRE_HIGHZ = new Style(2, true, Color.GRAY); public static final Style WIRE_OUT = new Style(2, true, Color.RED.darker()); public static final Style FILLED = new Style(2, true, Color.BLACK); - public static final Style THIN = new Style(1, false, Color.BLACK); - public static final Style DASH = new Style(1, false, Color.BLACK); - public static final Style SHAPE_PIN = new Style(2, false, Color.GRAY, 9); + public static final Style DASH = new Style(0, false, Color.BLACK, new float[]{2, 2}); + public static final Style SHAPE_PIN = new Style(2, false, Color.GRAY, 9, null); public static final Style HIGHLIGHT = new Style(2, false, Color.CYAN); private final int thickness; private final boolean filled; private final Color color; private final int fontsize; + private final float[] dash; private final Stroke stroke; private final Font font; - public Style(int thickness, boolean filled, Color color) { - this(thickness, filled, color, 12); + public Style(int thickness, boolean filled, Color color, float[] dash) { + this(thickness, filled, color, 12, dash); } - private Style(int thickness, boolean filled, Color color, int fontsize) { + public Style(int thickness, boolean filled, Color color) { + this(thickness, filled, color, 12, null); + } + + private Style(int thickness, boolean filled, Color color, int fontsize, float[] dash) { this.thickness = thickness; this.filled = filled; this.color = color; this.fontsize = fontsize; - stroke = new BasicStroke(thickness); + this.dash = dash; + stroke = new BasicStroke(thickness, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_MITER, 10f, dash, 0f); font = new Font("Arial", Font.PLAIN, fontsize); } @@ -65,6 +70,10 @@ public class Style { return font; } + public float[] getDash() { + return dash; + } + public static Style getWireStyle(ObservableValue value) { if (value == null || value.getBits() > 1) return WIRE; if (value.isHighZIgnoreBurn()) return WIRE_HIGHZ; diff --git a/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java b/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java index ab408afc2..109e92d3c 100644 --- a/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java +++ b/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java @@ -9,7 +9,6 @@ import de.neemann.digital.draw.elements.Moveable; import de.neemann.digital.draw.elements.VisualElement; import de.neemann.digital.draw.elements.Wire; import de.neemann.digital.draw.graphics.*; -import de.neemann.digital.draw.graphics.Polygon; import de.neemann.digital.draw.library.ElementLibrary; import de.neemann.digital.draw.shapes.Drawable; import de.neemann.digital.draw.shapes.GenericShape; @@ -457,12 +456,12 @@ public class CircuitComponent extends JComponent { @Override public void drawTo(Graphic gr) { if (corner1 != null && corner2 != null) { - Polygon p = new Polygon(true) - .add(corner1) - .add(new Vector(corner1.x, corner2.y)) - .add(corner2) - .add(new Vector(corner2.x, corner1.y)); - gr.drawPolygon(p, Style.DASH); + Vector p1 = new Vector(corner1.x, corner2.y); + Vector p2 = new Vector(corner2.x, corner1.y); + gr.drawLine(corner1, p1, Style.DASH); + gr.drawLine(p1, corner2, Style.DASH); + gr.drawLine(corner2, p2, Style.DASH); + gr.drawLine(p2, corner1, Style.DASH); } if (state == State.COPY && elements != null) for (Moveable m : elements)