nodeview: pass icon size specifically
This commit is contained in:
@@ -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();
|
||||||
|
|||||||
@@ -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]
|
||||||
|
|||||||
Reference in New Issue
Block a user