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