summaryrefslogtreecommitdiffstats
path: root/vcl/inc/bitmap
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 09:06:44 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 09:06:44 +0000
commited5640d8b587fbcfed7dd7967f3de04b37a76f26 (patch)
tree7a5f7c6c9d02226d7471cb3cc8fbbf631b415303 /vcl/inc/bitmap
parentInitial commit. (diff)
downloadlibreoffice-ed5640d8b587fbcfed7dd7967f3de04b37a76f26.tar.xz
libreoffice-ed5640d8b587fbcfed7dd7967f3de04b37a76f26.zip
Adding upstream version 4:7.4.7.upstream/4%7.4.7upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r--vcl/inc/bitmap/BitmapColorizeFilter.hxx34
-rw-r--r--vcl/inc/bitmap/BitmapDisabledImageFilter.hxx26
-rw-r--r--vcl/inc/bitmap/BitmapFastScaleFilter.hxx36
-rw-r--r--vcl/inc/bitmap/BitmapInterpolateScaleFilter.hxx35
-rw-r--r--vcl/inc/bitmap/BitmapLightenFilter.hxx24
-rw-r--r--vcl/inc/bitmap/BitmapMaskToAlphaFilter.hxx21
-rw-r--r--vcl/inc/bitmap/BitmapScaleConvolutionFilter.hxx78
-rw-r--r--vcl/inc/bitmap/BitmapScaleSuperFilter.hxx40
-rw-r--r--vcl/inc/bitmap/BitmapWriteAccess.hxx94
-rw-r--r--vcl/inc/bitmap/Octree.hxx82
-rw-r--r--vcl/inc/bitmap/ScanlineTools.hxx236
-rw-r--r--vcl/inc/bitmap/bmpfast.hxx51
-rw-r--r--vcl/inc/bitmap/impoctree.hxx110
-rw-r--r--vcl/inc/bitmaps.hlst227
14 files changed, 1094 insertions, 0 deletions
diff --git a/vcl/inc/bitmap/BitmapColorizeFilter.hxx b/vcl/inc/bitmap/BitmapColorizeFilter.hxx
new file mode 100644
index 000000000..e05edf219
--- /dev/null
+++ b/vcl/inc/bitmap/BitmapColorizeFilter.hxx
@@ -0,0 +1,34 @@
+/* -*- 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/.
+ *
+ */
+
+#ifndef INCLUDED_VCL_INC_BITMAP_BITMAPCOLORIZEFILTER_HXX
+#define INCLUDED_VCL_INC_BITMAP_BITMAPCOLORIZEFILTER_HXX
+
+#include <tools/color.hxx>
+
+#include <vcl/BitmapFilter.hxx>
+
+class BitmapColorizeFilter final : public BitmapFilter
+{
+public:
+ BitmapColorizeFilter(Color aColor)
+ : maColor(aColor)
+ {
+ }
+
+ virtual BitmapEx execute(BitmapEx const& rBitmapEx) const override;
+
+private:
+ Color maColor;
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/inc/bitmap/BitmapDisabledImageFilter.hxx b/vcl/inc/bitmap/BitmapDisabledImageFilter.hxx
new file mode 100644
index 000000000..e1d9d21a9
--- /dev/null
+++ b/vcl/inc/bitmap/BitmapDisabledImageFilter.hxx
@@ -0,0 +1,26 @@
+/* -*- 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/.
+ *
+ */
+
+#ifndef INCLUDED_VCL_INC_BITMAP_BITMAPDISABLEDIMAGEFILTER_HXX
+#define INCLUDED_VCL_INC_BITMAP_BITMAPDISABLEDIMAGEFILTER_HXX
+
+#include <vcl/BitmapFilter.hxx>
+
+class VCL_DLLPUBLIC BitmapDisabledImageFilter final : public BitmapFilter
+{
+public:
+ BitmapDisabledImageFilter() {}
+
+ virtual BitmapEx execute(BitmapEx const& rBitmapEx) const override;
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/inc/bitmap/BitmapFastScaleFilter.hxx b/vcl/inc/bitmap/BitmapFastScaleFilter.hxx
new file mode 100644
index 000000000..bea516c9e
--- /dev/null
+++ b/vcl/inc/bitmap/BitmapFastScaleFilter.hxx
@@ -0,0 +1,36 @@
+/* -*- 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/.
+ *
+ */
+
+#ifndef VCL_INC_BITMAP_BITMAPFASTSCALEFILTER_HXX
+#define VCL_INC_BITMAP_BITMAPFASTSCALEFILTER_HXX
+
+#include <vcl/bitmapex.hxx>
+#include <vcl/BitmapFilter.hxx>
+
+class BitmapFastScaleFilter final : public BitmapFilter
+{
+public:
+ explicit BitmapFastScaleFilter(double fScaleX, double fScaleY)
+ : mfScaleX(fScaleX)
+ , mfScaleY(fScaleY)
+ {
+ }
+
+ virtual BitmapEx execute(BitmapEx const& rBitmapEx) const override;
+
+private:
+ double mfScaleX;
+ double mfScaleY;
+ Size maSize;
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/inc/bitmap/BitmapInterpolateScaleFilter.hxx b/vcl/inc/bitmap/BitmapInterpolateScaleFilter.hxx
new file mode 100644
index 000000000..7d17c97d1
--- /dev/null
+++ b/vcl/inc/bitmap/BitmapInterpolateScaleFilter.hxx
@@ -0,0 +1,35 @@
+/* -*- 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/.
+ *
+ */
+
+#ifndef VCL_INC_BITMAP_BITMAPINTERPOLATESCALEFILTER_HXX
+#define VCL_INC_BITMAP_BITMAPINTERPOLATESCALEFILTER_HXX
+
+#include <vcl/bitmapex.hxx>
+#include <vcl/BitmapFilter.hxx>
+
+class BitmapInterpolateScaleFilter final : public BitmapFilter
+{
+public:
+ explicit BitmapInterpolateScaleFilter(double fScaleX, double fScaleY)
+ : mfScaleX(fScaleX)
+ , mfScaleY(fScaleY)
+ {
+ }
+
+ virtual BitmapEx execute(BitmapEx const& rBitmapEx) const override;
+
+private:
+ double mfScaleX;
+ double mfScaleY;
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/inc/bitmap/BitmapLightenFilter.hxx b/vcl/inc/bitmap/BitmapLightenFilter.hxx
new file mode 100644
index 000000000..98f249328
--- /dev/null
+++ b/vcl/inc/bitmap/BitmapLightenFilter.hxx
@@ -0,0 +1,24 @@
+/* -*- 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/.
+ *
+ */
+
+#ifndef INCLUDED_VCL_INC_BITMAP_BITMAPLIGHTENFILTER_HXX
+#define INCLUDED_VCL_INC_BITMAP_BITMAPLIGHTENFILTER_HXX
+
+#include <vcl/BitmapFilter.hxx>
+
+class BitmapLightenFilter final : public BitmapFilter
+{
+public:
+ virtual BitmapEx execute(BitmapEx const& rBitmapEx) const override;
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/inc/bitmap/BitmapMaskToAlphaFilter.hxx b/vcl/inc/bitmap/BitmapMaskToAlphaFilter.hxx
new file mode 100644
index 000000000..355d06684
--- /dev/null
+++ b/vcl/inc/bitmap/BitmapMaskToAlphaFilter.hxx
@@ -0,0 +1,21 @@
+/* -*- 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/.
+ *
+ */
+
+#pragma once
+
+#include <vcl/BitmapFilter.hxx>
+
+class BitmapMaskToAlphaFilter final : public BitmapFilter
+{
+public:
+ virtual BitmapEx execute(BitmapEx const& rBitmapEx) const override;
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/inc/bitmap/BitmapScaleConvolutionFilter.hxx b/vcl/inc/bitmap/BitmapScaleConvolutionFilter.hxx
new file mode 100644
index 000000000..1c9bb8e33
--- /dev/null
+++ b/vcl/inc/bitmap/BitmapScaleConvolutionFilter.hxx
@@ -0,0 +1,78 @@
+/* -*- 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 VCL_INC_BITMAP_BITMAPSCALECONVOLUTIONFILTER_HXX
+#define VCL_INC_BITMAP_BITMAPSCALECONVOLUTIONFILTER_HXX
+
+#include <vcl/BitmapFilter.hxx>
+
+#include <ResampleKernel.hxx>
+
+namespace vcl
+{
+class BitmapScaleConvolutionFilter : public BitmapFilter
+{
+protected:
+ BitmapScaleConvolutionFilter(const double& rScaleX, const double& rScaleY,
+ std::unique_ptr<Kernel> pKernel)
+ : mxKernel(std::move(pKernel))
+ , mrScaleX(rScaleX)
+ , mrScaleY(rScaleY)
+ {
+ }
+
+ virtual BitmapEx execute(BitmapEx const& rBitmap) const override;
+
+private:
+ std::unique_ptr<Kernel> mxKernel;
+ double mrScaleX;
+ double mrScaleY;
+};
+
+class VCL_DLLPUBLIC BitmapScaleBilinearFilter final : public BitmapScaleConvolutionFilter
+{
+public:
+ BitmapScaleBilinearFilter(const double& rScaleX, const double& rScaleY)
+ : BitmapScaleConvolutionFilter(rScaleX, rScaleY, std::make_unique<BilinearKernel>())
+ {
+ }
+};
+
+class VCL_DLLPUBLIC BitmapScaleBicubicFilter final : public BitmapScaleConvolutionFilter
+{
+public:
+ BitmapScaleBicubicFilter(const double& rScaleX, const double& rScaleY)
+ : BitmapScaleConvolutionFilter(rScaleX, rScaleY, std::make_unique<BicubicKernel>())
+ {
+ }
+};
+
+class VCL_DLLPUBLIC BitmapScaleLanczos3Filter final : public BitmapScaleConvolutionFilter
+{
+public:
+ BitmapScaleLanczos3Filter(const double& rScaleX, const double& rScaleY)
+ : BitmapScaleConvolutionFilter(rScaleX, rScaleY, std::make_unique<Lanczos3Kernel>())
+ {
+ }
+};
+}
+
+#endif // VCL_INC_BITMAPSCALECONVOLUTIONFILTER_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/inc/bitmap/BitmapScaleSuperFilter.hxx b/vcl/inc/bitmap/BitmapScaleSuperFilter.hxx
new file mode 100644
index 000000000..46c21d8d7
--- /dev/null
+++ b/vcl/inc/bitmap/BitmapScaleSuperFilter.hxx
@@ -0,0 +1,40 @@
+/* -*- 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_INC_BITMAP_BITMAPSCALESUPER_HXX
+#define INCLUDED_VCL_INC_BITMAP_BITMAPSCALESUPER_HXX
+
+#include <vcl/BitmapFilter.hxx>
+
+class BitmapScaleSuperFilter final : public BitmapFilter
+{
+public:
+ BitmapScaleSuperFilter(const double& rScaleX, const double& rScaleY);
+ virtual ~BitmapScaleSuperFilter() override;
+
+ virtual BitmapEx execute(BitmapEx const& rBitmap) const override;
+
+private:
+ double mrScaleX;
+ double mrScaleY;
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/inc/bitmap/BitmapWriteAccess.hxx b/vcl/inc/bitmap/BitmapWriteAccess.hxx
new file mode 100644
index 000000000..bc903769d
--- /dev/null
+++ b/vcl/inc/bitmap/BitmapWriteAccess.hxx
@@ -0,0 +1,94 @@
+/* -*- 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/.
+ *
+ */
+
+#ifndef INCLUDED_VCL_INC_BITMAP_BITMAPWRITEACCESS_HXX
+#define INCLUDED_VCL_INC_BITMAP_BITMAPWRITEACCESS_HXX
+
+#include <vcl/alpha.hxx>
+#include <vcl/bitmap.hxx>
+#include <vcl/BitmapReadAccess.hxx>
+#include <optional>
+
+typedef vcl::ScopedBitmapAccess<BitmapWriteAccess, Bitmap, &Bitmap::AcquireWriteAccess>
+ BitmapScopedWriteAccess;
+
+typedef vcl::ScopedBitmapAccess<BitmapWriteAccess, AlphaMask, &AlphaMask::AcquireAlphaWriteAccess>
+ AlphaScopedWriteAccess;
+
+class VCL_DLLPUBLIC BitmapWriteAccess final : public BitmapReadAccess
+{
+public:
+ BitmapWriteAccess(Bitmap& rBitmap);
+ virtual ~BitmapWriteAccess() override;
+
+ void CopyScanline(tools::Long nY, const BitmapReadAccess& rReadAcc);
+ void CopyScanline(tools::Long nY, ConstScanline aSrcScanline, ScanlineFormat nSrcScanlineFormat,
+ sal_uInt32 nSrcScanlineSize);
+
+ void SetPalette(const BitmapPalette& rPalette)
+ {
+ assert(mpBuffer && "Access is not valid!");
+
+ mpBuffer->maPalette = rPalette;
+ }
+
+ void SetPaletteEntryCount(sal_uInt16 nCount)
+ {
+ assert(mpBuffer && "Access is not valid!");
+
+ mpBuffer->maPalette.SetEntryCount(nCount);
+ }
+
+ void SetPaletteColor(sal_uInt16 nColor, const BitmapColor& rBitmapColor)
+ {
+ assert(mpBuffer && "Access is not valid!");
+ assert(HasPalette() && "Bitmap has no palette!");
+
+ mpBuffer->maPalette[nColor] = rBitmapColor;
+ }
+
+ void SetPixel(tools::Long nY, tools::Long nX, const BitmapColor& rBitmapColor)
+ {
+ assert(mpBuffer && "Access is not valid!");
+ assert(nX < mpBuffer->mnWidth && "x-coordinate out of range!");
+ assert(nY < mpBuffer->mnHeight && "y-coordinate out of range!");
+
+ mFncSetPixel(GetScanline(nY), nX, rBitmapColor, maColorMask);
+ }
+
+ void SetPixelIndex(tools::Long nY, tools::Long nX, sal_uInt8 cIndex)
+ {
+ SetPixel(nY, nX, BitmapColor(cIndex));
+ }
+
+ void SetLineColor(const Color& rColor);
+
+ void SetFillColor();
+ void SetFillColor(const Color& rColor);
+
+ void Erase(const Color& rColor);
+
+ void DrawLine(const Point& rStart, const Point& rEnd);
+
+ void FillRect(const tools::Rectangle& rRect);
+ void DrawRect(const tools::Rectangle& rRect);
+
+private:
+ std::optional<BitmapColor> mpLineColor;
+ std::optional<BitmapColor> mpFillColor;
+
+ BitmapWriteAccess() = delete;
+ BitmapWriteAccess(const BitmapWriteAccess&) = delete;
+ BitmapWriteAccess& operator=(const BitmapWriteAccess&) = delete;
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/inc/bitmap/Octree.hxx b/vcl/inc/bitmap/Octree.hxx
new file mode 100644
index 000000000..4db065022
--- /dev/null
+++ b/vcl/inc/bitmap/Octree.hxx
@@ -0,0 +1,82 @@
+/* -*- 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_INC_OCTREE_HXX
+#define INCLUDED_VCL_INC_OCTREE_HXX
+
+#include <vcl/dllapi.h>
+#include <vcl/BitmapColor.hxx>
+#include <tools/solar.h>
+
+struct OctreeNode
+{
+ sal_uLong nCount = 0;
+ sal_uLong nRed = 0;
+ sal_uLong nGreen = 0;
+ sal_uLong nBlue = 0;
+ std::unique_ptr<OctreeNode> pChild[8];
+ OctreeNode* pNext = nullptr;
+ sal_uInt16 nPalIndex = 0;
+ bool bLeaf = false;
+};
+
+class BitmapReadAccess;
+
+class VCL_PLUGIN_PUBLIC Octree
+{
+private:
+ void CreatePalette(OctreeNode* pNode);
+ void GetPalIndex(const OctreeNode* pNode, BitmapColor const& color);
+
+ SAL_DLLPRIVATE void add(std::unique_ptr<OctreeNode>& rpNode, BitmapColor const& color);
+ SAL_DLLPRIVATE void reduce();
+
+ BitmapPalette maPalette;
+ sal_uLong mnLeafCount;
+ sal_uLong mnLevel;
+ std::unique_ptr<OctreeNode> pTree;
+ std::vector<OctreeNode*> mpReduce;
+ sal_uInt16 mnPalIndex;
+
+public:
+ Octree(const BitmapReadAccess& rReadAcc, sal_uLong nColors);
+ ~Octree();
+
+ const BitmapPalette& GetPalette();
+ sal_uInt16 GetBestPaletteIndex(const BitmapColor& rColor);
+};
+
+class InverseColorMap
+{
+private:
+ std::vector<sal_uInt8> mpBuffer;
+ std::vector<sal_uInt8> mpMap;
+
+ void ImplCreateBuffers();
+
+public:
+ explicit InverseColorMap(const BitmapPalette& rPal);
+ ~InverseColorMap();
+
+ sal_uInt16 GetBestPaletteIndex(const BitmapColor& rColor);
+};
+
+#endif // INCLUDED_VCL_INC_OCTREE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/inc/bitmap/ScanlineTools.hxx b/vcl/inc/bitmap/ScanlineTools.hxx
new file mode 100644
index 000000000..c343cf34f
--- /dev/null
+++ b/vcl/inc/bitmap/ScanlineTools.hxx
@@ -0,0 +1,236 @@
+/* -*- 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/.
+ *
+ */
+
+#ifndef INCLUDED_VCL_INC_BITMAP_SCANLINETOOLS_HXX
+#define INCLUDED_VCL_INC_BITMAP_SCANLINETOOLS_HXX
+
+#include <tools/color.hxx>
+#include <vcl/BitmapPalette.hxx>
+
+namespace vcl::bitmap
+{
+class ScanlineTransformer
+{
+public:
+ virtual void startLine(sal_uInt8* pLine) = 0;
+ virtual void skipPixel(sal_uInt32 nPixel) = 0;
+ virtual Color readPixel() = 0;
+ virtual void writePixel(Color nColor) = 0;
+
+ virtual ~ScanlineTransformer() = default;
+};
+
+class ScanlineTransformer_ARGB final : public ScanlineTransformer
+{
+private:
+ sal_uInt8* pData;
+
+public:
+ virtual void startLine(sal_uInt8* pLine) override { pData = pLine; }
+
+ virtual void skipPixel(sal_uInt32 nPixel) override { pData += nPixel << 2; }
+
+ virtual Color readPixel() override
+ {
+ const Color aColor(ColorTransparency, pData[4], pData[1], pData[2], pData[3]);
+ pData += 4;
+ return aColor;
+ }
+
+ virtual void writePixel(Color nColor) override
+ {
+ *pData++ = 255 - nColor.GetAlpha();
+ *pData++ = nColor.GetRed();
+ *pData++ = nColor.GetGreen();
+ *pData++ = nColor.GetBlue();
+ }
+};
+
+class ScanlineTransformer_BGR final : public ScanlineTransformer
+{
+private:
+ sal_uInt8* pData;
+
+public:
+ virtual void startLine(sal_uInt8* pLine) override { pData = pLine; }
+
+ virtual void skipPixel(sal_uInt32 nPixel) override { pData += (nPixel << 1) + nPixel; }
+
+ virtual Color readPixel() override
+ {
+ const Color aColor(pData[2], pData[1], pData[0]);
+ pData += 3;
+ return aColor;
+ }
+
+ virtual void writePixel(Color nColor) override
+ {
+ *pData++ = nColor.GetBlue();
+ *pData++ = nColor.GetGreen();
+ *pData++ = nColor.GetRed();
+ }
+};
+
+class ScanlineTransformer_8BitPalette final : public ScanlineTransformer
+{
+private:
+ sal_uInt8* pData;
+ const BitmapPalette& mrPalette;
+
+public:
+ explicit ScanlineTransformer_8BitPalette(const BitmapPalette& rPalette)
+ : pData(nullptr)
+ , mrPalette(rPalette)
+ {
+ }
+
+ virtual void startLine(sal_uInt8* pLine) override { pData = pLine; }
+
+ virtual void skipPixel(sal_uInt32 nPixel) override { pData += nPixel; }
+
+ virtual Color readPixel() override
+ {
+ const sal_uInt8 nIndex(*pData++);
+ if (nIndex < mrPalette.GetEntryCount())
+ return mrPalette[nIndex];
+ else
+ return COL_BLACK;
+ }
+
+ virtual void writePixel(Color nColor) override
+ {
+ *pData++ = static_cast<sal_uInt8>(mrPalette.GetBestIndex(nColor));
+ }
+};
+
+class ScanlineTransformer_4BitPalette final : public ScanlineTransformer
+{
+private:
+ sal_uInt8* pData;
+ const BitmapPalette& mrPalette;
+ sal_uInt32 mnX;
+ sal_uInt32 mnShift;
+
+public:
+ explicit ScanlineTransformer_4BitPalette(const BitmapPalette& rPalette)
+ : pData(nullptr)
+ , mrPalette(rPalette)
+ , mnX(0)
+ , mnShift(0)
+ {
+ }
+
+ virtual void skipPixel(sal_uInt32 nPixel) override
+ {
+ mnX += nPixel;
+ if (nPixel & 1) // is nPixel an odd number
+ mnShift ^= 4;
+ }
+
+ virtual void startLine(sal_uInt8* pLine) override
+ {
+ pData = pLine;
+ mnX = 0;
+ mnShift = 4;
+ }
+
+ virtual Color readPixel() override
+ {
+ const sal_uInt32 nDataIndex = mnX / 2;
+ const sal_uInt8 nIndex((pData[nDataIndex] >> mnShift) & 0x0f);
+ mnX++;
+ mnShift ^= 4;
+
+ if (nIndex < mrPalette.GetEntryCount())
+ return mrPalette[nIndex];
+ else
+ return COL_BLACK;
+ }
+
+ virtual void writePixel(Color nColor) override
+ {
+ const sal_uInt32 nDataIndex = mnX / 2;
+ const sal_uInt8 nColorIndex = mrPalette.GetBestIndex(nColor);
+ pData[nDataIndex] |= (nColorIndex & 0x0f) << mnShift;
+ mnX++;
+ mnShift ^= 4;
+ }
+};
+
+class ScanlineTransformer_1BitPalette final : public ScanlineTransformer
+{
+private:
+ sal_uInt8* pData;
+ const BitmapPalette& mrPalette;
+ sal_uInt32 mnX;
+
+public:
+ explicit ScanlineTransformer_1BitPalette(const BitmapPalette& rPalette)
+ : pData(nullptr)
+ , mrPalette(rPalette)
+ , mnX(0)
+ {
+ }
+
+ virtual void skipPixel(sal_uInt32 nPixel) override { mnX += nPixel; }
+
+ virtual void startLine(sal_uInt8* pLine) override
+ {
+ pData = pLine;
+ mnX = 0;
+ }
+
+ virtual Color readPixel() override
+ {
+ const sal_uInt8 nIndex((pData[mnX >> 3] >> (7 - (mnX & 7))) & 1);
+ mnX++;
+
+ if (nIndex < mrPalette.GetEntryCount())
+ return mrPalette[nIndex];
+ else
+ return COL_BLACK;
+ }
+
+ virtual void writePixel(Color nColor) override
+ {
+ if (mrPalette.GetBestIndex(nColor) & 1)
+ pData[mnX >> 3] |= 1 << (7 - (mnX & 7));
+ else
+ pData[mnX >> 3] &= ~(1 << (7 - (mnX & 7)));
+ mnX++;
+ }
+};
+
+std::unique_ptr<ScanlineTransformer> getScanlineTransformer(sal_uInt16 nBits,
+ const BitmapPalette& rPalette)
+{
+ switch (nBits)
+ {
+ case 1:
+ return std::make_unique<ScanlineTransformer_1BitPalette>(rPalette);
+ case 4:
+ return std::make_unique<ScanlineTransformer_4BitPalette>(rPalette);
+ case 8:
+ return std::make_unique<ScanlineTransformer_8BitPalette>(rPalette);
+ case 24:
+ return std::make_unique<ScanlineTransformer_BGR>();
+ case 32:
+ return std::make_unique<ScanlineTransformer_ARGB>();
+ default:
+ assert(false);
+ break;
+ }
+ return nullptr;
+}
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/inc/bitmap/bmpfast.hxx b/vcl/inc/bitmap/bmpfast.hxx
new file mode 100644
index 000000000..3234f7a84
--- /dev/null
+++ b/vcl/inc/bitmap/bmpfast.hxx
@@ -0,0 +1,51 @@
+/* -*- 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_INC_BMPFAST_HXX
+#define INCLUDED_VCL_INC_BMPFAST_HXX
+
+#include <vcl/dllapi.h>
+#include <vcl/Scanline.hxx>
+#include <tools/long.hxx>
+
+class BitmapWriteAccess;
+class BitmapReadAccess;
+struct BitmapBuffer;
+class BitmapColor;
+struct SalTwoRect;
+
+// the bmpfast functions have signatures with good compatibility to
+// their canonic counterparts, which employ the GetPixel/SetPixel methods
+
+VCL_DLLPUBLIC bool ImplFastBitmapConversion( BitmapBuffer& rDst, const BitmapBuffer& rSrc,
+ const SalTwoRect& rTwoRect );
+
+bool ImplFastCopyScanline( tools::Long nY, BitmapBuffer& rDst, const BitmapBuffer& rSrc);
+bool ImplFastCopyScanline( tools::Long nY, BitmapBuffer& rDst, ConstScanline aSrcScanline,
+ ScanlineFormat nSrcScanlineFormat, sal_uInt32 nSrcScanlineSize);
+
+bool ImplFastBitmapBlending( BitmapWriteAccess const & rDst,
+ const BitmapReadAccess& rSrc, const BitmapReadAccess& rMask,
+ const SalTwoRect& rTwoRect );
+
+bool ImplFastEraseBitmap( BitmapBuffer&, const BitmapColor& );
+
+#endif // INCLUDED_VCL_INC_BMPFAST_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/inc/bitmap/impoctree.hxx b/vcl/inc/bitmap/impoctree.hxx
new file mode 100644
index 000000000..3691e5c21
--- /dev/null
+++ b/vcl/inc/bitmap/impoctree.hxx
@@ -0,0 +1,110 @@
+/* -*- 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_INC_IMPOCTREE_HXX
+#define INCLUDED_VCL_INC_IMPOCTREE_HXX
+
+#include "Octree.hxx"
+
+class ImpErrorQuad
+{
+ sal_Int16 nRed;
+ sal_Int16 nGreen;
+ sal_Int16 nBlue;
+
+public:
+ ImpErrorQuad()
+ : nRed(0)
+ , nGreen(0)
+ , nBlue(0)
+ {
+ }
+
+ ImpErrorQuad(const BitmapColor& rColor)
+ : nRed(rColor.GetRed() << 5)
+ , nGreen(rColor.GetGreen() << 5)
+ , nBlue(rColor.GetBlue() << 5)
+ {
+ }
+
+ inline void operator=(const BitmapColor& rColor);
+ inline ImpErrorQuad& operator-=(const BitmapColor& rColor);
+
+ inline void ImplAddColorError1(const ImpErrorQuad& rErrQuad);
+ inline void ImplAddColorError3(const ImpErrorQuad& rErrQuad);
+ inline void ImplAddColorError5(const ImpErrorQuad& rErrQuad);
+ inline void ImplAddColorError7(const ImpErrorQuad& rErrQuad);
+
+ inline BitmapColor ImplGetColor() const;
+};
+
+inline void ImpErrorQuad::operator=(const BitmapColor& rColor)
+{
+ nRed = rColor.GetRed() << 5;
+ nGreen = rColor.GetGreen() << 5;
+ nBlue = rColor.GetBlue() << 5;
+}
+
+inline ImpErrorQuad& ImpErrorQuad::operator-=(const BitmapColor& rColor)
+{
+ nRed -= rColor.GetRed() << 5;
+ nGreen -= rColor.GetGreen() << 5;
+ nBlue -= rColor.GetBlue() << 5;
+
+ return *this;
+}
+
+inline void ImpErrorQuad::ImplAddColorError1(const ImpErrorQuad& rErrQuad)
+{
+ nRed += rErrQuad.nRed >> 4;
+ nGreen += rErrQuad.nGreen >> 4;
+ nBlue += rErrQuad.nBlue >> 4;
+}
+
+inline void ImpErrorQuad::ImplAddColorError3(const ImpErrorQuad& rErrQuad)
+{
+ nRed += rErrQuad.nRed * 3L >> 4;
+ nGreen += rErrQuad.nGreen * 3L >> 4;
+ nBlue += rErrQuad.nBlue * 3L >> 4;
+}
+
+inline void ImpErrorQuad::ImplAddColorError5(const ImpErrorQuad& rErrQuad)
+{
+ nRed += rErrQuad.nRed * 5L >> 4;
+ nGreen += rErrQuad.nGreen * 5L >> 4;
+ nBlue += rErrQuad.nBlue * 5L >> 4;
+}
+
+inline void ImpErrorQuad::ImplAddColorError7(const ImpErrorQuad& rErrQuad)
+{
+ nRed += rErrQuad.nRed * 7L >> 4;
+ nGreen += rErrQuad.nGreen * 7L >> 4;
+ nBlue += rErrQuad.nBlue * 7L >> 4;
+}
+
+inline BitmapColor ImpErrorQuad::ImplGetColor() const
+{
+ return BitmapColor(std::clamp(nRed, sal_Int16(0), sal_Int16(8160)) >> 5,
+ std::clamp(nGreen, sal_Int16(0), sal_Int16(8160)) >> 5,
+ std::clamp(nBlue, sal_Int16(0), sal_Int16(8160)) >> 5);
+}
+
+#endif // INCLUDED_VCL_INC_IMPOCTREE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/inc/bitmaps.hlst b/vcl/inc/bitmaps.hlst
new file mode 100644
index 000000000..4edd7b13b
--- /dev/null
+++ b/vcl/inc/bitmaps.hlst
@@ -0,0 +1,227 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
+/*
+ * 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/.
+ */
+#pragma once
+
+inline constexpr OUStringLiteral SV_RESID_BITMAP_CHECK1 = u"vcl/res/check1.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_CHECK2 = u"vcl/res/check2.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_CHECK3 = u"vcl/res/check3.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_CHECK4 = u"vcl/res/check4.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_CHECK5 = u"vcl/res/check5.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_CHECK6 = u"vcl/res/check6.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_CHECK7 = u"vcl/res/check7.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_CHECK8 = u"vcl/res/check8.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_CHECK9 = u"vcl/res/check9.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_CHECKMONO1 = u"vcl/res/checkmono1.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_CHECKMONO2 = u"vcl/res/checkmono2.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_CHECKMONO3 = u"vcl/res/checkmono3.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_CHECKMONO4 = u"vcl/res/checkmono4.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_CHECKMONO5 = u"vcl/res/checkmono5.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_CHECKMONO6 = u"vcl/res/checkmono6.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_CHECKMONO7 = u"vcl/res/checkmono7.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_CHECKMONO8 = u"vcl/res/checkmono8.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_CHECKMONO9 = u"vcl/res/checkmono9.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_RADIO1 = u"vcl/res/radio1.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_RADIO2 = u"vcl/res/radio2.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_RADIO3 = u"vcl/res/radio3.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_RADIO4 = u"vcl/res/radio4.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_RADIO5 = u"vcl/res/radio5.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_RADIO6 = u"vcl/res/radio6.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_RADIOMONO1 = u"vcl/res/radiomono1.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_RADIOMONO2 = u"vcl/res/radiomono2.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_RADIOMONO3 = u"vcl/res/radiomono3.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_RADIOMONO4 = u"vcl/res/radiomono4.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_RADIOMONO5 = u"vcl/res/radiomono5.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_RADIOMONO6 = u"vcl/res/radiomono6.png";
+
+inline constexpr OUStringLiteral SV_RESID_BITMAP_ERRORBOX = u"vcl/res/errorbox.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_QUERYBOX = u"vcl/res/querybox.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_WARNINGBOX = u"vcl/res/warningbox.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_INFOBOX = u"vcl/res/infobox.png";
+
+inline constexpr OUStringLiteral SV_RESID_BITMAP_SCROLLMSK = u"vcl/res/scrmsk.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_WHEELVH = u"vcl/res/wheelvh.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_WHEELV = u"vcl/res/wheelv.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_WHEELH = u"vcl/res/wheelh.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_SCROLLVH = u"vcl/res/scrollvh.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_SCROLLV = u"vcl/res/scrollv.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_SCROLLH = u"vcl/res/scrollh.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_CLOSEDOC = u"vcl/res/closedoc.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_REFRESH = u"res/reload.png";
+inline constexpr OUStringLiteral SV_RESID_BITMAP_NOTEBOOKBAR = u"res/notebookbar.png";
+
+inline constexpr OUStringLiteral SV_DISCLOSURE_PLUS = u"res/plus.png";
+inline constexpr OUStringLiteral SV_DISCLOSURE_MINUS = u"res/minus.png";
+
+inline constexpr OUStringLiteral SV_PRINT_COLLATE_BMP = u"vcl/res/collate.png";
+inline constexpr OUStringLiteral SV_PRINT_NOCOLLATE_BMP = u"vcl/res/ncollate.png";
+
+inline constexpr OUStringLiteral MAINAPP_48_8 = u"res/mainapp_48_8.png";
+inline constexpr OUStringLiteral ODT_48_8 = u"res/odt_48_8.png";
+inline constexpr OUStringLiteral OTT_48_8 = u"res/ott_48_8.png";
+inline constexpr OUStringLiteral ODS_48_8 = u"res/ods_48_8.png";
+inline constexpr OUStringLiteral OTS_48_8 = u"res/ots_48_8.png";
+inline constexpr OUStringLiteral ODG_48_8 = u"res/odg_48_8.png";
+inline constexpr OUStringLiteral ODP_48_8 = u"res/odp_48_8.png";
+inline constexpr OUStringLiteral ODM_48_8 = u"res/odm_48_8.png";
+inline constexpr OUStringLiteral ODB_48_8 = u"res/odb_48_8.png";
+inline constexpr OUStringLiteral ODF_48_8 = u"res/odf_48_8.png";
+
+inline constexpr OUStringLiteral MAINAPP_32_8 = u"res/mainapp_32_8.png";
+inline constexpr OUStringLiteral ODT_32_8 = u"res/odt_32_8.png";
+inline constexpr OUStringLiteral OTT_32_8 = u"res/ott_32_8.png";
+inline constexpr OUStringLiteral ODS_32_8 = u"res/ods_32_8.png";
+inline constexpr OUStringLiteral OTS_32_8 = u"res/ots_32_8.png";
+inline constexpr OUStringLiteral ODG_32_8 = u"res/odg_32_8.png";
+inline constexpr OUStringLiteral ODP_32_8 = u"res/odp_32_8.png";
+inline constexpr OUStringLiteral ODM_32_8 = u"res/odm_32_8.png";
+inline constexpr OUStringLiteral ODB_32_8 = u"res/odb_32_8.png";
+inline constexpr OUStringLiteral ODF_32_8 = u"res/odf_32_8.png";
+
+inline constexpr OUStringLiteral MAINAPP_16_8 = u"res/mainapp_16_8.png";
+inline constexpr OUStringLiteral ODT_16_8 = u"res/odt_16_8.png";
+inline constexpr OUStringLiteral OTT_16_8 = u"res/ott_16_8.png";
+inline constexpr OUStringLiteral ODS_16_8 = u"res/ods_16_8.png";
+inline constexpr OUStringLiteral OTS_16_8 = u"res/ots_16_8.png";
+inline constexpr OUStringLiteral ODG_16_8 = u"res/odg_16_8.png";
+inline constexpr OUStringLiteral ODP_16_8 = u"res/odp_16_8.png";
+inline constexpr OUStringLiteral ODM_16_8 = u"res/odm_16_8.png";
+inline constexpr OUStringLiteral ODB_16_8 = u"res/odb_16_8.png";
+inline constexpr OUStringLiteral ODF_16_8 = u"res/odf_16_8.png";
+
+//start, Throbber::getDefaultImageURLs constructs these dynamically (not unused)
+#define SPINNER_16_01 "vcl/res/spinner-16-01.png"
+#define SPINNER_16_02 "vcl/res/spinner-16-02.png"
+#define SPINNER_16_03 "vcl/res/spinner-16-03.png"
+#define SPINNER_16_04 "vcl/res/spinner-16-04.png"
+#define SPINNER_16_05 "vcl/res/spinner-16-05.png"
+#define SPINNER_16_06 "vcl/res/spinner-16-06.png"
+
+#define SPINNER_32_01 "vcl/res/spinner-32-01.png"
+#define SPINNER_32_02 "vcl/res/spinner-32-02.png"
+#define SPINNER_32_03 "vcl/res/spinner-32-03.png"
+#define SPINNER_32_04 "vcl/res/spinner-32-04.png"
+#define SPINNER_32_05 "vcl/res/spinner-32-05.png"
+#define SPINNER_32_06 "vcl/res/spinner-32-06.png"
+#define SPINNER_32_07 "vcl/res/spinner-32-07.png"
+#define SPINNER_32_08 "vcl/res/spinner-32-08.png"
+#define SPINNER_32_09 "vcl/res/spinner-32-09.png"
+#define SPINNER_32_10 "vcl/res/spinner-32-10.png"
+#define SPINNER_32_11 "vcl/res/spinner-32-11.png"
+#define SPINNER_32_12 "vcl/res/spinner-32-12.png"
+
+#define SPINNER_64_01 "vcl/res/spinner-64-01.png"
+#define SPINNER_64_02 "vcl/res/spinner-64-02.png"
+#define SPINNER_64_03 "vcl/res/spinner-64-03.png"
+#define SPINNER_64_04 "vcl/res/spinner-64-04.png"
+#define SPINNER_64_05 "vcl/res/spinner-64-05.png"
+#define SPINNER_64_06 "vcl/res/spinner-64-06.png"
+#define SPINNER_64_07 "vcl/res/spinner-64-07.png"
+#define SPINNER_64_08 "vcl/res/spinner-64-08.png"
+#define SPINNER_64_09 "vcl/res/spinner-64-09.png"
+#define SPINNER_64_10 "vcl/res/spinner-64-10.png"
+#define SPINNER_64_11 "vcl/res/spinner-64-11.png"
+#define SPINNER_64_12 "vcl/res/spinner-64-12.png"
+//end, Throbber::getDefaultImageURLs
+
+inline constexpr OUStringLiteral IMG_WARN = u"dbaccess/res/exwarning.png";
+inline constexpr OUStringLiteral IMG_ERROR = u"dbaccess/res/exerror.png";
+inline constexpr OUStringLiteral IMG_INFO = u"dbaccess/res/exinfo.png";
+inline constexpr OUStringLiteral IMG_ADD = u"extensions/res/scanner/plus.png";
+inline constexpr OUStringLiteral IMG_REMOVE = u"extensions/res/scanner/minus.png";
+inline constexpr OUStringLiteral IMG_COPY = u"cmd/sc_copy.png";
+inline constexpr OUStringLiteral IMG_PASTE = u"cmd/sc_paste.png";
+inline constexpr OUStringLiteral IMG_MENU = u"sfx2/res/menu.png";
+inline constexpr OUStringLiteral IMG_CALENDAR = u"sc/res/date.png";
+inline constexpr OUStringLiteral IMG_OPEN = u"cmd/sc_open.png";
+
+inline constexpr OUStringLiteral RID_BMP_TREENODE_COLLAPSED = u"res/plus.png";
+inline constexpr OUStringLiteral RID_BMP_TREENODE_EXPANDED = u"res/minus.png";
+
+inline constexpr OUStringLiteral RID_CURSOR_AUTOSCROLL_E = u"vcl/res/autoscroll_e.png";
+inline constexpr OUStringLiteral RID_CURSOR_AUTOSCROLL_N = u"vcl/res/autoscroll_n.png";
+inline constexpr OUStringLiteral RID_CURSOR_AUTOSCROLL_NE = u"vcl/res/autoscroll_ne.png";
+inline constexpr OUStringLiteral RID_CURSOR_AUTOSCROLL_NS = u"vcl/res/autoscroll_ns.png";
+inline constexpr OUStringLiteral RID_CURSOR_AUTOSCROLL_NSWE = u"vcl/res/autoscroll_nswe.png";
+inline constexpr OUStringLiteral RID_CURSOR_AUTOSCROLL_NW = u"vcl/res/autoscroll_nw.png";
+inline constexpr OUStringLiteral RID_CURSOR_AUTOSCROLL_S = u"vcl/res/autoscroll_s.png";
+inline constexpr OUStringLiteral RID_CURSOR_AUTOSCROLL_SE = u"vcl/res/autoscroll_se.png";
+inline constexpr OUStringLiteral RID_CURSOR_AUTOSCROLL_SW = u"vcl/res/autoscroll_sw.png";
+inline constexpr OUStringLiteral RID_CURSOR_AUTOSCROLL_W = u"vcl/res/autoscroll_w.png";
+inline constexpr OUStringLiteral RID_CURSOR_AUTOSCROLL_WE = u"vcl/res/autoscroll_we.png";
+inline constexpr OUStringLiteral RID_CURSOR_CHAIN = u"vcl/res/chain.png";
+inline constexpr OUStringLiteral RID_CURSOR_CHAIN_NOT_ALLOWED = u"vcl/res/chain_not_allowed.png";
+inline constexpr OUStringLiteral RID_CURSOR_CHART = u"vcl/res/chart.png";
+inline constexpr OUStringLiteral RID_CURSOR_COPY_DATA = u"vcl/res/copy_data.png";
+inline constexpr OUStringLiteral RID_CURSOR_COPY_DATA_LINK = u"vcl/res/copy_data_link.png";
+inline constexpr OUStringLiteral RID_CURSOR_COPY_FILE = u"vcl/res/copy_file.png";
+inline constexpr OUStringLiteral RID_CURSOR_COPY_FILES = u"vcl/res/copy_files.png";
+inline constexpr OUStringLiteral RID_CURSOR_COPY_FILE_LINK = u"vcl/res/copy_file_link.png";
+inline constexpr OUStringLiteral RID_CURSOR_CROOK = u"vcl/res/crook.png";
+inline constexpr OUStringLiteral RID_CURSOR_CROP = u"vcl/res/crop.png";
+inline constexpr OUStringLiteral RID_CURSOR_DRAW_ARC = u"vcl/res/draw_arc.png";
+inline constexpr OUStringLiteral RID_CURSOR_DRAW_BEZIER = u"vcl/res/draw_bezier.png";
+inline constexpr OUStringLiteral RID_CURSOR_DRAW_CAPTION = u"vcl/res/draw_caption.png";
+inline constexpr OUStringLiteral RID_CURSOR_DRAW_CIRCLE_CUT = u"vcl/res/draw_circle_cut.png";
+inline constexpr OUStringLiteral RID_CURSOR_DRAW_CONNECT = u"vcl/res/draw_connect.png";
+inline constexpr OUStringLiteral RID_CURSOR_DRAW_ELLIPSE = u"vcl/res/draw_ellipse.png";
+inline constexpr OUStringLiteral RID_CURSOR_DETECTIVE = u"vcl/res/detective.png";
+inline constexpr OUStringLiteral RID_CURSOR_DRAW_FREEHAND = u"vcl/res/draw_freehand.png";
+inline constexpr OUStringLiteral RID_CURSOR_DRAW_LINE = u"vcl/res/draw_line.png";
+inline constexpr OUStringLiteral RID_CURSOR_DRAW_PIE = u"vcl/res/draw_pie.png";
+inline constexpr OUStringLiteral RID_CURSOR_DRAW_POLYGON = u"vcl/res/draw_polygon.png";
+inline constexpr OUStringLiteral RID_CURSOR_DRAW_RECT = u"vcl/res/draw_rect.png";
+inline constexpr OUStringLiteral RID_CURSOR_DRAW_TEXT = u"vcl/res/draw_text.png";
+inline constexpr OUStringLiteral RID_CURSOR_FILL = u"vcl/res/fill.png";
+#define RID_CURSOR_HELP "vcl/res/help.png"
+inline constexpr OUStringLiteral RID_CURSOR_H_SHEAR = u"vcl/res/h_shear.png";
+inline constexpr OUStringLiteral RID_CURSOR_LINK_DATA = u"vcl/res/link_data.png";
+inline constexpr OUStringLiteral RID_CURSOR_LINK_FILE = u"vcl/res/link_file.png";
+inline constexpr OUStringLiteral RID_CURSOR_MAGNIFY = u"vcl/res/magnify.png";
+inline constexpr OUStringLiteral RID_CURSOR_MIRROR = u"vcl/res/mirror.png";
+inline constexpr OUStringLiteral RID_CURSOR_MOVE_BEZIER_WEIGHT = u"vcl/res/move_bezier_weight.png";
+inline constexpr OUStringLiteral RID_CURSOR_MOVE_DATA = u"vcl/res/move_data.png";
+inline constexpr OUStringLiteral RID_CURSOR_MOVE_DATA_LINK = u"vcl/res/move_data_link.png";
+inline constexpr OUStringLiteral RID_CURSOR_MOVE_FILE = u"vcl/res/move_file.png";
+inline constexpr OUStringLiteral RID_CURSOR_MOVE_FILES = u"vcl/res/move_files.png";
+inline constexpr OUStringLiteral RID_CURSOR_MOVE_FILE_LINK = u"vcl/res/move_file_link.png";
+inline constexpr OUStringLiteral RID_CURSOR_MOVE_POINT = u"vcl/res/move_point.png";
+inline constexpr OUStringLiteral RID_CURSOR_NOT_ALLOWED = u"vcl/res/not_allowed.png";
+inline constexpr OUStringLiteral RID_CURSOR_NULL = u"vcl/res/null.png";
+#define RID_CURSOR_PEN "vcl/res/pen.png"
+inline constexpr OUStringLiteral RID_CURSOR_PIVOT_COLUMN = u"vcl/res/pivot_column.png";
+inline constexpr OUStringLiteral RID_CURSOR_PIVOT_DELETE = u"vcl/res/pivot_delete.png";
+inline constexpr OUStringLiteral RID_CURSOR_PIVOT_FIELD = u"vcl/res/pivot_field.png";
+inline constexpr OUStringLiteral RID_CURSOR_PIVOT_ROW = u"vcl/res/pivot_row.png";
+inline constexpr OUStringLiteral RID_CURSOR_ROTATE = u"vcl/res/rotate.png";
+inline constexpr OUStringLiteral RID_CURSOR_TAB_SELECT_E = u"vcl/res/tab_select_e.png";
+inline constexpr OUStringLiteral RID_CURSOR_TAB_SELECT_S = u"vcl/res/tab_select_s.png";
+inline constexpr OUStringLiteral RID_CURSOR_TAB_SELECT_SE = u"vcl/res/tab_select_se.png";
+inline constexpr OUStringLiteral RID_CURSOR_TAB_SELECT_SW = u"vcl/res/tab_select_sw.png";
+inline constexpr OUStringLiteral RID_CURSOR_TAB_SELECT_W = u"vcl/res/tab_select_w.png";
+inline constexpr OUStringLiteral RID_CURSOR_V_SHEAR = u"vcl/res/v_shear.png";
+inline constexpr OUStringLiteral RID_CURSOR_TEXT_VERTICAL = u"vcl/res/text_vertical.png";
+inline constexpr OUStringLiteral RID_CURSOR_HIDE_WHITESPACE = u"vcl/res/hide_whitespace.png";
+inline constexpr OUStringLiteral RID_CURSOR_SHOW_WHITESPACE = u"vcl/res/show_whitespace.png";
+#define RID_CURSOR_WAIT "vcl/res/wait.png"
+#define RID_CURSOR_NWSIZE "vcl/res/nwsize.png"
+#define RID_CURSOR_NESIZE "vcl/res/nesize.png"
+#define RID_CURSOR_SWSIZE "vcl/res/swsize.png"
+#define RID_CURSOR_SESIZE "vcl/res/sesize.png"
+#define RID_CURSOR_WINDOW_NWSIZE "vcl/res/window_nwsize.png"
+#define RID_CURSOR_WINDOW_NESIZE "vcl/res/window_nesize.png"
+#define RID_CURSOR_WINDOW_SWSIZE "vcl/res/window_swsize.png"
+#define RID_CURSOR_WINDOW_SESIZE "vcl/res/window_sesize.png"
+inline constexpr OUStringLiteral RID_CURSOR_FATCROSS = u"vcl/res/fatcross.png";
+
+inline constexpr OUStringLiteral CHEVRON = u"sfx2/res/chevron.png";
+
+inline constexpr OUStringLiteral RID_UPDATE_AVAILABLE_16 = u"extensions/res/update/ui/onlineupdate_16.png";
+inline constexpr OUStringLiteral RID_UPDATE_AVAILABLE_26 = u"extensions/res/update/ui/onlineupdate_26.png";
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */