[Kst] [Bug 128798] Crash when using \textcolor{}{}
Andrew Walker
arwalker at sumusltd.com
Mon Jun 12 21:23:33 CEST 2006
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
http://bugs.kde.org/show_bug.cgi?id=128798
arwalker sumusltd com changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |FIXED
------- Additional Comments From arwalker sumusltd com 2006-06-12 21:23 -------
SVN commit 550790 by arwalker:
BUG:128798 Correctly handle colors given by r,g,b format instead of crashing
M +40 -6 labelparser.cpp
--- trunk/extragear/graphics/kst/src/libkstmath/labelparser.cpp #550789:550790
@ -20,6 +20,7 @
#include <assert.h>
#include <stdlib.h>
+#include <qregexp.h>
#include <qstring.h>
using namespace Label;
@ -114,19 +115,52 @
inline QColor parseColor(const QString& txt, int *skip) {
+ QColor color;
const int end = txt.find('}');
if (skip) {
*skip = end;
}
+
if (end == -1) {
- return QColor();
+ return color;
}
- if (txt[0].isNumber()) {
- abort(); // FIXME: implement RR,GG,BB hex
- } else if (txt[0].isLetter() || txt[0] == '#') {
- return QColor(txt.left(end)); // Use the X11 rgb database, or #RRGGBB
+
+ color.setNamedColor(txt.left(end));
+ if (!color.isValid()) {
+ // the color is in the format "r,g,b"
+ QStringList strColors = QStringList::split(QRegExp(","), txt.left(end), TRUE);
+ if (strColors.size() == 3) {
+ QString strColor;
+ bool ok = true;
+ int colors[3];
+ int base = 10;
+
+ // assume the colors are given as decimal numbers unless we have a hex value in the string
+ if (txt.left(end).find(QRegExp("[A-F]", FALSE)) != -1) {
+ base = 16;
+ }
+
+ for (int i=0; i<3; i++) {
+ strColor = strColors[i];
+ strColor.stripWhiteSpace();
+ if (strColors[i].isEmpty()) {
+ colors[i] = 0;
+ } else {
+ colors[i] = strColors[i].toInt(&ok, base);
+ }
+
+ if (!ok) {
+ break;
+ }
+ }
+
+ if (ok) {
+ color.setRgb(colors[0],colors[1],colors[2]);
+ }
+ }
}
- return QColor();
+
+ return color;
}
More information about the Kst
mailing list