[Libreoffice-commits] core.git: 2 commits - include/xmloff xmloff/source
Tomaž Vajngerl
tomaz.vajngerl at collabora.co.uk
Sun Mar 11 00:51:21 UTC 2018
include/xmloff/xmlimp.hxx | 5 --
xmloff/source/core/xmlimp.cxx | 38 ----------------------
xmloff/source/draw/XMLReplacementImageContext.cxx | 37 ++++++++++++---------
xmloff/source/forms/elementimport.cxx | 31 +++++++++++------
xmloff/source/forms/elementimport.hxx | 2 +
xmloff/source/forms/layerimport.cxx | 4 --
xmloff/source/forms/propertyexport.hxx | 2 -
xmloff/source/forms/strings.hxx | 2 -
8 files changed, 46 insertions(+), 75 deletions(-)
New commits:
commit 7ba32a63cf6064b5ad6e27c95ea3d9fa01ef19b1
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
Date: Sat Mar 10 22:27:12 2018 +0900
xmloff: convert replacement image loading to use "Graphic" prop.
With this change ResolveGraphicObjectURLFromBase64 and
ResolveGraphicObjectURL became unused and are also removed with
this commit.
Change-Id: I45428a4e47f0e8800f18c1fdba007293dfcb53f4
Reviewed-on: https://gerrit.libreoffice.org/51043
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
diff --git a/include/xmloff/xmlimp.hxx b/include/xmloff/xmlimp.hxx
index 3249b6797ae7..926a44d08f59 100644
--- a/include/xmloff/xmlimp.hxx
+++ b/include/xmloff/xmlimp.hxx
@@ -406,10 +406,7 @@ public:
// internal package URL. The later one happens only if bLoadURL is true
OUString ResolveGraphicObjectURL( const OUString& rURL, bool bLoadOnDemand );
- css::uno::Reference< css::io::XOutputStream >
- GetStreamForGraphicObjectURLFromBase64();
- OUString ResolveGraphicObjectURLFromBase64(
- const css::uno::Reference< css::io::XOutputStream >& rOut );
+ css::uno::Reference< css::io::XOutputStream > GetStreamForGraphicObjectURLFromBase64();
bool IsPackageURL( const OUString& rURL ) const;
OUString ResolveEmbeddedObjectURL( const OUString& rURL,
diff --git a/xmloff/source/core/xmlimp.cxx b/xmloff/source/core/xmlimp.cxx
index a58f32ba861b..3c1e8bb0c6ea 100644
--- a/xmloff/source/core/xmlimp.cxx
+++ b/xmloff/source/core/xmlimp.cxx
@@ -1399,33 +1399,6 @@ uno::Reference<graphic::XGraphic> SvXMLImport::loadGraphicFromBase64(uno::Refere
return xGraphic;
}
-OUString SvXMLImport::ResolveGraphicObjectURL( const OUString& rURL,
- bool bLoadOnDemand )
-{
- OUString sRet;
-
- if( IsPackageURL( rURL ) )
- {
- if( !bLoadOnDemand && mxGraphicResolver.is() )
- {
- OUString aTmp( msPackageProtocol );
- aTmp += rURL;
- sRet = mxGraphicResolver->resolveGraphicObjectURL( aTmp );
- }
-
- if( sRet.isEmpty() )
- {
- sRet = msPackageProtocol;
- sRet += rURL;
- }
- }
-
- if( sRet.isEmpty() )
- sRet = GetAbsoluteReference( rURL );
-
- return sRet;
-}
-
Reference< XOutputStream > SvXMLImport::GetStreamForGraphicObjectURLFromBase64()
{
Reference< XOutputStream > xOStm;
@@ -1437,17 +1410,6 @@ Reference< XOutputStream > SvXMLImport::GetStreamForGraphicObjectURLFromBase64()
return xOStm;
}
-OUString SvXMLImport::ResolveGraphicObjectURLFromBase64(
- const Reference < XOutputStream >& rOut )
-{
- OUString sURL;
- Reference< document::XBinaryStreamResolver > xStmResolver( mxGraphicResolver, UNO_QUERY );
- if( xStmResolver.is() )
- sURL = xStmResolver->resolveOutputStream( rOut );
-
- return sURL;
-}
-
OUString SvXMLImport::ResolveEmbeddedObjectURL(
const OUString& rURL,
const OUString& rClassId )
diff --git a/xmloff/source/draw/XMLReplacementImageContext.cxx b/xmloff/source/draw/XMLReplacementImageContext.cxx
index cbea729a59af..eb5f6ea52c15 100644
--- a/xmloff/source/draw/XMLReplacementImageContext.cxx
+++ b/xmloff/source/draw/XMLReplacementImageContext.cxx
@@ -19,6 +19,7 @@
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/io/XOutputStream.hpp>
+#include <com/sun/star/graphic/XGraphic.hpp>
#include <osl/diagnose.h>
#include <xmloff/xmlimp.hxx>
#include <xmloff/xmltoken.hxx>
@@ -31,7 +32,7 @@ using ::com::sun::star::uno::Reference;
using ::com::sun::star::uno::makeAny;
using namespace ::com::sun::star::xml::sax;
using namespace ::com::sun::star::beans;
-
+using namespace css;
XMLReplacementImageContext::XMLReplacementImageContext(
SvXMLImport& rImport,
@@ -75,25 +76,29 @@ void XMLReplacementImageContext::EndElement()
"neither URL nor base64 image data given" );
rtl::Reference < XMLTextImportHelper > xTxtImport =
GetImport().GetTextImport();
- OUString sHRef;
- if( !m_sHRef.isEmpty() )
+ uno::Reference<graphic::XGraphic> xGraphic;
+
+ try
{
- bool bForceLoad = xTxtImport->IsInsertMode() ||
- xTxtImport->IsBlockMode() ||
- xTxtImport->IsStylesOnlyMode() ||
- xTxtImport->IsOrganizerMode();
- sHRef = GetImport().ResolveGraphicObjectURL( m_sHRef, !bForceLoad );
+ if( !m_sHRef.isEmpty() )
+ {
+ xGraphic = GetImport().loadGraphicByURL(m_sHRef);
+ }
+ else if( m_xBase64Stream.is() )
+ {
+ xGraphic = GetImport().loadGraphicFromBase64(m_xBase64Stream);
+ m_xBase64Stream = nullptr;
+ }
}
- else if( m_xBase64Stream.is() )
+ catch (uno::Exception const &)
+ {}
+
+ Reference < XPropertySetInfo > xPropSetInfo = m_xPropSet->getPropertySetInfo();
+
+ if (xGraphic.is() && xPropSetInfo->hasPropertyByName("Graphic"))
{
- sHRef = GetImport().ResolveGraphicObjectURLFromBase64( m_xBase64Stream );
- m_xBase64Stream = nullptr;
+ m_xPropSet->setPropertyValue("Graphic", uno::makeAny(xGraphic));
}
-
- Reference < XPropertySetInfo > xPropSetInfo =
- m_xPropSet->getPropertySetInfo();
- if( xPropSetInfo->hasPropertyByName("GraphicURL") )
- m_xPropSet->setPropertyValue("GraphicURL", makeAny( sHRef ) );
}
SvXMLImportContextRef XMLReplacementImageContext::CreateChildContext(
commit cefef4b2e59de45d51504a69ae23c803b0dd9590
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
Date: Sat Mar 10 21:10:37 2018 +0900
xmloff: convert form controls to use Graphic property on import
Change-Id: I98e6a8a6cf114e1b6347b77abc6c3ad30842c3cd
Reviewed-on: https://gerrit.libreoffice.org/51042
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
diff --git a/xmloff/source/forms/elementimport.cxx b/xmloff/source/forms/elementimport.cxx
index 82516023b67f..15662c336f27 100644
--- a/xmloff/source/forms/elementimport.cxx
+++ b/xmloff/source/forms/elementimport.cxx
@@ -1118,7 +1118,14 @@ namespace xmloff
bool OImagePositionImport::handleAttribute( sal_uInt16 _nNamespaceKey, const OUString& _rLocalName,
const OUString& _rValue )
{
- if ( _rLocalName == GetXMLToken( XML_IMAGE_POSITION ) )
+ static const sal_Char* s_pImageDataAttributeName = OAttributeMetaData::getCommonControlAttributeName(CCAFlags::ImageData);
+
+ if (_rLocalName.equalsAscii(s_pImageDataAttributeName))
+ {
+ m_xGraphic = m_rContext.getGlobalContext().loadGraphicByURL(_rValue);
+ return true;
+ }
+ else if ( _rLocalName == GetXMLToken( XML_IMAGE_POSITION ) )
{
OSL_VERIFY( PropertyConversion::convertString(
cppu::UnoType<decltype(m_nImagePosition)>::get(),
@@ -1127,8 +1134,7 @@ namespace xmloff
m_bHaveImagePosition = true;
return true;
}
-
- if ( _rLocalName == GetXMLToken( XML_IMAGE_ALIGN ) )
+ else if ( _rLocalName == GetXMLToken( XML_IMAGE_ALIGN ) )
{
OSL_VERIFY( PropertyConversion::convertString(
cppu::UnoType<decltype(m_nImageAlign)>::get(),
@@ -1144,6 +1150,13 @@ namespace xmloff
{
OControlImport::StartElement( _rxAttrList );
+ if (m_xGraphic.is())
+ {
+ PropertyValue aGraphicProperty;
+ aGraphicProperty.Name = PROPERTY_GRAPHIC;
+ aGraphicProperty.Value <<= m_xGraphic;
+ implPushBackPropertyValue(aGraphicProperty);
+ }
if ( m_bHaveImagePosition )
{
sal_Int16 nUnoImagePosition = ImagePosition::Centered;
@@ -1276,16 +1289,10 @@ namespace xmloff
)
);
- if ( bMakeAbsolute && !_rValue.isEmpty() )
+ if (bMakeAbsolute && !_rValue.isEmpty())
{
- // make a global URL out of the local one
- OUString sAdjustedValue;
- // only resolve image related url
- // we don't want say form url targets to be resolved
- // using ResolveGraphicObjectURL
- if ( _rLocalName.equalsAscii( s_pImageDataAttributeName ) )
- sAdjustedValue = m_rContext.getGlobalContext().ResolveGraphicObjectURL( _rValue, false );
- else
+ OUString sAdjustedValue = _rValue;
+ if (!_rLocalName.equalsAscii(s_pImageDataAttributeName))
sAdjustedValue = m_rContext.getGlobalContext().GetAbsoluteReference( _rValue );
return OImagePositionImport::handleAttribute( _nNamespaceKey, _rLocalName, sAdjustedValue );
}
diff --git a/xmloff/source/forms/elementimport.hxx b/xmloff/source/forms/elementimport.hxx
index c2cfc36f5b03..a1429caa6e55 100644
--- a/xmloff/source/forms/elementimport.hxx
+++ b/xmloff/source/forms/elementimport.hxx
@@ -33,6 +33,7 @@
#include <com/sun/star/container/XNameContainer.hpp>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/form/XGridColumnFactory.hpp>
+#include <com/sun/star/graphic/XGraphic.hpp>
#include <osl/diagnose.h>
#include <map>
@@ -275,6 +276,7 @@ namespace xmloff
//= OImagePositionImport
class OImagePositionImport : public OControlImport
{
+ css::uno::Reference<css::graphic::XGraphic> m_xGraphic;
sal_Int16 m_nImagePosition;
sal_Int16 m_nImageAlign;
bool m_bHaveImagePosition;
diff --git a/xmloff/source/forms/layerimport.cxx b/xmloff/source/forms/layerimport.cxx
index 9f173b527271..c4b5ecec73aa 100644
--- a/xmloff/source/forms/layerimport.cxx
+++ b/xmloff/source/forms/layerimport.cxx
@@ -77,9 +77,7 @@ OFormLayerXMLImport_Impl::OFormLayerXMLImport_Impl(SvXMLImport& _rImporter)
m_aAttributeMetaData.addStringProperty(
OAttributeMetaData::getCommonControlAttributeName(CCAFlags::Name), PROPERTY_NAME);
m_aAttributeMetaData.addStringProperty(
- OAttributeMetaData::getSpecialAttributeName(SCAFlags::GroupName), PROPERTY_GROUP_NAME);
- m_aAttributeMetaData.addStringProperty(
- OAttributeMetaData::getCommonControlAttributeName(CCAFlags::ImageData), PROPERTY_IMAGEURL);
+ OAttributeMetaData::getSpecialAttributeName(SCAFlags::GroupName), PROPERTY_GROUP_NAME);
m_aAttributeMetaData.addStringProperty(
OAttributeMetaData::getCommonControlAttributeName(CCAFlags::Label), PROPERTY_LABEL);
m_aAttributeMetaData.addStringProperty(
diff --git a/xmloff/source/forms/propertyexport.hxx b/xmloff/source/forms/propertyexport.hxx
index e01b6c71ad31..2d940bf392df 100644
--- a/xmloff/source/forms/propertyexport.hxx
+++ b/xmloff/source/forms/propertyexport.hxx
@@ -259,7 +259,7 @@ namespace xmloff
<p>The property needs a special handling because the URL's need to be made relative</p>
*/
- void exportImageDataAttribute() { exportRelativeTargetLocation(PROPERTY_IMAGEURL,CCAFlags::ImageData,false); }
+ void exportImageDataAttribute() { exportRelativeTargetLocation(PROPERTY_GRAPHIC, CCAFlags::ImageData, false); }
/** flag the style properties as 'already exported'
diff --git a/xmloff/source/forms/strings.hxx b/xmloff/source/forms/strings.hxx
index cb1b7564c299..695ffa777ccf 100644
--- a/xmloff/source/forms/strings.hxx
+++ b/xmloff/source/forms/strings.hxx
@@ -28,7 +28,7 @@ namespace xmloff
#define PROPERTY_ECHOCHAR "EchoChar"
#define PROPERTY_MULTILINE "MultiLine"
#define PROPERTY_NAME "Name"
- #define PROPERTY_IMAGEURL "ImageURL"
+ #define PROPERTY_GRAPHIC "Graphic"
#define PROPERTY_LABEL "Label"
#define PROPERTY_TARGETFRAME "TargetFrame"
#define PROPERTY_TARGETURL "TargetURL"
More information about the Libreoffice-commits
mailing list