public void doDraw(Painter p) { super.doDraw(p); p.setShapeMode(ShapeMode.FILL_AND_OUTLINE); p.setLineMode(LineMode.SOLID); p.setLineWidth(0.0075f); p.setLineColor((selected) ? selectedOutlineColor : (canWork) ? userOutlineColor : outlineColor); p.setFillColor( (selected) ? selectedFillColor : (canFire) ? enabledFillColor : (lostSignal) ? lostSignalFillColor : fillColor); for (SubGate sg : subGates) { if (sg.in.size() < 2) continue; p.setTransform(transform.getLocalToViewMatrix()); p.translate(-rad * 0.75f, -sg.y); p.drawShape((complexOrAnd) ? or_shape : and_shape); } p.setTransform(transform.getLocalToViewMatrix()); p.translate(-((complexOrAnd) ? -subrad : -subrad + rad * 0.1f), 0.0f); p.drawShape((!complexOrAnd) ? or_shape : and_shape); // draw invertion circles for (GateContact c : in) { c.doDrawInvert(p); } out.getFirst().doDrawInvert(p); }
public void draw(Painter p) { p.setTransform(transform.getLocalToViewMatrix()); p.setShapeMode(ShapeMode.FILL); if (selected) p.setFillColor(selectedACMOutlineColor); else p.setFillColor(ACMOutlineColor); p.drawCircle(radius, null); if (selected) p.setFillColor(selectedACMColor); else p.setFillColor(ACMColor); p.drawCircle(innerRadius, null); if (selected) p.setLineColor(selectedACMOutlineColor); else p.setLineColor(ACMOutlineColor); float L = -radius, R = radius; if (blockWriting) L *= 0.6f; if (blockReading) R *= 0.6f; p.setLineMode(LineMode.SOLID); p.setLineWidth(0.01f); p.drawLine(L, 0.0f, R, 0.0f); p.setLineWidth(0.004f); if (blockWriting) p.drawLine(L, -radius * 0.75f, L, radius * 0.75f); if (blockReading) p.drawLine(R, -radius * 0.75f, R, radius * 0.75f); String n = Integer.toString(countValidTokens()); float h = radius * 0.8f; Vec2 v = new Vec2(0, radius * 0.2f); transform.getLocalToViewMatrix().transform(v); p.setTextColor(validTokenColor); p.drawString(n, v, h, TextAlign.CENTER); n = Integer.toString(capacity - countValidTokens()); h = radius * 0.8f; v = new Vec2(0, -radius * 0.7f); transform.getLocalToViewMatrix().transform(v); p.setTextColor(invalidTokenColor); p.drawString(n, v, h, TextAlign.CENTER); super.draw(p); }