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