Search in sources :

Example 16 with Bounds

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;
    }
}
Also used : CanvasObject(com.cburch.draw.model.CanvasObject) Bounds(com.cburch.logisim.data.Bounds) Location(com.cburch.logisim.data.Location)

Example 17 with Bounds

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

Example 18 with Bounds

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

Example 19 with Bounds

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);
}
Also used : BitWidth(com.cburch.logisim.data.BitWidth) Graphics(java.awt.Graphics) Bounds(com.cburch.logisim.data.Bounds)

Example 20 with Bounds

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();
}
Also used : Graphics(java.awt.Graphics) Bounds(com.cburch.logisim.data.Bounds) Direction(com.cburch.logisim.data.Direction)

Aggregations

Bounds (com.cburch.logisim.data.Bounds)133 Graphics (java.awt.Graphics)50 Direction (com.cburch.logisim.data.Direction)27 Location (com.cburch.logisim.data.Location)24 BitWidth (com.cburch.logisim.data.BitWidth)21 Component (com.cburch.logisim.comp.Component)11 Color (java.awt.Color)10 FontMetrics (java.awt.FontMetrics)10 Value (com.cburch.logisim.data.Value)7 Font (java.awt.Font)7 Circuit (com.cburch.logisim.circuit.Circuit)6 Port (com.cburch.logisim.instance.Port)6 Handle (com.cburch.draw.model.Handle)5 CanvasObject (com.cburch.draw.model.CanvasObject)4 Instance (com.cburch.logisim.instance.Instance)4 InstanceDataSingleton (com.cburch.logisim.instance.InstanceDataSingleton)4 ComponentFactory (com.cburch.logisim.comp.ComponentFactory)3 AttributeSet (com.cburch.logisim.data.AttributeSet)3 Project (com.cburch.logisim.proj.Project)3 Dimension (java.awt.Dimension)3