diff options
-rw-r--r-- | src/gui/palette.cpp | 16 | ||||
-rw-r--r-- | src/utils/stringutils.cpp | 11 | ||||
-rw-r--r-- | src/utils/stringutils.h | 8 |
3 files changed, 31 insertions, 4 deletions
diff --git a/src/gui/palette.cpp b/src/gui/palette.cpp index 897c7efd..855487d3 100644 --- a/src/gui/palette.cpp +++ b/src/gui/palette.cpp @@ -152,7 +152,11 @@ Palette::~Palette() config.setValue(*configName + "Delay", col->delay); if (col->grad == STATIC || col->grad == PULSE) - config.setValue(*configName, toString(col->getRGB())); + { + char buffer[20]; + sprintf(buffer, "0x%06x", col->getRGB()); + config.setValue(*configName, buffer); + } } } @@ -265,7 +269,15 @@ void Palette::addColor(Palette::ColorType type, int rgb, char c, int delay) { const std::string *configName = &ColorTypeNames[type]; - gcn::Color trueCol = (int) config.getValue(*configName, rgb); + char buffer[20]; + sprintf(buffer, "0x%06x", rgb); + const std::string rgbString = config.getValue(*configName, buffer); + unsigned int rgbValue = 0; + if (rgbString.length() == 8 && rgbString[0] == '0' && rgbString[1] == 'x') + rgbValue = atox(rgbString); + else + rgbValue = atoi(rgbString.c_str()); + gcn::Color trueCol = rgbValue; grad = (GradientType) config.getValue(*configName + "Gradient", grad); delay = (int) config.getValue(*configName + "Delay", delay); mColVector[type].set(type, trueCol, grad, text, c, delay); diff --git a/src/utils/stringutils.cpp b/src/utils/stringutils.cpp index 2f9bc9a8..57a0131e 100644 --- a/src/utils/stringutils.cpp +++ b/src/utils/stringutils.cpp @@ -30,10 +30,9 @@ std::string &trim(std::string &str) { str.erase(pos + 1); pos = str.find_first_not_of(' '); + if (pos != std::string::npos) - { str.erase(0, pos); - } } else { @@ -49,6 +48,14 @@ std::string &toLower(std::string &str) return str; } +unsigned int atox(const std::string &str) +{ + unsigned int value; + sscanf(str.c_str(), "0x%06x", &value); + + return value; +} + const char *ipToString(int address) { static char asciiIP[16]; diff --git a/src/utils/stringutils.h b/src/utils/stringutils.h index 872a8f52..3af0bfa5 100644 --- a/src/utils/stringutils.h +++ b/src/utils/stringutils.h @@ -42,6 +42,14 @@ std::string &trim(std::string &str); std::string &toLower(std::string &str); /** + * Converts an ascii hexidecimal string to an integer + * + * @param str the hex string to convert to an int + * @return the integer representation of the hex string + */ +unsigned int atox(const std::string &str); + +/** * Converts the given value to a string using std::stringstream. * * @param arg the value to convert to a string |