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.vajng...@collabora.co.uk>
AuthorDate: Mon Apr 15 00:08:12 2019 +0900
Commit:     Tomaž Vajngerl <qui...@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 <qui...@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
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to