Search in sources :

Example 1 with VhdlContent

use of com.cburch.logisim.std.hdl.VhdlContent 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 2 with VhdlContent

use of com.cburch.logisim.std.hdl.VhdlContent in project logisim-evolution by reds-heig.

the class TclGeneric method updatePorts.

@Override
void updatePorts(Instance instance) {
    VhdlContent content = instance.getAttributeValue(CONTENT_ATTR);
    instance.setPorts(content.getPorts());
    setPorts(content.getPorts());
}
Also used : VhdlContent(com.cburch.logisim.std.hdl.VhdlContent)

Example 3 with VhdlContent

use of com.cburch.logisim.std.hdl.VhdlContent in project logisim-evolution by reds-heig.

the class TclGeneric method configureNewInstance.

@Override
protected void configureNewInstance(Instance instance) {
    VhdlContent content = instance.getAttributeValue(CONTENT_ATTR);
    TclGenericListener listener = new TclGenericListener(instance);
    contentListeners.put(instance, listener);
    content.addHdlModelListener(listener);
    instance.addAttributeListener();
    updatePorts(instance);
}
Also used : VhdlContent(com.cburch.logisim.std.hdl.VhdlContent)

Example 4 with VhdlContent

use of com.cburch.logisim.std.hdl.VhdlContent in project logisim-evolution by reds-heig.

the class TclGeneric method getOffsetBounds.

@Override
public Bounds getOffsetBounds(AttributeSet attrs) {
    VhdlContent content = attrs.getValue(CONTENT_ATTR);
    int nbInputs = content.getInputsNumber();
    int nbOutputs = content.getOutputsNumber();
    return Bounds.create(0, 0, WIDTH, Math.max(nbInputs, nbOutputs) * PORT_GAP + HEIGHT);
}
Also used : VhdlContent(com.cburch.logisim.std.hdl.VhdlContent)

Example 5 with VhdlContent

use of com.cburch.logisim.std.hdl.VhdlContent in project logisim-evolution by reds-heig.

the class TclGenericAttributes method setValue.

@Override
public <V> void setValue(Attribute<V> attr, V value) {
    if (attr == TclGeneric.CONTENT_ATTR) {
        VhdlContent newContent = (VhdlContent) value;
        if (!vhdlEntitiy.equals(newContent))
            vhdlEntitiy = newContent;
        fireAttributeValueChanged(attr, value, null);
    } else {
        super.setValue(attr, value);
    }
}
Also used : VhdlContent(com.cburch.logisim.std.hdl.VhdlContent)

Aggregations

VhdlContent (com.cburch.logisim.std.hdl.VhdlContent)5 Bounds (com.cburch.logisim.data.Bounds)1 Port (com.cburch.logisim.instance.Port)1 Font (java.awt.Font)1 FontMetrics (java.awt.FontMetrics)1 Graphics (java.awt.Graphics)1