MCPcopy Create free account
hub / github.com/XRay3D/GERBER_X3 / paint

Method paint

file_plugins/gerber/compitem.cpp:67–132  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

65}
66
67void 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

Callers

nothing calls this directly

Calls 13

drawTextFunction · 0.85
sizeMethod · 0.80
widthMethod · 0.80
referencePointMethod · 0.80
translateMethod · 0.80
scaleMethod · 0.80
colorMethod · 0.45
setPenMethod · 0.45
boundingRectMethod · 0.45
heightMethod · 0.45
pinsMethod · 0.45
saveMethod · 0.45

Tested by

no test coverage detected