From 27f4f49ac1c87fa942a959b172bcf4e171b58abf Mon Sep 17 00:00:00 2001 From: hneemann Date: Tue, 13 Aug 2019 16:13:13 +0200 Subject: [PATCH] added common anode seven segment displays, see #298 --- .../digital/draw/shapes/SevenSegShape.java | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/src/main/java/de/neemann/digital/draw/shapes/SevenSegShape.java b/src/main/java/de/neemann/digital/draw/shapes/SevenSegShape.java index 7e70eddb3..7eebaeb22 100644 --- a/src/main/java/de/neemann/digital/draw/shapes/SevenSegShape.java +++ b/src/main/java/de/neemann/digital/draw/shapes/SevenSegShape.java @@ -102,19 +102,18 @@ public class SevenSegShape extends SevenShape { if (inputValues == null) return true; - if (persistence && commonConnection) { - if (!ccin.isHighZ() && !ccin.getBool()) - data[i] = inputs[i].getBool(); - return data[i]; - } else { - if (commonConnection && (ccin.isHighZ() || (ccin.getBool() ^ anode))) - return false; + if (commonConnection) { + boolean isHighZ = inputs[i].isHighZ() || ccin.isHighZ(); + boolean on = (inputs[i].getBool() != ccin.getBool()) && (inputs[i].getBool() ^ anode); + if (persistence) { + if (!isHighZ) + data[i] = on; + return data[i]; + } else + return !isHighZ && on; + } else + return !inputs[i].isHighZ() && inputs[i].getBool(); - if (inputs[i].isHighZ()) - return false; - - return inputs[i].getBool() ^ anode; - } } }