[LyX/master] Introduction of RGBAColor struct

Koji Yokota <[email protected]> Tue, 02 Jun 2026 04:51:31 +0000
Newsgroups gmane.editors.lyx.cvs
Message-ID <[email protected]>
commit 51027970a87ec0f8ffab4c8c31408e58af7e6310
Author: Koji Yokota <[email protected]>
Date:   Sat May 16 10:25:22 2026 +0900

    Introduction of RGBAColor struct
---
 src/Color.cpp                  | 31 ++++++++++++++++++++++---------
 src/ColorCode.h                | 20 ++++++++++++++++++++
 src/frontends/qt/GuiDialog.cpp |  4 ++--
 src/frontends/qt/GuiDialog.h   |  2 +-
 src/frontends/qt/GuiPrefs.cpp  |  2 +-
 5 files changed, 46 insertions(+), 13 deletions(-)

diff --git a/src/Color.cpp b/src/Color.cpp
index 3977e998c6..2d77e7b7fb 100644
--- a/src/Color.cpp
+++ b/src/Color.cpp
@@ -67,8 +67,12 @@ string const X11hexname(RGBColor const & col)
 {
 	ostringstream ostr;
 
-	ostr << '#' << setbase(16) << setfill('0')
-	     << setw(2) << col.r
+	ostr << '#' << setbase(16) << setfill('0');
+
+	if (typeid(col) == typeid(RGBAColor))
+		ostr << setw(2) << ((RGBAColor const &)col).a;
+
+	ostr << setw(2) << col.r
 	     << setw(2) << col.g
 	     << setw(2) << col.b;
 
@@ -78,13 +82,22 @@ string const X11hexname(RGBColor const & col)
 
 RGBColor rgbFromHexName(string const & x11hexname)
 {
-	RGBColor c;
-	LASSERT(x11hexname.size() == 7 && x11hexname[0] == '#',
-		return c);
-	c.r = hexstrToInt(x11hexname.substr(1, 2));
-	c.g = hexstrToInt(x11hexname.substr(3, 2));
-	c.b = hexstrToInt(x11hexname.substr(5, 2));
-	return c;
+	LASSERT((x11hexname.size() == 7 || x11hexname.size() == 9)
+	        && x11hexname[0] == '#', return RGBColor());
+	if (x11hexname.size() == 7) {
+		RGBColor c;
+		c.r = hexstrToInt(x11hexname.substr(1, 2));
+		c.g = hexstrToInt(x11hexname.substr(3, 2));
+		c.b = hexstrToInt(x11hexname.substr(5, 2));
+		return c;
+	} else {
+		RGBAColor c;
+		c.a = hexstrToInt(x11hexname.substr(1, 2));
+		c.r = hexstrToInt(x11hexname.substr(3, 2));
+		c.g = hexstrToInt(x11hexname.substr(5, 2));
+		c.b = hexstrToInt(x11hexname.substr(7, 2));
+		return c;
+	}
 }
 
 
diff --git a/src/ColorCode.h b/src/ColorCode.h
index 1cd7e61c1c..5c5b9cd039 100644
--- a/src/ColorCode.h
+++ b/src/ColorCode.h
@@ -272,6 +272,14 @@ struct RGBColor {
 		: r(red), g(green), b(blue) {}
 };
 
+struct RGBAColor : public RGBColor {
+	unsigned int a;
+	RGBAColor() : RGBColor(), a(255) {}
+	RGBAColor(unsigned int red, unsigned int green, unsigned int blue,
+	          unsigned int alpha = 255)
+		: RGBColor(red, green, blue), a(alpha) {}
+};
+
 inline bool operator==(RGBColor const & c1, RGBColor const & c2)
 {
 	return (c1.r == c2.r && c1.g == c2.g && c1.b == c2.b);
@@ -283,6 +291,18 @@ inline bool operator!=(RGBColor const & c1, RGBColor const & c2)
 	return !(c1 == c2);
 }
 
+
+inline bool operator==(RGBAColor const & c1, RGBAColor const & c2)
+{
+	return (c1.r == c2.r && c1.g == c2.g && c1.b == c2.b && c1.a == c2.a);
+}
+
+
+inline bool operator!=(RGBAColor const & c1, RGBAColor const & c2)
+{
+	return !(c1 == c2);
+}
+
 } // namespace lyx
 
 #endif
diff --git a/src/frontends/qt/GuiDialog.cpp b/src/frontends/qt/GuiDialog.cpp
index 55b0acf8f9..af6ebc31d6 100644
--- a/src/frontends/qt/GuiDialog.cpp
+++ b/src/frontends/qt/GuiDialog.cpp
@@ -288,7 +288,7 @@ QString GuiDialog::browseRelToSub(
 
 QColor GuiDialog::getColor(const QColor &initial, QWidget *parent,
                            QString const & title,
-	                       QColorDialog::ColorDialogOptions options)
+                           QColorDialog::ColorDialogOptions options)
 {
 	const QColor color = QColorDialog::getColor(initial, parent, title, options);
 	if (guiApp->platformName() == "cocoa") {
@@ -302,7 +302,7 @@ QColor GuiDialog::getColor(const QColor &initial, QWidget *parent,
 }
 
 QColor GuiDialog::getColor(const QColor &initial, QString const & title,
-	                       QColorDialog::ColorDialogOptions options)
+                           QColorDialog::ColorDialogOptions options)
 {
 	return getColor(initial, asQWidget(), title, options);
 }
diff --git a/src/frontends/qt/GuiDialog.h b/src/frontends/qt/GuiDialog.h
index 5f0fb68342..016fca19a9 100644
--- a/src/frontends/qt/GuiDialog.h
+++ b/src/frontends/qt/GuiDialog.h
@@ -185,7 +185,7 @@ public:
 	                       QColorDialog::ColorDialogOptions options
 	                       = QColorDialog::ColorDialogOptions());
 	QColor getColor(const QColor &initial, QString const & title = QString(),
-                    QColorDialog::ColorDialogOptions options
+	                QColorDialog::ColorDialogOptions options
 	                = QColorDialog::ColorDialogOptions());
 
 private:
diff --git a/src/frontends/qt/GuiPrefs.cpp b/src/frontends/qt/GuiPrefs.cpp
index 4cbce38a0b..f75f914a3c 100644
--- a/src/frontends/qt/GuiPrefs.cpp
+++ b/src/frontends/qt/GuiPrefs.cpp
@@ -4729,7 +4729,7 @@ ColorSwatchDelegate::ColorSwatchDelegate(QObject *parent)
 	QPolygon polygon;
 	polygon << QPoint(pane_->swatch_width_, 0)
 	        << QPoint(0, pane_->swatch_height_)
-	        << QPoint(pane_->swatch_width_, pane_->swatch_height_);
+	        << QPoint(0, 0);
 	painter.setPen(QColor(Qt::black));
 	painter.setBrush(QColor(Qt::black));
 	painter.drawPolygon(polygon);
-- 
lyx-cvs mailing list
[email protected]
https://lists.lyx.org/mailman/listinfo/lyx-cvs