| 65 | } |
| 66 | |
| 67 | void ComponentItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* /*option*/, QWidget* /*widget*/) |
| 68 | { |
| 69 | auto color { m_file->color() }; |
| 70 | painter->setBrush(color); |
| 71 | color.setAlpha(255); |
| 72 | painter->setPen({ m_selected ? Qt::red : color, 2 * m_scale }); |
| 73 | auto fillPolygons { m_shape.toFillPolygons() }; |
| 74 | if (fillPolygons.size()) { |
| 75 | for (auto&& poly : fillPolygons) |
| 76 | painter->drawPolygon(poly); |
| 77 | } else { |
| 78 | painter->setBrush(Qt::NoBrush); |
| 79 | painter->drawPath(m_shape); |
| 80 | } |
| 81 | |
| 82 | painter->setBrush(Qt::NoBrush); |
| 83 | double min = std::min(m_shape.boundingRect().width(), m_shape.boundingRect().height()); |
| 84 | double k = std::min(min, m_scale * 20); |
| 85 | painter->drawLine( |
| 86 | m_component.referencePoint() + QPointF { k, k }, |
| 87 | m_component.referencePoint() - QPointF { k, k }); |
| 88 | painter->drawLine( |
| 89 | m_component.referencePoint() + QPointF { -k, k }, |
| 90 | m_component.referencePoint() - QPointF { -k, k }); |
| 91 | painter->setBrush(Qt::NoBrush); |
| 92 | painter->drawRect( |
| 93 | { m_component.referencePoint() + QPointF { k, k }, |
| 94 | m_component.referencePoint() - QPointF { k, k } }); |
| 95 | if (m_scale < 0.05) { |
| 96 | double size = std::min(min, m_scale * 20); |
| 97 | for (auto [number, description, pos] : m_component.pins()) { |
| 98 | Q_UNUSED(number) |
| 99 | Q_UNUSED(description) |
| 100 | painter->setBrush(Qt::NoBrush); |
| 101 | painter->setPen(QPen(color, 2 * m_scale, Qt::SolidLine, Qt::SquareCap, Qt::MiterJoin)); |
| 102 | painter->drawLine(pos + QPointF { +size, +size }, pos - QPointF { +size, +size }); |
| 103 | painter->drawLine(pos + QPointF { -size, +size }, pos - QPointF { -size, +size }); |
| 104 | } |
| 105 | for (auto [path, pos] : pathPins) { |
| 106 | painter->save(); |
| 107 | painter->translate(pos); |
| 108 | painter->scale(m_scale, -m_scale); |
| 109 | painter->setPen(QPen(Qt::black, 4.0, Qt::SolidLine, Qt::SquareCap, Qt::MiterJoin)); |
| 110 | painter->setBrush(Qt::NoBrush); |
| 111 | painter->drawPath(path); |
| 112 | painter->setPen(Qt::NoPen); |
| 113 | painter->setBrush(Qt::white); |
| 114 | painter->drawPath(path); |
| 115 | painter->restore(); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | drawText(painter, |
| 120 | m_component.refdes(), |
| 121 | Qt::red, |
| 122 | m_shape.boundingRect().center(), |
| 123 | m_scale); |
| 124 |
nothing calls this directly
no test coverage detected