Search in sources :

Example 1 with Port

use of com.cburch.logisim.instance.Port in project logisim-evolution by reds-heig.

the class PullResistor method configureNewInstance.

// 
// methods for instances
// 
@Override
protected void configureNewInstance(Instance instance) {
    instance.addAttributeListener();
    instance.setPorts(new Port[] { new Port(0, 0, Port.INOUT, BitWidth.UNKNOWN) });
}
Also used : Port(com.cburch.logisim.instance.Port)

Example 2 with Port

use of com.cburch.logisim.instance.Port in project logisim-evolution by reds-heig.

the class Transistor method updatePorts.

private void updatePorts(Instance instance) {
    Direction facing = instance.getAttributeValue(StdAttr.FACING);
    int dx = 0;
    int dy = 0;
    if (facing == Direction.NORTH) {
        dy = 1;
    } else if (facing == Direction.EAST) {
        dx = -1;
    } else if (facing == Direction.SOUTH) {
        dy = -1;
    } else if (facing == Direction.WEST) {
        dx = 1;
    }
    Object powerLoc = instance.getAttributeValue(Wiring.ATTR_GATE);
    boolean flip = (facing == Direction.SOUTH || facing == Direction.WEST) == (powerLoc == Wiring.GATE_TOP_LEFT);
    Port[] ports = new Port[3];
    ports[OUTPUT] = new Port(0, 0, Port.OUTPUT, StdAttr.WIDTH);
    ports[INPUT] = new Port(40 * dx, 40 * dy, Port.INPUT, StdAttr.WIDTH);
    if (flip) {
        ports[GATE] = new Port(20 * (dx + dy), 20 * (-dx + dy), Port.INPUT, 1);
    } else {
        ports[GATE] = new Port(20 * (dx - dy), 20 * (dx + dy), Port.INPUT, 1);
    }
    instance.setPorts(ports);
}
Also used : Port(com.cburch.logisim.instance.Port) Direction(com.cburch.logisim.data.Direction)

Example 3 with Port

use of com.cburch.logisim.instance.Port in project logisim-evolution by reds-heig.

the class Tunnel method configureNewInstance.

// 
// methods for instances
// 
@Override
protected void configureNewInstance(Instance instance) {
    instance.addAttributeListener();
    instance.setPorts(new Port[] { new Port(0, 0, Port.INOUT, StdAttr.WIDTH) });
    configureLabel(instance);
}
Also used : Port(com.cburch.logisim.instance.Port)

Example 4 with Port

use of com.cburch.logisim.instance.Port 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);
}
Also used : BitWidth(com.cburch.logisim.data.BitWidth) Bounds(com.cburch.logisim.data.Bounds) Port(com.cburch.logisim.instance.Port)

Example 5 with Port

use of com.cburch.logisim.instance.Port in project logisim-evolution by reds-heig.

the class BitSelector method updatePorts.

private void updatePorts(Instance instance) {
    Direction facing = instance.getAttributeValue(StdAttr.FACING);
    BitWidth data = instance.getAttributeValue(StdAttr.WIDTH);
    BitWidth group = instance.getAttributeValue(GROUP_ATTR);
    int groups = (data.getWidth() + group.getWidth() - 1) / group.getWidth() - 1;
    int selectBits = 1;
    if (groups > 0) {
        while (groups != 1) {
            groups >>= 1;
            selectBits++;
        }
    }
    BitWidth select = BitWidth.create(selectBits);
    Location inPt;
    Location selPt;
    if (facing == Direction.WEST) {
        inPt = Location.create(30, 0);
        selPt = Location.create(10, 10);
    } else if (facing == Direction.NORTH) {
        inPt = Location.create(0, 30);
        selPt = Location.create(-10, 10);
    } else if (facing == Direction.SOUTH) {
        inPt = Location.create(0, -30);
        selPt = Location.create(-10, -10);
    } else {
        inPt = Location.create(-30, 0);
        selPt = Location.create(-10, 10);
    }
    Port[] ps = new Port[3];
    ps[0] = new Port(0, 0, Port.OUTPUT, group.getWidth());
    ps[1] = new Port(inPt.getX(), inPt.getY(), Port.INPUT, data.getWidth());
    ps[2] = new Port(selPt.getX(), selPt.getY(), Port.INPUT, select.getWidth());
    ps[0].setToolTip(Strings.getter("bitSelectorOutputTip"));
    ps[1].setToolTip(Strings.getter("bitSelectorDataTip"));
    ps[2].setToolTip(Strings.getter("bitSelectorSelectTip"));
    instance.setPorts(ps);
}
Also used : BitWidth(com.cburch.logisim.data.BitWidth) Port(com.cburch.logisim.instance.Port) Direction(com.cburch.logisim.data.Direction) Location(com.cburch.logisim.data.Location)

Aggregations

Port (com.cburch.logisim.instance.Port)40 BitWidth (com.cburch.logisim.data.BitWidth)12 Direction (com.cburch.logisim.data.Direction)10 Location (com.cburch.logisim.data.Location)9 Bounds (com.cburch.logisim.data.Bounds)6 Value (com.cburch.logisim.data.Value)3 Font (java.awt.Font)3 FontMetrics (java.awt.FontMetrics)3 Graphics (java.awt.Graphics)3 IOException (java.io.IOException)2 Component (com.cburch.logisim.comp.Component)1 AttributeSet (com.cburch.logisim.data.AttributeSet)1 Instance (com.cburch.logisim.instance.Instance)1 InstanceState (com.cburch.logisim.instance.InstanceState)1 VhdlContent (com.cburch.logisim.std.hdl.VhdlContent)1 FileNotFoundException (java.io.FileNotFoundException)1 PrintWriter (java.io.PrintWriter)1 UnsupportedEncodingException (java.io.UnsupportedEncodingException)1 Date (java.util.Date)1 HashMap (java.util.HashMap)1