fastparser in DrawAnnotationContext
Change-Id: Ie629e24e78d69456d1ec5276f3695d42d556ef1f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/107146
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
diff --git a/xmloff/source/draw/ximppage.cxx b/xmloff/source/draw/ximppage.cxx
index cf0bfcf..486c0e0 100644
--- a/xmloff/source/draw/ximppage.cxx
+++ b/xmloff/source/draw/ximppage.cxx
@@ -67,7 +67,6 @@ public:
virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext(
sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& AttrList ) override;
virtual SvXMLImportContextRef CreateChildContext( sal_uInt16 nPrefix, const OUString& rLocalName, const css::uno::Reference< css::xml::sax::XAttributeList>& xAttrList ) override;
virtual void SAL_CALL endFastElement(sal_Int32 nElement) override;
private:
@@ -144,44 +143,20 @@ DrawAnnotationContext::DrawAnnotationContext( SvXMLImport& rImport, const Refere
css::uno::Reference< css::xml::sax::XFastContextHandler > DrawAnnotationContext::createFastChildContext(
sal_Int32 nElement,
const css::uno::Reference< css::xml::sax::XFastAttributeList >& /*xAttrList*/ )
const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList )
{
if( mxAnnotation.is() )
{
if (IsTokenInNamespace(nElement, XML_NAMESPACE_DC))
{
if( (nElement & TOKEN_MASK) == XML_CREATOR )
return new XMLStringBufferImportContext(GetImport(), maAuthorBuffer);
else if( (nElement & TOKEN_MASK) == XML_DATE )
return new XMLStringBufferImportContext(GetImport(), maDateBuffer);
}
if (nElement == XML_ELEMENT(DC, XML_CREATOR) )
return new XMLStringBufferImportContext(GetImport(), maAuthorBuffer);
else if( nElement == XML_ELEMENT(DC, XML_DATE) )
return new XMLStringBufferImportContext(GetImport(), maDateBuffer);
else if ( nElement == XML_ELEMENT(TEXT, XML_SENDER_INITIALS)
|| nElement == XML_ELEMENT(LO_EXT, XML_SENDER_INITIALS)
|| nElement == XML_ELEMENT(META, XML_CREATOR_INITIALS))
{
return new XMLStringBufferImportContext(GetImport(), maInitialsBuffer);
}
}
return nullptr;
}
SvXMLImportContextRef DrawAnnotationContext::CreateChildContext( sal_uInt16 nPrefix, const OUString& rLocalName, const Reference< XAttributeList >& xAttrList )
{
SvXMLImportContextRef xContext;
if( mxAnnotation.is() )
{
if( XML_NAMESPACE_DC == nPrefix )
{
// handled in createFastChildContext
}
else if (((XML_NAMESPACE_TEXT == nPrefix || XML_NAMESPACE_LO_EXT == nPrefix)
&& IsXMLToken(rLocalName, XML_SENDER_INITIALS))
|| (XML_NAMESPACE_META == nPrefix
&& IsXMLToken(rLocalName, XML_CREATOR_INITIALS)))
{
// handled in createFastChildContext
}
else
{
// create text cursor on demand
@@ -200,12 +175,14 @@ SvXMLImportContextRef DrawAnnotationContext::CreateChildContext( sal_uInt16 nPre
// if we have a text cursor, lets try to import some text
if( mxCursor.is() )
{
xContext = GetImport().GetTextImport()->CreateTextChildContext( GetImport(), nPrefix, rLocalName, xAttrList );
auto p = GetImport().GetTextImport()->CreateTextChildContext( GetImport(), nElement, xAttrList );
if (p)
return p;
}
}
}
return xContext;
XMLOFF_WARN_UNKNOWN_ELEMENT("xmloff", nElement);
return nullptr;
}
void DrawAnnotationContext::endFastElement(sal_Int32)
@@ -274,6 +251,11 @@ css::uno::Reference< css::xml::sax::XFastContextHandler > SdXMLGenericPageContex
{
return new XMLAnimationsContext( GetImport() );
}
else if( nElement == XML_ELEMENT(OFFICE, XML_FORMS) )
{
if( GetImport().IsFormsSupported() )
return xmloff::OFormLayerXMLImport::createOfficeFormsContext( GetImport() );
}
else if( nElement == XML_ELEMENT(OFFICE, XML_ANNOTATION) || nElement == XML_ELEMENT(OFFICE_EXT, XML_ANNOTATION) )
{
if( mxAnnotationAccess.is() )
@@ -286,29 +268,9 @@ SvXMLImportContextRef SdXMLGenericPageContext::CreateChildContext( sal_uInt16 nP
const OUString& rLocalName,
const Reference< xml::sax::XAttributeList>& xAttrList )
{
SvXMLImportContextRef xContext;
if( nPrefix == XML_NAMESPACE_PRESENTATION && IsXMLToken( rLocalName, XML_ANIMATIONS ) )
{
// handled in createFastChildContext
}
else if( nPrefix == XML_NAMESPACE_OFFICE && IsXMLToken( rLocalName, XML_FORMS ) )
{
if( GetImport().IsFormsSupported() )
xContext = xmloff::OFormLayerXMLImport::createOfficeFormsContext( GetImport() );
}
else if( ((nPrefix == XML_NAMESPACE_OFFICE) || (nPrefix == XML_NAMESPACE_OFFICE_EXT)) && IsXMLToken( rLocalName, XML_ANNOTATION ) )
{
// handled in createFastChildContext
}
else
{
// call GroupChildContext function at common ShapeImport
xContext = GetImport().GetShapeImport()->CreateGroupChildContext(
// call GroupChildContext function at common ShapeImport
return GetImport().GetShapeImport()->CreateGroupChildContext(
GetImport(), nPrefix, rLocalName, xAttrList, mxShapes);
}
return xContext;
}
void SdXMLGenericPageContext::endFastElement(sal_Int32 )