vcl/Library_vcl.mk                |    1 
 vcl/inc/pdf/ResourceDict.hxx      |   42 ++++++++++++++++++++++++++
 vcl/source/gdi/pdfwriter_impl.cxx |   39 ------------------------
 vcl/source/gdi/pdfwriter_impl.hxx |   12 -------
 vcl/source/pdf/ResourceDict.cxx   |   60 ++++++++++++++++++++++++++++++++++++++
 5 files changed, 104 insertions(+), 50 deletions(-)

New commits:
commit 7c648f0d455e64e87861683454a3cc2c132a010a
Author:     Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk>
AuthorDate: Sun Dec 29 19:40:01 2019 +0100
Commit:     Tomaž Vajngerl <qui...@gmail.com>
CommitDate: Sun Dec 29 21:40:00 2019 +0100

    pdf: move struct ResourceDict to it's own file
    
    Change-Id: I60ee0e17c7945e053b9ada69d7abda57714dd388
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/85958
    Reviewed-by: Tomaž Vajngerl <qui...@gmail.com>
    Tested-by: Tomaž Vajngerl <qui...@gmail.com>

diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk
index 0bc271576da7..d557ce3f0bc4 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/pdf/ResourceDict \
     vcl/source/graphic/GraphicLoader \
     vcl/source/graphic/GraphicObject \
     vcl/source/graphic/GraphicObject2 \
