LO question about ImportGraphic and pExtHeader for EMF/WMF

Julien Nabet serval2412 at yahoo.fr
Wed May 18 08:01:06 UTC 2022


Hello Armin, Bartosz

Taking a look at ImportGraphic methods, I noticed one could be removed 
(see https://gerrit.libreoffice.org/c/core/+/134503).

Then I noticed this method in vcl/source/filter/graphicfilter.cxx:

78  ErrCode GraphicFilter::ImportGraphic( Graphic& rGraphic, 
std::u16string_view rPath, SvStream& rIStream,
1379                                       sal_uInt16 nFormat, 
sal_uInt16* pDeterminedFormat, GraphicFilterImportFlags nImportFlags,
1380                                       const css::uno::Sequence< 
css::beans::PropertyValue >* /*pFilterData*/,
1381                                       WmfExternal const *pExtHeader )

(see 
https://opengrok.libreoffice.org/xref/core/vcl/source/filter/graphicfilter.cxx?r=52dfeeb6#1378)

Default value for "pExtHeader" is nullptr in include/vcl/graphicfilter.hxx

     314     ErrCode             ImportGraphic( Graphic& rGraphic, 
std::u16string_view rPath,
     315                                    SvStream& rStream,
     316                                    sal_uInt16 nFormat = 
GRFILTER_FORMAT_DONTKNOW,
     317                                    sal_uInt16 * 
pDeterminedFormat = nullptr, GraphicFilterImportFlags nImportFlags = 
GraphicFilterImportFlags::NONE,
     318                                    WmfExternal const 
*pExtHeader = nullptr );

(see 
https://opengrok.libreoffice.org/xref/core/include/vcl/graphicfilter.hxx?r=d3849255#314)


"pExtHeader" has been added in 783269e91e2166357a9fb095e64a1d48e6f0601a 
"emfplus: completed isolation/migration of Emf/Wmf" (in June 2017)

and is only used for "readEMF" and "readWMF" methods which both call 
GraphicFilter::readWMF_EMF (see 
https://opengrok.libreoffice.org/xref/core/vcl/source/filter/graphicfilter.cxx?r=52dfeeb6#1164).

This last one uses pExtHeader here:

1196          if (pExtHeader)
1197          {
1198 aVectorGraphicDataPtr->setWmfExternalHeader(*pExtHeader);
1199          }


But when git grepping ImportGraphic in all LO code, "pExtHeader" was 
never defined and passed to "ImportGraphic" except in 
xmlsecurity/workben/pdfverify.cxx

      44     WmfExternal* pExtHeader = nullptr;
      45     if (rFilter.ImportGraphic(aGraphic, u"", aInStream, 
GRFILTER_FORMAT_DONTKNOW, nullptr,
      46 GraphicFilterImportFlags::NONE, pExtHeader)
      47         != ERRCODE_NONE)
      48         return;

(see 
https://opengrok.libreoffice.org/xref/core/xmlsecurity/workben/pdfverify.cxx?r=d3849255&mo=1042&fi=37#37)

so "setWmfExternalHeader" is never called and all "pExtHeader" parameter 
in each of the quoted methods seems useless.


Did I miss something? If no, can we remove this "pExtHeader" parameter 
and clean the related code or is it some basis to implement in the 
future a feature in EMF/WMF ?

Regards,

Julien



More information about the LibreOffice mailing list