include/tools/color.hxx | 21 ++++++++++++++++++++- tools/source/generic/color.cxx | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 1 deletion(-)
New commits: commit fcc9128aabb56d521e71e3e537d895e640c86004 Author: dante <dante19031...@gmail.com> AuthorDate: Fri Nov 20 12:33:57 2020 +0100 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Sat Nov 21 07:17:26 2020 +0100 Changes to the color class Before colors could be only converted to string rrggbb. Now also supports RRGGBB. It can also be converted back into a color. Change-Id: Ifb89d554b434c243c4f0956ee680ec23de823339 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/106224 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/include/tools/color.hxx b/include/tools/color.hxx index dfa84d255dbc..99966c65d779 100644 --- a/include/tools/color.hxx +++ b/include/tools/color.hxx @@ -333,6 +333,19 @@ public: */ static Color HSBtoRGB(sal_uInt16 nHue, sal_uInt16 nSaturation, sal_uInt16 nBrightness); + /** Converts a string into a color. Supports: + * #RRGGBB + * #rrggbb + * #RGB + * #rgb + * RRGGBB + * rrggbb + * RGB + * rgb + * If fails returns Color(). + */ + static Color STRtoRGB(const OUString& colorname); + /** Color space conversion tools * @param nHue * @param nSaturation @@ -340,12 +353,18 @@ public: */ void RGBtoHSB(sal_uInt16& nHue, sal_uInt16& nSaturation, sal_uInt16& nBrightness) const; - /* Return color as RGB hex string + /* Return color as RGB hex string: rrggbb * for example "00ff00" for green color * @return hex string */ OUString AsRGBHexString() const; + /* Return color as RGB hex string: RRGGBB + * for example "00FF00" for green color + * @return hex string + */ + OUString AsRGBHEXString() const; + /* get ::basegfx::BColor from this color * @return basegfx color */ diff --git a/tools/source/generic/color.cxx b/tools/source/generic/color.cxx index 2b7c5cc35102..cf4e084b722f 100644 --- a/tools/source/generic/color.cxx +++ b/tools/source/generic/color.cxx @@ -158,6 +158,38 @@ Color Color::HSBtoRGB( sal_uInt16 nHue, sal_uInt16 nSat, sal_uInt16 nBri ) return Color( cR, cG, cB ); } +Color Color::STRtoRGB(const OUString& colorname) +{ + Color col; + if(colorname.isEmpty()) return col; + + switch(colorname.getLength()){ + case 7: + col.mValue = colorname.copy(1,6).toUInt32(16); + break; + case 6: + col.mValue = colorname.toUInt32(16); + break; + case 4: + { + sal_Unicode data[6] = { colorname[1], colorname[1], colorname[2], + colorname[2], colorname[3], colorname[3] }; + col.mValue = OUString(data,6).toUInt32(16); + break; + } + case 3: + { + sal_Unicode data[6] = { colorname[0], colorname[0], colorname[1], + colorname[1], colorname[2], colorname[2] }; + col.mValue = OUString(data,6).toUInt32(16); + break; + } + default: + break; + } + return col; +} + OUString Color::AsRGBHexString() const { std::stringstream ss; @@ -165,6 +197,13 @@ OUString Color::AsRGBHexString() const return OUString::createFromAscii(ss.str().c_str()); } +OUString Color::AsRGBHEXString() const +{ + std::stringstream ss; + ss << std::hex << std::uppercase << std::setfill ('0') << std::setw(6) << sal_uInt32(GetRGBColor()); + return OUString::createFromAscii(ss.str().c_str()); +} + void Color::ApplyTintOrShade(sal_Int16 n100thPercent) { if (n100thPercent == 0) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits