use of com.cburch.logisim.data.Bounds in project logisim-evolution by reds-heig.
the class CircuitAppearance method getBounds.
private Bounds getBounds(boolean relativeToAnchor) {
Bounds ret = null;
Location offset = null;
for (CanvasObject o : getObjectsFromBottom()) {
if (o instanceof AppearanceElement) {
Location loc = ((AppearanceElement) o).getLocation();
if (o instanceof AppearanceAnchor) {
offset = loc;
}
if (ret == null) {
ret = Bounds.create(loc);
} else {
ret = ret.add(loc);
}
} else {
if (ret == null) {
ret = o.getBounds();
} else {
ret = ret.add(o.getBounds());
}
}
}
if (ret == null) {
return Bounds.EMPTY_BOUNDS;
} else if (relativeToAnchor && offset != null) {
return ret.translate(-offset.getX(), -offset.getY());
} else {
return ret;
}
}
use of com.cburch.logisim.data.Bounds in project logisim-evolution by reds-heig.
the class ManagedComponent method expose.
//
// user interface methods
//
public void expose(ComponentDrawContext context) {
Bounds bounds = getBounds();
java.awt.Component dest = context.getDestination();
if (bounds != null) {
dest.repaint(bounds.getX() - 5, bounds.getY() - 5, bounds.getWidth() + 10, bounds.getHeight() + 10);
}
}
use of com.cburch.logisim.data.Bounds in project logisim-evolution by reds-heig.
the class ShiftRegister method configurePorts.
private void configurePorts(Instance instance) {
BitWidth widthObj = instance.getAttributeValue(StdAttr.WIDTH);
int width = widthObj.getWidth();
Boolean parallelObj = instance.getAttributeValue(ATTR_LOAD);
Bounds bds = instance.getBounds();
Port[] ps;
Integer lenObj = instance.getAttributeValue(ATTR_LENGTH);
int len = lenObj == null ? 8 : lenObj.intValue();
if (parallelObj == null || parallelObj.booleanValue()) {
ps = new Port[6 + 2 * len - 1];
ps[LD] = new Port(0, 30, Port.INPUT, 1);
ps[LD].setToolTip(Strings.getter("shiftRegLoadTip"));
for (int i = 0; i < len; i++) {
ps[6 + 2 * i] = new Port(0, 90 + i * 20, Port.INPUT, width);
if (i < (len - 1))
ps[6 + 2 * i + 1] = new Port(SymbolWidth + 20, 90 + i * 20, Port.OUTPUT, width);
}
} else {
ps = new Port[5];
}
ps[OUT] = new Port(SymbolWidth + 20, 70 + len * 20, Port.OUTPUT, width);
ps[IN] = new Port(0, 80, Port.INPUT, width);
ps[SH] = new Port(0, 40, Port.INPUT, 1);
ps[CK] = new Port(0, 50, Port.INPUT, 1);
ps[CLR] = new Port(0, 20, Port.INPUT, 1);
ps[OUT].setToolTip(Strings.getter("shiftRegOutTip"));
ps[SH].setToolTip(Strings.getter("shiftRegShiftTip"));
ps[IN].setToolTip(Strings.getter("shiftRegInTip"));
ps[CK].setToolTip(Strings.getter("shiftRegClockTip"));
ps[CLR].setToolTip(Strings.getter("shiftRegClearTip"));
instance.setPorts(ps);
instance.setTextField(StdAttr.LABEL, StdAttr.LABEL_FONT, bds.getX() + bds.getWidth() / 2, bds.getY() - 3, GraphicsUtil.H_CENTER, GraphicsUtil.V_BASELINE);
}
use of com.cburch.logisim.data.Bounds in project logisim-evolution by reds-heig.
the class ShiftRegisterPoker method paint.
@Override
public void paint(InstancePainter painter) {
int loc = this.loc;
if (loc < 0)
return;
BitWidth widObj = painter.getAttributeValue(StdAttr.WIDTH);
Bounds bds = painter.getInstance().getBounds();
int len = (widObj.getWidth() + 3) / 4;
int boxXpos = ((ShiftRegister.SymbolWidth - 30) / 2 + 30) - (len * 4) + bds.getX() + 10;
int y = bds.getY() + 82 + loc * 20;
Graphics g = painter.getGraphics();
g.setColor(Color.RED);
g.drawRect(boxXpos, y, 2 + len * 8, 16);
}
use of com.cburch.logisim.data.Bounds in project logisim-evolution by reds-heig.
the class BitSelector method paintInstance.
@Override
public void paintInstance(InstancePainter painter) {
Graphics g = painter.getGraphics();
Direction facing = painter.getAttributeValue(StdAttr.FACING);
Plexers.drawTrapezoid(g, painter.getBounds(), facing, 9);
Bounds bds = painter.getBounds();
g.setColor(Color.BLACK);
GraphicsUtil.drawCenteredText(g, "Sel", bds.getX() + bds.getWidth() / 2, bds.getY() + bds.getHeight() / 2);
painter.drawPorts();
}
Aggregations