summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2020-02-24 23:02:20 +0100
committerTomaž Vajngerl <quikee@gmail.com>2020-06-06 19:23:18 +0200
commite8b78a64a635b8599df0b3d35d1726f31c2e8560 (patch)
treecced63296ba381861c64ac3fee72cdaeda7d0706 /vcl
parent9103f62a0d2bf61b2135dd017e279cb95a399032 (diff)
vcl: move GraphicID out of impgraph.{cxx,hxx}
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/89449 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com> (cherry picked from commit b6bc43f354bcbe6a98db9fb372fd47bc5b23f4d8) Change-Id: I0b3b17736a76be290f6e5b77ee547b7e650d4489 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/95616 Tested-by: Tomaž Vajngerl <quikee@gmail.com> Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Diffstat (limited to 'vcl')
-rw-r--r--vcl/Library_vcl.mk1
-rw-r--r--vcl/inc/graphic/GraphicID.hxx47
-rw-r--r--vcl/inc/impgraph.hxx21
-rw-r--r--vcl/source/gdi/impgraph.cxx83
-rw-r--r--vcl/source/graphic/GraphicID.cxx112
5 files changed, 161 insertions, 103 deletions
diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk
index a88bec146536..06df252a7c26 100644
--- a/vcl/Library_vcl.mk
+++ b/vcl/Library_vcl.mk
@@ -316,6 +316,7 @@ $(eval $(call gb_Library_add_exception_objects,vcl,\
vcl/source/gdi/scrptrun \
vcl/source/gdi/CommonSalLayout \
vcl/source/gdi/TypeSerializer \
+ vcl/source/graphic/GraphicID \
vcl/source/graphic/GraphicLoader \
vcl/source/graphic/GraphicObject \
vcl/source/graphic/GraphicObject2 \
diff --git a/vcl/inc/graphic/GraphicID.hxx b/vcl/inc/graphic/GraphicID.hxx
new file mode 100644
index 000000000000..87ac6a50f37a
--- /dev/null
+++ b/vcl/inc/graphic/GraphicID.hxx
@@ -0,0 +1,47 @@
+/* -*- 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 .
+ */
+
+#pragma once
+
+#include <vcl/dllapi.h>
+#include <rtl/string.hxx>
+#include <vcl/checksum.hxx>
+
+class ImpGraphic;
+
+class GraphicID
+{
+private:
+ sal_uInt32 mnID1;
+ sal_uInt32 mnID2;
+ sal_uInt32 mnID3;
+ BitmapChecksum mnID4;
+
+public:
+ GraphicID(ImpGraphic const& rGraphic);
+
+ bool operator==(const GraphicID& rID) const
+ {
+ return rID.mnID1 == mnID1 && rID.mnID2 == mnID2 && rID.mnID3 == mnID3 && rID.mnID4 == mnID4;
+ }
+
+ OString getIDString() const;
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/inc/impgraph.hxx b/vcl/inc/impgraph.hxx
index 159b70a691e0..62a44b7e17a9 100644
--- a/vcl/inc/impgraph.hxx
+++ b/vcl/inc/impgraph.hxx
@@ -24,6 +24,7 @@
#include <vcl/gdimtf.hxx>
#include <vcl/graph.hxx>
#include "graphic/Manager.hxx"
+#include "graphic/GraphicID.hxx"
struct ImpSwapInfo
{
@@ -45,26 +46,6 @@ struct ImpSwapFile;
class GraphicConversionParameters;
class ImpGraphic;
-class GraphicID
-{
-private:
- sal_uInt32 mnID1;
- sal_uInt32 mnID2;
- sal_uInt32 mnID3;
- BitmapChecksum mnID4;
-
-public:
- GraphicID(ImpGraphic const & rGraphic);
-
- bool operator==(const GraphicID& rID) const
- {
- return rID.mnID1 == mnID1 && rID.mnID2 == mnID2 &&
- rID.mnID3 == mnID3 && rID.mnID4 == mnID4;
- }
-
- OString getIDString() const;
-};
-
class ImpGraphic final
{
friend class Graphic;
diff --git a/vcl/source/gdi/impgraph.cxx b/vcl/source/gdi/impgraph.cxx
index 673efbe26b45..e55fb7f12395 100644
--- a/vcl/source/gdi/impgraph.cxx
+++ b/vcl/source/gdi/impgraph.cxx
@@ -69,89 +69,6 @@ struct ImpSwapFile
~ImpSwapFile();
};
-GraphicID::GraphicID(ImpGraphic const & rGraphic)
-{
- rGraphic.ensureAvailable();
-
- mnID1 = static_cast<sal_uLong>(rGraphic.ImplGetType()) << 28;
- mnID2 = mnID3 = mnID4 = 0;
-
- if (rGraphic.ImplGetType() == GraphicType::Bitmap)
- {
- if (rGraphic.getVectorGraphicData().get())
- {
- const VectorGraphicDataPtr& rVectorGraphicDataPtr = rGraphic.getVectorGraphicData();
- const basegfx::B2DRange& rRange = rVectorGraphicDataPtr->getRange();
-
- mnID1 |= rVectorGraphicDataPtr->getVectorGraphicDataArrayLength();
- mnID2 = basegfx::fround(rRange.getWidth());
- mnID3 = basegfx::fround(rRange.getHeight());
- mnID4 = vcl_get_checksum(0, rVectorGraphicDataPtr->getVectorGraphicDataArray().getConstArray(), rVectorGraphicDataPtr->getVectorGraphicDataArrayLength());
- }
- else if (rGraphic.hasPdfData())
- {
- std::shared_ptr<std::vector<sal_Int8>> pPdfData = rGraphic.getPdfData();
- const BitmapEx& rBmpEx = rGraphic.ImplGetBitmapExRef();
-
- mnID1 |= (rGraphic.mnPageNumber & 0x0fffffff);
- mnID2 = rBmpEx.GetSizePixel().Width();
- mnID3 = rBmpEx.GetSizePixel().Height();
- mnID4 = vcl_get_checksum(0, pPdfData->data(), pPdfData->size());
- }
- else if (rGraphic.ImplIsAnimated())
- {
- const Animation aAnimation(rGraphic.ImplGetAnimation());
-
- mnID1 |= ( aAnimation.Count() & 0x0fffffff );
- mnID2 = aAnimation.GetDisplaySizePixel().Width();
- mnID3 = aAnimation.GetDisplaySizePixel().Height();
- mnID4 = rGraphic.ImplGetChecksum();
- }
- else
- {
- const BitmapEx aBmpEx(rGraphic.ImplGetBitmapEx(GraphicConversionParameters()));
-
- mnID1 |= ( ( ( static_cast<sal_uLong>(aBmpEx.GetTransparentType()) << 8 ) | ( aBmpEx.IsAlpha() ? 1 : 0 ) ) & 0x0fffffff );
- mnID2 = aBmpEx.GetSizePixel().Width();
- mnID3 = aBmpEx.GetSizePixel().Height();
- mnID4 = rGraphic.ImplGetChecksum();
- }
- }
- else if (rGraphic.ImplGetType() == GraphicType::GdiMetafile)
- {
- const GDIMetaFile& rMtf = rGraphic.ImplGetGDIMetaFile();
-
- mnID1 |= ( rMtf.GetActionSize() & 0x0fffffff );
- mnID2 = rMtf.GetPrefSize().Width();
- mnID3 = rMtf.GetPrefSize().Height();
- mnID4 = rGraphic.ImplGetChecksum();
- }
-}
-
-OString GraphicID::getIDString() const
-{
- static const char aHexData[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
-
- sal_Int32 nShift, nIndex = 0;
- sal_Int32 nLen = 24 + (2 * BITMAP_CHECKSUM_SIZE);
- OStringBuffer aHexStr(nLen);
- aHexStr.setLength(nLen);
-
- for( nShift = 28; nShift >= 0; nShift -= 4 )
- aHexStr[nIndex++] = aHexData[ ( mnID1 >> static_cast<sal_uInt32>(nShift) ) & 0xf ];
-
- for( nShift = 28; nShift >= 0; nShift -= 4 )
- aHexStr[nIndex++] = aHexData[ ( mnID2 >> static_cast<sal_uInt32>(nShift) ) & 0xf ];
-
- for( nShift = 28; nShift >= 0; nShift -= 4 )
- aHexStr[nIndex++] = aHexData[ ( mnID3 >> static_cast<sal_uInt32>(nShift) ) & 0xf ];
-
- for( nShift = ( 8 * BITMAP_CHECKSUM_SIZE ) - 4; nShift >= 0; nShift -= 4 )
- aHexStr[nIndex++] = aHexData[ ( mnID4 >> static_cast<sal_uInt32>(nShift) ) & 0xf ];
-
- return aHexStr.makeStringAndClear();
-}
-
ImpGraphic::ImpGraphic() :
meType ( GraphicType::NONE ),
mnSizeBytes ( 0 ),
diff --git a/vcl/source/graphic/GraphicID.cxx b/vcl/source/graphic/GraphicID.cxx
new file mode 100644
index 000000000000..7220853b998b
--- /dev/null
+++ b/vcl/source/graphic/GraphicID.cxx
@@ -0,0 +1,112 @@
+/* -*- 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 .
+ */
+
+#include <graphic/GraphicID.hxx>
+
+#include <impgraph.hxx>
+
+GraphicID::GraphicID(ImpGraphic const& rGraphic)
+{
+ rGraphic.ensureAvailable();
+
+ mnID1 = static_cast<sal_uLong>(rGraphic.ImplGetType()) << 28;
+ mnID2 = mnID3 = mnID4 = 0;
+
+ if (rGraphic.ImplGetType() == GraphicType::Bitmap)
+ {
+ if (rGraphic.getVectorGraphicData().get())
+ {
+ const VectorGraphicDataPtr& rVectorGraphicDataPtr = rGraphic.getVectorGraphicData();
+ const basegfx::B2DRange& rRange = rVectorGraphicDataPtr->getRange();
+
+ mnID1 |= rVectorGraphicDataPtr->getVectorGraphicDataArrayLength();
+ mnID2 = basegfx::fround(rRange.getWidth());
+ mnID3 = basegfx::fround(rRange.getHeight());
+ mnID4 = vcl_get_checksum(
+ 0, rVectorGraphicDataPtr->getVectorGraphicDataArray().getConstArray(),
+ rVectorGraphicDataPtr->getVectorGraphicDataArrayLength());
+ }
+ else if (rGraphic.hasPdfData())
+ {
+ std::shared_ptr<std::vector<sal_Int8>> pPdfData = rGraphic.getPdfData();
+ const BitmapEx& rBmpEx = rGraphic.ImplGetBitmapExRef();
+
+ mnID1 |= (rGraphic.mnPageNumber & 0x0fffffff);
+ mnID2 = rBmpEx.GetSizePixel().Width();
+ mnID3 = rBmpEx.GetSizePixel().Height();
+ mnID4 = vcl_get_checksum(0, pPdfData->data(), pPdfData->size());
+ }
+ else if (rGraphic.ImplIsAnimated())
+ {
+ const Animation aAnimation(rGraphic.ImplGetAnimation());
+
+ mnID1 |= (aAnimation.Count() & 0x0fffffff);
+ mnID2 = aAnimation.GetDisplaySizePixel().Width();
+ mnID3 = aAnimation.GetDisplaySizePixel().Height();
+ mnID4 = rGraphic.ImplGetChecksum();
+ }
+ else
+ {
+ const BitmapEx aBmpEx(rGraphic.ImplGetBitmapEx(GraphicConversionParameters()));
+
+ mnID1 |= (((static_cast<sal_uLong>(aBmpEx.GetTransparentType()) << 8)
+ | (aBmpEx.IsAlpha() ? 1 : 0))
+ & 0x0fffffff);
+ mnID2 = aBmpEx.GetSizePixel().Width();
+ mnID3 = aBmpEx.GetSizePixel().Height();
+ mnID4 = rGraphic.ImplGetChecksum();
+ }
+ }
+ else if (rGraphic.ImplGetType() == GraphicType::GdiMetafile)
+ {
+ const GDIMetaFile& rMtf = rGraphic.ImplGetGDIMetaFile();
+
+ mnID1 |= (rMtf.GetActionSize() & 0x0fffffff);
+ mnID2 = rMtf.GetPrefSize().Width();
+ mnID3 = rMtf.GetPrefSize().Height();
+ mnID4 = rGraphic.ImplGetChecksum();
+ }
+}
+
+OString GraphicID::getIDString() const
+{
+ static const char aHexData[]
+ = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
+
+ sal_Int32 nShift, nIndex = 0;
+ sal_Int32 nLen = 24 + (2 * BITMAP_CHECKSUM_SIZE);
+ OStringBuffer aHexStr(nLen);
+ aHexStr.setLength(nLen);
+
+ for (nShift = 28; nShift >= 0; nShift -= 4)
+ aHexStr[nIndex++] = aHexData[(mnID1 >> static_cast<sal_uInt32>(nShift)) & 0xf];
+
+ for (nShift = 28; nShift >= 0; nShift -= 4)
+ aHexStr[nIndex++] = aHexData[(mnID2 >> static_cast<sal_uInt32>(nShift)) & 0xf];
+
+ for (nShift = 28; nShift >= 0; nShift -= 4)
+ aHexStr[nIndex++] = aHexData[(mnID3 >> static_cast<sal_uInt32>(nShift)) & 0xf];
+
+ for (nShift = (8 * BITMAP_CHECKSUM_SIZE) - 4; nShift >= 0; nShift -= 4)
+ aHexStr[nIndex++] = aHexData[(mnID4 >> static_cast<sal_uInt32>(nShift)) & 0xf];
+
+ return aHexStr.makeStringAndClear();
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */