From 4ff1f54e162a1cf54d2da28edcd08b327ed6a922 Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Wed, 17 Jun 2020 11:34:31 +0200 Subject: [PATCH] AppFwk : Add border to color gradient icons --- .../cafPdmUiCore/cafIconProvider.cpp | 39 ++++++++++++------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/Fwk/AppFwk/cafProjectDataModel/cafPdmUiCore/cafIconProvider.cpp b/Fwk/AppFwk/cafProjectDataModel/cafPdmUiCore/cafIconProvider.cpp index 61f6cf408f..ac61fc6217 100644 --- a/Fwk/AppFwk/cafProjectDataModel/cafPdmUiCore/cafIconProvider.cpp +++ b/Fwk/AppFwk/cafProjectDataModel/cafPdmUiCore/cafIconProvider.cpp @@ -171,21 +171,34 @@ std::unique_ptr IconProvider::icon(const QSize& size) const { validIcon = true; - QLinearGradient gradient (QPointF(0.0f, 0.0f), QPoint(size.width(), 0.0f)); - for (size_t i = 0; i < m_backgroundColorStrings.size(); ++i) - { - if (!QColor::isValidColor(m_backgroundColorStrings[i])) - { - validIcon = false; - break; + { + // Draw color gradient based on background colors + + QLinearGradient gradient (QPointF(0.0f, 0.0f), QPoint(size.width(), 0.0f)); + for (size_t i = 0; i < m_backgroundColorStrings.size(); ++i) + { + if (!QColor::isValidColor(m_backgroundColorStrings[i])) + { + validIcon = false; + break; + } + QColor color (m_backgroundColorStrings[i]); + float frac = i / ((float) m_backgroundColorStrings.size() - 1.0); + gradient.setColorAt(frac, color); } - QColor color (m_backgroundColorStrings[i]); - float frac = i / ((float) m_backgroundColorStrings.size() - 1.0); - gradient.setColorAt(frac, color); + QBrush gradientBrush(gradient); + QPainter painter (&pixmap); + painter.fillRect(0, 0, size.width(), size.height(), gradientBrush); + } + + { + // Draw border + + QPainter painter2(&pixmap); + painter2.setRenderHint(QPainter::Antialiasing); + painter2.setPen(QPen(Qt::black, 1)); + painter2.drawRect(QRectF(0, 0, size.width(), size.height())); } - QBrush gradientBrush(gradient); - QPainter painter (&pixmap); - painter.fillRect(0, 0, size.width(), size.height(), gradientBrush); } } else pixmap.fill(Qt::transparent);