public void doDraw(Painter p) { WorkCraftServer server = ownerDocument.getServer(); Vec2 ll = boundingBox.getLowerLeft(); Vec2 ur = boundingBox.getUpperRight(); Vec2 ul = new Vec2(ll.getX(), ur.getY()); Vec2 lr = new Vec2(ur.getX(), ll.getY()); transform.getLocalToViewMatrix().transform(ll); transform.getLocalToViewMatrix().transform(ur); transform.getLocalToViewMatrix().transform(ul); transform.getLocalToViewMatrix().transform(lr); BoundingBox superbb = new BoundingBox(); superbb.addPoint(ll); superbb.addPoint(ul); superbb.addPoint(ur); superbb.addPoint(lr); Vec2 v1 = superbb.getLowerLeft(); Vec2 v2 = superbb.getUpperRight(); Vec2 center; p.setTextColor(getLabelColor()); PyObject po; if (server != null) po = server.python.get("_draw_labels"); else po = null; if ((server == null) || (po != null && po.__nonzero__())) if (!label.equals("")) { if (labelOrder == 0) center = new Vec2(0.5f * (v1.getX() + v2.getX()), v1.getY() + getLabelYOffset()); else center = new Vec2((v1.getX() + v2.getX()) * 0.5f, v2.getY() + getLabelYOffset()); // transform.getLocalToViewMatrix().transform(center); p.drawString(label, center, 0.05f, TextAlign.CENTER); } if (server != null) po = server.python.get("_draw_ids"); else po = null; if ((server == null) || (po != null && po.__nonzero__())) if (id != null && !id.equals("")) { if (labelOrder == 0) center = new Vec2((v1.getX() + v2.getX()) * 0.5f, v2.getY() + 0.025f); else center = new Vec2(0.5f * (v1.getX() + v2.getX()), v1.getY() - 0.05f); // transform.getLocalToViewMatrix().transform(center); p.drawString(id, center, 0.05f, TextAlign.CENTER); } }
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 boolean cull(Painter p) { return p.cull(getBoundingBoxInViewSpace()); }
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); }