[Libreoffice-commits] core.git: include/vcl solenv/clang-format
Tomaž Vajngerl (via logerrit)
logerrit at kemper.freedesktop.org
Sun Apr 14 23:58:26 UTC 2019
include/vcl/BitmapBuffer.hxx | 48 +++
include/vcl/BitmapColor.hxx | 226 +++++++++++++++++
include/vcl/BitmapPalette.hxx | 136 ++++++++++
include/vcl/ColorMask.hxx | 207 +++++++++++++++
include/vcl/Scanline.hxx | 68 +++++
include/vcl/salbtype.hxx | 546 ------------------------------------------
solenv/clang-format/blacklist | 5
7 files changed, 695 insertions(+), 541 deletions(-)
New commits:
commit e9651c2509004e2113864e15d74b8637966083ab
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Mon Apr 15 00:08:12 2019 +0900
Commit: Tomaž Vajngerl <quikee at gmail.com>
CommitDate: Mon Apr 15 01:57:27 2019 +0200
break up classes in salbtype into own files
But still keep salbtype where all of them are included for now.
Change-Id: I54cdf7a8872ad5bb592402a4bce0f3b8f869c6b2
Reviewed-on: https://gerrit.libreoffice.org/70737
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
diff --git a/include/vcl/BitmapBuffer.hxx b/include/vcl/BitmapBuffer.hxx
new file mode 100644
index 000000000000..2a064951c447
--- /dev/null
+++ b/include/vcl/BitmapBuffer.hxx
@@ -0,0 +1,48 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#ifndef INCLUDED_VCL_BITMAPBUFFER_HXX
+#define INCLUDED_VCL_BITMAPBUFFER_HXX
+
+#include <vcl/dllapi.h>
+#include <vcl/BitmapPalette.hxx>
+#include <vcl/ColorMask.hxx>
+#include <vcl/Scanline.hxx>
+
+struct SalTwoRect;
+
+struct VCL_DLLPUBLIC BitmapBuffer
+{
+ ScanlineFormat mnFormat;
+ long mnWidth;
+ long mnHeight;
+ long mnScanlineSize;
+ sal_uInt16 mnBitCount;
+ ColorMask maColorMask;
+ BitmapPalette maPalette;
+ sal_uInt8* mpBits;
+};
+
+VCL_DLLPUBLIC std::unique_ptr<BitmapBuffer> StretchAndConvert(
+ const BitmapBuffer& rSrcBuffer, const SalTwoRect& rTwoRect,
+ ScanlineFormat nDstBitmapFormat, const BitmapPalette* pDstPal = nullptr, const ColorMask* pDstMask = nullptr );
+
+#endif // INCLUDED_VCL_BITMAPBUFFER_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/vcl/BitmapColor.hxx b/include/vcl/BitmapColor.hxx
new file mode 100644
index 000000000000..7df493e7b38d
--- /dev/null
+++ b/include/vcl/BitmapColor.hxx
@@ -0,0 +1,226 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#ifndef INCLUDED_VCL_BITMAPCOLOR_HXX
+#define INCLUDED_VCL_BITMAPCOLOR_HXX
+
+#include <vcl/dllapi.h>
+#include <tools/color.hxx>
+#include <memory>
+
+class VCL_DLLPUBLIC BitmapColor final
+{
+private:
+ sal_uInt8 mcBlueOrIndex;
+ sal_uInt8 mcGreen;
+ sal_uInt8 mcRed;
+ sal_uInt8 mcAlpha;
+
+public:
+
+ inline BitmapColor();
+ constexpr BitmapColor( sal_uInt8 cRed, sal_uInt8 cGreen, sal_uInt8 cBlue, sal_uInt8 cAlpha = 0 );
+
+ inline BitmapColor( const Color& rColor );
+ explicit inline BitmapColor( sal_uInt8 cIndex );
+
+ inline bool operator==( const BitmapColor& rBitmapColor ) const;
+ inline bool operator!=( const BitmapColor& rBitmapColor ) const;
+
+ inline sal_uInt8 GetRed() const;
+ inline void SetRed( sal_uInt8 cRed );
+
+ inline sal_uInt8 GetGreen() const;
+ inline void SetGreen( sal_uInt8 cGreen );
+
+ inline sal_uInt8 GetBlue() const;
+ inline void SetBlue( sal_uInt8 cBlue );
+
+ inline sal_uInt8 GetIndex() const;
+ inline void SetIndex( sal_uInt8 cIndex );
+
+ Color GetColor() const;
+
+ inline sal_uInt8 GetAlpha() const;
+ inline void SetAlpha( sal_uInt8 cAlpha );
+
+ inline sal_uInt8 GetBlueOrIndex() const;
+
+ inline BitmapColor& Invert();
+
+ inline sal_uInt8 GetLuminance() const;
+
+ inline BitmapColor& Merge( const BitmapColor& rColor, sal_uInt8 cTransparency );
+
+ inline sal_uInt16 GetColorError( const BitmapColor& rBitmapColor ) const;
+};
+
+template<typename charT, typename traits>
+inline std::basic_ostream<charT, traits>& operator <<(std::basic_ostream<charT, traits>& rStream, const BitmapColor& rColor)
+{
+ return rStream << "#(" << std::hex << std::setfill ('0') << std::setw(2) << static_cast<int>(rColor.GetRed())
+ << std::setw(2) << static_cast<int>(rColor.GetGreen())
+ << std::setw(2) << static_cast<int>(rColor.GetBlueOrIndex())
+ << std::setw(2) << static_cast<int>(rColor.GetAlpha()) << ")";
+}
+
+inline BitmapColor::BitmapColor() :
+ mcBlueOrIndex (0),
+ mcGreen (0),
+ mcRed (0),
+ mcAlpha (0)
+{
+}
+
+constexpr BitmapColor::BitmapColor(sal_uInt8 cRed, sal_uInt8 cGreen, sal_uInt8 cBlue, sal_uInt8 cAlpha) :
+ mcBlueOrIndex ( cBlue ),
+ mcGreen ( cGreen ),
+ mcRed ( cRed ),
+ mcAlpha ( cAlpha )
+{
+}
+
+inline BitmapColor::BitmapColor( const Color& rColor ) :
+ mcBlueOrIndex ( rColor.GetBlue() ),
+ mcGreen ( rColor.GetGreen() ),
+ mcRed ( rColor.GetRed() ),
+ mcAlpha ( rColor.GetTransparency() )
+{
+}
+
+inline BitmapColor::BitmapColor( sal_uInt8 cIndex ) :
+ mcBlueOrIndex ( cIndex ),
+ mcGreen ( 0 ),
+ mcRed ( 0 ),
+ mcAlpha ( 0 )
+{
+}
+
+inline bool BitmapColor::operator==( const BitmapColor& rBitmapColor ) const
+{
+ return mcBlueOrIndex == rBitmapColor.mcBlueOrIndex &&
+ mcGreen == rBitmapColor.mcGreen &&
+ mcRed == rBitmapColor.mcRed &&
+ mcAlpha == rBitmapColor.mcAlpha;
+}
+
+inline bool BitmapColor::operator!=( const BitmapColor& rBitmapColor ) const
+{
+ return !( *this == rBitmapColor );
+}
+
+inline sal_uInt8 BitmapColor::GetRed() const
+{
+ return mcRed;
+}
+
+inline void BitmapColor::SetRed( sal_uInt8 cRed )
+{
+ mcRed = cRed;
+}
+
+inline sal_uInt8 BitmapColor::GetGreen() const
+{
+ return mcGreen;
+}
+
+inline void BitmapColor::SetGreen( sal_uInt8 cGreen )
+{
+ mcGreen = cGreen;
+}
+
+inline sal_uInt8 BitmapColor::GetBlue() const
+{
+ return mcBlueOrIndex;
+}
+
+inline void BitmapColor::SetBlue( sal_uInt8 cBlue )
+{
+ mcBlueOrIndex = cBlue;
+}
+
+inline sal_uInt8 BitmapColor::GetIndex() const
+{
+ return mcBlueOrIndex;
+}
+
+inline void BitmapColor::SetIndex( sal_uInt8 cIndex )
+{
+ mcBlueOrIndex = cIndex;
+}
+
+inline Color BitmapColor::GetColor() const
+{
+ return Color(mcAlpha, mcRed, mcGreen, mcBlueOrIndex);
+}
+
+inline sal_uInt8 BitmapColor::GetAlpha() const
+{
+ return mcAlpha;
+}
+
+inline void BitmapColor::SetAlpha( sal_uInt8 cAlpha )
+{
+ mcAlpha = cAlpha;
+}
+
+inline sal_uInt8 BitmapColor::GetBlueOrIndex() const
+{
+ // #i47518# Yield a value regardless of mbIndex
+ return mcBlueOrIndex;
+}
+
+inline BitmapColor& BitmapColor::Invert()
+{
+ mcBlueOrIndex = ~mcBlueOrIndex;
+ mcGreen = ~mcGreen;
+ mcRed = ~mcRed;
+
+ return *this;
+}
+
+inline sal_uInt8 BitmapColor::GetLuminance() const
+{
+ return (static_cast<sal_uInt32>(mcBlueOrIndex) * 28
+ + static_cast<sal_uInt32>(mcGreen) * 151
+ + static_cast<sal_uInt32>(mcRed) * 77) >> 8;
+}
+
+
+inline BitmapColor& BitmapColor::Merge( const BitmapColor& rBitmapColor, sal_uInt8 cTransparency )
+{
+ mcBlueOrIndex = ColorChannelMerge( mcBlueOrIndex, rBitmapColor.mcBlueOrIndex, cTransparency );
+ mcGreen = ColorChannelMerge( mcGreen, rBitmapColor.mcGreen, cTransparency );
+ mcRed = ColorChannelMerge( mcRed, rBitmapColor.mcRed, cTransparency );
+
+ return *this;
+}
+
+
+inline sal_uInt16 BitmapColor::GetColorError( const BitmapColor& rBitmapColor ) const
+{
+ return static_cast<sal_uInt16>(
+ abs( static_cast<int>(mcBlueOrIndex) - static_cast<int>(rBitmapColor.mcBlueOrIndex) ) +
+ abs( static_cast<int>(mcGreen) - static_cast<int>(rBitmapColor.mcGreen) ) +
+ abs( static_cast<int>(mcRed) - static_cast<int>(rBitmapColor.mcRed) ) );
+}
+
+#endif // INCLUDED_VCL_BITMAPCOLOR_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/vcl/BitmapPalette.hxx b/include/vcl/BitmapPalette.hxx
new file mode 100644
index 000000000000..1e61c8ecf1c5
--- /dev/null
+++ b/include/vcl/BitmapPalette.hxx
@@ -0,0 +1,136 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#ifndef INCLUDED_VCL_BITMAPPALETTE_HXX
+#define INCLUDED_VCL_BITMAPPALETTE_HXX
+
+#include <vcl/dllapi.h>
+#include <vcl/BitmapColor.hxx>
+#include <vcl/checksum.hxx>
+#include <vector>
+
+class VCL_DLLPUBLIC BitmapPalette
+{
+ friend class SalBitmap;
+ friend class BitmapAccess;
+
+private:
+
+ std::vector<BitmapColor> maBitmapColor;
+
+public:
+
+ SAL_DLLPRIVATE const BitmapColor* ImplGetColorBuffer() const
+ {
+ return maBitmapColor.data();
+ }
+
+ SAL_DLLPRIVATE BitmapColor* ImplGetColorBuffer()
+ {
+ return maBitmapColor.data();
+ }
+
+ BitmapChecksum GetChecksum() const
+ {
+ return vcl_get_checksum(0, maBitmapColor.data(), maBitmapColor.size() * sizeof(BitmapColor));
+ }
+
+public:
+
+ BitmapPalette()
+ {
+ }
+
+ BitmapPalette(sal_uInt16 nCount)
+ : maBitmapColor(nCount)
+ {
+ }
+
+ bool operator==( const BitmapPalette& rBitmapPalette ) const
+ {
+ return maBitmapColor == rBitmapPalette.maBitmapColor;
+ }
+
+ bool operator!=(const BitmapPalette& rBitmapPalette) const
+ {
+ return !( *this == rBitmapPalette );
+ }
+
+ bool operator!()
+ {
+ return maBitmapColor.empty();
+ }
+
+ sal_uInt16 GetEntryCount() const
+ {
+ return maBitmapColor.size();
+ }
+
+ void SetEntryCount(sal_uInt16 nCount)
+ {
+ maBitmapColor.resize(nCount);
+ }
+
+ const BitmapColor& operator[](sal_uInt16 nIndex) const
+ {
+ assert(nIndex < maBitmapColor.size() && "Palette index is out of range");
+ return maBitmapColor[nIndex];
+ }
+
+ BitmapColor& operator[](sal_uInt16 nIndex)
+ {
+ assert(nIndex < maBitmapColor.size() && "Palette index is out of range");
+ return maBitmapColor[nIndex];
+ }
+
+ sal_uInt16 GetBestIndex(const BitmapColor& rCol) const
+ {
+ sal_uInt16 nRetIndex = 0;
+
+ if (!maBitmapColor.empty())
+ {
+ for (size_t j = 0; j < maBitmapColor.size(); ++j)
+ {
+ if (rCol == maBitmapColor[j])
+ {
+ return j;
+ }
+ }
+
+ sal_uInt16 nLastErr = SAL_MAX_UINT16;
+ for (size_t i = 0; i < maBitmapColor.size(); ++i)
+ {
+ const sal_uInt16 nActErr = rCol.GetColorError(maBitmapColor[i]);
+ if ( nActErr < nLastErr )
+ {
+ nLastErr = nActErr;
+ nRetIndex = i;
+ }
+ }
+ }
+
+ return nRetIndex;
+ }
+
+ bool IsGreyPalette() const;
+};
+
+#endif // INCLUDED_VCL_BITMAPPALETTE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/vcl/ColorMask.hxx b/include/vcl/ColorMask.hxx
new file mode 100644
index 000000000000..8705cea6008b
--- /dev/null
+++ b/include/vcl/ColorMask.hxx
@@ -0,0 +1,207 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#ifndef INCLUDED_VCL_COLORMASK_HXX
+#define INCLUDED_VCL_COLORMASK_HXX
+
+#include <vcl/dllapi.h>
+#include <vcl/BitmapColor.hxx>
+
+#define MASK_TO_COLOR( d_nVal, d_RM, d_GM, d_BM, d_RS, d_GS, d_BS, d_Col ) \
+const sal_uInt8 _def_cR = static_cast<sal_uInt8>( d_RS < 0 ? ( (d_nVal) & d_RM ) << -d_RS : ( (d_nVal) & d_RM ) >> d_RS ); \
+const sal_uInt8 _def_cG = static_cast<sal_uInt8>( d_GS < 0 ? ( (d_nVal) & d_GM ) << -d_GS : ( (d_nVal) & d_GM ) >> d_GS ); \
+const sal_uInt8 _def_cB = static_cast<sal_uInt8>( d_BS < 0 ? ( (d_nVal) & d_BM ) << -d_BS : ( (d_nVal) & d_BM ) >> d_BS ); \
+d_Col = BitmapColor( static_cast<sal_uInt8>( _def_cR | ( ( _def_cR & maR.mnOr ) >> maR.mnOrShift ) ), \
+ static_cast<sal_uInt8>( _def_cG | ( ( _def_cG & maG.mnOr ) >> maG.mnOrShift ) ), \
+ static_cast<sal_uInt8>( _def_cB | ( ( _def_cB & maB.mnOr ) >> maB.mnOrShift ) ) );
+
+
+#define COLOR_TO_MASK( d_rCol, d_RM, d_GM, d_BM, d_RS, d_GS, d_BS, d_ALPHA ) \
+( ( ( ( d_RS < 0 ) ? ( static_cast<sal_uInt32>((d_rCol).GetRed()) >> -d_RS ) : \
+ ( static_cast<sal_uInt32>((d_rCol).GetRed()) << d_RS ) ) & d_RM ) | \
+ ( ( ( d_GS < 0 ) ? ( static_cast<sal_uInt32>((d_rCol).GetGreen()) >> -d_GS ) : \
+ ( static_cast<sal_uInt32>((d_rCol).GetGreen()) << d_GS ) ) & d_GM ) | \
+ ( ( ( d_BS < 0 ) ? ( static_cast<sal_uInt32>((d_rCol).GetBlue()) >> -d_BS ) : \
+ ( static_cast<sal_uInt32>((d_rCol).GetBlue()) << d_BS ) ) & d_BM ) | \
+ d_ALPHA )
+
+
+struct VCL_DLLPUBLIC ColorMaskElement
+{
+ sal_uInt32 mnMask;
+ int mnShift;
+ int mnOrShift;
+ sal_uInt8 mnOr;
+ explicit ColorMaskElement(sal_uInt32 nMask = 0)
+ : mnMask(nMask)
+ , mnShift(0)
+ , mnOrShift(0)
+ , mnOr(0)
+ {
+ }
+ bool CalcMaskShift()
+ {
+ if (mnMask == 0)
+ return true;
+
+ // from which bit starts the mask?
+ int nShift = 31;
+
+ while( nShift >= 0 && !( mnMask & ( 1 << nShift ) ) )
+ --nShift;
+
+ mnShift = nShift - 7;
+ int nLen = 0;
+
+ // XXX determine number of bits set => walk right until null
+ while( nShift >= 0 && ( mnMask & ( 1 << nShift ) ) )
+ {
+ nShift--;
+ nLen++;
+ }
+
+ if (nLen > 8) // mask length must be 8 bits or less
+ return false;
+
+ mnOrShift = 8 - nLen;
+ mnOr = static_cast<sal_uInt8>( ( 0xFF >> nLen ) << mnOrShift );
+
+ return true;
+ }
+};
+
+class VCL_DLLPUBLIC ColorMask
+{
+ ColorMaskElement maR;
+ ColorMaskElement maG;
+ ColorMaskElement maB;
+
+public:
+
+ ColorMask(const ColorMaskElement& rRedMask = ColorMaskElement(),
+ const ColorMaskElement& rGreenMask = ColorMaskElement(),
+ const ColorMaskElement& rBlueMask = ColorMaskElement())
+ : maR(rRedMask)
+ , maG(rGreenMask)
+ , maB(rBlueMask)
+ {
+ }
+
+ inline sal_uInt32 GetRedMask() const;
+ inline sal_uInt32 GetGreenMask() const;
+ inline sal_uInt32 GetBlueMask() const;
+
+ inline void GetColorFor8Bit( BitmapColor& rColor, const sal_uInt8* pPixel ) const;
+ inline void SetColorFor8Bit( const BitmapColor& rColor, sal_uInt8* pPixel ) const;
+
+ inline void GetColorFor16BitMSB( BitmapColor& rColor, const sal_uInt8* pPixel ) const;
+ inline void SetColorFor16BitMSB( const BitmapColor& rColor, sal_uInt8* pPixel ) const;
+ inline void GetColorFor16BitLSB( BitmapColor& rColor, const sal_uInt8* pPixel ) const;
+ inline void SetColorFor16BitLSB( const BitmapColor& rColor, sal_uInt8* pPixel ) const;
+
+ inline void GetColorFor32Bit( BitmapColor& rColor, const sal_uInt8* pPixel ) const;
+ inline void GetColorAndAlphaFor32Bit( BitmapColor& rColor, sal_uInt8& rAlpha, const sal_uInt8* pPixel ) const;
+ inline void SetColorFor32Bit( const BitmapColor& rColor, sal_uInt8* pPixel ) const;
+};
+
+inline sal_uInt32 ColorMask::GetRedMask() const
+{
+ return maR.mnMask;
+}
+
+inline sal_uInt32 ColorMask::GetGreenMask() const
+{
+ return maG.mnMask;
+}
+
+inline sal_uInt32 ColorMask::GetBlueMask() const
+{
+ return maB.mnMask;
+}
+
+inline void ColorMask::GetColorFor8Bit( BitmapColor& rColor, const sal_uInt8* pPixel ) const
+{
+ const sal_uInt32 nVal = *pPixel;
+ MASK_TO_COLOR( nVal, maR.mnMask, maG.mnMask, maB.mnMask, maR.mnShift, maG.mnShift, maR.mnShift, rColor );
+}
+
+inline void ColorMask::SetColorFor8Bit( const BitmapColor& rColor, sal_uInt8* pPixel ) const
+{
+ *pPixel = static_cast<sal_uInt8>(COLOR_TO_MASK( rColor, maR.mnMask, maG.mnMask, maB.mnMask, maR.mnShift, maG.mnShift, maB.mnShift, 0/*nAlphaChannel*/ ));
+}
+
+inline void ColorMask::GetColorFor16BitMSB( BitmapColor& rColor, const sal_uInt8* pPixel ) const
+{
+ const sal_uInt32 nVal = pPixel[ 1 ] | ( static_cast<sal_uInt32>(pPixel[ 0 ]) << 8 );
+
+ MASK_TO_COLOR( nVal, maR.mnMask, maG.mnMask, maB.mnMask, maR.mnShift, maG.mnShift, maB.mnShift, rColor );
+}
+
+inline void ColorMask::SetColorFor16BitMSB( const BitmapColor& rColor, sal_uInt8* pPixel ) const
+{
+ const sal_uInt16 nVal = static_cast<sal_uInt16>(COLOR_TO_MASK( rColor, maR.mnMask, maG.mnMask, maB.mnMask, maR.mnShift, maG.mnShift, maB.mnShift, 0/*nAlphaChannel*/ ));
+
+ pPixel[ 0 ] = static_cast<sal_uInt8>(nVal >> 8);
+ pPixel[ 1 ] = static_cast<sal_uInt8>(nVal);
+}
+
+inline void ColorMask::GetColorFor16BitLSB( BitmapColor& rColor, const sal_uInt8* pPixel ) const
+{
+ const sal_uInt32 nVal = pPixel[ 0 ] | ( static_cast<sal_uInt32>(pPixel[ 1 ]) << 8 );
+
+ MASK_TO_COLOR( nVal, maR.mnMask, maG.mnMask, maB.mnMask, maR.mnShift, maG.mnShift, maB.mnShift, rColor );
+}
+
+inline void ColorMask::SetColorFor16BitLSB( const BitmapColor& rColor, sal_uInt8* pPixel ) const
+{
+ const sal_uInt16 nVal = static_cast<sal_uInt16>(COLOR_TO_MASK( rColor, maR.mnMask, maG.mnMask, maB.mnMask, maR.mnShift, maG.mnShift, maB.mnShift, 0/*nAlphaChannel*/ ));
+
+ pPixel[ 0 ] = static_cast<sal_uInt8>(nVal);
+ pPixel[ 1 ] = static_cast<sal_uInt8>(nVal >> 8);
+}
+
+inline void ColorMask::GetColorFor32Bit( BitmapColor& rColor, const sal_uInt8* pPixel ) const
+{
+ const sal_uInt32 nVal = static_cast<sal_uInt32>(pPixel[ 0 ]) | ( static_cast<sal_uInt32>(pPixel[ 1 ]) << 8 ) |
+ ( static_cast<sal_uInt32>(pPixel[ 2 ]) << 16 ) | ( static_cast<sal_uInt32>(pPixel[ 3 ]) << 24 );
+
+ MASK_TO_COLOR( nVal, maR.mnMask, maG.mnMask, maB.mnMask, maR.mnShift, maG.mnShift, maB.mnShift, rColor );
+}
+
+inline void ColorMask::GetColorAndAlphaFor32Bit( BitmapColor& rColor, sal_uInt8& rAlpha, const sal_uInt8* pPixel ) const
+{
+ const sal_uInt32 nVal = static_cast<sal_uInt32>(pPixel[ 0 ]) | ( static_cast<sal_uInt32>(pPixel[ 1 ]) << 8 ) |
+ ( static_cast<sal_uInt32>(pPixel[ 2 ]) << 16 ) | ( static_cast<sal_uInt32>(pPixel[ 3 ]) << 24 );
+ rAlpha = static_cast<sal_uInt8>(nVal >> 24);
+
+ MASK_TO_COLOR( nVal, maR.mnMask, maG.mnMask, maB.mnMask, maR.mnShift, maG.mnShift, maB.mnShift, rColor );
+}
+
+inline void ColorMask::SetColorFor32Bit( const BitmapColor& rColor, sal_uInt8* pPixel ) const
+{
+ const sal_uInt32 nVal = COLOR_TO_MASK( rColor, maR.mnMask, maG.mnMask, maB.mnMask, maR.mnShift, maG.mnShift, maB.mnShift, 0/*nAlphaChannel*/ );
+ pPixel[ 0 ] = static_cast<sal_uInt8>(nVal);
+ pPixel[ 1 ] = static_cast<sal_uInt8>( nVal >> 8 );
+ pPixel[ 2 ] = static_cast<sal_uInt8>( nVal >> 16 );
+ pPixel[ 3 ] = static_cast<sal_uInt8>( nVal >> 24 );
+}
+
+#endif // INCLUDED_VCL_COLORMASK_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/vcl/Scanline.hxx b/include/vcl/Scanline.hxx
new file mode 100644
index 000000000000..d855f78a2e54
--- /dev/null
+++ b/include/vcl/Scanline.hxx
@@ -0,0 +1,68 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#ifndef INCLUDED_VCL_SCANLINE_HXX
+#define INCLUDED_VCL_SCANLINE_HXX
+
+#include <vcl/dllapi.h>
+#include <o3tl/typed_flags_set.hxx>
+
+typedef sal_uInt8* Scanline;
+typedef const sal_uInt8* ConstScanline;
+
+enum class ScanlineFormat {
+ NONE = 0x00000000,
+
+ N1BitMsbPal = 0x00000001,
+ N1BitLsbPal = 0x00000002,
+
+ N4BitMsnPal = 0x00000004,
+ N4BitLsnPal = 0x00000008,
+
+ N8BitPal = 0x00000010,
+ N8BitTcMask = 0x00000020,
+
+ N16BitTcMsbMask = 0x00000040,
+ N16BitTcLsbMask = 0x00000080,
+
+ N24BitTcBgr = 0x00000100,
+ N24BitTcRgb = 0x00000200,
+
+ N32BitTcAbgr = 0x00000800,
+ N32BitTcArgb = 0x00001000,
+ N32BitTcBgra = 0x00002000,
+ N32BitTcRgba = 0x00004000,
+ N32BitTcMask = 0x00008000,
+
+ TopDown = 0x00010000 // scanline adjustment
+};
+
+namespace o3tl
+{
+ template<> struct typed_flags<ScanlineFormat> : is_typed_flags<ScanlineFormat, 0x0001fbff> {};
+}
+
+inline ScanlineFormat RemoveScanline(ScanlineFormat nFormat)
+{
+ return nFormat & ~ScanlineFormat::TopDown;
+}
+
+#endif // INCLUDED_VCL_SCANLINE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/vcl/salbtype.hxx b/include/vcl/salbtype.hxx
index 8a0f8bb6e424..17d86ed3e4f9 100644
--- a/include/vcl/salbtype.hxx
+++ b/include/vcl/salbtype.hxx
@@ -20,320 +20,11 @@
#ifndef INCLUDED_VCL_SALBTYPE_HXX
#define INCLUDED_VCL_SALBTYPE_HXX
-#include <vcl/checksum.hxx>
-#include <tools/color.hxx>
-#include <vcl/dllapi.h>
-#include <o3tl/typed_flags_set.hxx>
-#include <vector>
-#include <memory>
-
-struct SalTwoRect;
-typedef sal_uInt8* Scanline;
-typedef const sal_uInt8* ConstScanline;
-
-enum class ScanlineFormat {
- NONE = 0x00000000,
-
- N1BitMsbPal = 0x00000001,
- N1BitLsbPal = 0x00000002,
-
- N4BitMsnPal = 0x00000004,
- N4BitLsnPal = 0x00000008,
-
- N8BitPal = 0x00000010,
- N8BitTcMask = 0x00000020,
-
- N16BitTcMsbMask = 0x00000040,
- N16BitTcLsbMask = 0x00000080,
-
- N24BitTcBgr = 0x00000100,
- N24BitTcRgb = 0x00000200,
-
- N32BitTcAbgr = 0x00000800,
- N32BitTcArgb = 0x00001000,
- N32BitTcBgra = 0x00002000,
- N32BitTcRgba = 0x00004000,
- N32BitTcMask = 0x00008000,
-
- TopDown = 0x00010000 // scanline adjustment
-};
-namespace o3tl {
- template<> struct typed_flags<ScanlineFormat> : is_typed_flags<ScanlineFormat, 0x0001fbff> {};
-}
-inline ScanlineFormat RemoveScanline(ScanlineFormat nFormat) { return nFormat & ~ScanlineFormat::TopDown; }
-
-
-#define MASK_TO_COLOR( d_nVal, d_RM, d_GM, d_BM, d_RS, d_GS, d_BS, d_Col ) \
-const sal_uInt8 _def_cR = static_cast<sal_uInt8>( d_RS < 0 ? ( (d_nVal) & d_RM ) << -d_RS : ( (d_nVal) & d_RM ) >> d_RS ); \
-const sal_uInt8 _def_cG = static_cast<sal_uInt8>( d_GS < 0 ? ( (d_nVal) & d_GM ) << -d_GS : ( (d_nVal) & d_GM ) >> d_GS ); \
-const sal_uInt8 _def_cB = static_cast<sal_uInt8>( d_BS < 0 ? ( (d_nVal) & d_BM ) << -d_BS : ( (d_nVal) & d_BM ) >> d_BS ); \
-d_Col = BitmapColor( static_cast<sal_uInt8>( _def_cR | ( ( _def_cR & maR.mnOr ) >> maR.mnOrShift ) ), \
- static_cast<sal_uInt8>( _def_cG | ( ( _def_cG & maG.mnOr ) >> maG.mnOrShift ) ), \
- static_cast<sal_uInt8>( _def_cB | ( ( _def_cB & maB.mnOr ) >> maB.mnOrShift ) ) );
-
-
-#define COLOR_TO_MASK( d_rCol, d_RM, d_GM, d_BM, d_RS, d_GS, d_BS, d_ALPHA ) \
-( ( ( ( d_RS < 0 ) ? ( static_cast<sal_uInt32>((d_rCol).GetRed()) >> -d_RS ) : \
- ( static_cast<sal_uInt32>((d_rCol).GetRed()) << d_RS ) ) & d_RM ) | \
- ( ( ( d_GS < 0 ) ? ( static_cast<sal_uInt32>((d_rCol).GetGreen()) >> -d_GS ) : \
- ( static_cast<sal_uInt32>((d_rCol).GetGreen()) << d_GS ) ) & d_GM ) | \
- ( ( ( d_BS < 0 ) ? ( static_cast<sal_uInt32>((d_rCol).GetBlue()) >> -d_BS ) : \
- ( static_cast<sal_uInt32>((d_rCol).GetBlue()) << d_BS ) ) & d_BM ) | \
- d_ALPHA )
-
-
-class VCL_DLLPUBLIC BitmapColor final
-{
-private:
-
- sal_uInt8 mcBlueOrIndex;
- sal_uInt8 mcGreen;
- sal_uInt8 mcRed;
- sal_uInt8 mcAlpha;
-
-public:
-
- inline BitmapColor();
- constexpr BitmapColor( sal_uInt8 cRed, sal_uInt8 cGreen, sal_uInt8 cBlue, sal_uInt8 cAlpha = 0 );
-
- inline BitmapColor( const Color& rColor );
- explicit inline BitmapColor( sal_uInt8 cIndex );
-
- inline bool operator==( const BitmapColor& rBitmapColor ) const;
- inline bool operator!=( const BitmapColor& rBitmapColor ) const;
-
- inline sal_uInt8 GetRed() const;
- inline void SetRed( sal_uInt8 cRed );
-
- inline sal_uInt8 GetGreen() const;
- inline void SetGreen( sal_uInt8 cGreen );
-
- inline sal_uInt8 GetBlue() const;
- inline void SetBlue( sal_uInt8 cBlue );
-
- inline sal_uInt8 GetIndex() const;
- inline void SetIndex( sal_uInt8 cIndex );
-
- Color GetColor() const;
-
- inline sal_uInt8 GetAlpha() const;
- inline void SetAlpha( sal_uInt8 cAlpha );
-
- inline sal_uInt8 GetBlueOrIndex() const;
-
- inline BitmapColor& Invert();
-
- inline sal_uInt8 GetLuminance() const;
-
- inline BitmapColor& Merge( const BitmapColor& rColor, sal_uInt8 cTransparency );
-
- inline sal_uInt16 GetColorError( const BitmapColor& rBitmapColor ) const;
-};
-
-template<typename charT, typename traits>
-inline std::basic_ostream<charT, traits>& operator <<(std::basic_ostream<charT, traits>& rStream, const BitmapColor& rColor)
-{
- return rStream << "#(" << std::hex << std::setfill ('0') << std::setw(2) << static_cast<int>(rColor.GetRed())
- << std::setw(2) << static_cast<int>(rColor.GetGreen())
- << std::setw(2) << static_cast<int>(rColor.GetBlueOrIndex())
- << std::setw(2) << static_cast<int>(rColor.GetAlpha()) << ")";
-}
-
-class VCL_DLLPUBLIC BitmapPalette
-{
- friend class SalBitmap;
- friend class BitmapAccess;
-
-private:
-
- std::vector<BitmapColor> maBitmapColor;
-
-public:
-
- SAL_DLLPRIVATE const BitmapColor* ImplGetColorBuffer() const
- {
- return maBitmapColor.data();
- }
-
- SAL_DLLPRIVATE BitmapColor* ImplGetColorBuffer()
- {
- return maBitmapColor.data();
- }
-
- BitmapChecksum GetChecksum() const
- {
- return vcl_get_checksum(0, maBitmapColor.data(), maBitmapColor.size() * sizeof(BitmapColor));
- }
-
-public:
-
- BitmapPalette()
- {
- }
-
- BitmapPalette(sal_uInt16 nCount)
- : maBitmapColor(nCount)
- {
- }
-
- bool operator==( const BitmapPalette& rBitmapPalette ) const
- {
- return maBitmapColor == rBitmapPalette.maBitmapColor;
- }
-
- bool operator!=(const BitmapPalette& rBitmapPalette) const
- {
- return !( *this == rBitmapPalette );
- }
-
- bool operator!()
- {
- return maBitmapColor.empty();
- }
-
- sal_uInt16 GetEntryCount() const
- {
- return maBitmapColor.size();
- }
-
- void SetEntryCount(sal_uInt16 nCount)
- {
- maBitmapColor.resize(nCount);
- }
-
- const BitmapColor& operator[](sal_uInt16 nIndex) const
- {
- assert(nIndex < maBitmapColor.size() && "Palette index is out of range");
- return maBitmapColor[nIndex];
- }
-
- BitmapColor& operator[](sal_uInt16 nIndex)
- {
- assert(nIndex < maBitmapColor.size() && "Palette index is out of range");
- return maBitmapColor[nIndex];
- }
-
- sal_uInt16 GetBestIndex(const BitmapColor& rCol) const
- {
- sal_uInt16 nRetIndex = 0;
-
- if (!maBitmapColor.empty())
- {
- for (size_t j = 0; j < maBitmapColor.size(); ++j)
- {
- if (rCol == maBitmapColor[j])
- {
- return j;
- }
- }
-
- sal_uInt16 nLastErr = SAL_MAX_UINT16;
- for (size_t i = 0; i < maBitmapColor.size(); ++i)
- {
- const sal_uInt16 nActErr = rCol.GetColorError(maBitmapColor[i]);
- if ( nActErr < nLastErr )
- {
- nLastErr = nActErr;
- nRetIndex = i;
- }
- }
- }
-
- return nRetIndex;
- }
-
- bool IsGreyPalette() const;
-};
-
-struct VCL_DLLPUBLIC ColorMaskElement
-{
- sal_uInt32 mnMask;
- int mnShift;
- int mnOrShift;
- sal_uInt8 mnOr;
- explicit ColorMaskElement(sal_uInt32 nMask = 0)
- : mnMask(nMask)
- , mnShift(0)
- , mnOrShift(0)
- , mnOr(0)
- {
- }
- bool CalcMaskShift()
- {
- if (mnMask == 0)
- return true;
-
- // from which bit starts the mask?
- int nShift = 31;
-
- while( nShift >= 0 && !( mnMask & ( 1 << nShift ) ) )
- --nShift;
-
- mnShift = nShift - 7;
- int nLen = 0;
-
- // XXX determine number of bits set => walk right until null
- while( nShift >= 0 && ( mnMask & ( 1 << nShift ) ) )
- {
- nShift--;
- nLen++;
- }
-
- if (nLen > 8) // mask length must be 8 bits or less
- return false;
-
- mnOrShift = 8 - nLen;
- mnOr = static_cast<sal_uInt8>( ( 0xFF >> nLen ) << mnOrShift );
-
- return true;
- }
-};
-
-class VCL_DLLPUBLIC ColorMask
-{
- ColorMaskElement maR;
- ColorMaskElement maG;
- ColorMaskElement maB;
-
-public:
-
- ColorMask(const ColorMaskElement& rRedMask = ColorMaskElement(),
- const ColorMaskElement& rGreenMask = ColorMaskElement(),
- const ColorMaskElement& rBlueMask = ColorMaskElement())
- : maR(rRedMask)
- , maG(rGreenMask)
- , maB(rBlueMask)
- {
- }
-
- inline sal_uInt32 GetRedMask() const;
- inline sal_uInt32 GetGreenMask() const;
- inline sal_uInt32 GetBlueMask() const;
-
- inline void GetColorFor8Bit( BitmapColor& rColor, const sal_uInt8* pPixel ) const;
- inline void SetColorFor8Bit( const BitmapColor& rColor, sal_uInt8* pPixel ) const;
-
- inline void GetColorFor16BitMSB( BitmapColor& rColor, const sal_uInt8* pPixel ) const;
- inline void SetColorFor16BitMSB( const BitmapColor& rColor, sal_uInt8* pPixel ) const;
- inline void GetColorFor16BitLSB( BitmapColor& rColor, const sal_uInt8* pPixel ) const;
- inline void SetColorFor16BitLSB( const BitmapColor& rColor, sal_uInt8* pPixel ) const;
-
- inline void GetColorFor32Bit( BitmapColor& rColor, const sal_uInt8* pPixel ) const;
- inline void GetColorAndAlphaFor32Bit( BitmapColor& rColor, sal_uInt8& rAlpha, const sal_uInt8* pPixel ) const;
- inline void SetColorFor32Bit( const BitmapColor& rColor, sal_uInt8* pPixel ) const;
-};
-
-struct VCL_DLLPUBLIC BitmapBuffer
-{
- ScanlineFormat mnFormat;
- long mnWidth;
- long mnHeight;
- long mnScanlineSize;
- sal_uInt16 mnBitCount;
- ColorMask maColorMask;
- BitmapPalette maPalette;
- sal_uInt8* mpBits;
-};
+#include <vcl/Scanline.hxx>
+#include <vcl/BitmapColor.hxx>
+#include <vcl/BitmapPalette.hxx>
+#include <vcl/ColorMask.hxx>
+#include <vcl/BitmapBuffer.hxx>
enum class BitmapAccessMode
{
@@ -342,233 +33,6 @@ enum class BitmapAccessMode
Write
};
-VCL_DLLPUBLIC std::unique_ptr<BitmapBuffer> StretchAndConvert(
- const BitmapBuffer& rSrcBuffer, const SalTwoRect& rTwoRect,
- ScanlineFormat nDstBitmapFormat, const BitmapPalette* pDstPal = nullptr, const ColorMask* pDstMask = nullptr );
-
-inline BitmapColor::BitmapColor() :
- mcBlueOrIndex (0),
- mcGreen (0),
- mcRed (0),
- mcAlpha (0)
-{
-}
-
-constexpr BitmapColor::BitmapColor(sal_uInt8 cRed, sal_uInt8 cGreen, sal_uInt8 cBlue, sal_uInt8 cAlpha) :
- mcBlueOrIndex ( cBlue ),
- mcGreen ( cGreen ),
- mcRed ( cRed ),
- mcAlpha ( cAlpha )
-{
-}
-
-inline BitmapColor::BitmapColor( const Color& rColor ) :
- mcBlueOrIndex ( rColor.GetBlue() ),
- mcGreen ( rColor.GetGreen() ),
- mcRed ( rColor.GetRed() ),
- mcAlpha ( rColor.GetTransparency() )
-{
-}
-
-inline BitmapColor::BitmapColor( sal_uInt8 cIndex ) :
- mcBlueOrIndex ( cIndex ),
- mcGreen ( 0 ),
- mcRed ( 0 ),
- mcAlpha ( 0 )
-{
-}
-
-inline bool BitmapColor::operator==( const BitmapColor& rBitmapColor ) const
-{
- return mcBlueOrIndex == rBitmapColor.mcBlueOrIndex &&
- mcGreen == rBitmapColor.mcGreen &&
- mcRed == rBitmapColor.mcRed &&
- mcAlpha == rBitmapColor.mcAlpha;
-}
-
-inline bool BitmapColor::operator!=( const BitmapColor& rBitmapColor ) const
-{
- return !( *this == rBitmapColor );
-}
-
-inline sal_uInt8 BitmapColor::GetRed() const
-{
- return mcRed;
-}
-
-inline void BitmapColor::SetRed( sal_uInt8 cRed )
-{
- mcRed = cRed;
-}
-
-inline sal_uInt8 BitmapColor::GetGreen() const
-{
- return mcGreen;
-}
-
-inline void BitmapColor::SetGreen( sal_uInt8 cGreen )
-{
- mcGreen = cGreen;
-}
-
-inline sal_uInt8 BitmapColor::GetBlue() const
-{
- return mcBlueOrIndex;
-}
-
-inline void BitmapColor::SetBlue( sal_uInt8 cBlue )
-{
- mcBlueOrIndex = cBlue;
-}
-
-inline sal_uInt8 BitmapColor::GetIndex() const
-{
- return mcBlueOrIndex;
-}
-
-inline void BitmapColor::SetIndex( sal_uInt8 cIndex )
-{
- mcBlueOrIndex = cIndex;
-}
-
-inline Color BitmapColor::GetColor() const
-{
- return Color(mcAlpha, mcRed, mcGreen, mcBlueOrIndex);
-}
-
-inline sal_uInt8 BitmapColor::GetAlpha() const
-{
- return mcAlpha;
-}
-
-inline void BitmapColor::SetAlpha( sal_uInt8 cAlpha )
-{
- mcAlpha = cAlpha;
-}
-
-inline sal_uInt8 BitmapColor::GetBlueOrIndex() const
-{
- // #i47518# Yield a value regardless of mbIndex
- return mcBlueOrIndex;
-}
-
-inline BitmapColor& BitmapColor::Invert()
-{
- mcBlueOrIndex = ~mcBlueOrIndex;
- mcGreen = ~mcGreen;
- mcRed = ~mcRed;
-
- return *this;
-}
-
-inline sal_uInt8 BitmapColor::GetLuminance() const
-{
- return (static_cast<sal_uInt32>(mcBlueOrIndex) * 28
- + static_cast<sal_uInt32>(mcGreen) * 151
- + static_cast<sal_uInt32>(mcRed) * 77) >> 8;
-}
-
-
-inline BitmapColor& BitmapColor::Merge( const BitmapColor& rBitmapColor, sal_uInt8 cTransparency )
-{
- mcBlueOrIndex = ColorChannelMerge( mcBlueOrIndex, rBitmapColor.mcBlueOrIndex, cTransparency );
- mcGreen = ColorChannelMerge( mcGreen, rBitmapColor.mcGreen, cTransparency );
- mcRed = ColorChannelMerge( mcRed, rBitmapColor.mcRed, cTransparency );
-
- return *this;
-}
-
-
-inline sal_uInt16 BitmapColor::GetColorError( const BitmapColor& rBitmapColor ) const
-{
- return static_cast<sal_uInt16>(
- abs( static_cast<int>(mcBlueOrIndex) - static_cast<int>(rBitmapColor.mcBlueOrIndex) ) +
- abs( static_cast<int>(mcGreen) - static_cast<int>(rBitmapColor.mcGreen) ) +
- abs( static_cast<int>(mcRed) - static_cast<int>(rBitmapColor.mcRed) ) );
-}
-
-inline sal_uInt32 ColorMask::GetRedMask() const
-{
- return maR.mnMask;
-}
-
-inline sal_uInt32 ColorMask::GetGreenMask() const
-{
- return maG.mnMask;
-}
-
-inline sal_uInt32 ColorMask::GetBlueMask() const
-{
- return maB.mnMask;
-}
-
-inline void ColorMask::GetColorFor8Bit( BitmapColor& rColor, const sal_uInt8* pPixel ) const
-{
- const sal_uInt32 nVal = *pPixel;
- MASK_TO_COLOR( nVal, maR.mnMask, maG.mnMask, maB.mnMask, maR.mnShift, maG.mnShift, maR.mnShift, rColor );
-}
-
-inline void ColorMask::SetColorFor8Bit( const BitmapColor& rColor, sal_uInt8* pPixel ) const
-{
- *pPixel = static_cast<sal_uInt8>(COLOR_TO_MASK( rColor, maR.mnMask, maG.mnMask, maB.mnMask, maR.mnShift, maG.mnShift, maB.mnShift, 0/*nAlphaChannel*/ ));
-}
-
-inline void ColorMask::GetColorFor16BitMSB( BitmapColor& rColor, const sal_uInt8* pPixel ) const
-{
- const sal_uInt32 nVal = pPixel[ 1 ] | ( static_cast<sal_uInt32>(pPixel[ 0 ]) << 8 );
-
- MASK_TO_COLOR( nVal, maR.mnMask, maG.mnMask, maB.mnMask, maR.mnShift, maG.mnShift, maB.mnShift, rColor );
-}
-
-inline void ColorMask::SetColorFor16BitMSB( const BitmapColor& rColor, sal_uInt8* pPixel ) const
-{
- const sal_uInt16 nVal = static_cast<sal_uInt16>(COLOR_TO_MASK( rColor, maR.mnMask, maG.mnMask, maB.mnMask, maR.mnShift, maG.mnShift, maB.mnShift, 0/*nAlphaChannel*/ ));
-
- pPixel[ 0 ] = static_cast<sal_uInt8>(nVal >> 8);
- pPixel[ 1 ] = static_cast<sal_uInt8>(nVal);
-}
-
-inline void ColorMask::GetColorFor16BitLSB( BitmapColor& rColor, const sal_uInt8* pPixel ) const
-{
- const sal_uInt32 nVal = pPixel[ 0 ] | ( static_cast<sal_uInt32>(pPixel[ 1 ]) << 8 );
-
- MASK_TO_COLOR( nVal, maR.mnMask, maG.mnMask, maB.mnMask, maR.mnShift, maG.mnShift, maB.mnShift, rColor );
-}
-
-inline void ColorMask::SetColorFor16BitLSB( const BitmapColor& rColor, sal_uInt8* pPixel ) const
-{
- const sal_uInt16 nVal = static_cast<sal_uInt16>(COLOR_TO_MASK( rColor, maR.mnMask, maG.mnMask, maB.mnMask, maR.mnShift, maG.mnShift, maB.mnShift, 0/*nAlphaChannel*/ ));
-
- pPixel[ 0 ] = static_cast<sal_uInt8>(nVal);
- pPixel[ 1 ] = static_cast<sal_uInt8>(nVal >> 8);
-}
-
-inline void ColorMask::GetColorFor32Bit( BitmapColor& rColor, const sal_uInt8* pPixel ) const
-{
- const sal_uInt32 nVal = static_cast<sal_uInt32>(pPixel[ 0 ]) | ( static_cast<sal_uInt32>(pPixel[ 1 ]) << 8 ) |
- ( static_cast<sal_uInt32>(pPixel[ 2 ]) << 16 ) | ( static_cast<sal_uInt32>(pPixel[ 3 ]) << 24 );
-
- MASK_TO_COLOR( nVal, maR.mnMask, maG.mnMask, maB.mnMask, maR.mnShift, maG.mnShift, maB.mnShift, rColor );
-}
-
-inline void ColorMask::GetColorAndAlphaFor32Bit( BitmapColor& rColor, sal_uInt8& rAlpha, const sal_uInt8* pPixel ) const
-{
- const sal_uInt32 nVal = static_cast<sal_uInt32>(pPixel[ 0 ]) | ( static_cast<sal_uInt32>(pPixel[ 1 ]) << 8 ) |
- ( static_cast<sal_uInt32>(pPixel[ 2 ]) << 16 ) | ( static_cast<sal_uInt32>(pPixel[ 3 ]) << 24 );
- rAlpha = static_cast<sal_uInt8>(nVal >> 24);
-
- MASK_TO_COLOR( nVal, maR.mnMask, maG.mnMask, maB.mnMask, maR.mnShift, maG.mnShift, maB.mnShift, rColor );
-}
-
-inline void ColorMask::SetColorFor32Bit( const BitmapColor& rColor, sal_uInt8* pPixel ) const
-{
- const sal_uInt32 nVal = COLOR_TO_MASK( rColor, maR.mnMask, maG.mnMask, maB.mnMask, maR.mnShift, maG.mnShift, maB.mnShift, 0/*nAlphaChannel*/ );
- pPixel[ 0 ] = static_cast<sal_uInt8>(nVal);
- pPixel[ 1 ] = static_cast<sal_uInt8>( nVal >> 8 );
- pPixel[ 2 ] = static_cast<sal_uInt8>( nVal >> 16 );
- pPixel[ 3 ] = static_cast<sal_uInt8>( nVal >> 24 );
-}
-
#endif // INCLUDED_VCL_SALBTYPE_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/solenv/clang-format/blacklist b/solenv/clang-format/blacklist
index ccd57fa3c047..f7bafad27c4f 100644
--- a/solenv/clang-format/blacklist
+++ b/solenv/clang-format/blacklist
@@ -7781,6 +7781,10 @@ include/vbahelper/vbatextframe.hxx
include/vbahelper/vbawindowbase.hxx
include/vcl/AccessibleBrowseBoxObjType.hxx
include/vcl/BitmapTools.hxx
+include/vcl/BitmapBuffer.hxx
+include/vcl/BitmapColor.hxx
+include/vcl/BitmapPalette.hxx
+include/vcl/ColorMask.hxx
include/vcl/EnumContext.hxx
include/vcl/FilterConfigItem.hxx
include/vcl/GraphicNativeMetadata.hxx
@@ -7795,6 +7799,7 @@ include/vcl/IconThemeScanner.hxx
include/vcl/IconThemeSelector.hxx
include/vcl/ImageTree.hxx
include/vcl/NotebookbarContextControl.hxx
+include/vcl/Scanline.hxx
include/vcl/abstdlg.hxx
include/vcl/accel.hxx
include/vcl/accessiblefactory.hxx
More information about the Libreoffice-commits
mailing list