50 painter->setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform | QPainter::TextAntialiasing,
true);
56 const QRectF bounds(ic.
pixmap().rect());
58 const QColor bodyColor = ic.
isEmbedded() ? QColor(90, 126, 160) : QColor(126, 126, 126);
59 const QColor outlineColor = ic.
isEmbedded() ? QColor(58, 82, 110) : QColor(78, 78, 78);
63 painter->setBrush(bodyColor);
64 painter->setPen(QPen(QBrush(outlineColor), 0.5, Qt::SolidLine));
65 const QRectF finalRect(QPointF(7, 0), QSizeF(bounds.width() - 14, bounds.height()));
66 painter->drawRoundedRect(finalRect, 3, 3);
73 const QSizeF logoSize = logo.defaultSize();
74 const QRectF logoRect(finalRect.center() - QPointF(logoSize.width() / 2, logoSize.height() / 2), logoSize);
76 painter->translate(logoRect.center());
79 painter->translate(-logoRect.center());
80 logo.render(painter, logoRect);
84 painter->setBrush(outlineColor);
85 painter->setPen(QPen(QBrush(outlineColor), 0.5, Qt::SolidLine));
86 QRectF shadowRect(finalRect.bottomLeft(), finalRect.bottomRight());
87 shadowRect.adjust(0, -3, 0, 0);
88 painter->drawRoundedRect(shadowRect, 3, 3);
92 const QRectF topCenter(finalRect.topLeft() + QPointF(18, -12), QSizeF(24, 24));
93 painter->drawChord(topCenter, 0, -180 * 16);
103 QVector<GraphicElement *> elements;
104 QVector<Connection *> connections;
105 elements.reserve(items.size());
106 connections.reserve(items.size());
107 for (
auto *item : items) {
108 if (
auto *conn = qgraphicsitem_cast<Connection *>(item)) {
109 connections.append(conn);
110 }
else if (
auto *elm = qgraphicsitem_cast<GraphicElement *>(item)) {
111 elements.append(elm);
117 ic.m_previewPixmap = QPixmap();
124 QGraphicsScene tempScene;
125 tempScene.setBackgroundBrush(QColor(42, 42, 42));
127 auto cleanup = qScopeGuard([&] {
128 for (
auto *elm : std::as_const(elements)) { tempScene.removeItem(elm); }
129 for (
auto *conn : std::as_const(connections)) { tempScene.removeItem(conn); }
132 for (
auto *elm : std::as_const(elements)) {
133 tempScene.addItem(elm);
135 for (
auto *conn : std::as_const(connections)) {
136 tempScene.addItem(conn);
140 const QRectF sourceRect = tempScene.itemsBoundingRect().adjusted(-16, -16, 16, 16);
147 if (!std::isfinite(sourceRect.width()) || !std::isfinite(sourceRect.height())) {
148 ic.m_previewPixmap = QPixmap();
153 QSize targetSize = sourceRect.size().toSize();
156 if (targetSize.isEmpty()) {
157 ic.m_previewPixmap = QPixmap();
165 QPixmap preview(targetSize);
166 preview.fill(QColor(42, 42, 42));
168 QPainter painter(&preview);
169 painter.setRenderHint(QPainter::Antialiasing);
170 tempScene.render(&painter, QRectF(), sourceRect);
173 ic.m_previewPixmap = preview;