diff --git a/vcl/inc/pdf/ResourceDict.hxx b/vcl/inc/pdf/ResourceDict.hxx
new file mode 100644
index 000000000000..8334e1f52c39
--- /dev/null
+++ b/vcl/inc/pdf/ResourceDict.hxx
@@ -0,0 +1,42 @@
+/* -*- 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_PDF_RESOURCEDICT_HXX
+#define INCLUDED_VCL_INC_PDF_RESOURCEDICT_HXX
+
+#include <vcl/dllapi.h>
+#include <rtl/strbuf.hxx>
+#include <map>
+
+namespace vcl::pdf
+{
+enum ResourceKind
+{
+    ResXObject,
+    ResExtGState,
+    ResShading,
+    ResPattern
+};
+
+struct ResourceDict
+{
+    // note: handle fonts globally for performance
+    std::map<OString, sal_Int32> m_aXObjects;
+    std::map<OString, sal_Int32> m_aExtGStates;
+    std::map<OString, sal_Int32> m_aShadings;
+    std::map<OString, sal_Int32> m_aPatterns;
+
+    void append(OStringBuffer& rBuffer, sal_Int32 nFontDictObject);
+};
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/source/gdi/pdfwriter_impl.cxx 
b/vcl/source/gdi/pdfwriter_impl.cxx
index 553c109dcafb..3d500ce15e99 100644
--- a/vcl/source/gdi/pdfwriter_impl.cxx
+++ b/vcl/source/gdi/pdfwriter_impl.cxx
@@ -683,45 +683,6 @@ void Matrix3::append( PDFWriterImpl::PDFPage const & 
rPage, OStringBuffer& rBuff
     rPage.appendPoint( Point( static_cast<long>(f[4]), static_cast<long>(f[5]) 
), rBuffer );
 }
 
-static void appendResourceMap( OStringBuffer& rBuf, const char* pPrefix, 
std::map<OString, sal_Int32> const & rList )
-{
-    if( rList.empty() )
-        return;
-    rBuf.append( '/' );
-    rBuf.append( pPrefix );
-    rBuf.append( "<<" );
-    int ni = 0;
-    for (auto const& item : rList)
-    {
-        if( !item.first.isEmpty() && item.second > 0 )
-        {
-            rBuf.append( '/' );
-            rBuf.append( item.first );
-            rBuf.append( ' ' );
-            rBuf.append( item.second );
-            rBuf.append( " 0 R" );
-            if( ((++ni) & 7) == 0 )
-                rBuf.append( '\n' );
-        }
-    }
-    rBuf.append( ">>\n" );
-}
-
-void PDFWriterImpl::ResourceDict::append( OStringBuffer& rBuf, sal_Int32 
nFontDictObject )
-{
-    rBuf.append( "<</Font " );
-    rBuf.append( nFontDictObject );
-    rBuf.append( " 0 R\n" );
-    appendResourceMap( rBuf, "XObject", m_aXObjects );
-    appendResourceMap( rBuf, "ExtGState", m_aExtGStates );
-    appendResourceMap( rBuf, "Shading", m_aShadings );
-    appendResourceMap( rBuf, "Pattern", m_aPatterns );
-    rBuf.append( "/ProcSet[/PDF/Text" );
-    if( !m_aXObjects.empty() )
-        rBuf.append( "/ImageC/ImageI/ImageB" );
-    rBuf.append( "]\n>>\n" );
-};
-
 PDFWriterImpl::PDFPage::PDFPage( PDFWriterImpl* pWriter, double nPageWidth, 
double nPageHeight, PDFWriter::Orientation eOrientation )
         :
         m_pWriter( pWriter ),
diff --git a/vcl/source/gdi/pdfwriter_impl.hxx 
b/vcl/source/gdi/pdfwriter_impl.hxx
index 4ce2112715a9..0420567ef5ba 100644
--- a/vcl/source/gdi/pdfwriter_impl.hxx
+++ b/vcl/source/gdi/pdfwriter_impl.hxx
@@ -25,6 +25,7 @@
 #include <memory>
 #include <vector>
 
+#include <pdf/ResourceDict.hxx>
 #include <pdf/BitmapID.hxx>
 
 #include <com/sun/star/lang/Locale.hpp>
@@ -103,17 +104,6 @@ class PDFWriterImpl : public VirtualDevice
     friend class PDFStreamIf;
 
 public:
-    enum ResourceKind { ResXObject, ResExtGState, ResShading, ResPattern };
-    struct ResourceDict
-    {
-        // note: handle fonts globally for performance
-        std::map<OString, sal_Int32> m_aXObjects;
-        std::map<OString, sal_Int32> m_aExtGStates;
-        std::map<OString, sal_Int32> m_aShadings;
-        std::map<OString, sal_Int32> m_aPatterns;
-
-        void append( OStringBuffer&, sal_Int32 nFontDictObject );
-    };
 
     struct PDFPage
     {
diff --git a/vcl/source/pdf/ResourceDict.cxx b/vcl/source/pdf/ResourceDict.cxx
new file mode 100644
index 000000000000..3490da30b899
--- /dev/null
+++ b/vcl/source/pdf/ResourceDict.cxx
@@ -0,0 +1,60 @@
+/* -*- 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/.
+ *
+ */
+
+#include <pdf/ResourceDict.hxx>
+
+namespace vcl::pdf
+{
+namespace
+{
+void appendResourceMap(OStringBuffer& rBuf, const char* pPrefix,
+                       std::map<OString, sal_Int32> const& rList)
+{
+    if (rList.empty())
+        return;
+    rBuf.append('/');
+    rBuf.append(pPrefix);
+    rBuf.append("<<");
+    int ni = 0;
+    for (auto const& item : rList)
+    {
+        if (!item.first.isEmpty() && item.second > 0)
+        {
+            rBuf.append('/');
+            rBuf.append(item.first);
+            rBuf.append(' ');
+            rBuf.append(item.second);
+            rBuf.append(" 0 R");
+            if (((++ni) & 7) == 0)
+                rBuf.append('\n');
+        }
+    }
+    rBuf.append(">>\n");
+}
+}
+
+void ResourceDict::append(OStringBuffer& rBuf, sal_Int32 nFontDictObject)
+{
+    rBuf.append("<</Font ");
+    rBuf.append(nFontDictObject);
+    rBuf.append(" 0 R\n");
+    appendResourceMap(rBuf, "XObject", m_aXObjects);
+    appendResourceMap(rBuf, "ExtGState", m_aExtGStates);
+    appendResourceMap(rBuf, "Shading", m_aShadings);
+    appendResourceMap(rBuf, "Pattern", m_aPatterns);
+    rBuf.append("/ProcSet[/PDF/Text");
+    if (!m_aXObjects.empty())
+        rBuf.append("/ImageC/ImageI/ImageB");
+    rBuf.append("]\n>>\n");
+}
+
+} // end vcl::pdf
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to