nodeview: pass icon size specifically

This commit is contained in:
itsmattkc
2021-04-22 11:50:24 +10:00
parent fb66cced19
commit fa58dc1039
2 changed files with 15 additions and 12 deletions
+14 -11
View File
@@ -283,9 +283,11 @@ void NodeViewItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *opti
} }
} }
int icon_size = painter->fontMetrics().height()/2;
if (node_label.isEmpty()) { if (node_label.isEmpty()) {
// Draw shortname only // Draw shortname only
DrawNodeTitle(painter, node_shortname, title_bar_rect_, Qt::AlignVCenter); DrawNodeTitle(painter, node_shortname, title_bar_rect_, Qt::AlignVCenter, icon_size, true);
} else { } else {
int text_pad = DefaultTextPadding()/2; int text_pad = DefaultTextPadding()/2;
QRectF safe_label_bounds = title_bar_rect_.adjusted(text_pad, text_pad, -text_pad, -text_pad); QRectF safe_label_bounds = title_bar_rect_.adjusted(text_pad, text_pad, -text_pad, -text_pad);
@@ -293,10 +295,10 @@ void NodeViewItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *opti
qreal font_sz = f.pointSizeF(); qreal font_sz = f.pointSizeF();
f.setPointSizeF(font_sz * 0.8); f.setPointSizeF(font_sz * 0.8);
painter->setFont(f); painter->setFont(f);
DrawNodeTitle(painter, node_label, safe_label_bounds, Qt::AlignTop); DrawNodeTitle(painter, node_label, safe_label_bounds, Qt::AlignTop, icon_size, true);
f.setPointSizeF(font_sz * 0.6); f.setPointSizeF(font_sz * 0.6);
painter->setFont(f); painter->setFont(f);
DrawNodeTitle(painter, node_shortname, safe_label_bounds, Qt::AlignBottom); DrawNodeTitle(painter, node_shortname, safe_label_bounds, Qt::AlignBottom, icon_size, false);
} }
} }
@@ -367,22 +369,23 @@ void NodeViewItem::ReadjustAllEdges()
} }
} }
void NodeViewItem::DrawNodeTitle(QPainter* painter, QString text, const QRectF& rect, Qt::Alignment vertical_align) void NodeViewItem::DrawNodeTitle(QPainter* painter, QString text, const QRectF& rect, Qt::Alignment vertical_align, int icon_size, bool draw_arrow)
{ {
QFontMetrics fm = painter->fontMetrics(); QFontMetrics fm = painter->fontMetrics();
painter->setRenderHint(QPainter::SmoothPixmapTransform); painter->setRenderHint(QPainter::SmoothPixmapTransform);
// Draw right or down arrow based on expanded state // Draw right or down arrow based on expanded state
int icon_size = fm.height() / 2;
int icon_padding = title_bar_rect_.height() / 2 - icon_size / 2; int icon_padding = title_bar_rect_.height() / 2 - icon_size / 2;
int icon_full_size = icon_size + icon_padding * 2; int icon_full_size = icon_size + icon_padding * 2;
const QIcon& expand_icon = IsExpanded() ? icon::TriDown : icon::TriRight; if (draw_arrow) {
int icon_size_scaled = icon_size * painter->transform().m11(); const QIcon& expand_icon = IsExpanded() ? icon::TriDown : icon::TriRight;
painter->drawPixmap(QRect(title_bar_rect_.x() + icon_padding, int icon_size_scaled = icon_size * painter->transform().m11();
title_bar_rect_.y() + icon_padding, painter->drawPixmap(QRect(title_bar_rect_.x() + icon_padding,
icon_size, title_bar_rect_.y() + icon_padding,
icon_size), expand_icon.pixmap(QSize(icon_size_scaled, icon_size_scaled))); icon_size,
icon_size), expand_icon.pixmap(QSize(icon_size_scaled, icon_size_scaled)));
}
// Calculate how much space we have for text // Calculate how much space we have for text
int item_width = title_bar_rect_.width(); int item_width = title_bar_rect_.width();
+1 -1
View File
@@ -124,7 +124,7 @@ protected:
private: private:
void ReadjustAllEdges(); void ReadjustAllEdges();
void DrawNodeTitle(QPainter *painter, QString text, const QRectF &rect, Qt::Alignment vertical_align); void DrawNodeTitle(QPainter *painter, QString text, const QRectF &rect, Qt::Alignment vertical_align, int icon_size, bool draw_arrow);
/** /**
* @brief Returns local rect of a NodeInput in array node_inputs_[index] * @brief Returns local rect of a NodeInput in array node_inputs_[index]