Search in sources :

Example 6 with Port

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

Example 7 with Port

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

Example 8 with Port

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

Example 9 with Port

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();
}
Also used : Graphics(java.awt.Graphics) FontMetrics(java.awt.FontMetrics) Bounds(com.cburch.logisim.data.Bounds) Port(com.cburch.logisim.instance.Port) VhdlContent(com.cburch.logisim.std.hdl.VhdlContent) Font(java.awt.Font)

Example 10 with Port

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);
}
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