diff options
author | dante <dante19031999@gmail.com> | 2020-11-20 12:33:57 +0100 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2020-11-21 07:17:26 +0100 |
commit | fcc9128aabb56d521e71e3e537d895e640c86004 (patch) | |
tree | 70b2058a2dd23b44b328da806243cb16c6df255a /tools | |
parent | d0a60f7785dc66e0d491b50e093ebcf606627226 (diff) |
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.grandin@collabora.co.uk>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/source/generic/color.cxx | 39 |
1 files changed, 39 insertions, 0 deletions
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) |