diff options
author | Chr. Rossmanith <ChrRossmanith@gmx.de> | 2012-11-30 22:03:16 +0100 |
---|---|---|
committer | Chr. Rossmanith <ChrRossmanith@gmx.de> | 2013-01-07 19:39:46 +0100 |
commit | b3a1909a792956ce3a6ab52675017304969d7a66 (patch) | |
tree | f3cce0e366a66ed2254c4901c3f17b0f001aad1e /sax | |
parent | 0d957d1c10eeb6e0d15cc2fbc56239c1ec40fb6c (diff) |
added Converter::convertColor with opacity parameter
Change-Id: I0f3759d8f75f2739b2815c37e8c81bc97e097ec8
Diffstat (limited to 'sax')
-rw-r--r-- | sax/inc/sax/tools/converter.hxx | 7 | ||||
-rw-r--r-- | sax/source/tools/converter.cxx | 22 |
2 files changed, 27 insertions, 2 deletions
diff --git a/sax/inc/sax/tools/converter.hxx b/sax/inc/sax/tools/converter.hxx index 601ce6c6532c..8b84feb5c984 100644 --- a/sax/inc/sax/tools/converter.hxx +++ b/sax/inc/sax/tools/converter.hxx @@ -95,10 +95,15 @@ public: static void convertMeasurePx( ::rtl::OUStringBuffer& rBuffer, sal_Int32 nValue ); - /** convert string to color */ + /** convert string to rgb color */ static bool convertColor( sal_Int32& rColor, const ::rtl::OUString&rValue ); + /** convert string to argb color */ + static bool convertColor( sal_Int32& rColor, + const ::rtl::OUString&rValue, + const double alpha); + /** convert color to string */ static void convertColor( ::rtl::OUStringBuffer &rBuffer, sal_Int32 nColor ); diff --git a/sax/source/tools/converter.cxx b/sax/source/tools/converter.cxx index 78dd22b79f0b..e7fff9ae6e9c 100644 --- a/sax/source/tools/converter.cxx +++ b/sax/source/tools/converter.cxx @@ -478,7 +478,7 @@ int lcl_gethex( int nChar ) return 0; } -/** convert string to color */ +/** convert string to rgb color */ bool Converter::convertColor( sal_Int32& rColor, const OUString& rValue ) { if( rValue.getLength() != 7 || rValue[0] != '#' ) @@ -495,6 +495,26 @@ bool Converter::convertColor( sal_Int32& rColor, const OUString& rValue ) return true; } +/** convert string to rgba color */ +bool Converter::convertColor( sal_Int32& rColor, const OUString& rValue, const double alpha) +{ + if( rValue.getLength() != 7 || rValue[0] != '#' ) + return false; + + rColor = (int) (alpha * 255); + rColor <<= 8; + + rColor |= lcl_gethex( rValue[1] ) * 16 + lcl_gethex( rValue[2] ); + rColor <<= 8; + + rColor |= ( lcl_gethex( rValue[3] ) * 16 + lcl_gethex( rValue[4] ) ); + rColor <<= 8; + + rColor |= ( lcl_gethex( rValue[5] ) * 16 + lcl_gethex( rValue[6] ) ); + + return true; +} + static sal_Char aHexTab[] = "0123456789abcdef"; /** convert color to string */ |