Kaydet (Commit) f7d3fc13 authored tarafından Tomaž Vajngerl's avatar Tomaž Vajngerl Kaydeden (comit) Tomaž Vajngerl

xmloff: remove "GraphicURL" from XMLShapeExport

Change-Id: If1967a7d87a934e2eea776bcd41b305e800f711a
Reviewed-on: https://gerrit.libreoffice.org/50790Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarTomaž Vajngerl <quikee@gmail.com>
üst 27008aa0
...@@ -2356,56 +2356,38 @@ void XMLShapeExport::ImpExportGraphicObjectShape( ...@@ -2356,56 +2356,38 @@ void XMLShapeExport::ImpExportGraphicObjectShape(
const bool bSaveBackwardsCompatible = bool( mrExport.getExportFlags() & SvXMLExportFlags::SAVEBACKWARDCOMPATIBLE ); const bool bSaveBackwardsCompatible = bool( mrExport.getExportFlags() & SvXMLExportFlags::SAVEBACKWARDCOMPATIBLE );
OUString sImageURL; if (!bIsEmptyPresObj || bSaveBackwardsCompatible)
uno::Reference<graphic::XGraphic> xGraphic;
if( !bIsEmptyPresObj || bSaveBackwardsCompatible )
{ {
if( !bIsEmptyPresObj ) uno::Reference<graphic::XGraphic> xGraphic;
OUString sOutMimeType;
if (!bIsEmptyPresObj)
{ {
OUString aStreamURL; OUString aStreamURL;
xPropSet->getPropertyValue("GraphicStreamURL") >>= aStreamURL; xPropSet->getPropertyValue("GraphicStreamURL") >>= aStreamURL;
OUString sRequestedName = getNameFromStreamURL(aStreamURL); OUString sRequestedName = getNameFromStreamURL(aStreamURL);
xPropSet->getPropertyValue("GraphicURL") >>= sImageURL; xPropSet->getPropertyValue("Graphic") >>= xGraphic;
uno::Any aGraphicAny = xPropSet->getPropertyValue("Graphic");
if (aGraphicAny.has<uno::Reference<graphic::XGraphic>>())
xGraphic = aGraphicAny.get<uno::Reference<graphic::XGraphic>>();
OUString aStoredURL; OUString sInternalURL;
if (xGraphic.is()) if (xGraphic.is())
{ sInternalURL = mrExport.AddEmbeddedXGraphic(xGraphic, sOutMimeType, sRequestedName);
aStoredURL = mrExport.AddEmbeddedXGraphic(xGraphic, sRequestedName);
}
else
{
OUString aResolveURL(sImageURL);
if (!sRequestedName.isEmpty())
aResolveURL += "?requestedName=" + sRequestedName;
aStoredURL = mrExport.AddEmbeddedGraphicObject(aResolveURL);
}
mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_HREF, aStoredURL);
if (!aStoredURL.isEmpty()) if (!sInternalURL.isEmpty())
{ {
const OUString sPackageURL("vnd.sun.star.Package:");
// apply possible changed stream URL to embedded image object // apply possible changed stream URL to embedded image object
if (!sRequestedName.isEmpty()) if (!sRequestedName.isEmpty())
{ {
const OUString sPackageURL("vnd.sun.star.Package:");
OUString newStreamURL = sPackageURL; OUString newStreamURL = sPackageURL;
if (aStoredURL[0] == '#') if (sInternalURL[0] == '#')
{ {
newStreamURL += aStoredURL.copy(1, aStoredURL.getLength() - 1); newStreamURL += sInternalURL.copy(1, sInternalURL.getLength() - 1);
} }
else else
{ {
newStreamURL += aStoredURL; newStreamURL += sInternalURL;
} }
if (newStreamURL != aStreamURL) if (newStreamURL != aStreamURL)
...@@ -2414,40 +2396,44 @@ void XMLShapeExport::ImpExportGraphicObjectShape( ...@@ -2414,40 +2396,44 @@ void XMLShapeExport::ImpExportGraphicObjectShape(
} }
} }
mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE ); mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_HREF, sInternalURL);
mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_SHOW, XML_EMBED ); mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE);
mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_ACTUATE, XML_ONLOAD ); mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_SHOW, XML_EMBED);
mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_ACTUATE, XML_ONLOAD);
} }
} }
else else
{ {
mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_HREF, OUString() ); mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_HREF, OUString());
mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE ); mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE);
mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_SHOW, XML_EMBED ); mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_SHOW, XML_EMBED);
mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_ACTUATE, XML_ONLOAD ); mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_ACTUATE, XML_ONLOAD);
} }
{ {
// We can't guess the mimetype from sImageURL because the image type might be changed if (GetExport().getDefaultVersion() > SvtSaveOptions::ODFVER_012)
// while creating the stream (by SvXMLGraphicInputStream). So we first need to create
// the stream, get the mime type and then write the stream.
uno::Reference<io::XInputStream> xInputStream(
mrExport.GetEmbeddedGraphicObjectStream(sImageURL));
OUString aMimeType(
comphelper::GraphicMimeTypeHelper::GetMimeTypeForImageStream(xInputStream));
if (!aMimeType.isEmpty())
GetExport().AddAttribute(XML_NAMESPACE_LO_EXT, "mime-type", aMimeType);
ImpExportSignatureLine( xShape );
SvXMLElementExport aOBJ(mrExport, XML_NAMESPACE_DRAW, XML_IMAGE, true, true);
if( !sImageURL.isEmpty() )
{ {
// optional office:binary-data if (sOutMimeType.isEmpty())
mrExport.AddEmbeddedGraphicObjectAsBase64( sImageURL ); {
GetExport().GetGraphicMimeTypeFromStream(xGraphic, sOutMimeType);
}
if (!sOutMimeType.isEmpty())
{
GetExport().AddAttribute(XML_NAMESPACE_LO_EXT, "mime-type", sOutMimeType);
}
} }
if( !bIsEmptyPresObj )
ImpExportText( xShape ); ImpExportSignatureLine(xShape);
SvXMLElementExport aElement(mrExport, XML_NAMESPACE_DRAW, XML_IMAGE, true, true);
// optional office:binary-data
if (xGraphic.is())
{
mrExport.AddEmbeddedXGraphicAsBase64(xGraphic);
}
if (!bIsEmptyPresObj)
ImpExportText(xShape);
} }
//Resolves: fdo#62461 put preferred image first above, followed by //Resolves: fdo#62461 put preferred image first above, followed by
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment