[Libreoffice-commits] core.git: include/xmloff svx/source xmloff/inc xmloff/source
Noel Grandin (via logerrit)
logerrit at kemper.freedesktop.org
Sat Aug 22 19:08:29 UTC 2020
include/xmloff/DashStyle.hxx | 4
include/xmloff/GradientStyle.hxx | 4
include/xmloff/HatchStyle.hxx | 4
include/xmloff/ImageStyle.hxx | 4
include/xmloff/MarkerStyle.hxx | 4
svx/source/xml/xmlxtimp.cxx | 207 +++++++++++++----------------
xmloff/inc/TransGradientStyle.hxx | 4
xmloff/source/style/DashStyle.cxx | 61 +++-----
xmloff/source/style/FillStyleContext.cxx | 55 +++----
xmloff/source/style/FillStyleContext.hxx | 48 ++++--
xmloff/source/style/GradientStyle.cxx | 77 +++-------
xmloff/source/style/HatchStyle.cxx | 58 +++-----
xmloff/source/style/ImageStyle.cxx | 45 +-----
xmloff/source/style/MarkerStyle.cxx | 46 ++----
xmloff/source/style/TransGradientStyle.cxx | 67 +++------
xmloff/source/style/xmlstyle.cxx | 64 ++++----
16 files changed, 332 insertions(+), 420 deletions(-)
New commits:
commit 0527778df5f1ace8731043d070cf54b7b8648545
Author: Noel Grandin <noel.grandin at collabora.co.uk>
AuthorDate: Fri Aug 21 13:19:36 2020 +0200
Commit: Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Sat Aug 22 21:07:53 2020 +0200
use fastparser for fill styles
Change-Id: I2dcc34863eec5f3ba02ee6df4e64604926b072d4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101171
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
diff --git a/include/xmloff/DashStyle.hxx b/include/xmloff/DashStyle.hxx
index e9c5aac073c3..76bce512477a 100644
--- a/include/xmloff/DashStyle.hxx
+++ b/include/xmloff/DashStyle.hxx
@@ -28,7 +28,7 @@ class SvXMLImport;
class SvXMLExport;
namespace com::sun::star {
namespace uno { template<class A> class Reference; }
- namespace xml::sax { class XAttributeList; }
+ namespace xml::sax { class XFastAttributeList; }
namespace uno { class Any; }
}
@@ -42,7 +42,7 @@ public:
~XMLDashStyleImport();
void importXML(
- const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList,
css::uno::Any& rValue,
OUString& rStrName );
};
diff --git a/include/xmloff/GradientStyle.hxx b/include/xmloff/GradientStyle.hxx
index 94f2fb2b9b28..5037505cc46a 100644
--- a/include/xmloff/GradientStyle.hxx
+++ b/include/xmloff/GradientStyle.hxx
@@ -29,7 +29,7 @@ class SvXMLImport;
class SvXMLExport;
namespace com::sun::star {
namespace uno { template<class A> class Reference; }
- namespace xml::sax { class XAttributeList; }
+ namespace xml::sax { class XFastAttributeList; }
namespace uno { class Any; }
}
@@ -43,7 +43,7 @@ public:
~XMLGradientStyleImport();
void importXML(
- const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList,
css::uno::Any& rValue,
OUString& rStrName );
};
diff --git a/include/xmloff/HatchStyle.hxx b/include/xmloff/HatchStyle.hxx
index 17d69fcc825d..a08eede0c180 100644
--- a/include/xmloff/HatchStyle.hxx
+++ b/include/xmloff/HatchStyle.hxx
@@ -29,7 +29,7 @@ class SvXMLImport;
class SvXMLExport;
namespace com::sun::star {
namespace uno { template<class A> class Reference; }
- namespace xml::sax { class XAttributeList; }
+ namespace xml::sax { class XFastAttributeList; }
namespace uno { class Any; }
}
@@ -43,7 +43,7 @@ public:
~XMLHatchStyleImport();
void importXML(
- const css::uno::Reference< css::xml::sax::XAttributeList>& xAttrList,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList>& xAttrList,
css::uno::Any& rValue,
OUString& rStrName );
};
diff --git a/include/xmloff/ImageStyle.hxx b/include/xmloff/ImageStyle.hxx
index 3b017faa2120..b6e8cb8b0811 100644
--- a/include/xmloff/ImageStyle.hxx
+++ b/include/xmloff/ImageStyle.hxx
@@ -27,7 +27,7 @@
namespace com::sun::star::uno { class Any; }
namespace com::sun::star::uno { template <typename > class Reference; }
-namespace com::sun::star::xml::sax { class XAttributeList; }
+namespace com::sun::star::xml::sax { class XFastAttributeList; }
class SvXMLExport;
class SvXMLImport;
@@ -36,7 +36,7 @@ namespace XMLImageStyle
{
UNLESS_MERGELIBS(XMLOFF_DLLPUBLIC) void exportXML(OUString const & rStrName, css::uno::Any const & rValue, SvXMLExport& rExport);
-UNLESS_MERGELIBS(XMLOFF_DLLPUBLIC) bool importXML(css::uno::Reference<css::xml::sax::XAttributeList> const & xAttrList,
+UNLESS_MERGELIBS(XMLOFF_DLLPUBLIC) bool importXML(css::uno::Reference<css::xml::sax::XFastAttributeList> const & xAttrList,
css::uno::Any& rValue, OUString& rStrName, SvXMLImport& rImport);
}
diff --git a/include/xmloff/MarkerStyle.hxx b/include/xmloff/MarkerStyle.hxx
index 947039d435b3..b3b73b4ba6f2 100644
--- a/include/xmloff/MarkerStyle.hxx
+++ b/include/xmloff/MarkerStyle.hxx
@@ -29,7 +29,7 @@ class SvXMLImport;
class SvXMLExport;
namespace com::sun::star {
namespace uno { template<class A> class Reference; }
- namespace xml::sax { class XAttributeList; }
+ namespace xml::sax { class XFastAttributeList; }
namespace uno { class Any; }
}
@@ -43,7 +43,7 @@ public:
~XMLMarkerStyleImport();
void importXML(
- const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList,
css::uno::Any& rValue,
OUString& rStrName );
};
diff --git a/svx/source/xml/xmlxtimp.cxx b/svx/source/xml/xmlxtimp.cxx
index 7e9ffe67443a..75e4b97e84a5 100644
--- a/svx/source/xml/xmlxtimp.cxx
+++ b/svx/source/xml/xmlxtimp.cxx
@@ -76,12 +76,12 @@ public:
const css::uno::Reference< css::xml::sax::XFastAttributeList > & Attribs) override;
protected:
- void importColor( const uno::Reference< XAttributeList >& xAttrList, Any& rAny, OUString& rName );
- void importMarker( const uno::Reference< XAttributeList >& xAttrList, Any& rAny, OUString& rName );
- void importDash( const uno::Reference< XAttributeList >& xAttrList, Any& rAny, OUString& rName );
- void importHatch( const uno::Reference< XAttributeList >& xAttrList, Any& rAny, OUString& rName );
- void importGradient( const uno::Reference< XAttributeList >& xAttrList, Any& rAny, OUString& rName );
- void importBitmap( const uno::Reference< XAttributeList >& xAttrList, Any& rAny, OUString& rName );
+ static void importColor( const uno::Reference< XFastAttributeList >& xAttrList, Any& rAny, OUString& rName );
+ void importMarker( const uno::Reference< XFastAttributeList >& xAttrList, Any& rAny, OUString& rName );
+ void importDash( const uno::Reference< XFastAttributeList >& xAttrList, Any& rAny, OUString& rName );
+ void importHatch( const uno::Reference< XFastAttributeList >& xAttrList, Any& rAny, OUString& rName );
+ void importGradient( const uno::Reference< XFastAttributeList >& xAttrList, Any& rAny, OUString& rName );
+ void importBitmap( const uno::Reference< XFastAttributeList >& xAttrList, Any& rAny, OUString& rName );
private:
uno::Reference< XNameContainer > mxTable;
@@ -101,132 +101,123 @@ css::uno::Reference< css::xml::sax::XFastContextHandler >
SvxXMLTableImportContext::createFastChildContext(sal_Int32 nElement,
const css::uno::Reference< css::xml::sax::XFastAttributeList > & rAttrList)
{
- if( IsTokenInNamespace(nElement, XML_NAMESPACE_DRAW) ||
- IsTokenInNamespace(nElement, XML_NAMESPACE_DRAW_OOO) )
+ if( !(IsTokenInNamespace(nElement, XML_NAMESPACE_DRAW) ||
+ IsTokenInNamespace(nElement, XML_NAMESPACE_DRAW_OOO) ))
+ return nullptr;
+
+ std::vector<std::pair<sal_Int32, OString>> aTmpAttrList;
+ for (auto& aIter : sax_fastparser::castToFastAttributeList( rAttrList ))
+ aTmpAttrList.push_back({aIter.getToken(), OString(aIter.toCString())});
+ if( mbOOoFormat &&
+ (SvxXMLTableImportContextEnum::Dash == meContext || SvxXMLTableImportContextEnum::Hatch == meContext ||
+ SvxXMLTableImportContextEnum::Bitmap == meContext) )
{
- SvXMLAttributeList *pAttrList = new SvXMLAttributeList;
- for (auto& aIter : sax_fastparser::castToFastAttributeList( rAttrList ))
- pAttrList->AddAttribute(
- SvXMLImport::getNamespacePrefixFromToken(aIter.getToken(), nullptr) + ":" +
- GetXMLToken(static_cast<XMLTokenEnum>(aIter.getToken() & TOKEN_MASK)),
- aIter.toString());
- if( mbOOoFormat &&
- (SvxXMLTableImportContextEnum::Dash == meContext || SvxXMLTableImportContextEnum::Hatch == meContext ||
- SvxXMLTableImportContextEnum::Bitmap == meContext) )
+ for( auto & aIter : aTmpAttrList )
{
- sal_Int16 nAttrCount = pAttrList->getLength();
- for( sal_Int16 i=0; i < nAttrCount; i++ )
+ sal_Int32 aLocalAttr = aIter.first & TOKEN_MASK;
+ if( aIter.first == XML_ELEMENT(XLINK, XML_HREF) &&
+ SvxXMLTableImportContextEnum::Bitmap == meContext )
{
- const OUString& rAttrName = pAttrList->getNameByIndex( i );
- OUString aLocalName;
- sal_uInt16 nPrefix_ =
- GetImport().GetNamespaceMap().GetKeyByAttrName( rAttrName,
- &aLocalName );
- if( XML_NAMESPACE_XLINK == nPrefix_ &&
- SvxXMLTableImportContextEnum::Bitmap == meContext &&
- IsXMLToken( aLocalName, XML_HREF ) )
- {
- const OUString rValue = pAttrList->getValueByIndex( i );
- if( !rValue.isEmpty() && '#' == rValue[0] )
- pAttrList->SetValueByIndex( i, rValue.copy( 1 ) );
- }
- else if( (XML_NAMESPACE_DRAW == nPrefix_ || XML_NAMESPACE_DRAW_OOO == nPrefix_) &&
- ( ( SvxXMLTableImportContextEnum::Dash == meContext &&
- (IsXMLToken( aLocalName, XML_DOTS1_LENGTH ) ||
- IsXMLToken( aLocalName, XML_DOTS2_LENGTH ) ||
- IsXMLToken( aLocalName, XML_DISTANCE )) ) ||
- ( SvxXMLTableImportContextEnum::Hatch == meContext &&
- IsXMLToken( aLocalName, XML_DISTANCE ) ) ) )
+ OString rValue = aIter.second;
+ if( !rValue.isEmpty() && '#' == rValue[0] )
+ rValue = rValue.copy( 1 );
+ }
+ else if( (IsTokenInNamespace(aIter.first, XML_NAMESPACE_DRAW) || IsTokenInNamespace(aIter.first, XML_NAMESPACE_DRAW_OOO)) &&
+ ( ( SvxXMLTableImportContextEnum::Dash == meContext &&
+ ( aLocalAttr == XML_DOTS1_LENGTH ||
+ aLocalAttr == XML_DOTS2_LENGTH ||
+ aLocalAttr == XML_DISTANCE ) ) ||
+ ( SvxXMLTableImportContextEnum::Hatch == meContext &&
+ ( aLocalAttr == XML_DISTANCE ) ) ) )
+ {
+ OString& rValue = aIter.second;
+ sal_Int32 nPos = rValue.getLength();
+ while( nPos && rValue[nPos-1] <= ' ' )
+ --nPos;
+ if( nPos > 2 &&
+ ('c'==rValue[nPos-2] || 'C'==rValue[nPos-2]) &&
+ ('h'==rValue[nPos-1] || 'H'==rValue[nPos-1]) )
{
- const OUString rValue = pAttrList->getValueByIndex( i );
- sal_Int32 nPos = rValue.getLength();
- while( nPos && rValue[nPos-1] <= ' ' )
- --nPos;
- if( nPos > 2 &&
- ('c'==rValue[nPos-2] || 'C'==rValue[nPos-2]) &&
- ('h'==rValue[nPos-1] || 'H'==rValue[nPos-1]) )
- {
- pAttrList->SetValueByIndex( i, rValue.copy( 0, nPos-2 ) );
- }
+ rValue = rValue.copy( 0, nPos-2 );
}
}
}
- try
+ }
+ try
+ {
+ rtl::Reference<sax_fastparser::FastAttributeList> xFastList = new sax_fastparser::FastAttributeList(nullptr);
+ for (auto& aIter : aTmpAttrList)
+ xFastList->add(aIter.first, aIter.second);
+
+ Any aAny;
+ OUString aName;
+
+ switch( meContext )
{
- Any aAny;
- OUString aName;
+ case SvxXMLTableImportContextEnum::Color:
+ importColor( xFastList.get(), aAny, aName );
+ break;
+ case SvxXMLTableImportContextEnum::Marker:
+ importMarker( xFastList.get(), aAny, aName );
+ break;
+ case SvxXMLTableImportContextEnum::Dash:
+ importDash( xFastList.get(), aAny, aName );
+ break;
+ case SvxXMLTableImportContextEnum::Hatch:
+ importHatch( xFastList.get(), aAny, aName );
+ break;
+ case SvxXMLTableImportContextEnum::Gradient:
+ importGradient( xFastList.get(), aAny, aName );
+ break;
+ case SvxXMLTableImportContextEnum::Bitmap:
+ importBitmap( xFastList.get(), aAny, aName );
+ break;
+ }
- switch( meContext )
+ if( !aName.isEmpty() && aAny.hasValue() )
+ {
+ if( mxTable->hasByName( aName ) )
{
- case SvxXMLTableImportContextEnum::Color:
- importColor( pAttrList, aAny, aName );
- break;
- case SvxXMLTableImportContextEnum::Marker:
- importMarker( pAttrList, aAny, aName );
- break;
- case SvxXMLTableImportContextEnum::Dash:
- importDash( pAttrList, aAny, aName );
- break;
- case SvxXMLTableImportContextEnum::Hatch:
- importHatch( pAttrList, aAny, aName );
- break;
- case SvxXMLTableImportContextEnum::Gradient:
- importGradient( pAttrList, aAny, aName );
- break;
- case SvxXMLTableImportContextEnum::Bitmap:
- importBitmap( pAttrList, aAny, aName );
- break;
+ mxTable->replaceByName( aName, aAny );
}
-
- if( !aName.isEmpty() && aAny.hasValue() )
+ else
{
- if( mxTable->hasByName( aName ) )
- {
- mxTable->replaceByName( aName, aAny );
- }
- else
- {
- mxTable->insertByName( aName, aAny );
- }
+ mxTable->insertByName( aName, aAny );
}
}
- catch (const uno::Exception&)
- {
- DBG_UNHANDLED_EXCEPTION("svx");
- }
- return new SvXMLImportContext( GetImport() );
}
- return nullptr;
+ catch (const uno::Exception&)
+ {
+ DBG_UNHANDLED_EXCEPTION("svx");
+ }
+ return new SvXMLImportContext( GetImport() );
}
-void SvxXMLTableImportContext::importColor( const uno::Reference< XAttributeList >& xAttrList, Any& rAny, OUString& rName )
+void SvxXMLTableImportContext::importColor( const uno::Reference< XFastAttributeList >& xAttrList, Any& rAny, OUString& rName )
{
- const sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- for( sal_Int16 i=0; i < nAttrCount; i++ )
+ for (auto& aIter : sax_fastparser::castToFastAttributeList( xAttrList ))
{
- const OUString& rFullAttrName = xAttrList->getNameByIndex( i );
- OUString aLocalName;
- sal_uInt16 nPrefix = GetImport().GetNamespaceMap().GetKeyByAttrName( rFullAttrName, &aLocalName );
-
-
- if( XML_NAMESPACE_DRAW == nPrefix || XML_NAMESPACE_DRAW_OOO == nPrefix )
+ switch (aIter.getToken())
{
- if( aLocalName == GetXMLToken(XML_NAME) )
- {
- rName = xAttrList->getValueByIndex( i );
- }
- else if( aLocalName == GetXMLToken(XML_COLOR) )
+ case XML_ELEMENT(DRAW, XML_NAME):
+ case XML_ELEMENT(DRAW_OOO, XML_NAME):
+ rName = aIter.toString();
+ break;
+ case XML_ELEMENT(DRAW, XML_COLOR):
+ case XML_ELEMENT(DRAW_OOO, XML_COLOR):
{
sal_Int32 nColor(0);
- ::sax::Converter::convertColor(nColor,
- xAttrList->getValueByIndex( i ));
+ ::sax::Converter::convertColor(nColor, aIter.toString());
rAny <<= nColor;
+ break;
}
+ default:
+ SAL_WARN("xmloff", "unknown attribute " << SvXMLImport::getPrefixAndNameFromToken(aIter.getToken()) << "=" << aIter.toString());
}
}
}
-void SvxXMLTableImportContext::importMarker( const uno::Reference< XAttributeList >& xAttrList, Any& rAny, OUString& rName )
+void SvxXMLTableImportContext::importMarker( const uno::Reference< XFastAttributeList >& xAttrList, Any& rAny, OUString& rName )
{
try
{
@@ -239,7 +230,7 @@ void SvxXMLTableImportContext::importMarker( const uno::Reference< XAttributeLis
}
}
-void SvxXMLTableImportContext::importDash( const uno::Reference< XAttributeList >& xAttrList, Any& rAny, OUString& rName )
+void SvxXMLTableImportContext::importDash( const uno::Reference< XFastAttributeList >& xAttrList, Any& rAny, OUString& rName )
{
try
{
@@ -252,7 +243,7 @@ void SvxXMLTableImportContext::importDash( const uno::Reference< XAttributeList
}
}
-void SvxXMLTableImportContext::importHatch( const uno::Reference< XAttributeList >& xAttrList, Any& rAny, OUString& rName )
+void SvxXMLTableImportContext::importHatch( const uno::Reference< XFastAttributeList >& xAttrList, Any& rAny, OUString& rName )
{
try
{
@@ -265,7 +256,7 @@ void SvxXMLTableImportContext::importHatch( const uno::Reference< XAttributeList
}
}
-void SvxXMLTableImportContext::importGradient( const uno::Reference< XAttributeList >& xAttrList, Any& rAny, OUString& rName )
+void SvxXMLTableImportContext::importGradient( const uno::Reference< XFastAttributeList >& xAttrList, Any& rAny, OUString& rName )
{
try
{
@@ -278,7 +269,7 @@ void SvxXMLTableImportContext::importGradient( const uno::Reference< XAttributeL
}
}
-void SvxXMLTableImportContext::importBitmap( const uno::Reference< XAttributeList >& xAttrList, Any& rAny, OUString& rName )
+void SvxXMLTableImportContext::importBitmap( const uno::Reference< XFastAttributeList >& xAttrList, Any& rAny, OUString& rName )
{
try
{
diff --git a/xmloff/inc/TransGradientStyle.hxx b/xmloff/inc/TransGradientStyle.hxx
index 6a1174c419d8..61637eac9ab0 100644
--- a/xmloff/inc/TransGradientStyle.hxx
+++ b/xmloff/inc/TransGradientStyle.hxx
@@ -27,7 +27,7 @@ class SvXMLImport;
class SvXMLExport;
namespace com::sun::star {
namespace uno { template<class A> class Reference; }
- namespace xml::sax { class XAttributeList; }
+ namespace xml::sax { class XFastAttributeList; }
namespace uno { class Any; }
}
@@ -41,7 +41,7 @@ public:
~XMLTransGradientStyleImport();
void importXML(
- const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList,
css::uno::Any& rValue,
OUString& rStrName );
};
diff --git a/xmloff/source/style/DashStyle.cxx b/xmloff/source/style/DashStyle.cxx
index ee3bdfdd5dda..2fb258492cb4 100644
--- a/xmloff/source/style/DashStyle.cxx
+++ b/xmloff/source/style/DashStyle.cxx
@@ -89,7 +89,7 @@ XMLDashStyleImport::~XMLDashStyleImport()
}
void XMLDashStyleImport::importXML(
- const uno::Reference< xml::sax::XAttributeList >& xAttrList,
+ const uno::Reference< xml::sax::XFastAttributeList >& xAttrList,
uno::Any& rValue,
OUString& rStrName )
{
@@ -104,90 +104,83 @@ void XMLDashStyleImport::importXML(
bool bIsRel = false;
- SvXMLNamespaceMap& rNamespaceMap = rImport.GetNamespaceMap();
SvXMLUnitConverter& rUnitConverter = rImport.GetMM100UnitConverter();
- static const SvXMLTokenMap aTokenMap( aDashStyleAttrTokenMap );
-
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- for( sal_Int16 i=0; i < nAttrCount; i++ )
+ for (auto &aIter : sax_fastparser::castToFastAttributeList( xAttrList ))
{
- const OUString& rFullAttrName = xAttrList->getNameByIndex( i );
- OUString aStrAttrName;
- sal_uInt16 nPrefix = rNamespaceMap.GetKeyByAttrName( rFullAttrName, &aStrAttrName );
- const OUString& rStrValue = xAttrList->getValueByIndex( i );
+ const OUString aStrValue = aIter.toString();
- switch( aTokenMap.Get( nPrefix, aStrAttrName ) )
+ switch( aIter.getToken() )
{
- case XML_TOK_DASH_NAME:
+ case XML_ELEMENT(DRAW, XML_NAME):
{
- rStrName = rStrValue;
+ rStrName = aStrValue;
}
break;
- case XML_TOK_DASH_DISPLAY_NAME:
+ case XML_ELEMENT(DRAW, XML_DISPLAY_NAME):
{
- aDisplayName = rStrValue;
+ aDisplayName = aStrValue;
}
break;
- case XML_TOK_DASH_STYLE:
+ case XML_ELEMENT(DRAW, XML_STYLE):
{
- SvXMLUnitConverter::convertEnum( aLineDash.Style, rStrValue, pXML_DashStyle_Enum );
+ SvXMLUnitConverter::convertEnum( aLineDash.Style, aStrValue, pXML_DashStyle_Enum );
}
break;
- case XML_TOK_DASH_DOTS1:
- aLineDash.Dots = static_cast<sal_Int16>(rStrValue.toInt32());
+ case XML_ELEMENT(DRAW, XML_DOTS1):
+ aLineDash.Dots = static_cast<sal_Int16>(aStrValue.toInt32());
break;
- case XML_TOK_DASH_DOTS1LEN:
+ case XML_ELEMENT(DRAW, XML_DOTS1_LENGTH):
{
- if( rStrValue.indexOf( '%' ) != -1 ) // it's a percentage
+ if( aStrValue.indexOf( '%' ) != -1 ) // it's a percentage
{
bIsRel = true;
- ::sax::Converter::convertPercent(aLineDash.DotLen, rStrValue);
+ ::sax::Converter::convertPercent(aLineDash.DotLen, aStrValue);
}
else
{
rUnitConverter.convertMeasureToCore( aLineDash.DotLen,
- rStrValue );
+ aStrValue );
}
}
break;
- case XML_TOK_DASH_DOTS2:
- aLineDash.Dashes = static_cast<sal_Int16>(rStrValue.toInt32());
+ case XML_ELEMENT(DRAW, XML_DOTS2):
+ aLineDash.Dashes = static_cast<sal_Int16>(aStrValue.toInt32());
break;
- case XML_TOK_DASH_DOTS2LEN:
+ case XML_ELEMENT(DRAW, XML_DOTS2_LENGTH):
{
- if( rStrValue.indexOf( '%' ) != -1 ) // it's a percentage
+ if( aStrValue.indexOf( '%' ) != -1 ) // it's a percentage
{
bIsRel = true;
- ::sax::Converter::convertPercent(aLineDash.DashLen, rStrValue);
+ ::sax::Converter::convertPercent(aLineDash.DashLen, aStrValue);
}
else
{
rUnitConverter.convertMeasureToCore( aLineDash.DashLen,
- rStrValue );
+ aStrValue );
}
}
break;
- case XML_TOK_DASH_DISTANCE:
+ case XML_ELEMENT(DRAW, XML_DISTANCE):
{
- if( rStrValue.indexOf( '%' ) != -1 ) // it's a percentage
+ if( aStrValue.indexOf( '%' ) != -1 ) // it's a percentage
{
bIsRel = true;
- ::sax::Converter::convertPercent(aLineDash.Distance, rStrValue);
+ ::sax::Converter::convertPercent(aLineDash.Distance, aStrValue);
}
else
{
rUnitConverter.convertMeasureToCore( aLineDash.Distance,
- rStrValue );
+ aStrValue );
}
}
break;
default:
- SAL_INFO("xmloff.style", "Unknown token at import dash style");
+ SAL_WARN("xmloff.style", "unknown attribute " << SvXMLImport::getPrefixAndNameFromToken(aIter.getToken()) << "=" << aStrValue);
}
}
diff --git a/xmloff/source/style/FillStyleContext.cxx b/xmloff/source/style/FillStyleContext.cxx
index 9f0daa7ee4be..58ae6cd6786a 100644
--- a/xmloff/source/style/FillStyleContext.cxx
+++ b/xmloff/source/style/FillStyleContext.cxx
@@ -34,12 +34,10 @@
using namespace ::com::sun::star;
-XMLGradientStyleContext::XMLGradientStyleContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const uno::Reference< xml::sax::XAttributeList >& xAttrList)
-: SvXMLStyleContext(rImport, nPrfx, rLName, xAttrList)
+XMLGradientStyleContext::XMLGradientStyleContext( SvXMLImport& rImport, sal_Int32 ,
+ const uno::Reference< xml::sax::XFastAttributeList >& xAttrList)
+: SvXMLStyleContext(rImport)
{
-
// start import
XMLGradientStyleImport aGradientStyle( GetImport() );
aGradientStyle.importXML( xAttrList, maAny, maStrName );
@@ -49,7 +47,7 @@ XMLGradientStyleContext::~XMLGradientStyleContext()
{
}
-void XMLGradientStyleContext::EndElement()
+void XMLGradientStyleContext::endFastElement(sal_Int32 )
{
uno::Reference< container::XNameContainer > xGradient( GetImport().GetGradientHelper() );
@@ -77,10 +75,9 @@ bool XMLGradientStyleContext::IsTransient() const
}
-XMLHatchStyleContext::XMLHatchStyleContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const uno::Reference< xml::sax::XAttributeList >& xAttrList)
-: SvXMLStyleContext(rImport, nPrfx, rLName, xAttrList)
+XMLHatchStyleContext::XMLHatchStyleContext( SvXMLImport& rImport, sal_Int32 /*nElement*/,
+ const uno::Reference< xml::sax::XFastAttributeList >& xAttrList)
+: SvXMLStyleContext(rImport)
{
// start import
XMLHatchStyleImport aHatchStyle( GetImport() );
@@ -91,7 +88,7 @@ XMLHatchStyleContext::~XMLHatchStyleContext()
{
}
-void XMLHatchStyleContext::EndElement()
+void XMLHatchStyleContext::endFastElement(sal_Int32 )
{
uno::Reference< container::XNameContainer > xHatch( GetImport().GetHatchHelper() );
@@ -119,10 +116,9 @@ bool XMLHatchStyleContext::IsTransient() const
}
-XMLBitmapStyleContext::XMLBitmapStyleContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const uno::Reference< xml::sax::XAttributeList >& xAttrList)
-: SvXMLStyleContext(rImport, nPrfx, rLName, xAttrList)
+XMLBitmapStyleContext::XMLBitmapStyleContext( SvXMLImport& rImport, sal_Int32 /*nElement*/,
+ const uno::Reference< xml::sax::XFastAttributeList >& xAttrList)
+: SvXMLStyleContext(rImport)
{
// start import
XMLImageStyle::importXML( xAttrList, maAny, maStrName, rImport );
@@ -152,7 +148,7 @@ SvXMLImportContextRef XMLBitmapStyleContext::CreateChildContext( sal_uInt16 nPre
return pContext;
}
-void XMLBitmapStyleContext::EndElement()
+void XMLBitmapStyleContext::endFastElement(sal_Int32 )
{
if (!maAny.has<uno::Reference<graphic::XGraphic>>() && mxBase64Stream.is())
{
@@ -196,10 +192,9 @@ bool XMLBitmapStyleContext::IsTransient() const
}
-XMLTransGradientStyleContext::XMLTransGradientStyleContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const uno::Reference< xml::sax::XAttributeList >& xAttrList)
-: SvXMLStyleContext(rImport, nPrfx, rLName, xAttrList)
+XMLTransGradientStyleContext::XMLTransGradientStyleContext( SvXMLImport& rImport, sal_Int32 /*nElement*/,
+ const uno::Reference< xml::sax::XFastAttributeList >& xAttrList)
+: SvXMLStyleContext(rImport)
{
// start import
XMLTransGradientStyleImport aTransGradientStyle( GetImport() );
@@ -210,7 +205,7 @@ XMLTransGradientStyleContext::~XMLTransGradientStyleContext()
{
}
-void XMLTransGradientStyleContext::EndElement()
+void XMLTransGradientStyleContext::endFastElement(sal_Int32 )
{
uno::Reference< container::XNameContainer > xTransGradient( GetImport().GetTransGradientHelper() );
@@ -238,10 +233,9 @@ bool XMLTransGradientStyleContext::IsTransient() const
}
-XMLMarkerStyleContext::XMLMarkerStyleContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const uno::Reference< xml::sax::XAttributeList >& xAttrList)
-: SvXMLStyleContext(rImport, nPrfx, rLName, xAttrList)
+XMLMarkerStyleContext::XMLMarkerStyleContext( SvXMLImport& rImport, sal_Int32 /*nElement*/,
+ const uno::Reference< xml::sax::XFastAttributeList >& xAttrList)
+: SvXMLStyleContext(rImport)
{
// start import
XMLMarkerStyleImport aMarkerStyle( GetImport() );
@@ -252,7 +246,7 @@ XMLMarkerStyleContext::~XMLMarkerStyleContext()
{
}
-void XMLMarkerStyleContext::EndElement()
+void XMLMarkerStyleContext::endFastElement(sal_Int32 )
{
uno::Reference< container::XNameContainer > xMarker( GetImport().GetMarkerHelper() );
@@ -280,10 +274,9 @@ bool XMLMarkerStyleContext::IsTransient() const
}
-XMLDashStyleContext::XMLDashStyleContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const uno::Reference< xml::sax::XAttributeList >& xAttrList)
-: SvXMLStyleContext(rImport, nPrfx, rLName, xAttrList)
+XMLDashStyleContext::XMLDashStyleContext( SvXMLImport& rImport, sal_Int32 /*nElement*/,
+ const uno::Reference< xml::sax::XFastAttributeList >& xAttrList)
+: SvXMLStyleContext(rImport)
{
// start import
XMLDashStyleImport aDashStyle( GetImport() );
@@ -294,7 +287,7 @@ XMLDashStyleContext::~XMLDashStyleContext()
{
}
-void XMLDashStyleContext::EndElement()
+void XMLDashStyleContext::endFastElement(sal_Int32 )
{
uno::Reference< container::XNameContainer > xDashes( GetImport().GetDashHelper() );
diff --git a/xmloff/source/style/FillStyleContext.hxx b/xmloff/source/style/FillStyleContext.hxx
index d351f619de68..51e751075be4 100644
--- a/xmloff/source/style/FillStyleContext.hxx
+++ b/xmloff/source/style/FillStyleContext.hxx
@@ -34,11 +34,13 @@ private:
public:
- XMLGradientStyleContext( SvXMLImport& rImport, sal_uInt16 nPrfx, const OUString& rLName,
- const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList );
+ XMLGradientStyleContext( SvXMLImport& rImport, sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList );
virtual ~XMLGradientStyleContext() override;
- virtual void EndElement() override;
+ virtual void SAL_CALL startFastElement( sal_Int32 /*nElement*/,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& ) override {}
+ virtual void SAL_CALL endFastElement(sal_Int32 nElement) override;
virtual bool IsTransient() const override;
};
@@ -53,11 +55,13 @@ private:
public:
- XMLHatchStyleContext( SvXMLImport& rImport, sal_uInt16 nPrfx, const OUString& rLName,
- const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList );
+ XMLHatchStyleContext( SvXMLImport& rImport, sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList );
virtual ~XMLHatchStyleContext() override;
- virtual void EndElement() override;
+ virtual void SAL_CALL startFastElement( sal_Int32 /*nElement*/,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& ) override {}
+ virtual void SAL_CALL endFastElement(sal_Int32 nElement) override;
virtual bool IsTransient() const override;
};
@@ -73,8 +77,8 @@ private:
public:
- XMLBitmapStyleContext( SvXMLImport& rImport, sal_uInt16 nPrfx, const OUString& rLName,
- const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList );
+ XMLBitmapStyleContext( SvXMLImport& rImport, sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList );
virtual ~XMLBitmapStyleContext() override;
virtual SvXMLImportContextRef CreateChildContext(
@@ -82,7 +86,9 @@ public:
const OUString& rLocalName,
const css::uno::Reference< css::xml::sax::XAttributeList > & xAttrList ) override;
- virtual void EndElement() override;
+ virtual void SAL_CALL startFastElement( sal_Int32 /*nElement*/,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& ) override {}
+ virtual void SAL_CALL endFastElement(sal_Int32 nElement) override;
virtual bool IsTransient() const override;
};
@@ -97,11 +103,13 @@ private:
public:
- XMLTransGradientStyleContext( SvXMLImport& rImport, sal_uInt16 nPrfx, const OUString& rLName,
- const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList );
+ XMLTransGradientStyleContext( SvXMLImport& rImport, sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList );
virtual ~XMLTransGradientStyleContext() override;
- virtual void EndElement() override;
+ virtual void SAL_CALL startFastElement( sal_Int32 /*nElement*/,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& ) override {}
+ virtual void SAL_CALL endFastElement(sal_Int32 nElement) override;
virtual bool IsTransient() const override;
};
@@ -116,11 +124,13 @@ private:
public:
- XMLMarkerStyleContext( SvXMLImport& rImport, sal_uInt16 nPrfx, const OUString& rLName,
- const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList );
+ XMLMarkerStyleContext( SvXMLImport& rImport, sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList );
virtual ~XMLMarkerStyleContext() override;
- virtual void EndElement() override;
+ virtual void SAL_CALL startFastElement( sal_Int32 /*nElement*/,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& ) override {}
+ virtual void SAL_CALL endFastElement(sal_Int32 nElement) override;
virtual bool IsTransient() const override;
};
@@ -135,11 +145,13 @@ private:
public:
- XMLDashStyleContext( SvXMLImport& rImport, sal_uInt16 nPrfx, const OUString& rLName,
- const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList );
+ XMLDashStyleContext( SvXMLImport& rImport, sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList );
virtual ~XMLDashStyleContext() override;
- virtual void EndElement() override;
+ virtual void SAL_CALL startFastElement( sal_Int32 /*nElement*/,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& ) override {}
+ virtual void SAL_CALL endFastElement(sal_Int32 nElement) override;
virtual bool IsTransient() const override;
};
diff --git a/xmloff/source/style/GradientStyle.cxx b/xmloff/source/style/GradientStyle.cxx
index 4b55f603ed1c..46567e5f8c11 100644
--- a/xmloff/source/style/GradientStyle.cxx
+++ b/xmloff/source/style/GradientStyle.cxx
@@ -83,26 +83,10 @@ XMLGradientStyleImport::~XMLGradientStyleImport()
}
void XMLGradientStyleImport::importXML(
- const uno::Reference< xml::sax::XAttributeList >& xAttrList,
+ const uno::Reference< xml::sax::XFastAttributeList >& xAttrList,
uno::Any& rValue,
OUString& rStrName )
{
- static const SvXMLTokenMapEntry aGradientAttrTokenMap[] =
- {
- { XML_NAMESPACE_DRAW, XML_NAME, XML_TOK_GRADIENT_NAME },
- { XML_NAMESPACE_DRAW, XML_DISPLAY_NAME, XML_TOK_GRADIENT_DISPLAY_NAME },
- { XML_NAMESPACE_DRAW, XML_STYLE, XML_TOK_GRADIENT_STYLE },
- { XML_NAMESPACE_DRAW, XML_CX, XML_TOK_GRADIENT_CX },
- { XML_NAMESPACE_DRAW, XML_CY, XML_TOK_GRADIENT_CY },
- { XML_NAMESPACE_DRAW, XML_START_COLOR, XML_TOK_GRADIENT_STARTCOLOR },
- { XML_NAMESPACE_DRAW, XML_END_COLOR, XML_TOK_GRADIENT_ENDCOLOR },
- { XML_NAMESPACE_DRAW, XML_START_INTENSITY, XML_TOK_GRADIENT_STARTINT },
- { XML_NAMESPACE_DRAW, XML_END_INTENSITY, XML_TOK_GRADIENT_ENDINT },
- { XML_NAMESPACE_DRAW, XML_GRADIENT_ANGLE, XML_TOK_GRADIENT_ANGLE },
- { XML_NAMESPACE_DRAW, XML_BORDER, XML_TOK_GRADIENT_BORDER, },
- XML_TOKEN_MAP_END
- };
-
OUString aDisplayName;
awt::Gradient aGradient;
@@ -113,57 +97,50 @@ void XMLGradientStyleImport::importXML(
aGradient.Angle = 0;
aGradient.Border = 0;
- static const SvXMLTokenMap aTokenMap( aGradientAttrTokenMap );
- SvXMLNamespaceMap& rNamespaceMap = rImport.GetNamespaceMap();
-
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- for( sal_Int16 i=0; i < nAttrCount; i++ )
+ for (auto &aIter : sax_fastparser::castToFastAttributeList( xAttrList ))
{
- const OUString& rFullAttrName = xAttrList->getNameByIndex( i );
- OUString aStrAttrName;
- sal_uInt16 nPrefix = rNamespaceMap.GetKeyByAttrName( rFullAttrName, &aStrAttrName );
- const OUString& rStrValue = xAttrList->getValueByIndex( i );
+ const OUString aStrValue = aIter.toString();
sal_Int32 nTmpValue;
- switch( aTokenMap.Get( nPrefix, aStrAttrName ) )
+ switch( aIter.getToken() )
{
- case XML_TOK_GRADIENT_NAME:
- rStrName = rStrValue;
+ case XML_ELEMENT(DRAW, XML_NAME):
+ rStrName = aStrValue;
break;
- case XML_TOK_GRADIENT_DISPLAY_NAME:
- aDisplayName = rStrValue;
+ case XML_ELEMENT(DRAW, XML_DISPLAY_NAME):
+ aDisplayName = aStrValue;
break;
- case XML_TOK_GRADIENT_STYLE:
- SvXMLUnitConverter::convertEnum( aGradient.Style, rStrValue, pXML_GradientStyle_Enum );
+ case XML_ELEMENT(DRAW, XML_STYLE):
+ SvXMLUnitConverter::convertEnum( aGradient.Style, aStrValue, pXML_GradientStyle_Enum );
break;
- case XML_TOK_GRADIENT_CX:
- ::sax::Converter::convertPercent( nTmpValue, rStrValue );
+ case XML_ELEMENT(DRAW, XML_CX):
+ ::sax::Converter::convertPercent( nTmpValue, aStrValue );
aGradient.XOffset = static_cast< sal_Int16 >( nTmpValue );
break;
- case XML_TOK_GRADIENT_CY:
- ::sax::Converter::convertPercent( nTmpValue, rStrValue );
+ case XML_ELEMENT(DRAW, XML_CY):
+ ::sax::Converter::convertPercent( nTmpValue, aStrValue );
aGradient.YOffset = static_cast< sal_Int16 >( nTmpValue );
break;
- case XML_TOK_GRADIENT_STARTCOLOR:
- ::sax::Converter::convertColor(aGradient.StartColor, rStrValue);
+ case XML_ELEMENT(DRAW, XML_START_COLOR):
+ ::sax::Converter::convertColor(aGradient.StartColor, aStrValue);
break;
- case XML_TOK_GRADIENT_ENDCOLOR:
- ::sax::Converter::convertColor(aGradient.EndColor, rStrValue);
+ case XML_ELEMENT(DRAW, XML_END_COLOR):
+ ::sax::Converter::convertColor(aGradient.EndColor, aStrValue);
break;
- case XML_TOK_GRADIENT_STARTINT:
- ::sax::Converter::convertPercent( nTmpValue, rStrValue );
+ case XML_ELEMENT(DRAW, XML_START_INTENSITY):
+ ::sax::Converter::convertPercent( nTmpValue, aStrValue );
aGradient.StartIntensity = static_cast< sal_Int16 >( nTmpValue );
break;
- case XML_TOK_GRADIENT_ENDINT:
- ::sax::Converter::convertPercent( nTmpValue, rStrValue );
+ case XML_ELEMENT(DRAW, XML_END_INTENSITY):
+ ::sax::Converter::convertPercent( nTmpValue, aStrValue );
aGradient.EndIntensity = static_cast< sal_Int16 >( nTmpValue );
break;
- case XML_TOK_GRADIENT_ANGLE:
+ case XML_ELEMENT(DRAW, XML_GRADIENT_ANGLE):
{
auto const cmp12(rImport.GetODFVersion().compareTo(ODFVER_012_TEXT));
bool const bSuccess =
- ::sax::Converter::convertAngle(aGradient.Angle, rStrValue,
+ ::sax::Converter::convertAngle(aGradient.Angle, aStrValue,
// tdf#89475 try to detect borked OOo angles
(cmp12 < 0) || (cmp12 == 0
&& (rImport.isGeneratorVersionOlderThan(SvXMLImport::AOO_4x, SvXMLImport::LO_7x)
@@ -172,13 +149,13 @@ void XMLGradientStyleImport::importXML(
SAL_INFO_IF(!bSuccess, "xmloff.style", "failed to import draw:angle");
}
break;
- case XML_TOK_GRADIENT_BORDER:
- ::sax::Converter::convertPercent( nTmpValue, rStrValue );
+ case XML_ELEMENT(DRAW, XML_BORDER):
+ ::sax::Converter::convertPercent( nTmpValue, aStrValue );
aGradient.Border = static_cast< sal_Int16 >( nTmpValue );
break;
default:
- SAL_INFO("xmloff.style", "Unknown token at import gradient style");
+ SAL_WARN("xmloff.style", "unknown attribute " << SvXMLImport::getPrefixAndNameFromToken(aIter.getToken()) << "=" << aStrValue);
}
}
diff --git a/xmloff/source/style/HatchStyle.cxx b/xmloff/source/style/HatchStyle.cxx
index e4bb36068c00..61a51fbd7c02 100644
--- a/xmloff/source/style/HatchStyle.cxx
+++ b/xmloff/source/style/HatchStyle.cxx
@@ -74,21 +74,10 @@ XMLHatchStyleImport::~XMLHatchStyleImport()
}
void XMLHatchStyleImport::importXML(
- const uno::Reference< xml::sax::XAttributeList >& xAttrList,
+ const uno::Reference< xml::sax::XFastAttributeList >& xAttrList,
uno::Any& rValue,
OUString& rStrName )
{
- static const SvXMLTokenMapEntry aHatchAttrTokenMap[] =
- {
- { XML_NAMESPACE_DRAW, XML_NAME, XML_TOK_HATCH_NAME },
- { XML_NAMESPACE_DRAW, XML_DISPLAY_NAME, XML_TOK_HATCH_DISPLAY_NAME },
- { XML_NAMESPACE_DRAW, XML_STYLE, XML_TOK_HATCH_STYLE },
- { XML_NAMESPACE_DRAW, XML_COLOR, XML_TOK_HATCH_COLOR },
- { XML_NAMESPACE_DRAW, XML_DISTANCE, XML_TOK_HATCH_DISTANCE },
- { XML_NAMESPACE_DRAW, XML_ROTATION, XML_TOK_HATCH_ROTATION },
- XML_TOKEN_MAP_END
- };
-
OUString aDisplayName;
drawing::Hatch aHatch;
@@ -97,44 +86,43 @@ void XMLHatchStyleImport::importXML(
aHatch.Distance = 0;
aHatch.Angle = 0;
- static const SvXMLTokenMap aTokenMap( aHatchAttrTokenMap );
- const SvXMLNamespaceMap& rNamespaceMap = rImport.GetNamespaceMap();
SvXMLUnitConverter& rUnitConverter = rImport.GetMM100UnitConverter();
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- for( sal_Int16 i=0; i < nAttrCount; i++ )
+ for (auto &aIter : sax_fastparser::castToFastAttributeList( xAttrList ))
{
- const OUString& rFullAttrName = xAttrList->getNameByIndex( i );
- OUString aStrAttrName;
- sal_uInt16 nPrefix = rNamespaceMap.GetKeyByAttrName( rFullAttrName, &aStrAttrName );
- const OUString& rStrValue = xAttrList->getValueByIndex( i );
-
- switch( aTokenMap.Get( nPrefix, aStrAttrName ) )
+ const OUString aStrValue = aIter.toString();
+ switch( aIter.getToken() )
{
- case XML_TOK_HATCH_NAME:
- rStrName = rStrValue;
+ case XML_ELEMENT(DRAW, XML_NAME):
+ case XML_ELEMENT(DRAW_OOO, XML_NAME):
+ rStrName = aStrValue;
break;
- case XML_TOK_HATCH_DISPLAY_NAME:
- aDisplayName = rStrValue;
+ case XML_ELEMENT(DRAW, XML_DISPLAY_NAME):
+ case XML_ELEMENT(DRAW_OOO, XML_DISPLAY_NAME):
+ aDisplayName = aStrValue;
break;
- case XML_TOK_HATCH_STYLE:
- SvXMLUnitConverter::convertEnum( aHatch.Style, rStrValue, pXML_HatchStyle_Enum );
+ case XML_ELEMENT(DRAW, XML_STYLE):
+ case XML_ELEMENT(DRAW_OOO, XML_STYLE):
+ SvXMLUnitConverter::convertEnum( aHatch.Style, aStrValue, pXML_HatchStyle_Enum );
break;
- case XML_TOK_HATCH_COLOR:
- ::sax::Converter::convertColor(aHatch.Color, rStrValue);
+ case XML_ELEMENT(DRAW, XML_COLOR):
+ case XML_ELEMENT(DRAW_OOO, XML_COLOR):
+ ::sax::Converter::convertColor(aHatch.Color, aStrValue);
break;
- case XML_TOK_HATCH_DISTANCE:
- rUnitConverter.convertMeasureToCore(aHatch.Distance, rStrValue);
+ case XML_ELEMENT(DRAW, XML_DISTANCE):
+ case XML_ELEMENT(DRAW_OOO, XML_DISTANCE):
+ rUnitConverter.convertMeasureToCore(aHatch.Distance, aStrValue);
break;
- case XML_TOK_HATCH_ROTATION:
+ case XML_ELEMENT(DRAW, XML_ROTATION):
+ case XML_ELEMENT(DRAW_OOO, XML_ROTATION):
{
sal_Int32 nValue;
- if (::sax::Converter::convertNumber(nValue, rStrValue, 0, 3600))
+ if (::sax::Converter::convertNumber(nValue, aStrValue, 0, 3600))
aHatch.Angle = sal_Int16(nValue);
break;
}
default:
- SAL_INFO("xmloff.style", "Unknown token at import hatch style");
+ SAL_WARN("xmloff.style", "unknown attribute " << SvXMLImport::getPrefixAndNameFromToken(aIter.getToken()) << "=" << aStrValue);
}
}
diff --git a/xmloff/source/style/ImageStyle.cxx b/xmloff/source/style/ImageStyle.cxx
index 7acb976fec51..b9be2e5318d0 100644
--- a/xmloff/source/style/ImageStyle.cxx
+++ b/xmloff/source/style/ImageStyle.cxx
@@ -88,65 +88,48 @@ void XMLImageStyle::exportXML(OUString const & rStrName, uno::Any const & rValue
}
}
-bool XMLImageStyle::importXML(uno::Reference<xml::sax::XAttributeList> const & xAttrList,
+bool XMLImageStyle::importXML(uno::Reference<xml::sax::XFastAttributeList> const & xAttrList,
uno::Any& rValue, OUString& rStrName, SvXMLImport& rImport)
{
- static const SvXMLTokenMapEntry aHatchAttrTokenMap[] =
- {
- { XML_NAMESPACE_DRAW, XML_NAME, XML_TOK_IMAGE_NAME },
- { XML_NAMESPACE_DRAW, XML_DISPLAY_NAME, XML_TOK_IMAGE_DISPLAY_NAME },
- { XML_NAMESPACE_XLINK, XML_HREF, XML_TOK_IMAGE_URL },
- { XML_NAMESPACE_XLINK, XML_TYPE, XML_TOK_IMAGE_TYPE },
- { XML_NAMESPACE_XLINK, XML_SHOW, XML_TOK_IMAGE_SHOW },
- { XML_NAMESPACE_XLINK, XML_ACTUATE, XML_TOK_IMAGE_ACTUATE },
- XML_TOKEN_MAP_END
- };
-
bool bHasHRef = false;
bool bHasName = false;
OUString aDisplayName;
uno::Reference<graphic::XGraphic> xGraphic;
- static const SvXMLTokenMap aTokenMap( aHatchAttrTokenMap );
-
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- for( sal_Int16 i=0; i < nAttrCount; i++ )
+ for (auto &aIter : sax_fastparser::castToFastAttributeList( xAttrList ))
{
- const OUString& rFullAttrName = xAttrList->getNameByIndex( i );
- OUString aStrAttrName;
- sal_uInt16 nPrefix = rImport.GetNamespaceMap().GetKeyByAttrName( rFullAttrName, &aStrAttrName );
- const OUString& rStrValue = xAttrList->getValueByIndex( i );
+ const OUString aStrValue = aIter.toString();
- switch( aTokenMap.Get( nPrefix, aStrAttrName ) )
+ switch( aIter.getToken() )
{
- case XML_TOK_IMAGE_NAME:
+ case XML_ELEMENT(DRAW, XML_NAME):
{
- rStrName = rStrValue;
+ rStrName = aStrValue;
bHasName = true;
}
break;
- case XML_TOK_IMAGE_DISPLAY_NAME:
+ case XML_ELEMENT(DRAW, XML_DISPLAY_NAME):
{
- aDisplayName = rStrValue;
+ aDisplayName = aStrValue;
}
break;
- case XML_TOK_IMAGE_URL:
+ case XML_ELEMENT(XLINK, XML_HREF):
{
- xGraphic = rImport.loadGraphicByURL(rStrValue);
+ xGraphic = rImport.loadGraphicByURL(aStrValue);
bHasHRef = true;
}
break;
- case XML_TOK_IMAGE_TYPE:
+ case XML_ELEMENT(XLINK, XML_TYPE):
// ignore
break;
- case XML_TOK_IMAGE_SHOW:
+ case XML_ELEMENT(XLINK, XML_SHOW):
// ignore
break;
- case XML_TOK_IMAGE_ACTUATE:
+ case XML_ELEMENT(XLINK, XML_ACTUATE):
// ignore
break;
default:
- SAL_WARN("xmloff.style", "Unknown token at import fill bitmap style");
+ SAL_WARN("xmloff.style", "unknown attribute " << SvXMLImport::getPrefixAndNameFromToken(aIter.getToken()) << "=" << aStrValue);
}
}
diff --git a/xmloff/source/style/MarkerStyle.cxx b/xmloff/source/style/MarkerStyle.cxx
index e0ec8fdd1d97..ac19851fb3d6 100644
--- a/xmloff/source/style/MarkerStyle.cxx
+++ b/xmloff/source/style/MarkerStyle.cxx
@@ -26,6 +26,7 @@
#include <xmloff/xmltoken.hxx>
#include <xmloff/xmlexp.hxx>
#include <xmloff/xmlimp.hxx>
+#include <sal/log.hxx>
#include <rtl/ustring.hxx>
#include <com/sun/star/drawing/PolyPolygonBezierCoords.hpp>
#include <basegfx/polygon/b2dpolypolygon.hxx>
@@ -48,7 +49,7 @@ XMLMarkerStyleImport::~XMLMarkerStyleImport()
}
void XMLMarkerStyleImport::importXML(
- const uno::Reference< xml::sax::XAttributeList >& xAttrList,
+ const uno::Reference< xml::sax::XFastAttributeList >& xAttrList,
uno::Any& rValue,
OUString& rStrName )
{
@@ -58,37 +59,32 @@ void XMLMarkerStyleImport::importXML(
std::unique_ptr<SdXMLImExViewBox> xViewBox;
- SvXMLNamespaceMap& rNamespaceMap = rImport.GetNamespaceMap();
SvXMLUnitConverter& rUnitConverter = rImport.GetMM100UnitConverter();
OUString strPathData;
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- for( sal_Int16 i = 0; i < nAttrCount; i++ )
+ for (auto &aIter : sax_fastparser::castToFastAttributeList( xAttrList ))
{
- OUString aStrFullAttrName = xAttrList->getNameByIndex( i );
- OUString aStrAttrName;
- rNamespaceMap.GetKeyByAttrName( aStrFullAttrName, &aStrAttrName );
- OUString aStrValue = xAttrList->getValueByIndex( i );
+ OUString aStrValue = aIter.toString();
- if( IsXMLToken( aStrAttrName, XML_NAME ) )
+ switch (aIter.getToken() & TOKEN_MASK)
{
- rStrName = aStrValue;
- }
- else if( IsXMLToken( aStrAttrName, XML_DISPLAY_NAME ) )
- {
- aDisplayName = aStrValue;
- }
- else if( IsXMLToken( aStrAttrName, XML_VIEWBOX ) )
- {
- xViewBox.reset(new SdXMLImExViewBox(aStrValue, rUnitConverter));
- bHasViewBox = true;
-
- }
- else if( IsXMLToken( aStrAttrName, XML_D ) )
- {
- strPathData = aStrValue;
- bHasPathData = true;
+ case XML_NAME:
+ rStrName = aStrValue;
+ break;
+ case XML_DISPLAY_NAME:
+ aDisplayName = aStrValue;
+ break;
+ case XML_VIEWBOX:
+ xViewBox.reset(new SdXMLImExViewBox(aStrValue, rUnitConverter));
+ bHasViewBox = true;
+ break;
+ case XML_D:
+ strPathData = aStrValue;
+ bHasPathData = true;
+ break;
+ default:
+ SAL_WARN("xmloff.style", "unknown attribute " << SvXMLImport::getPrefixAndNameFromToken(aIter.getToken()) << "=" << aStrValue);
}
}
diff --git a/xmloff/source/style/TransGradientStyle.cxx b/xmloff/source/style/TransGradientStyle.cxx
index 9e95ca5e4edf..811dc2e0ea0b 100644
--- a/xmloff/source/style/TransGradientStyle.cxx
+++ b/xmloff/source/style/TransGradientStyle.cxx
@@ -80,7 +80,7 @@ XMLTransGradientStyleImport::~XMLTransGradientStyleImport()
}
void XMLTransGradientStyleImport::importXML(
- const uno::Reference< xml::sax::XAttributeList >& xAttrList,
+ const uno::Reference< xml::sax::XFastAttributeList >& xAttrList,
uno::Any& rValue,
OUString& rStrName )
{
@@ -94,62 +94,41 @@ void XMLTransGradientStyleImport::importXML(
aGradient.Angle = 0;
aGradient.Border = 0;
- static const SvXMLTokenMapEntry aTrGradientAttrTokenMap[] =
+ for (auto &aIter : sax_fastparser::castToFastAttributeList( xAttrList ))
{
- { XML_NAMESPACE_DRAW, XML_NAME, XML_TOK_GRADIENT_NAME },
- { XML_NAMESPACE_DRAW, XML_DISPLAY_NAME, XML_TOK_GRADIENT_DISPLAY_NAME },
- { XML_NAMESPACE_DRAW, XML_STYLE, XML_TOK_GRADIENT_STYLE },
- { XML_NAMESPACE_DRAW, XML_CX, XML_TOK_GRADIENT_CX },
- { XML_NAMESPACE_DRAW, XML_CY, XML_TOK_GRADIENT_CY },
- { XML_NAMESPACE_DRAW, XML_START, XML_TOK_GRADIENT_START },
- { XML_NAMESPACE_DRAW, XML_END, XML_TOK_GRADIENT_END },
- { XML_NAMESPACE_DRAW, XML_GRADIENT_ANGLE, XML_TOK_GRADIENT_ANGLE },
- { XML_NAMESPACE_DRAW, XML_BORDER, XML_TOK_GRADIENT_BORDER, },
- XML_TOKEN_MAP_END
- };
-
- static const SvXMLTokenMap aTokenMap( aTrGradientAttrTokenMap );
- SvXMLNamespaceMap& rNamespaceMap = rImport.GetNamespaceMap();
-
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- for( sal_Int16 i=0; i < nAttrCount; i++ )
- {
- const OUString& rFullAttrName = xAttrList->getNameByIndex( i );
- OUString aStrAttrName;
- sal_uInt16 nPrefix = rNamespaceMap.GetKeyByAttrName( rFullAttrName, &aStrAttrName );
- const OUString& rStrValue = xAttrList->getValueByIndex( i );
+ const OUString aStrValue = aIter.toString();
sal_Int32 nTmpValue;
- switch( aTokenMap.Get( nPrefix, aStrAttrName ) )
+ switch( aIter.getToken() )
{
- case XML_TOK_GRADIENT_NAME:
+ case XML_ELEMENT(DRAW, XML_NAME):
{
- rStrName = rStrValue;
+ rStrName = aStrValue;
}
break;
- case XML_TOK_GRADIENT_DISPLAY_NAME:
+ case XML_ELEMENT(DRAW, XML_DISPLAY_NAME):
{
- aDisplayName = rStrValue;
+ aDisplayName = aStrValue;
}
break;
- case XML_TOK_GRADIENT_STYLE:
+ case XML_ELEMENT(DRAW, XML_STYLE):
{
- SvXMLUnitConverter::convertEnum( aGradient.Style, rStrValue, pXML_GradientStyle_Enum );
+ SvXMLUnitConverter::convertEnum( aGradient.Style, aStrValue, pXML_GradientStyle_Enum );
}
break;
- case XML_TOK_GRADIENT_CX:
- ::sax::Converter::convertPercent( nTmpValue, rStrValue );
+ case XML_ELEMENT(DRAW, XML_CX):
+ ::sax::Converter::convertPercent( nTmpValue, aStrValue );
aGradient.XOffset = sal::static_int_cast< sal_Int16 >(nTmpValue);
break;
- case XML_TOK_GRADIENT_CY:
- ::sax::Converter::convertPercent( nTmpValue, rStrValue );
+ case XML_ELEMENT(DRAW, XML_CY):
+ ::sax::Converter::convertPercent( nTmpValue, aStrValue );
aGradient.YOffset = sal::static_int_cast< sal_Int16 >(nTmpValue);
break;
- case XML_TOK_GRADIENT_START:
+ case XML_ELEMENT(DRAW, XML_START):
{
sal_Int32 aStartTransparency;
- ::sax::Converter::convertPercent( aStartTransparency, rStrValue );
+ ::sax::Converter::convertPercent( aStartTransparency, aStrValue );
sal_uInt8 n = sal::static_int_cast< sal_uInt8 >(
( (100 - aStartTransparency) * 255 ) / 100 );
@@ -158,10 +137,10 @@ void XMLTransGradientStyleImport::importXML(
aGradient.StartColor = static_cast<sal_Int32>( aColor );
}
break;
- case XML_TOK_GRADIENT_END:
+ case XML_ELEMENT(DRAW, XML_END):
{
sal_Int32 aEndTransparency;
- ::sax::Converter::convertPercent( aEndTransparency, rStrValue );
+ ::sax::Converter::convertPercent( aEndTransparency, aStrValue );
sal_uInt8 n = sal::static_int_cast< sal_uInt8 >(
( (100 - aEndTransparency) * 255 ) / 100 );
@@ -170,11 +149,11 @@ void XMLTransGradientStyleImport::importXML(
aGradient.EndColor = static_cast<sal_Int32>( aColor );
}
break;
- case XML_TOK_GRADIENT_ANGLE:
+ case XML_ELEMENT(DRAW, XML_GRADIENT_ANGLE):
{
auto const cmp12(rImport.GetODFVersion().compareTo(ODFVER_012_TEXT));
bool const bSuccess =
- ::sax::Converter::convertAngle(aGradient.Angle, rStrValue,
+ ::sax::Converter::convertAngle(aGradient.Angle, aStrValue,
// tdf#89475 try to detect borked OOo angles
(cmp12 < 0) || (cmp12 == 0
&& (rImport.isGeneratorVersionOlderThan(SvXMLImport::AOO_4x, SvXMLImport::LO_7x)
@@ -183,13 +162,13 @@ void XMLTransGradientStyleImport::importXML(
SAL_INFO_IF(!bSuccess, "xmloff.style", "failed to import draw:angle");
}
break;
- case XML_TOK_GRADIENT_BORDER:
- ::sax::Converter::convertPercent( nTmpValue, rStrValue );
+ case XML_ELEMENT(DRAW, XML_BORDER):
+ ::sax::Converter::convertPercent( nTmpValue, aStrValue );
aGradient.Border = sal::static_int_cast< sal_Int16 >(nTmpValue);
break;
default:
- SAL_INFO("xmloff.style", "Unknown token at import transparency gradient style");
+ SAL_WARN("xmloff.style", "unknown attribute " << SvXMLImport::getPrefixAndNameFromToken(aIter.getToken()) << "=" << aStrValue);
}
}
diff --git a/xmloff/source/style/xmlstyle.cxx b/xmloff/source/style/xmlstyle.cxx
index a4e3d158ccea..6c4fc1856c0a 100644
--- a/xmloff/source/style/xmlstyle.cxx
+++ b/xmloff/source/style/xmlstyle.cxx
@@ -429,6 +429,38 @@ SvXMLStyleContext *SvXMLStylesContext::CreateStyleChildContext(
GetImport(), nElement, xAttrList);
break;
+ // FillStyles
+
+ case XML_ELEMENT(DRAW, XML_GRADIENT):
+ {
+ pStyle = new XMLGradientStyleContext( GetImport(), nElement, xAttrList );
+ break;
+ }
+ case XML_ELEMENT(DRAW, XML_HATCH):
+ {
+ pStyle = new XMLHatchStyleContext( GetImport(), nElement, xAttrList );
+ break;
+ }
+ case XML_ELEMENT(DRAW, XML_FILL_IMAGE):
+ {
+ pStyle = new XMLBitmapStyleContext( GetImport(), nElement, xAttrList );
+ break;
+ }
+ case XML_ELEMENT(DRAW, XML_OPACITY):
+ {
+ pStyle = new XMLTransGradientStyleContext( GetImport(), nElement, xAttrList );
+ break;
+ }
+ case XML_ELEMENT(DRAW, XML_MARKER):
+ {
+ pStyle = new XMLMarkerStyleContext( GetImport(), nElement, xAttrList );
+ break;
+ }
+ case XML_ELEMENT(DRAW, XML_STROKE_DASH):
+ {
+ pStyle = new XMLDashStyleContext( GetImport(), nElement, xAttrList );
+ break;
+ }
}
return pStyle;
@@ -492,38 +524,6 @@ SvXMLStyleContext *SvXMLStylesContext::CreateStyleChildContext( sal_uInt16 p_nPr
break;
- // FillStyles
-
- case XML_TOK_STYLES_GRADIENTSTYLES:
- {
- pStyle = new XMLGradientStyleContext( GetImport(), p_nPrefix, rLocalName, xAttrList );
- break;
- }
- case XML_TOK_STYLES_HATCHSTYLES:
- {
- pStyle = new XMLHatchStyleContext( GetImport(), p_nPrefix, rLocalName, xAttrList );
- break;
- }
- case XML_TOK_STYLES_BITMAPSTYLES:
- {
- pStyle = new XMLBitmapStyleContext( GetImport(), p_nPrefix, rLocalName, xAttrList );
- break;
- }
- case XML_TOK_STYLES_TRANSGRADIENTSTYLES:
- {
- pStyle = new XMLTransGradientStyleContext( GetImport(), p_nPrefix, rLocalName, xAttrList );
- break;
- }
- case XML_TOK_STYLES_MARKERSTYLES:
- {
- pStyle = new XMLMarkerStyleContext( GetImport(), p_nPrefix, rLocalName, xAttrList );
- break;
- }
- case XML_TOK_STYLES_DASHSTYLES:
- {
- pStyle = new XMLDashStyleContext( GetImport(), p_nPrefix, rLocalName, xAttrList );
- break;
- }
}
}
More information about the Libreoffice-commits
mailing list