commit 8a25395fef3e5d1b5e562490c90dc4ff6a3b56ad
Author: Koji Yokota <[email protected]>
Date:   Fri Jun 5 20:24:48 2026 +0900

    Move color swatch functions to ColorCache class
---
 src/frontends/qt/ColorCache.cpp | 31 +++++++++++++++++++++++++++++++
 src/frontends/qt/ColorCache.h   |  3 +++
 src/frontends/qt/GuiPrefs.cpp   | 33 +++------------------------------
 src/frontends/qt/GuiPrefs.h     |  4 +---
 4 files changed, 38 insertions(+), 33 deletions(-)

diff --git a/src/frontends/qt/ColorCache.cpp b/src/frontends/qt/ColorCache.cpp
index 210f5c68c4..4955aaf3ce 100644
--- a/src/frontends/qt/ColorCache.cpp
+++ b/src/frontends/qt/ColorCache.cpp
@@ -18,6 +18,7 @@
 #include "Color.h"
 
 #include <cmath>
+#include <QPainter>
 
 namespace lyx {
 
@@ -180,6 +181,36 @@ bool ColorCache::isLightColor(RGBColor const & rgb)
        return (L + 0.05) / (0.0 + 0.05) > (1.0 + 0.05) / (L + 0.05);
 }
 
+QPixmap ColorCache::setSwatchBackground(int width, int height)
+{
+       QPixmap background(width, height);
+       background.fill(Qt::white);
+
+       // paint a triangle
+       QPainter painter(&background);
+       painter.setRenderHint(QPainter::Antialiasing);
+       QPolygon polygon;
+       polygon << QPoint(width, 0)
+               << QPoint(0, height)
+               << QPoint(0, 0);
+       painter.setPen(QColor(Qt::black));
+       painter.setBrush(QColor(Qt::black));
+       painter.drawPolygon(polygon);
+       painter.end();
+
+       return background;
+}
+
+QPixmap ColorCache::mergePixmaps(QPixmap const *fg, QPixmap const *bg)
+{
+       // make a copy to leave bg untouched
+       QPixmap merged(*bg);
+       QPainter painter(&merged);
+       painter.drawPixmap(0, 0, *bg);
+       painter.drawPixmap(0, 0, *fg);
+       return merged;
+}
+
 
 QColor const rgb2qcolor(RGBColor const & rgb)
 {
diff --git a/src/frontends/qt/ColorCache.h b/src/frontends/qt/ColorCache.h
index ced8177b87..17e70a737d 100644
--- a/src/frontends/qt/ColorCache.h
+++ b/src/frontends/qt/ColorCache.h
@@ -60,6 +60,9 @@ public:
        /// clear all colors
        void clear() { initialized_ = false; }
 
+       static QPixmap setSwatchBackground(int width, int height);
+       static QPixmap mergePixmaps(QPixmap const *fg, QPixmap const *bg);
+
 private:
        ///
        void init();
diff --git a/src/frontends/qt/GuiPrefs.cpp b/src/frontends/qt/GuiPrefs.cpp
index 29aa070489..f1357e42ce 100644
--- a/src/frontends/qt/GuiPrefs.cpp
+++ b/src/frontends/qt/GuiPrefs.cpp
@@ -4721,25 +4721,8 @@ ColorSwatchDelegate::ColorSwatchDelegate(QObject *parent)
 {
        pane_ = static_cast<PrefColors*>(parent);
 
-       // construct the background image of swatches
-       bg_pixmap_ = new QPixmap(pane_->swatch_width_, pane_->swatch_height_);
-       bg_pixmap_->fill(Qt::white);
-       QPainter painter(bg_pixmap_);
-       painter.setRenderHint(QPainter::Antialiasing);
-       QPolygon polygon;
-       polygon << QPoint(pane_->swatch_width_, 0)
-               << QPoint(0, pane_->swatch_height_)
-               << QPoint(0, 0);
-       painter.setPen(QColor(Qt::black));
-       painter.setBrush(QColor(Qt::black));
-       painter.drawPolygon(polygon);
-       painter.end();
-}
-
-
-ColorSwatchDelegate::~ColorSwatchDelegate()
-{
-       delete bg_pixmap_;
+       bg_pixmap_ = ColorCache::setSwatchBackground(pane_->swatch_width_,
+                                                    pane_->swatch_height_);
 }
 
 
@@ -4765,7 +4748,7 @@ void ColorSwatchDelegate::paint(QPainter *painter,
                        value<QColor>();
                if (index.flags().testFlag(Qt::ItemIsEnabled)) {
                        pixmap.fill(color);
-                       pixmap = mergePixmaps(&pixmap, bg_pixmap_);
+                       pixmap = ColorCache::mergePixmaps(&pixmap, &bg_pixmap_);
                } else
                        pixmap.fill(Qt::transparent);
                style->drawItemPixmap(painter, opt.rect, Qt::AlignCenter, 
pixmap);
@@ -4776,16 +4759,6 @@ void ColorSwatchDelegate::paint(QPainter *painter,
 }
 
 
-QPixmap ColorSwatchDelegate::mergePixmaps(QPixmap const *fg, QPixmap const 
*bg) const
-{
-       // make a copy to leave bg untouched
-       QPixmap merged(*bg);
-       QPainter painter(&merged);
-       painter.drawPixmap(0, 0, *bg);
-       painter.drawPixmap(0, 0, *fg);
-       return merged;
-}
-
 } // namespace frontend
 } // namespace lyx
 
diff --git a/src/frontends/qt/GuiPrefs.h b/src/frontends/qt/GuiPrefs.h
index 441adc81c3..cae84feae4 100644
--- a/src/frontends/qt/GuiPrefs.h
+++ b/src/frontends/qt/GuiPrefs.h
@@ -735,15 +735,13 @@ class ColorSwatchDelegate : public QStyledItemDelegate
 
 public:
        ColorSwatchDelegate(QObject *parent = nullptr);
-       ~ColorSwatchDelegate();
 
        void paint(QPainter *painter, const QStyleOptionViewItem &option,
                   const QModelIndex &index) const override;
 
 private:
-       QPixmap mergePixmaps(QPixmap const * fg, QPixmap const * bg) const;
        PrefColors* pane_;
-       QPixmap* bg_pixmap_;
+       QPixmap bg_pixmap_;
        QFont font_;
 
        // To give impression that a button is pressed, flip the direction of
-- 
lyx-cvs mailing list
[email protected]
https://lists.lyx.org/mailman/listinfo/lyx-cvs

Reply via email to