use of com.cburch.logisim.instance.Port in project logisim-evolution by reds-heig.
the class PriorityEncoder method updatePorts.
private void updatePorts(Instance instance) {
Object dir = instance.getAttributeValue(StdAttr.FACING);
BitWidth select = instance.getAttributeValue(Plexers.ATTR_SELECT);
int n = 1 << select.getWidth();
Port[] ps = new Port[n + 4];
if (dir == Direction.NORTH || dir == Direction.SOUTH) {
int x = -5 * n + 10;
int y = dir == Direction.NORTH ? 40 : -40;
for (int i = 0; i < n; i++) {
ps[i] = new Port(x + 10 * i, y, Port.INPUT, 1);
}
ps[n + OUT] = new Port(0, 0, Port.OUTPUT, select.getWidth());
ps[n + EN_IN] = new Port(x + 10 * n, y / 2, Port.INPUT, 1);
ps[n + EN_OUT] = new Port(x - 10, y / 2, Port.OUTPUT, 1);
ps[n + GS] = new Port(10, 0, Port.OUTPUT, 1);
} else {
int x = dir == Direction.EAST ? -40 : 40;
int y = -5 * n + 10;
for (int i = 0; i < n; i++) {
ps[i] = new Port(x, y + 10 * i, Port.INPUT, 1);
}
ps[n + OUT] = new Port(0, 0, Port.OUTPUT, select.getWidth());
ps[n + EN_IN] = new Port(x / 2, y + 10 * n, Port.INPUT, 1);
ps[n + EN_OUT] = new Port(x / 2, y - 10, Port.OUTPUT, 1);
ps[n + GS] = new Port(0, 10, Port.OUTPUT, 1);
}
for (int i = 0; i < n; i++) {
ps[i].setToolTip(Strings.getter("priorityEncoderInTip", "" + i));
}
ps[n + OUT].setToolTip(Strings.getter("priorityEncoderOutTip"));
ps[n + EN_IN].setToolTip(Strings.getter("priorityEncoderEnableInTip"));
ps[n + EN_OUT].setToolTip(Strings.getter("priorityEncoderEnableOutTip"));
ps[n + GS].setToolTip(Strings.getter("priorityEncoderGroupSignalTip"));
instance.setPorts(ps);
}
use of com.cburch.logisim.instance.Port in project logisim-evolution by reds-heig.
the class AbstractGate method computePorts.
void computePorts(Instance instance) {
GateAttributes attrs = (GateAttributes) instance.getAttributeSet();
int inputs = attrs.inputs;
Port[] ports = new Port[inputs + 1];
ports[0] = new Port(0, 0, Port.OUTPUT, StdAttr.WIDTH);
for (int i = 0; i < inputs; i++) {
Location offs = getInputOffset(attrs, i);
ports[i + 1] = new Port(offs.getX(), offs.getY(), Port.INPUT, StdAttr.WIDTH);
}
instance.setPorts(ports);
}
use of com.cburch.logisim.instance.Port in project logisim-evolution by reds-heig.
the class ControlledBuffer method configurePorts.
private void configurePorts(Instance instance) {
Direction facing = instance.getAttributeValue(StdAttr.FACING);
Bounds bds = getOffsetBounds(instance.getAttributeSet());
int d = Math.max(bds.getWidth(), bds.getHeight()) - 20;
Location loc0 = Location.create(0, 0);
Location loc1 = loc0.translate(facing.reverse(), 20 + d);
Location loc2;
if (instance.getAttributeValue(ATTR_CONTROL) == LEFT_HANDED) {
loc2 = loc0.translate(facing.reverse(), 10 + d, 10);
} else {
loc2 = loc0.translate(facing.reverse(), 10 + d, -10);
}
Port[] ports = new Port[3];
ports[0] = new Port(0, 0, Port.OUTPUT, StdAttr.WIDTH);
ports[1] = new Port(loc1.getX(), loc1.getY(), Port.INPUT, StdAttr.WIDTH);
ports[2] = new Port(loc2.getX(), loc2.getY(), Port.INPUT, 1);
instance.setPorts(ports);
}
use of com.cburch.logisim.instance.Port in project logisim-evolution by reds-heig.
the class PortIO method configurePorts.
private void configurePorts(Instance instance) {
if (instance.getAttributeValue(ATTR_BUS).equals(PINS)) {
// TODO YSY PINS
// Port[] ps = new Port[instance.getAttributeValue(ATTR_SIZE)];
// for (int i = 0; i < instance.getAttributeValue(ATTR_SIZE); i++) {
//
// ps[i] = new Port((i + 1) * 10, 0, Port.OUTPUT, 1);
// ps[i].setToolTip(StringUtil.constantGetter(String.valueOf(i+1)));
// }
// instance.setPorts(ps);
} else {
int nbPorts = instance.getAttributeValue(ATTR_SIZE);
Port[] ps = new Port[((nbPorts - 1) / 32) + 1];
int i = 0;
while (nbPorts > 0) {
ps[i] = new Port((i + 1) * 10, 0, Port.INOUT, (nbPorts > 32) ? 32 : nbPorts);
ps[i].setToolTip(StringUtil.constantGetter(String.valueOf((32 * i)) + " to " + String.valueOf(32 * i + (nbPorts > 32 ? 32 : nbPorts) - 1)));
i++;
nbPorts -= (nbPorts > 32) ? 32 : nbPorts;
}
instance.setPorts(ps);
}
}
use of com.cburch.logisim.instance.Port in project logisim-evolution by reds-heig.
the class DotMatrix method updatePorts.
private void updatePorts(Instance instance) {
Object input = instance.getAttributeValue(ATTR_INPUT_TYPE);
int rows = instance.getAttributeValue(ATTR_MATRIX_ROWS).intValue();
int cols = instance.getAttributeValue(ATTR_MATRIX_COLS).intValue();
Port[] ps;
if (input == INPUT_COLUMN) {
ps = new Port[cols];
for (int i = 0; i < cols; i++) {
ps[i] = new Port(10 * i, 0, Port.INPUT, rows);
}
} else if (input == INPUT_ROW) {
ps = new Port[rows];
for (int i = 0; i < rows; i++) {
ps[i] = new Port(0, 10 * i, Port.INPUT, cols);
}
} else {
if (rows <= 1) {
ps = new Port[] { new Port(0, 0, Port.INPUT, cols) };
} else if (cols <= 1) {
ps = new Port[] { new Port(0, 0, Port.INPUT, rows) };
} else {
ps = new Port[] { new Port(0, 0, Port.INPUT, cols), new Port(0, 10, Port.INPUT, rows) };
}
}
instance.setPorts(ps);
}
Aggregations