Ejemplo n.º 1
0
  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);
  }