From bb6031fbe14b1f4b2e2ca98f97e93efe3519baa7 Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Tue, 15 Sep 2015 21:23:28 +0100 Subject: move CalcMaskShift to ColorMaskElement MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I6ed7e9bfea8b4500724866214fabd179fba20f20 Reviewed-on: https://gerrit.libreoffice.org/18636 Reviewed-by: Caolán McNamara Tested-by: Caolán McNamara --- include/vcl/salbtype.hxx | 67 +++++++++++++++++++++++------------------------- 1 file changed, 32 insertions(+), 35 deletions(-) (limited to 'include/vcl') diff --git a/include/vcl/salbtype.hxx b/include/vcl/salbtype.hxx index 547d9a2bcb86..4e0b4cd1c67e 100644 --- a/include/vcl/salbtype.hxx +++ b/include/vcl/salbtype.hxx @@ -194,6 +194,35 @@ struct VCL_DLLPUBLIC ColorMaskElement , mnOr(0) { } + bool CalcMaskShift(ColorMaskElement &rElem) const + { + if (rElem.mnMask == 0) + return true; + + // from which bit starts the mask? + int nShift = 31; + + while( nShift >= 0 && !( rElem.mnMask & ( 1 << nShift ) ) ) + --nShift; + + rElem.mnShift = nShift - 7; + int nLen = 0; + + // XXX determine number of bits set => walk right until null + while( nShift >= 0 && ( rElem.mnMask & ( 1 << nShift ) ) ) + { + nShift--; + nLen++; + } + + if (nLen > 8) // mask length must be 8 bits or less + return false; + + rElem.mnOrShift = 8 - nLen; + rElem.mnOr = static_cast( ( 0xFF >> nLen ) << rElem.mnOrShift ); + + return true; + } }; // - ColorMask - @@ -204,8 +233,6 @@ class VCL_DLLPUBLIC ColorMask ColorMaskElement maB; sal_uInt32 mnAlphaChannel; - SAL_DLLPRIVATE inline bool ImplCalcMaskShift(ColorMaskElement &rOut) const; - public: inline ColorMask( sal_uInt32 nRedMask = 0, @@ -581,39 +608,9 @@ inline ColorMask::ColorMask( sal_uInt32 nRedMask, , maB(nBlueMask) , mnAlphaChannel(nAlphaChannel) { - ImplCalcMaskShift(maR); - ImplCalcMaskShift(maG); - ImplCalcMaskShift(maB); -} - -inline bool ColorMask::ImplCalcMaskShift(ColorMaskElement &rElem) const -{ - if (rElem.mnMask == 0) - return true; - - // from which bit starts the mask? - int nShift = 31; - - while( nShift >= 0 && !( rElem.mnMask & ( 1 << nShift ) ) ) - --nShift; - - rElem.mnShift = nShift - 7; - int nLen = 0; - - // XXX determine number of bits set => walk right until null - while( nShift >= 0 && ( rElem.mnMask & ( 1 << nShift ) ) ) - { - nShift--; - nLen++; - } - - if (nLen > 8) // mask length must be 8 bits or less - return false; - - rElem.mnOrShift = 8 - nLen; - rElem.mnOr = static_cast( ( 0xFF >> nLen ) << rElem.mnOrShift ); - - return true; + maR.CalcMaskShift(maR); + maG.CalcMaskShift(maG); + maB.CalcMaskShift(maB); } inline sal_uInt32 ColorMask::GetRedMask() const -- cgit