[Libreoffice-commits] core.git: svx/source sw/source vcl/source

Miklos Vajna vmiklos at collabora.co.uk
Mon Jun 27 10:39:25 UTC 2016


 svx/source/xml/xmlgrhlp.cxx      |    2 ++
 sw/source/core/graphic/ndgrf.cxx |    3 +++
 vcl/source/gdi/impgraph.cxx      |    4 ++++
 3 files changed, 9 insertions(+)

New commits:
commit fda68426374ed915783fd306c2f56463c757774a
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Mon Jun 27 11:26:57 2016 +0200

    ODT export: add embedded pdf support
    
    Once a .pdf file is inserted in Writer using Insert -> Image, Writer now
    advertises a replacement metafile for it (to make LO <= 5.2 and other
    ODF readers still be able to read the graphic, where the replacement is
    the same as the original metafile, but without .pdf data), and the ODF
    export writes the .pdf data with the correct extension / mime type.
    
    Also extend the checksum logic to take care of the pdf data, so on
    export xmloff won't think that the full and the replacement graphic are
    the same.
    
    The import side is still missing, so no testcase yet.
    
    Change-Id: I5c5b7c80ca4024ecbcb5b2d4442d21ca33755546
    Reviewed-on: https://gerrit.libreoffice.org/26695
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
    Tested-by: Jenkins <ci at libreoffice.org>

diff --git a/svx/source/xml/xmlgrhlp.cxx b/svx/source/xml/xmlgrhlp.cxx
index 6422c16..66f2a18 100644
--- a/svx/source/xml/xmlgrhlp.cxx
+++ b/svx/source/xml/xmlgrhlp.cxx
@@ -473,6 +473,7 @@ OUString SvXMLGraphicHelper::ImplGetGraphicMimeType( const OUString& rFileName )
         { "jpg", "image/jpeg" },
         { "tif", "image/tiff" },
         { "svg", "image/svg+xml" },
+        { "pdf", "application/pdf" },
         { "wmf", "image/x-wmf" },
         { "eps", "image/x-eps" },
         { "bmp", "image/bmp" },
@@ -691,6 +692,7 @@ void SvXMLGraphicHelper::ImplInsertGraphicURL( const OUString& rURLStr, sal_uInt
                             else
                                 aExtension = ".svg";
                             break;
+                        case GfxLinkType::NativePdf: aExtension = ".pdf"; break;
 
                         default:
                             aExtension = ".grf";
diff --git a/sw/source/core/graphic/ndgrf.cxx b/sw/source/core/graphic/ndgrf.cxx
index 7b51313..97e1b6c 100644
--- a/sw/source/core/graphic/ndgrf.cxx
+++ b/sw/source/core/graphic/ndgrf.cxx
@@ -402,6 +402,9 @@ const GraphicObject* SwGrfNode::GetReplacementGrfObj() const
         {
             const_cast< SwGrfNode* >(this)->mpReplacementGraphic = new GraphicObject(rSvgDataPtr->getReplacement());
         }
+        else if (GetGrfObj().GetGraphic().getPdfData().hasElements())
+            // This returns the metafile, without the pdf data.
+            const_cast<SwGrfNode*>(this)->mpReplacementGraphic = new GraphicObject(GetGrfObj().GetGraphic().GetGDIMetaFile());
     }
 
     return mpReplacementGraphic;
diff --git a/vcl/source/gdi/impgraph.cxx b/vcl/source/gdi/impgraph.cxx
index 933a0a6..25d82d8 100644
--- a/vcl/source/gdi/impgraph.cxx
+++ b/vcl/source/gdi/impgraph.cxx
@@ -1406,6 +1406,10 @@ BitmapChecksum ImpGraphic::ImplGetChecksum() const
 
             default:
                 nRet = maMetaFile.GetChecksum();
+                if (maPdfData.hasElements())
+                    // Include the PDF data in the checksum, so a metafile with
+                    // and without PDF data is considered to be different.
+                    nRet = vcl_get_checksum(nRet, maPdfData.getConstArray(), maPdfData.getLength());
             break;
         }
     }


More information about the Libreoffice-commits mailing list