Search in sources :

Example 71 with Bounds

use of com.cburch.logisim.data.Bounds in project logisim-evolution by reds-heig.

the class Ram method paintInstance.

@Override
public void paintInstance(InstancePainter painter) {
    Graphics g = painter.getGraphics();
    Bounds bds = painter.getBounds();
    int NrOfBits = painter.getAttributeValue(Mem.DATA_ATTR).getWidth();
    // int addrb = painter.getAttributeValue(Mem.ADDR_ATTR).getWidth();
    String Label = painter.getAttributeValue(StdAttr.LABEL);
    if (Label != null) {
        Font font = g.getFont();
        g.setFont(painter.getAttributeValue(StdAttr.LABEL_FONT));
        GraphicsUtil.drawCenteredText(g, Label, bds.getX() + bds.getWidth() / 2, bds.getY() - g.getFont().getSize());
        g.setFont(font);
    }
    int xpos = bds.getX();
    int ypos = bds.getY();
    DrawControlBlock(painter, xpos, ypos);
    for (int i = 0; i < NrOfBits; i++) {
        DrawDataBlock(painter, xpos, ypos, i, NrOfBits);
    }
    /* Draw contents */
    if (painter.getShowState()) {
        RamState state = (RamState) getState(painter);
        state.paint(painter.getGraphics(), bds.getX() + 20, bds.getY(), true, getControlHeight(painter.getAttributeSet()));
    }
}
Also used : Graphics(java.awt.Graphics) Bounds(com.cburch.logisim.data.Bounds) Font(java.awt.Font)

Example 72 with Bounds

use of com.cburch.logisim.data.Bounds 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 73 with Bounds

use of com.cburch.logisim.data.Bounds in project logisim-evolution by reds-heig.

the class CounterPoker method paint.

@Override
public void paint(InstancePainter painter) {
    Bounds bds = painter.getBounds();
    BitWidth dataWidth = painter.getAttributeValue(StdAttr.WIDTH);
    int width = dataWidth == null ? 8 : dataWidth.getWidth();
    int len = (width + 3) / 4;
    int xcenter = Counter.SymbolWidth(width) - 25;
    Graphics g = painter.getGraphics();
    g.setColor(Color.RED);
    g.drawRect(bds.getX() + xcenter - len * 4, bds.getY() + 22, len * 8, 16);
    g.setColor(Color.BLACK);
}
Also used : BitWidth(com.cburch.logisim.data.BitWidth) Graphics(java.awt.Graphics) Bounds(com.cburch.logisim.data.Bounds)

Example 74 with Bounds

use of com.cburch.logisim.data.Bounds in project logisim-evolution by reds-heig.

the class Multiplexer method paintGhost.

@Override
public void paintGhost(InstancePainter painter) {
    Direction facing = painter.getAttributeValue(StdAttr.FACING);
    BitWidth select = painter.getAttributeValue(Plexers.ATTR_SELECT);
    Bounds bds = painter.getBounds();
    if (select.getWidth() == 1) {
        if (facing == Direction.EAST || facing == Direction.WEST) {
            Plexers.drawTrapezoid(painter.getGraphics(), Bounds.create(bds.getX(), bds.getY() + 5, bds.getWidth(), bds.getHeight() - 10), facing, 10);
        } else {
            Plexers.drawTrapezoid(painter.getGraphics(), Bounds.create(bds.getX() + 5, bds.getY(), bds.getWidth() - 10, bds.getHeight()), facing, 10);
        }
    } else {
        Plexers.drawTrapezoid(painter.getGraphics(), bds, facing, 20);
    }
}
Also used : BitWidth(com.cburch.logisim.data.BitWidth) Bounds(com.cburch.logisim.data.Bounds) Direction(com.cburch.logisim.data.Direction)

Example 75 with Bounds

use of com.cburch.logisim.data.Bounds in project logisim-evolution by reds-heig.

the class PriorityEncoder method paintInstance.

@Override
public void paintInstance(InstancePainter painter) {
    Graphics g = painter.getGraphics();
    Direction facing = painter.getAttributeValue(StdAttr.FACING);
    painter.drawBounds();
    Bounds bds = painter.getBounds();
    g.setColor(Color.GRAY);
    int x0;
    int y0;
    int halign;
    if (facing == Direction.WEST) {
        x0 = bds.getX() + bds.getWidth() - 3;
        y0 = bds.getY() + 15;
        halign = GraphicsUtil.H_RIGHT;
    } else if (facing == Direction.NORTH) {
        x0 = bds.getX() + 10;
        y0 = bds.getY() + bds.getHeight() - 2;
        halign = GraphicsUtil.H_CENTER;
    } else if (facing == Direction.SOUTH) {
        x0 = bds.getX() + 10;
        y0 = bds.getY() + 12;
        halign = GraphicsUtil.H_CENTER;
    } else {
        x0 = bds.getX() + 3;
        y0 = bds.getY() + 15;
        halign = GraphicsUtil.H_LEFT;
    }
    GraphicsUtil.drawText(g, "0", x0, y0, halign, GraphicsUtil.V_BASELINE);
    g.setColor(Color.BLACK);
    GraphicsUtil.drawCenteredText(g, "Pri", 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)199 Graphics (java.awt.Graphics)71 Direction (com.cburch.logisim.data.Direction)29 Location (com.cburch.logisim.data.Location)29 BitWidth (com.cburch.logisim.data.BitWidth)20 Graphics2D (java.awt.Graphics2D)20 Font (java.awt.Font)19 Component (com.cburch.logisim.comp.Component)14 Color (java.awt.Color)14 FontMetrics (java.awt.FontMetrics)12 Value (com.cburch.logisim.data.Value)9 Circuit (com.cburch.logisim.circuit.Circuit)7 Port (com.cburch.logisim.instance.Port)7 Instance (com.cburch.logisim.instance.Instance)6 InstanceDataSingleton (com.cburch.logisim.instance.InstanceDataSingleton)6 Handle (com.cburch.draw.model.Handle)5 RadixOption (com.cburch.logisim.circuit.RadixOption)5 CanvasObject (com.cburch.draw.model.CanvasObject)3 Wire (com.cburch.logisim.circuit.Wire)3 ComponentFactory (com.cburch.logisim.comp.ComponentFactory)3