From 1b0d26cbf4ec96144dae02df4be7c96dab4a20a0 Mon Sep 17 00:00:00 2001 From: hneemann Date: Fri, 18 Mar 2016 21:57:45 +0100 Subject: [PATCH] added different font sizes --- .../digital/gui/draw/graphics/Graphic.java | 2 +- .../gui/draw/graphics/GraphicMinMax.java | 2 +- .../gui/draw/graphics/GraphicSwing.java | 7 +++--- .../gui/draw/graphics/GraphicTransform.java | 4 +-- .../digital/gui/draw/graphics/Style.java | 25 +++++++++++++++++++ .../digital/gui/draw/shapes/ConstShape.java | 3 ++- .../digital/gui/draw/shapes/GenericShape.java | 17 ++++++++++++- .../digital/gui/draw/shapes/InputShape.java | 2 +- .../digital/gui/draw/shapes/LEDShape.java | 5 ++-- .../digital/gui/draw/shapes/OutputShape.java | 2 +- .../digital/gui/draw/shapes/ShapeFactory.java | 2 +- 11 files changed, 57 insertions(+), 14 deletions(-) diff --git a/src/main/java/de/neemann/digital/gui/draw/graphics/Graphic.java b/src/main/java/de/neemann/digital/gui/draw/graphics/Graphic.java index ad3510012..19d6c1a38 100644 --- a/src/main/java/de/neemann/digital/gui/draw/graphics/Graphic.java +++ b/src/main/java/de/neemann/digital/gui/draw/graphics/Graphic.java @@ -11,5 +11,5 @@ public interface Graphic { void drawCircle(Vector p1, Vector p2, Style style); - void drawText(Vector p1, Vector p2, String text, Orientation orientation); + void drawText(Vector p1, Vector p2, String text, Orientation orientation, Style style); } diff --git a/src/main/java/de/neemann/digital/gui/draw/graphics/GraphicMinMax.java b/src/main/java/de/neemann/digital/gui/draw/graphics/GraphicMinMax.java index 7923dcae8..c7f180dbf 100644 --- a/src/main/java/de/neemann/digital/gui/draw/graphics/GraphicMinMax.java +++ b/src/main/java/de/neemann/digital/gui/draw/graphics/GraphicMinMax.java @@ -37,7 +37,7 @@ public class GraphicMinMax implements Graphic { } @Override - public void drawText(Vector p1, Vector p2, String text, Orientation orientation) { + public void drawText(Vector p1, Vector p2, String text, Orientation orientation, Style style) { // ignore text! } diff --git a/src/main/java/de/neemann/digital/gui/draw/graphics/GraphicSwing.java b/src/main/java/de/neemann/digital/gui/draw/graphics/GraphicSwing.java index c8b3c70d2..afbca1736 100644 --- a/src/main/java/de/neemann/digital/gui/draw/graphics/GraphicSwing.java +++ b/src/main/java/de/neemann/digital/gui/draw/graphics/GraphicSwing.java @@ -42,15 +42,16 @@ public class GraphicSwing implements Graphic { private void applyStyle(Style style) { if (style != lastStyle) { - gr.setStroke(new BasicStroke(style.getThickness())); + gr.setStroke(style.getStroke()); gr.setColor(style.getColor()); + gr.setFont(style.getFont()); lastStyle = style; } } @Override - public void drawText(Vector p1, Vector p2, String text, Orientation orientation) { - gr.setColor(Color.BLACK); + public void drawText(Vector p1, Vector p2, String text, Orientation orientation, Style style) { + applyStyle(style); int xoff = 0; if (orientation.getX() != 0) { int width = gr.getFontMetrics().stringWidth(text); diff --git a/src/main/java/de/neemann/digital/gui/draw/graphics/GraphicTransform.java b/src/main/java/de/neemann/digital/gui/draw/graphics/GraphicTransform.java index c81ed4597..a6f76ce16 100644 --- a/src/main/java/de/neemann/digital/gui/draw/graphics/GraphicTransform.java +++ b/src/main/java/de/neemann/digital/gui/draw/graphics/GraphicTransform.java @@ -32,8 +32,8 @@ public class GraphicTransform implements Graphic { } @Override - public void drawText(Vector p1, Vector p2, String text, Orientation orientation) { - parent.drawText(transform(p1), transform(p2), text, orientation); + public void drawText(Vector p1, Vector p2, String text, Orientation orientation, Style style) { + parent.drawText(transform(p1), transform(p2), text, orientation, style); } private Vector transform(Vector v) { diff --git a/src/main/java/de/neemann/digital/gui/draw/graphics/Style.java b/src/main/java/de/neemann/digital/gui/draw/graphics/Style.java index 99b180890..0fab554e8 100644 --- a/src/main/java/de/neemann/digital/gui/draw/graphics/Style.java +++ b/src/main/java/de/neemann/digital/gui/draw/graphics/Style.java @@ -12,15 +12,27 @@ public class Style { 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 SHAPEPIN = new Style(2, false, Color.GRAY, 9); private final int thickness; private final boolean filled; private final Color color; + private final int fontsize; + private final Stroke stroke; + private final Font font; public Style(int thickness, boolean filled, Color color) { + this(thickness, filled, color, 12); + } + + private Style(int thickness, boolean filled, Color color, int fontsize) { this.thickness = thickness; this.filled = filled; this.color = color; + this.fontsize = fontsize; + stroke = new BasicStroke(thickness); + + font = new Font("Arial", Font.PLAIN, fontsize); } public int getThickness() { @@ -34,4 +46,17 @@ public class Style { public Color getColor() { return color; } + + public Stroke getStroke() { + return stroke; + } + + public int getFontSize() { + return fontsize; + } + + public Font getFont() { + return font; + } + } diff --git a/src/main/java/de/neemann/digital/gui/draw/shapes/ConstShape.java b/src/main/java/de/neemann/digital/gui/draw/shapes/ConstShape.java index 354ce6d7d..7344b9700 100644 --- a/src/main/java/de/neemann/digital/gui/draw/shapes/ConstShape.java +++ b/src/main/java/de/neemann/digital/gui/draw/shapes/ConstShape.java @@ -4,6 +4,7 @@ import de.neemann.digital.core.Listener; import de.neemann.digital.core.Model; import de.neemann.digital.gui.draw.graphics.Graphic; import de.neemann.digital.gui.draw.graphics.Orientation; +import de.neemann.digital.gui.draw.graphics.Style; import de.neemann.digital.gui.draw.graphics.Vector; import de.neemann.digital.gui.draw.parts.Pin; import de.neemann.digital.gui.draw.parts.Pins; @@ -35,6 +36,6 @@ public class ConstShape implements Shape { Vector textPos = new Vector(-3, 0); if (state != null) value = state.getOutput(0).getValue(); - graphic.drawText(textPos, textPos.add(1, 0), Long.toString(value), Orientation.RIGHTCENTER); + graphic.drawText(textPos, textPos.add(1, 0), Long.toString(value), Orientation.RIGHTCENTER, Style.NORMAL); } } diff --git a/src/main/java/de/neemann/digital/gui/draw/shapes/GenericShape.java b/src/main/java/de/neemann/digital/gui/draw/shapes/GenericShape.java index a3ee84ccb..a4a254ece 100644 --- a/src/main/java/de/neemann/digital/gui/draw/shapes/GenericShape.java +++ b/src/main/java/de/neemann/digital/gui/draw/shapes/GenericShape.java @@ -22,11 +22,17 @@ public class GenericShape implements Shape { private boolean invert = false; private transient Pins pins; + private boolean showLabels; public GenericShape(String name, String[] inputs, String[] outputs) { + this(name, inputs, outputs, false); + } + + public GenericShape(String name, String[] inputs, String[] outputs, boolean showLabels) { this.name = name; this.inputs = inputs; this.outputs = outputs; + this.showLabels = showLabels; width = inputs.length == 1 && outputs.length == 1 ? 1 : 3; symmetric = outputs.length == 1; } @@ -95,7 +101,16 @@ public class GenericShape implements Shape { } - graphic.drawText(new Vector(SIZE2, SIZE), new Vector(SIZE, SIZE), name, Orientation.LEFTBOTTOM); + if (showLabels) { + for (Pin p : getPins()) { + if (p.getDirection() == Pin.Direction.input) + graphic.drawText(p.getPos().add(2, 0), p.getPos().add(5, 0), p.getName(), Orientation.LEFTCENTER, Style.SHAPEPIN); + else + graphic.drawText(p.getPos().add(-2, 0), p.getPos().add(5, 0), p.getName(), Orientation.RIGHTCENTER, Style.SHAPEPIN); + } + } + Vector pos = new Vector(SIZE * width / 2, -SIZE2 + 2); + graphic.drawText(pos, pos.add(1, 0), name, Orientation.CENTERTOP, Style.NORMAL); } } diff --git a/src/main/java/de/neemann/digital/gui/draw/shapes/InputShape.java b/src/main/java/de/neemann/digital/gui/draw/shapes/InputShape.java index 36abef897..b28ef7e75 100644 --- a/src/main/java/de/neemann/digital/gui/draw/shapes/InputShape.java +++ b/src/main/java/de/neemann/digital/gui/draw/shapes/InputShape.java @@ -73,6 +73,6 @@ public class InputShape implements Shape { graphic.drawPolygon(new Polygon(true).add(-SIZE * 2 - 2, -SIZE).add(-2, -SIZE).add(-2, SIZE).add(-SIZE * 2 - 2, SIZE), Style.NORMAL); Vector textPos = new Vector(-SIZE * 3, 0); - graphic.drawText(textPos, textPos.add(1, 0), label, Orientation.RIGHTCENTER); + graphic.drawText(textPos, textPos.add(1, 0), label, Orientation.RIGHTCENTER, Style.NORMAL); } } diff --git a/src/main/java/de/neemann/digital/gui/draw/shapes/LEDShape.java b/src/main/java/de/neemann/digital/gui/draw/shapes/LEDShape.java index ff31a9bf7..0a124f5e7 100644 --- a/src/main/java/de/neemann/digital/gui/draw/shapes/LEDShape.java +++ b/src/main/java/de/neemann/digital/gui/draw/shapes/LEDShape.java @@ -12,11 +12,12 @@ import de.neemann.digital.gui.draw.parts.State; import java.awt.*; +import static de.neemann.digital.gui.draw.shapes.OutputShape.SIZE; + /** * @author hneemann */ public class LEDShape implements Shape { - public static final int SIZE = 8; public static final Vector RAD = new Vector(SIZE - 1, SIZE - 1); public static final Vector RADL = new Vector(SIZE, SIZE); private final String label; @@ -60,6 +61,6 @@ public class LEDShape implements Shape { if (fill) graphic.drawCircle(center.sub(RAD), center.add(RAD), onStyle); Vector textPos = new Vector(SIZE * 3, 0); - graphic.drawText(textPos, textPos.add(1, 0), label, Orientation.LEFTCENTER); + graphic.drawText(textPos, textPos.add(1, 0), label, Orientation.LEFTCENTER, Style.NORMAL); } } diff --git a/src/main/java/de/neemann/digital/gui/draw/shapes/OutputShape.java b/src/main/java/de/neemann/digital/gui/draw/shapes/OutputShape.java index 4d2656aa5..c2a583b3f 100644 --- a/src/main/java/de/neemann/digital/gui/draw/shapes/OutputShape.java +++ b/src/main/java/de/neemann/digital/gui/draw/shapes/OutputShape.java @@ -61,6 +61,6 @@ public class OutputShape implements Shape { graphic.drawCircle(center.sub(RAD), center.add(RAD), style); graphic.drawCircle(center.sub(RADL), center.add(RADL), Style.NORMAL); Vector textPos = new Vector(SIZE * 3, 0); - graphic.drawText(textPos, textPos.add(1, 0), label, Orientation.LEFTCENTER); + graphic.drawText(textPos, textPos.add(1, 0), label, Orientation.LEFTCENTER, Style.NORMAL); } } diff --git a/src/main/java/de/neemann/digital/gui/draw/shapes/ShapeFactory.java b/src/main/java/de/neemann/digital/gui/draw/shapes/ShapeFactory.java index d6c0be8b1..d53d7275a 100644 --- a/src/main/java/de/neemann/digital/gui/draw/shapes/ShapeFactory.java +++ b/src/main/java/de/neemann/digital/gui/draw/shapes/ShapeFactory.java @@ -65,7 +65,7 @@ public final class ShapeFactory { throw new RuntimeException("no shape for " + partName); else { PartTypeDescription pt = library.getPartType(partName); - return new GenericShape(createName(partName), pt.getInputNames(partAttributes), outputNames(pt, partAttributes)); + return new GenericShape(createName(partName), pt.getInputNames(partAttributes), outputNames(pt, partAttributes), true); } } else return cr.create(partAttributes);