From c59e72e6b4469369e28a9c86111eb1b44015187d Mon Sep 17 00:00:00 2001 From: hneemann Date: Tue, 23 Jun 2020 08:23:51 +0200 Subject: [PATCH] refactoring of color schemes, see #421, see #481 --- .../digital/draw/graphics/ColorKey.java | 11 ++ .../digital/draw/graphics/ColorMap.java | 153 ------------------ .../digital/draw/graphics/ColorScheme.java | 110 +++++++++++++ .../neemann/digital/draw/graphics/Style.java | 71 +++++--- .../digital/draw/shapes/AsyncClockShape.java | 4 +- .../digital/draw/shapes/BreakShape.java | 7 +- .../digital/draw/shapes/DipSwitchShape.java | 2 +- .../digital/draw/shapes/SevenShape.java | 2 +- .../digital/draw/shapes/SixteenShape.java | 2 +- .../draw/shapes/StepperMotorShape.java | 2 +- .../digital/draw/shapes/TestCaseShape.java | 5 +- .../java/de/neemann/digital/gui/Settings.java | 4 +- .../gui/components/CircuitComponent.java | 2 +- .../draw/graphics/ColorSchemeTest.java | 18 +++ 14 files changed, 204 insertions(+), 189 deletions(-) create mode 100644 src/main/java/de/neemann/digital/draw/graphics/ColorKey.java delete mode 100644 src/main/java/de/neemann/digital/draw/graphics/ColorMap.java create mode 100644 src/main/java/de/neemann/digital/draw/graphics/ColorScheme.java create mode 100644 src/test/java/de/neemann/digital/draw/graphics/ColorSchemeTest.java diff --git a/src/main/java/de/neemann/digital/draw/graphics/ColorKey.java b/src/main/java/de/neemann/digital/draw/graphics/ColorKey.java new file mode 100644 index 000000000..bf1560e3e --- /dev/null +++ b/src/main/java/de/neemann/digital/draw/graphics/ColorKey.java @@ -0,0 +1,11 @@ +/* + * Copyright (c) 2020 Helmut Neemann. + * Use of this source code is governed by the GPL v3 license + * that can be found in the LICENSE file. + */ +package de.neemann.digital.draw.graphics; + +/** + * The identifiers for the different colors + */ +public enum ColorKey {BACKGROUND, MAIN, WIRE, WIRE_HIGH, WIRE_LOW, WIRE_VALUE, WIRE_OUT, WIRE_Z, ERROR, PASSED, PINS, GRID, TESTCASE, DISABLED, ASYNC, HIGHLIGHT} diff --git a/src/main/java/de/neemann/digital/draw/graphics/ColorMap.java b/src/main/java/de/neemann/digital/draw/graphics/ColorMap.java deleted file mode 100644 index 6a3c82ba0..000000000 --- a/src/main/java/de/neemann/digital/draw/graphics/ColorMap.java +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Copyright (c) 2020 Helmut Neemann. - * Use of this source code is governed by the GPL v3 license - * that can be found in the LICENSE file. - */ -package de.neemann.digital.draw.graphics; - -import de.neemann.digital.core.element.Key; -import de.neemann.digital.gui.Settings; - -import java.awt.*; - -/** - * Color map. - * Used to define the different color schemes. - */ -public final class ColorMap { - - private static final ColorMap DEFAULT_MAP = new ColorMap() - .set(ColorKey.BACKGROUND, Color.WHITE) - .set(ColorKey.MAIN, Color.BLACK) - .set(ColorKey.WIRE, Color.BLUE.darker()) - .set(ColorKey.WIRE_LOW, new Color(0, 142, 0)) - .set(ColorKey.WIRE_HIGH, new Color(102, 255, 102)) - .set(ColorKey.WIRE_OUT, Color.RED.darker()) - .set(ColorKey.WIRE_VALUE, new Color(50, 162, 50)) - .set(ColorKey.WIRE_Z, Color.GRAY) - .set(ColorKey.PINS, Color.GRAY) - .set(ColorKey.HIGHLIGHT, Color.CYAN) - .set(ColorKey.GRID, new Color(210, 210, 210)) - .set(ColorKey.PASSED, Color.GREEN) - .set(ColorKey.ERROR, Color.RED); - - private static final ColorMap DARK_MAP = new ColorMap() - .set(ColorKey.BACKGROUND, Color.BLACK) - .set(ColorKey.MAIN, Color.GRAY) - .set(ColorKey.WIRE, Color.BLUE.darker()) - .set(ColorKey.WIRE_LOW, new Color(0, 142, 0)) - .set(ColorKey.WIRE_HIGH, new Color(102, 255, 102)) - .set(ColorKey.WIRE_OUT, Color.RED.darker()) - .set(ColorKey.WIRE_VALUE, new Color(50, 162, 50)) - .set(ColorKey.WIRE_Z, Color.GRAY) - .set(ColorKey.PINS, Color.GRAY) - .set(ColorKey.HIGHLIGHT, Color.CYAN) - .set(ColorKey.GRID, new Color(50, 50, 50)) - .set(ColorKey.PASSED, Color.GREEN) - .set(ColorKey.ERROR, Color.RED); - - private static final ColorMap COLOR_BLIND_MAP = new ColorMap() - .set(ColorKey.BACKGROUND, Color.WHITE) - .set(ColorKey.MAIN, Color.BLACK) - .set(ColorKey.WIRE, Color.BLUE.darker()) - .set(ColorKey.WIRE_LOW, new Color(32, 59, 232)) - .set(ColorKey.WIRE_HIGH, new Color(244, 235, 66)) - .set(ColorKey.WIRE_OUT, Color.RED.darker()) - .set(ColorKey.WIRE_VALUE, new Color(50, 162, 50)) - .set(ColorKey.WIRE_Z, new Color(1, 188, 157)) - .set(ColorKey.PINS, Color.GRAY) - .set(ColorKey.HIGHLIGHT, Color.CYAN) - .set(ColorKey.GRID, new Color(210, 210, 210)) - .set(ColorKey.PASSED, Color.GREEN) - .set(ColorKey.ERROR, Color.RED); - - private enum ColorSchemes { - DEFAULT(DEFAULT_MAP), DARK(DARK_MAP), COLOR_BLIND(COLOR_BLIND_MAP); - - private final ColorMap map; - - ColorSchemes(ColorMap map) { - this.map = map; - } - - private ColorMap getMap() { - return map; - } - } - - /** - * The key used to select the color map - */ - public static final Key COLOR_SCHEME = - new Key.KeyEnum<>("colorScheme", ColorSchemes.DEFAULT, ColorSchemes.values()) - .setRequiresRepaint(); - - private static ColorMap instance = null; - - /** - * @return the selected color map - */ - public static ColorMap getInstance() { - if (instance == null) { - Settings.getInstance().getAttributes().addListener(ColorMap::updateInstance); - updateInstance(); - } - return instance; - } - - private static void updateInstance() { - instance = Settings.getInstance().get(COLOR_SCHEME).getMap(); - } - - /** - * The identifiers for the different colors - */ - public enum ColorKey {BACKGROUND, MAIN, WIRE, WIRE_HIGH, WIRE_LOW, WIRE_VALUE, WIRE_OUT, WIRE_Z, ERROR, PASSED, PINS, GRID, HIGHLIGHT} - - private final Color[] colors; - - private ColorMap() { - colors = new Color[ColorKey.HIGHLIGHT.ordinal() + 1]; - } - - private ColorMap set(ColorKey key, Color color) { - colors[key.ordinal()] = color; - return this; - } - - /** - * Returns the selected color - * - * @param key te color key - * @return the color - */ - public Color getColor(ColorKey key) { - Color color = colors[key.ordinal()]; - if (color == null) - return colors[ColorKey.MAIN.ordinal()]; - return color; - } - - /** - * Provides a color - */ - public interface ColorProvider { - /** - * @return the color - */ - Color getColor(); - } - - static final class ColorByKey implements ColorProvider { - private final ColorKey key; - - ColorByKey(ColorKey key) { - this.key = key; - } - - @Override - public Color getColor() { - return getInstance().getColor(key); - } - } -} diff --git a/src/main/java/de/neemann/digital/draw/graphics/ColorScheme.java b/src/main/java/de/neemann/digital/draw/graphics/ColorScheme.java new file mode 100644 index 000000000..458c19a76 --- /dev/null +++ b/src/main/java/de/neemann/digital/draw/graphics/ColorScheme.java @@ -0,0 +1,110 @@ +/* + * Copyright (c) 2020 Helmut Neemann. + * Use of this source code is governed by the GPL v3 license + * that can be found in the LICENSE file. + */ +package de.neemann.digital.draw.graphics; + +import de.neemann.digital.core.element.Key; +import de.neemann.digital.gui.Settings; + +import java.awt.*; + +/** + * Color map. + * Used to define the different color schemes. + */ +public final class ColorScheme { + + private static final ColorScheme DEFAULT_SCHEME = new ColorScheme() + .set(ColorKey.BACKGROUND, Color.WHITE) + .set(ColorKey.MAIN, Color.BLACK) + .set(ColorKey.WIRE, Color.BLUE.darker()) + .set(ColorKey.WIRE_LOW, new Color(0, 142, 0)) + .set(ColorKey.WIRE_HIGH, new Color(102, 255, 102)) + .set(ColorKey.WIRE_OUT, Color.RED.darker()) + .set(ColorKey.WIRE_VALUE, new Color(50, 162, 50)) + .set(ColorKey.WIRE_Z, Color.GRAY) + .set(ColorKey.PINS, Color.GRAY) + .set(ColorKey.HIGHLIGHT, Color.CYAN) + .set(ColorKey.GRID, new Color(210, 210, 210)) + .set(ColorKey.PASSED, Color.GREEN) + .set(ColorKey.ERROR, Color.RED) + .set(ColorKey.DISABLED, Color.LIGHT_GRAY) + .set(ColorKey.TESTCASE, new Color(180, 255, 180, 200)) + .set(ColorKey.ASYNC, new Color(255, 180, 180, 200)); + + private static final ColorScheme DARK_SCHEME = new ColorScheme(DEFAULT_SCHEME) + .set(ColorKey.BACKGROUND, Color.BLACK) + .set(ColorKey.MAIN, Color.GRAY) + .set(ColorKey.GRID, new Color(50, 50, 50)) + .set(ColorKey.DISABLED, Color.GRAY.darker().darker()); + + private static final ColorScheme COLOR_BLIND_SCHEME = new ColorScheme(DEFAULT_SCHEME) + .set(ColorKey.WIRE_LOW, new Color(32, 59, 232)) + .set(ColorKey.WIRE_HIGH, new Color(244, 235, 66)) + .set(ColorKey.WIRE_Z, new Color(1, 188, 157)); + + enum ColorSchemes { + DEFAULT(DEFAULT_SCHEME), DARK(DARK_SCHEME), COLOR_BLIND(COLOR_BLIND_SCHEME); + + private final ColorScheme scheme; + + ColorSchemes(ColorScheme scheme) { + this.scheme = scheme; + } + + ColorScheme getScheme() { + return scheme; + } + } + + /** + * The key used to select the color map + */ + public static final Key COLOR_SCHEME = + new Key.KeyEnum<>("colorScheme", ColorSchemes.DEFAULT, ColorSchemes.values()) + .setRequiresRepaint(); + + private static ColorScheme instance = null; + + /** + * @return the selected color map + */ + public static ColorScheme getInstance() { + if (instance == null) { + updateInstance(); + Settings.getInstance().getAttributes().addListener(ColorScheme::updateInstance); + } + return instance; + } + + private static void updateInstance() { + instance = Settings.getInstance().get(COLOR_SCHEME).getScheme(); + } + + private final Color[] colors; + + private ColorScheme() { + colors = new Color[ColorKey.values().length]; + } + + private ColorScheme(ColorScheme other) { + this.colors = other.colors.clone(); + } + + private ColorScheme set(ColorKey key, Color color) { + colors[key.ordinal()] = color; + return this; + } + + /** + * Returns the selected color + * + * @param key te color key + * @return the color + */ + public Color getColor(ColorKey key) { + return colors[key.ordinal()]; + } +} 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 c970fd3d7..eb945c236 100644 --- a/src/main/java/de/neemann/digital/draw/graphics/Style.java +++ b/src/main/java/de/neemann/digital/draw/graphics/Style.java @@ -37,11 +37,11 @@ public final class Style { /** * used to draw the failed state lines in the measurement graph */ - public static final Style FAILED = new Builder(NORMAL).setColor(ColorMap.ColorKey.ERROR).build(); + public static final Style FAILED = new Builder(NORMAL).setColor(ColorKey.ERROR).build(); /** * used to draw the passed state lines in the measurement graph */ - public static final Style PASS = new Builder(NORMAL).setColor(ColorMap.ColorKey.PASSED).build(); + public static final Style PASS = new Builder(NORMAL).setColor(ColorKey.PASSED).build(); /** * Used for text which is integral part of the shape. * Text which uses this style is always included in sizing! @@ -66,25 +66,25 @@ public final class Style { public static final Style WIRE = new Builder() .setThickness(WIRETHICK) .setFilled(true) - .setColor(ColorMap.ColorKey.WIRE) + .setColor(ColorKey.WIRE) .setEndCap(BasicStroke.CAP_ROUND) .build(); /** * Used for low wires in running mode */ - public static final Style WIRE_LOW = new Builder(WIRE).setColor(ColorMap.ColorKey.WIRE_LOW).build(); + public static final Style WIRE_LOW = new Builder(WIRE).setColor(ColorKey.WIRE_LOW).build(); /** * Used for high wires in running mode */ - public static final Style WIRE_HIGH = new Builder(WIRE).setColor(ColorMap.ColorKey.WIRE_HIGH).build(); + public static final Style WIRE_HIGH = new Builder(WIRE).setColor(ColorKey.WIRE_HIGH).build(); /** * Used for wires in high Z state */ - public static final Style WIRE_HIGHZ = new Builder(WIRE).setColor(ColorMap.ColorKey.WIRE_Z).build(); + public static final Style WIRE_HIGHZ = new Builder(WIRE).setColor(ColorKey.WIRE_Z).build(); /** * used to draw the output dots */ - public static final Style WIRE_OUT = new Builder(WIRE).setColor(ColorMap.ColorKey.WIRE_OUT).build(); + public static final Style WIRE_OUT = new Builder(WIRE).setColor(ColorKey.WIRE_OUT).build(); /** * used to draw the bus wires @@ -107,7 +107,7 @@ public final class Style { */ public static final Style SHAPE_PIN = new Builder() .setThickness(LINETHIN) - .setColor(ColorMap.ColorKey.PINS) + .setColor(ColorKey.PINS) .setFontSize(18) .build(); /** @@ -118,19 +118,19 @@ public final class Style { * Used to draw the pin description text */ public static final Style WIRE_VALUE = new Builder(SHAPE_SPLITTER) - .setColor(ColorMap.ColorKey.WIRE_VALUE) + .setColor(ColorKey.WIRE_VALUE) .build(); /** * Used to draw the wire bit number */ public static final Style WIRE_BITS = new Builder(SHAPE_SPLITTER) - .setColor(ColorMap.ColorKey.WIRE) + .setColor(ColorKey.WIRE) .build(); /** * highlight color used for the circles to mark an element */ public static final Style HIGHLIGHT = new Builder(NORMAL) - .setColor(ColorMap.ColorKey.HIGHLIGHT) + .setColor(ColorKey.HIGHLIGHT) .setEndCap(BasicStroke.CAP_ROUND) .build(); @@ -138,13 +138,14 @@ public final class Style { * error color used for the circles to mark an element */ public static final Style ERROR = new Builder(NORMAL) - .setColor(ColorMap.ColorKey.ERROR) + .setColor(ColorKey.ERROR) .setEndCap(BasicStroke.CAP_ROUND) .build(); private final int thickness; private final boolean filled; - private final ColorMap.ColorProvider color; + private final Color color; + private final ColorKey colorKey; private final int fontSize; private final float[] dash; private final BasicStroke stroke; @@ -160,6 +161,7 @@ public final class Style { private Style(Builder builder) { this.thickness = builder.thickness; this.filled = builder.filled; + this.colorKey = builder.colorKey; this.color = builder.color; this.fontSize = builder.fontSize; this.fontStyle = builder.fontStyle; @@ -188,7 +190,10 @@ public final class Style { * @return the color */ public Color getColor() { - return color.getColor(); + if (colorKey != null) + return ColorScheme.getInstance().getColor(colorKey); + else + return color; } /** @@ -276,6 +281,18 @@ public final class Style { .build(); } + /** + * Creates a new style, based on this style. + * + * @param colorKey the new color + * @return Style the derived style with the given color set. + */ + public Style deriveColor(ColorKey colorKey) { + return new Builder(this) + .setColor(colorKey) + .build(); + } + /** * Creates a new style, based on this style. * @@ -306,10 +323,25 @@ public final class Style { .build(); } + /** + * Creates a new style suited for filling polygons, based on this style. + * + * @param colorKey the fill color key + * @return the nes style + */ + public Style deriveFillStyle(ColorKey colorKey) { + return new Builder(this) + .setThickness(0) + .setFilled(true) + .setColor(colorKey) + .build(); + } + private static final class Builder { private int thickness = LINETHICK; private boolean filled = false; - private ColorMap.ColorProvider color = new ColorMap.ColorByKey(ColorMap.ColorKey.MAIN); + private ColorKey colorKey = ColorKey.MAIN; + private Color color; private int fontSize = 24; private float[] dash = null; private boolean mattersForSize = false; @@ -322,6 +354,7 @@ public final class Style { private Builder(Style style) { thickness = style.thickness; filled = style.filled; + colorKey = style.colorKey; color = style.color; fontSize = style.fontSize; dash = style.getDash(); @@ -339,13 +372,15 @@ public final class Style { return this; } - private Builder setColor(ColorMap.ColorKey key) { - this.color = new ColorMap.ColorByKey(key); + private Builder setColor(ColorKey key) { + this.colorKey = key; + this.color = null; return this; } private Builder setColor(Color color) { - this.color = () -> color; + this.colorKey = null; + this.color = color; return this; } 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 579dc4129..e0414c896 100644 --- a/src/main/java/de/neemann/digital/draw/shapes/AsyncClockShape.java +++ b/src/main/java/de/neemann/digital/draw/shapes/AsyncClockShape.java @@ -22,7 +22,7 @@ import static de.neemann.digital.draw.shapes.GenericShape.SIZE2; */ public class AsyncClockShape implements Shape { - private static final Style TESTSTYLE = Style.NORMAL.deriveFillStyle(new Color(255, 180, 180, 200)); + private static final Style ASYNCSTYLE = Style.NORMAL.deriveFillStyle(ColorKey.ASYNC); private final String label; /** @@ -54,7 +54,7 @@ public class AsyncClockShape implements Shape { .add(SIZE2 + SIZE * 4, SIZE2) .add(SIZE2 + SIZE * 4, SIZE * 2 + SIZE2) .add(SIZE2, SIZE * 2 + SIZE2); - graphic.drawPolygon(pol, TESTSTYLE); + graphic.drawPolygon(pol, ASYNCSTYLE); graphic.drawPolygon(pol, Style.THIN); graphic.drawText(new Vector(SIZE2 + SIZE * 2, SIZE + SIZE2), "Async", Orientation.CENTERCENTER, Style.NORMAL); graphic.drawText(new Vector(SIZE2 + SIZE * 2, 0), label, Orientation.CENTERBOTTOM, Style.NORMAL); diff --git a/src/main/java/de/neemann/digital/draw/shapes/BreakShape.java b/src/main/java/de/neemann/digital/draw/shapes/BreakShape.java index cbb9e4d63..10fbd094d 100644 --- a/src/main/java/de/neemann/digital/draw/shapes/BreakShape.java +++ b/src/main/java/de/neemann/digital/draw/shapes/BreakShape.java @@ -11,10 +11,7 @@ import de.neemann.digital.core.element.PinDescriptions; import de.neemann.digital.draw.elements.IOState; import de.neemann.digital.draw.elements.Pin; import de.neemann.digital.draw.elements.Pins; -import de.neemann.digital.draw.graphics.Graphic; -import de.neemann.digital.draw.graphics.Orientation; -import de.neemann.digital.draw.graphics.Style; -import de.neemann.digital.draw.graphics.Vector; +import de.neemann.digital.draw.graphics.*; import java.awt.*; @@ -59,7 +56,7 @@ public class BreakShape implements Shape { Vector center = new Vector(2 + SIZE, 0); Style style = Style.NORMAL; if (!enabled) - style = Style.NORMAL.deriveColor(Color.LIGHT_GRAY); + style = Style.NORMAL.deriveColor(ColorKey.DISABLED); graphic.drawCircle(center.sub(RAD), center.add(RAD), style); graphic.drawLine(center.sub(D1), center.add(D1), style); graphic.drawLine(center.sub(D2), center.add(D2), style); diff --git a/src/main/java/de/neemann/digital/draw/shapes/DipSwitchShape.java b/src/main/java/de/neemann/digital/draw/shapes/DipSwitchShape.java index eff56cd92..68e1ac7c8 100644 --- a/src/main/java/de/neemann/digital/draw/shapes/DipSwitchShape.java +++ b/src/main/java/de/neemann/digital/draw/shapes/DipSwitchShape.java @@ -47,7 +47,7 @@ public class DipSwitchShape implements Shape { .add(-SIZE - SIZE2, -SIZE2 + 4) .add(-SIZE * 3 + 5, -SIZE2 + 4); - private static final Style STYLE = Style.THIN.deriveFillStyle(Color.GRAY); + private static final Style STYLE = Style.THIN.deriveFillStyle(ColorKey.PINS); private final String label; private final PinDescriptions outputs; diff --git a/src/main/java/de/neemann/digital/draw/shapes/SevenShape.java b/src/main/java/de/neemann/digital/draw/shapes/SevenShape.java index b364e9b04..7b4ee2cf6 100644 --- a/src/main/java/de/neemann/digital/draw/shapes/SevenShape.java +++ b/src/main/java/de/neemann/digital/draw/shapes/SevenShape.java @@ -43,7 +43,7 @@ public abstract class SevenShape implements Shape { */ public SevenShape(ElementAttributes attr) { onStyle = Style.NORMAL.deriveFillStyle(attr.get(Keys.COLOR)); - offStyle = Style.NORMAL.deriveFillStyle(ColorMap.getInstance().getColor(ColorMap.ColorKey.GRID)); + offStyle = Style.NORMAL.deriveFillStyle(ColorKey.GRID); size = attr.get(Keys.SEVEN_SEG_SIZE); } diff --git a/src/main/java/de/neemann/digital/draw/shapes/SixteenShape.java b/src/main/java/de/neemann/digital/draw/shapes/SixteenShape.java index 33bd37e8d..d78cdfb66 100644 --- a/src/main/java/de/neemann/digital/draw/shapes/SixteenShape.java +++ b/src/main/java/de/neemann/digital/draw/shapes/SixteenShape.java @@ -64,7 +64,7 @@ public class SixteenShape implements Shape { public SixteenShape(ElementAttributes attr, PinDescriptions inputs, PinDescriptions outputs) { pins = inputs; onStyle = Style.NORMAL.deriveFillStyle(attr.get(Keys.COLOR)); - offStyle = Style.NORMAL.deriveFillStyle(ColorMap.getInstance().getColor(ColorMap.ColorKey.GRID)); + offStyle = Style.NORMAL.deriveFillStyle(ColorKey.GRID); size = attr.get(Keys.SEVEN_SEG_SIZE); } diff --git a/src/main/java/de/neemann/digital/draw/shapes/StepperMotorShape.java b/src/main/java/de/neemann/digital/draw/shapes/StepperMotorShape.java index 9f1aadb9c..7590e577c 100644 --- a/src/main/java/de/neemann/digital/draw/shapes/StepperMotorShape.java +++ b/src/main/java/de/neemann/digital/draw/shapes/StepperMotorShape.java @@ -80,7 +80,7 @@ public class StepperMotorShape implements Shape { } - private static final Style ERROR_STYLE = Style.NORMAL.deriveColor(Color.RED); + private static final Style ERROR_STYLE = Style.NORMAL.deriveColor(ColorKey.ERROR); @Override public void drawTo(Graphic graphic, Style highLight) { 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 d5366d69f..960751556 100644 --- a/src/main/java/de/neemann/digital/draw/shapes/TestCaseShape.java +++ b/src/main/java/de/neemann/digital/draw/shapes/TestCaseShape.java @@ -10,9 +10,6 @@ import de.neemann.digital.core.element.PinDescriptions; import de.neemann.digital.draw.elements.IOState; import de.neemann.digital.draw.elements.Pins; import de.neemann.digital.draw.graphics.*; -import de.neemann.digital.draw.graphics.Polygon; - -import java.awt.*; import static de.neemann.digital.draw.shapes.GenericShape.SIZE; import static de.neemann.digital.draw.shapes.GenericShape.SIZE2; @@ -22,7 +19,7 @@ import static de.neemann.digital.draw.shapes.GenericShape.SIZE2; */ public class TestCaseShape implements Shape { - private static final Style TESTSTYLE = Style.NORMAL.deriveFillStyle(new Color(180, 255, 180, 200)); + private static final Style TESTSTYLE = Style.NORMAL.deriveFillStyle(ColorKey.TESTCASE); private final String label; /** diff --git a/src/main/java/de/neemann/digital/gui/Settings.java b/src/main/java/de/neemann/digital/gui/Settings.java index e2386d9b4..2ccda7a8b 100644 --- a/src/main/java/de/neemann/digital/gui/Settings.java +++ b/src/main/java/de/neemann/digital/gui/Settings.java @@ -8,7 +8,7 @@ package de.neemann.digital.gui; import de.neemann.digital.core.element.ElementAttributes; import de.neemann.digital.core.element.Key; import de.neemann.digital.core.element.Keys; -import de.neemann.digital.draw.graphics.ColorMap; +import de.neemann.digital.draw.graphics.ColorScheme; import java.util.ArrayList; import java.util.Collections; @@ -43,7 +43,7 @@ public final class Settings extends SettingsBase { intList.add(Keys.SETTINGS_IEEE_SHAPES); intList.add(Keys.SETTINGS_LANGUAGE); intList.add(Keys.SETTINGS_EXPRESSION_FORMAT); - intList.add(ColorMap.COLOR_SCHEME); + intList.add(ColorScheme.COLOR_SCHEME); intList.add(Keys.SETTINGS_DEFAULT_TREESELECT); intList.add(Keys.SETTINGS_GRID); intList.add(Keys.SETTINGS_SHOW_WIRE_BITS); 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 8a0418a3b..cfaacdb49 100644 --- a/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java +++ b/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java @@ -43,7 +43,7 @@ import java.io.IOException; import java.util.List; import java.util.*; -import static de.neemann.digital.draw.graphics.ColorMap.*; +import static de.neemann.digital.draw.graphics.ColorScheme.*; import static de.neemann.digital.draw.shapes.GenericShape.SIZE; import static de.neemann.digital.draw.shapes.GenericShape.SIZE2; diff --git a/src/test/java/de/neemann/digital/draw/graphics/ColorSchemeTest.java b/src/test/java/de/neemann/digital/draw/graphics/ColorSchemeTest.java new file mode 100644 index 000000000..49664a5ca --- /dev/null +++ b/src/test/java/de/neemann/digital/draw/graphics/ColorSchemeTest.java @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2020 Helmut Neemann. + * Use of this source code is governed by the GPL v3 license + * that can be found in the LICENSE file. + */ +package de.neemann.digital.draw.graphics; + +import junit.framework.TestCase; + +public class ColorSchemeTest extends TestCase { + + public void testCompleteness() { + ColorScheme map = ColorScheme.COLOR_SCHEME.getDefault().getScheme(); + for (ColorKey ck : ColorKey.values()) + assertNotNull(map.getColor(ck)); + } + +} \ No newline at end of file