use of com.cburch.logisim.instance.Port in project logisim-evolution by reds-heig.
the class BitExtender method configurePorts.
private void configurePorts(Instance instance) {
Port p0 = new Port(0, 0, Port.OUTPUT, ATTR_OUT_WIDTH);
Port p1 = new Port(-40, 0, Port.INPUT, ATTR_IN_WIDTH);
String type = getType(instance.getAttributeSet());
if (type.equals("input")) {
instance.setPorts(new Port[] { p0, p1, new Port(-20, -20, Port.INPUT, 1) });
} else {
instance.setPorts(new Port[] { p0, p1 });
}
}
use of com.cburch.logisim.instance.Port in project logisim-evolution by reds-heig.
the class Clock method configureNewInstance.
//
// methods for instances
//
@Override
protected void configureNewInstance(Instance instance) {
instance.addAttributeListener();
instance.setPorts(new Port[] { new Port(0, 0, Port.OUTPUT, BitWidth.ONE) });
configureLabel(instance);
}
use of com.cburch.logisim.instance.Port in project logisim-evolution by reds-heig.
the class Constant method updatePorts.
private void updatePorts(Instance instance) {
Port[] ps = { new Port(0, 0, Port.OUTPUT, StdAttr.WIDTH) };
instance.setPorts(ps);
}
use of com.cburch.logisim.instance.Port in project logisim-evolution by reds-heig.
the class TclGeneric method paintInstance.
@Override
public void paintInstance(InstancePainter painter) {
Graphics g = painter.getGraphics();
VhdlContent content = painter.getAttributeValue(CONTENT_ATTR);
FontMetrics metric = g.getFontMetrics();
Bounds bds = painter.getBounds();
int x0 = bds.getX() + (bds.getWidth() / 2);
int y0 = bds.getY() + metric.getHeight() + 12;
GraphicsUtil.drawText(g, StringUtil.resizeString(content.getName(), metric, WIDTH), x0, y0, GraphicsUtil.H_CENTER, GraphicsUtil.V_BOTTOM);
String glbLabel = painter.getAttributeValue(StdAttr.LABEL);
if (glbLabel != null) {
Font font = g.getFont();
g.setFont(painter.getAttributeValue(StdAttr.LABEL_FONT));
GraphicsUtil.drawCenteredText(g, glbLabel, bds.getX() + bds.getWidth() / 2, bds.getY() - g.getFont().getSize());
g.setFont(font);
}
g.setColor(Color.GRAY);
g.setFont(g.getFont().deriveFont((float) 10));
metric = g.getFontMetrics();
Port[] inputs = content.getInputs();
Port[] outputs = content.getOutputs();
for (int i = 0; i < inputs.length; i++) GraphicsUtil.drawText(g, StringUtil.resizeString(inputs[i].getToolTip(), metric, (WIDTH / 2) - X_PADDING), bds.getX() + 5, bds.getY() + HEIGHT - 2 + (i * PORT_GAP), GraphicsUtil.H_LEFT, GraphicsUtil.V_CENTER);
for (int i = 0; i < outputs.length; i++) GraphicsUtil.drawText(g, StringUtil.resizeString(outputs[i].getToolTip(), metric, (WIDTH / 2) - X_PADDING), bds.getX() + WIDTH - 5, bds.getY() + HEIGHT - 2 + (i * PORT_GAP), GraphicsUtil.H_RIGHT, GraphicsUtil.V_CENTER);
painter.drawBounds();
painter.drawPorts();
}
use of com.cburch.logisim.instance.Port in project logisim-evolution by reds-heig.
the class Demultiplexer method updatePorts.
private void updatePorts(Instance instance) {
Direction facing = instance.getAttributeValue(StdAttr.FACING);
Object selectLoc = instance.getAttributeValue(Plexers.ATTR_SELECT_LOC);
BitWidth data = instance.getAttributeValue(StdAttr.WIDTH);
BitWidth select = instance.getAttributeValue(Plexers.ATTR_SELECT);
boolean enable = instance.getAttributeValue(Plexers.ATTR_ENABLE).booleanValue();
int outputs = 1 << select.getWidth();
Port[] ps = new Port[outputs + (enable ? 3 : 2)];
Location sel;
int selMult = selectLoc == Plexers.SELECT_BOTTOM_LEFT ? 1 : -1;
if (outputs == 2) {
Location end0;
Location end1;
if (facing == Direction.WEST) {
end0 = Location.create(-30, -10);
end1 = Location.create(-30, 10);
sel = Location.create(-20, selMult * 20);
} else if (facing == Direction.NORTH) {
end0 = Location.create(-10, -30);
end1 = Location.create(10, -30);
sel = Location.create(selMult * -20, -20);
} else if (facing == Direction.SOUTH) {
end0 = Location.create(-10, 30);
end1 = Location.create(10, 30);
sel = Location.create(selMult * -20, 20);
} else {
end0 = Location.create(30, -10);
end1 = Location.create(30, 10);
sel = Location.create(20, selMult * 20);
}
ps[0] = new Port(end0.getX(), end0.getY(), Port.OUTPUT, data.getWidth());
ps[1] = new Port(end1.getX(), end1.getY(), Port.OUTPUT, data.getWidth());
} else {
int dx = -(outputs / 2) * 10;
int ddx = 10;
int dy = dx;
int ddy = 10;
if (facing == Direction.WEST) {
dx = -40;
ddx = 0;
sel = Location.create(-20, selMult * (dy + 10 * outputs));
} else if (facing == Direction.NORTH) {
dy = -40;
ddy = 0;
sel = Location.create(selMult * dx, -20);
} else if (facing == Direction.SOUTH) {
dy = 40;
ddy = 0;
sel = Location.create(selMult * dx, 20);
} else {
dx = 40;
ddx = 0;
sel = Location.create(20, selMult * (dy + 10 * outputs));
}
for (int i = 0; i < outputs; i++) {
ps[i] = new Port(dx, dy, Port.OUTPUT, data.getWidth());
dx += ddx;
dy += ddy;
}
}
Location en = sel.translate(facing, -10);
ps[outputs] = new Port(sel.getX(), sel.getY(), Port.INPUT, select.getWidth());
if (enable) {
ps[outputs + 1] = new Port(en.getX(), en.getY(), Port.INPUT, BitWidth.ONE);
}
ps[ps.length - 1] = new Port(0, 0, Port.INPUT, data.getWidth());
for (int i = 0; i < outputs; i++) {
ps[i].setToolTip(Strings.getter("demultiplexerOutTip", "" + i));
}
ps[outputs].setToolTip(Strings.getter("demultiplexerSelectTip"));
if (enable) {
ps[outputs + 1].setToolTip(Strings.getter("demultiplexerEnableTip"));
}
ps[ps.length - 1].setToolTip(Strings.getter("demultiplexerInTip"));
instance.setPorts(ps);
}
Aggregations