22#include <com/sun/star/lang/XInitialization.hpp>
23#include <com/sun/star/animations/AnimationTransformType.hpp>
24#include <com/sun/star/animations/XAnimationNodeSupplier.hpp>
25#include <com/sun/star/animations/AnimationNodeType.hpp>
26#include <com/sun/star/animations/SequenceTimeContainer.hpp>
27#include <com/sun/star/animations/XIterateContainer.hpp>
28#include <com/sun/star/animations/XAnimateMotion.hpp>
29#include <com/sun/star/animations/XAnimatePhysics.hpp>
30#include <com/sun/star/animations/XAnimateColor.hpp>
31#include <com/sun/star/animations/XAnimateTransform.hpp>
32#include <com/sun/star/animations/XTransitionFilter.hpp>
33#include <com/sun/star/animations/XCommand.hpp>
34#include <com/sun/star/animations/XAudio.hpp>
35#include <com/sun/star/animations/ValuePair.hpp>
36#include <com/sun/star/animations/AnimationColorSpace.hpp>
37#include <com/sun/star/presentation/EffectPresetClass.hpp>
38#include <com/sun/star/animations/Timing.hpp>
39#include <com/sun/star/animations/Event.hpp>
40#include <com/sun/star/beans/XPropertySet.hpp>
41#include <com/sun/star/io/WrongFormatException.hpp>
42#include <com/sun/star/xml/sax/XFastAttributeList.hpp>
43#include <com/sun/star/text/XTextCursor.hpp>
44#include <com/sun/star/text/XTextRangeCompare.hpp>
45#include <com/sun/star/presentation/ParagraphTarget.hpp>
46#include <com/sun/star/container/XEnumerationAccess.hpp>
47#include <com/sun/star/animations/EventTrigger.hpp>
48#include <com/sun/star/presentation/EffectCommands.hpp>
49#include <com/sun/star/util/Duration.hpp>
70#include <animations.hxx>
73using namespace ::
cppu;
82using ::com::sun::star::xml::sax::XFastAttributeList;
83using ::com::sun::star::beans::NamedValue;
84using ::com::sun::star::text::XTextRange;
85using ::com::sun::star::text::XTextCursor;
86using ::com::sun::star::text::XTextRangeCompare;
87using ::com::sun::star::container::XEnumerationAccess;
88using ::com::sun::star::container::XEnumeration;
89using ::com::sun::star::lang::XInitialization;
94 if (rImport.IsPackageURL(rURL))
95 return "vnd.sun.star.Package:" + rURL;
97 return rImport.GetAbsoluteReference(rURL);
128 sal_Int32
nLength = rValue.size();
129 const char * pStr = rValue.data();
132 if( (*pStr >=
'0' && *pStr <=
'9') || *pStr ==
'-' || *pStr ==
'.' || *pStr ==
'+' || *pStr ==
'e' || *pStr ==
'E' )
146static bool isTime(
const OUString& rValue )
148 sal_Int32
nLength = rValue.getLength();
152 if( !( (*pStr >=
'0' && *pStr <=
'9') || *pStr ==
'-' || *pStr ==
'.' || *pStr ==
'+' || *pStr ==
'e' || *pStr ==
'E' ) )
158 return (
nLength == 0) || ((*pStr ==
's' || *pStr ==
'S') && (
nLength == 1));
165 Reference< XInterface > xRef(
mrImport.getInterfaceToIdentifierMapper().getReference( rValue ) );
167 Reference< XShape > _xShape( xRef, UNO_QUERY );
169 return Any( _xShape );
171 Reference< XTextCursor > xTextCursor( xRef, UNO_QUERY );
172 if( xTextCursor.is() )
174 Reference< XTextRange > xStart( xTextCursor->getStart() ), xRange;
175 Reference< XShape > xShape( xTextCursor->getText(), UNO_QUERY_THROW );
176 Reference< XTextRangeCompare > xTextRangeCompare( xShape, UNO_QUERY_THROW );
178 Reference< XEnumerationAccess > xParaEnumAccess( xShape, UNO_QUERY_THROW );
179 Reference< XEnumeration > xEnumeration( xParaEnumAccess->createEnumeration(), UNO_SET_THROW );
180 sal_Int16 nParagraph = 0;
182 while( xEnumeration->hasMoreElements() )
184 xEnumeration->nextElement() >>= xRange;
187 if( xRange.is() && (xTextRangeCompare->compareRegionEnds( xStart, xRange ) >= 0 ) )
189 return Any( ParagraphTarget( xShape, nParagraph ) );
207 sal_Int32 nCommaPos = -1,
nPos;
208 sal_Int32 nOpenBrackets = 0;
209 for(
nPos = 0; (
nPos < rValue.getLength()) && (nCommaPos == -1);
nPos++ )
211 switch( rValue[
nPos] )
214 if( nOpenBrackets == 0 )
233 aPair.First =
convertValue( eAttributeName, rValue.copy( 0, nCommaPos ) );
234 aPair.Second =
convertValue( eAttributeName, rValue.copy( nCommaPos+1 ) );
242 if( rValue.getLength() )
switch( eAttributeName )
250 return Any( rValue );
272 if( !rValue.isEmpty() )
287 Sequence< Any > aValues;
315 aAny <<= Timing_MEDIA;
319 aAny <<= Timing_INDEFINITE;
321 else if(
isTime( rValue ) )
323 aAny <<= rValue.toDouble();
331 OUString aEventTrigger;
333 sal_Int32
nPos = rValue.indexOf(
'+' );
336 aEventTrigger = rValue;
340 aEventTrigger = rValue.copy( 0,
nPos );
346 nPos = aEventTrigger.indexOf(
'.' );
349 aEvent.Source <<=
mrImport.getInterfaceToIdentifierMapper().getReference( aEventTrigger.copy( 0,
nPos ) );
350 aEventTrigger = aEventTrigger.copy(
nPos + 1 );
360 OSL_FAIL(
"AnimationsImportHelperImpl::convertTiming(), unknown event trigger!");
384 Sequence< double > aKeyTimes(
nElements );
388 double*
pValues = aKeyTimes.getArray();
400 Sequence< TimeFilterPair > aTimeFilter(
nElements );
404 TimeFilterPair*
pValues = aTimeFilter.getArray();
409 size_t nPos = aToken.find(
',' );
410 if(
nPos != std::string_view::npos )
412 pValues->Time = rtl_math_stringToDouble(
413 aToken.data(), aToken.data() +
nPos,
'.', 0,
nullptr,
nullptr);
414 pValues->Progress = rtl_math_stringToDouble(
415 aToken.data() +
nPos + 1, aToken.data() + aToken.size(),
'.', 0,
427 return Any( rValue );
432 const Reference< XAnimationNode >& xParentNode,
433 SvXMLImport& rImport, sal_Int32 nElement,
434 const css::uno::Reference< css::xml::sax::XFastAttributeList>& xAttrList,
435 const std::shared_ptr<AnimationsImportHelperImpl>& pHelper )
439 bool bRootContext = !pHelper;
444 mpHelper = std::make_shared<AnimationsImportHelperImpl>( rImport );
449 sal_Int16 nPresetClass = EffectPresetClass::CUSTOM;
451 const char* pServiceName =
nullptr;
457 pServiceName =
"com.sun.star.animations.SequenceTimeContainer";
break;
459 pServiceName =
"com.sun.star.animations.IterateContainer";
break;
461 pServiceName =
"com.sun.star.animations.Animate";
break;
463 pServiceName =
"com.sun.star.animations.AnimateSet";
break;
465 pServiceName =
"com.sun.star.animations.AnimateMotion";
break;
467 pServiceName =
"com.sun.star.animations.AnimatePhysics";
break;
469 pServiceName =
"com.sun.star.animations.AnimateColor";
break;
471 pServiceName =
"com.sun.star.animations.AnimateTransform";
break;
473 pServiceName =
"com.sun.star.animations.TransitionFilter";
break;
475 pServiceName =
"com.sun.star.animations.Audio";
break;
477 pServiceName =
"com.sun.star.animations.Command";
break;
484 const OUString& rValue = aIter.toString();
485 if ( rValue ==
"ooo-entrance-random" )
487 nPresetClass = EffectPresetClass::ENTRANCE;
489 else if ( rValue ==
"ooo-exit-random" )
491 nPresetClass = EffectPresetClass::EXIT;
494 if( nPresetClass != EffectPresetClass::CUSTOM )
496 pServiceName =
"com.sun.star.comp.sd.RandomAnimationNode";
502 pServiceName =
"com.sun.star.animations.ParallelTimeContainer";
506 SAL_WARN(
"xmloff",
"unexpected token '" + SvXMLImport::getNameFromToken(nElement)
507 <<
"' 0x" << std::hex << nElement);
513 Reference< XComponentContext > xContext( ::comphelper::getProcessComponentContext() );
516 xContext->getServiceManager()->createInstanceWithContext(OUString::createFromAscii(pServiceName), xContext),
519 if( nPresetClass != EffectPresetClass::CUSTOM )
521 Reference< XInitialization > xInit(
mxNode, UNO_QUERY_THROW );
522 const Any aAny( nPresetClass );
523 Sequence< Any > aArgs( &aAny, 1 ) ;
524 xInit->initialize( aArgs );
529 Reference< XTimeContainer > xParentContainer( xParentNode, UNO_QUERY_THROW );
530 xParentContainer->appendChild(
mxNode );
547 const sal_Int16 nNodeType =
mxNode->getType();
550 Reference< XAnimate > xAnimate(
mxNode, UNO_QUERY );
551 Reference< XCommand > xCommand(
mxNode, UNO_QUERY );
552 Reference< XTransitionFilter > xTransitionFilter(
mxNode, UNO_QUERY );
553 Reference< XIterateContainer > xIter(
mxNode, UNO_QUERY );
555 std::vector< NamedValue > aUserData;
558 bool bHaveXmlId(
false );
564 auto nToken = aIter.getToken();
578 mxNode->setDuration(
mpHelper->convertTiming( aIter.toString() ) );
601 mxNode->setFillDefault( nEnum );
609 mxNode->setRestart( nEnum );
617 mxNode->setRestartDefault( nEnum );
625 mxNode->setAcceleration( aIter.toDouble() );
633 mxNode->setDecelerate( aIter.toDouble() );
642 mxNode->setAutoReverse( bTemp );
649 mxNode->setRepeatCount(
mpHelper->convertTiming( aIter.toString() ) );
656 mxNode->setRepeatDuration(
mpHelper->convertTiming( aIter.toString() ) );
712 if( nNodeType == AnimationNodeType::AUDIO )
714 Reference< XAudio > xAudio(
mxNode, UNO_QUERY_THROW );
724 Any aTarget(
mpHelper->convertTarget( aIter.toString() ) );
728 xAnimate->setTarget( aTarget );
730 else if( xIter.is() )
732 xIter->setTarget( aTarget );
734 else if( xCommand.is() )
736 xCommand->setTarget( aTarget );
744 if( nNodeType == AnimationNodeType::AUDIO )
748 Reference< XAudio > xAudio(
mxNode, UNO_QUERY_THROW );
749 xAudio->setVolume( aIter.toDouble() );
759 Reference< XAnimationNode > xMaster(
GetImport().getInterfaceToIdentifierMapper().getReference( aIter.toString() ), UNO_QUERY );
771 xAnimate->setSubItem( nEnum );
773 else if( xIter.is() )
775 xIter->setSubItem( nEnum );
787 OUString
aName( aIter.toString() );
790 while(
p->mpAPIName )
794 aName = OUString::createFromAscii(
p->mpAPIName );
795 meAttributeName =
p->meXMLToken;
802 xAnimate->setAttributeName(
aName );
811 aValues = aIter.toString();
819 aFrom = aIter.toString();
827 aBy = aIter.toString();
835 aTo = aIter.toString();
852 xAnimate->setFormula( aIter.toString() );
859 if (!bHaveXmlId) { sXmlId = aIter.toString(); }
864 sXmlId = aIter.toString();
876 xAnimate->setCalcMode( nEnum );
900 xAnimate->setAdditive( nEnum );
917 Reference< XAnimateMotion > xAnimateMotion(
mxNode, UNO_QUERY );
918 if( xAnimateMotion.is() )
927 Reference< XAnimatePhysics > xAnimatePhysics(
mxNode, UNO_QUERY );
928 if( xAnimatePhysics.is() )
929 xAnimatePhysics->setStartVelocityX(
Any(aIter.toDouble()) );
937 Reference< XAnimatePhysics > xAnimatePhysics(
mxNode, UNO_QUERY );
938 if( xAnimatePhysics.is() )
939 xAnimatePhysics->setStartVelocityY(
Any(aIter.toDouble()) );
947 Reference< XAnimatePhysics > xAnimatePhysics(
mxNode, UNO_QUERY );
948 if( xAnimatePhysics.is() )
949 xAnimatePhysics->setDensity(
Any(aIter.toDouble()) );
957 Reference< XAnimatePhysics > xAnimatePhysics(
mxNode, UNO_QUERY );
958 if( xAnimatePhysics.is() )
959 xAnimatePhysics->setBounciness(
Any(aIter.toDouble()) );
966 Reference< XAnimateColor > xAnimateColor(
mxNode, UNO_QUERY );
967 if( xAnimateColor.is() )
968 xAnimateColor->setColorInterpolation(
IsXMLToken( aIter,
XML_HSL ) ? AnimationColorSpace::HSL : AnimationColorSpace::RGB );
975 Reference< XAnimateColor > xAnimateColor(
mxNode, UNO_QUERY );
976 if( xAnimateColor.is() )
984 Reference< XAnimateTransform > xTransform(
mxNode, UNO_QUERY );
985 if( xTransform.is() )
989 xTransform->setTransformType( nEnum );
992 case AnimationTransformType::SCALE: meAttributeName =
XML_SCALE;
break;
993 case AnimationTransformType::ROTATE: meAttributeName =
XML_ROTATE;
break;
994 case AnimationTransformType::SKEWX: meAttributeName =
XML_SKEWX;
break;
995 case AnimationTransformType::SKEWY: meAttributeName =
XML_SKEWY;
break;
1009 if( xTransitionFilter.is() )
1012 xTransitionFilter->setTransition( nEnum );
1021 if( xTransitionFilter.is() )
1024 xTransitionFilter->setSubtype( nEnum );
1033 if( xTransitionFilter.is() )
1042 if( xTransitionFilter.is() )
1051 if( xTransitionFilter.is() )
1053 sal_Int32 nColor(0);
1055 xTransitionFilter->setFadeColor(nColor);
1066 xIter->setIterateType( nEnum );
1076 OUString rValue = aIter.toString();
1077 double fInterval = 0.0;
1078 if( rValue.match(
"P") )
1080 css::util::Duration aDuration;
1083 fInterval = ((((aDuration.Hours * 60)
1084 + aDuration.Minutes) * 60) + aDuration.Seconds)
1085 + (aDuration.NanoSeconds / 1000000000.0);
1090 fInterval = aIter.toDouble();
1093 xIter->setIterateInterval( fInterval );
1102 aUserData.emplace_back(
"group-id",
Any( aIter.toInt32() ) );
1109 if( xCommand.is() && nNodeType == AnimationNodeType::COMMAND )
1113 xCommand->setCommand( nEnum );
1127 aUserData.emplace_back( SvXMLImport::getNameFromToken(aIter.getToken()),
Any( aIter.toString() ) );
1135 if (!sXmlId.isEmpty())
1137 Reference< XInterface >
const xRef(
mxNode, UNO_QUERY );
1138 GetImport().getInterfaceToIdentifierMapper().registerReference(
1142 sal_Int32 nUserDataCount = aUserData.size();
1143 if( nUserDataCount )
1145 Sequence< NamedValue > aUnoUserData( nUserDataCount );
1146 NamedValue*
pData = aUnoUserData.getArray();
1147 for (
auto const& item : aUserData)
1150 mxNode->setUserData( aUnoUserData );
1156 if( !
aFrom.isEmpty() )
1157 xAnimate->setFrom(
mpHelper->convertValue( meAttributeName,
aFrom ) );
1159 if( !aBy.isEmpty() )
1160 xAnimate->setBy(
mpHelper->convertValue( meAttributeName, aBy ) );
1162 if( !
aTo.isEmpty() )
1163 xAnimate->setTo(
mpHelper->convertValue( meAttributeName,
aTo ) );
1165 if( !aValues.isEmpty() )
1166 xAnimate->setValues(
mpHelper->convertValueSequence( meAttributeName, aValues ) );
1168 if (xAnimate->getValues().getLength() != xAnimate->getKeyTimes().getLength())
1169 throw css::io::WrongFormatException();
1172 catch (
const css::io::WrongFormatException&)
1183 const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList)
1192class AnimationsImport:
public SvXMLImport,
public XAnimationNodeSupplier
1195 explicit AnimationsImport(
const Reference< XComponentContext > & rxContext );
1198 const Reference<XFastAttributeList>& xAttrList)
override;
1202 virtual void SAL_CALL acquire() noexcept override;
1203 virtual
void SAL_CALL release() noexcept override;
1206 Reference< XAnimationNode > SAL_CALL getAnimationNode() override;
1214AnimationsImport::AnimationsImport( const Reference< XComponentContext > & rxContext )
1220 mxRootNode.set( SequenceTimeContainer::create(rxContext), UNO_QUERY_THROW );
1224Any SAL_CALL AnimationsImport::queryInterface(
const Type& aType )
1228 return Any( Reference<XAnimationNodeSupplier>(
this ) );
1232 return SvXMLImport::queryInterface( aType );
1236void SAL_CALL AnimationsImport::acquire() noexcept
1238 SvXMLImport::acquire();
1241void SAL_CALL AnimationsImport::release() noexcept
1243 SvXMLImport::release();
1248 const Reference<XFastAttributeList>& xAttrList)
1254 pContext =
new AnimationNodeContext(
mxRootNode, *
this, nElement, xAttrList );
1261Reference< XAnimationNode > SAL_CALL AnimationsImport::getAnimationNode()
1268 if( !(xRootNode.is() && xPageProps.is()) )
1273 Reference< XEnumerationAccess > xEnumerationAccess( xRootNode, UNO_QUERY_THROW );
1274 Reference< XEnumeration > xEnumeration( xEnumerationAccess->createEnumeration(), UNO_SET_THROW );
1275 if( xEnumeration->hasMoreElements() )
1277 Reference< XAnimationNode > xNode( xEnumeration->nextElement(), UNO_QUERY_THROW );
1278 if( xNode->getType() == AnimationNodeType::PAR )
1281 if( (xNode->getBegin() >>=
aEvent) && (
aEvent.Trigger == EventTrigger::BEGIN_EVENT) )
1284 Reference< XEnumerationAccess > xChildEnumerationAccess( xNode, UNO_QUERY_THROW );
1285 Reference< XEnumeration > xChildEnumeration( xChildEnumerationAccess->createEnumeration(), UNO_SET_THROW );
1286 while( xChildEnumeration->hasMoreElements() )
1288 Reference< XAnimationNode > xChildNode( xChildEnumeration->nextElement(), UNO_QUERY_THROW );
1289 switch( xChildNode->getType() )
1291 case AnimationNodeType::TRANSITIONFILTER:
1293 Reference< XTransitionFilter > xTransFilter( xChildNode, UNO_QUERY_THROW );
1295 xPageProps->setPropertyValue(
"TransitionType",
Any( xTransFilter->getTransition() ) );
1296 xPageProps->setPropertyValue(
"TransitionSubtype",
Any( xTransFilter->getSubtype() ) );
1297 xPageProps->setPropertyValue(
"TransitionDirection",
Any( xTransFilter->getDirection() ) );
1298 xPageProps->setPropertyValue(
"TransitionFadeColor",
Any( xTransFilter->getFadeColor() ) );
1301 if( xTransFilter->getDuration() >>= fDuration )
1302 xPageProps->setPropertyValue(
"TransitionDuration",
Any( fDuration ) );
1307 case AnimationNodeType::COMMAND:
1309 Reference< XCommand > xCommand( xChildNode, UNO_QUERY_THROW );
1310 if( xCommand->getCommand() == EffectCommands::STOPAUDIO )
1312 xPageProps->setPropertyValue(
"Sound",
Any(
true) );
1317 case AnimationNodeType::AUDIO:
1319 Reference< XAudio > xAudio( xChildNode, UNO_QUERY_THROW );
1321 if( (xAudio->getSource() >>= sSoundURL) && !sSoundURL.isEmpty() )
1323 xPageProps->setPropertyValue(
"Sound",
Any(sSoundURL) );
1326 if( (xAudio->getRepeatCount() >>= eTiming) && (eTiming == Timing_INDEFINITE) )
1327 xPageProps->setPropertyValue(
"LoopSound",
Any(
true ) );
1335 Reference< XTimeContainer > xRootContainer( xRootNode, UNO_QUERY_THROW );
1336 xRootContainer->removeChild( xNode );
1349extern "C" SAL_DLLPUBLIC_EXPORT uno::XInterface*
1351 uno::Sequence<uno::Any>
const& )
1353 return cppu::acquire(
new xmloff::AnimationsImport(pCtx));
const PropertyValue * pValues
SAL_DLLPUBLIC_EXPORT uno::XInterface * com_sun_star_comp_Xmloff_AnimationsImport(uno::XComponentContext *pCtx, uno::Sequence< uno::Any > const &)
Reference< XAnimationNode > mxRootNode
static OUString lcl_GetMediaReference(SvXMLImport const &rImport, OUString const &rURL)
This class deliberately does not support XWeak, to improve performance when loading large documents.
SvXMLImport & GetImport()
static bool convertEnum(EnumT &rEnum, std::u16string_view rValue, const SvXMLEnumMapEntry< EnumT > *pMap)
convert string to enum using given enum map, if the enum is not found in the map, this method will re...
Abstract base-class for different XML-types.
virtual bool importXML(const OUString &rStrImpValue, css::uno::Any &rValue, const SvXMLUnitConverter &rUnitConverter) const =0
Imports the given value according to the XML-data-type corresponding to the derived class.
static bool convertColor(sal_Int32 &rColor, std::u16string_view rValue)
static void convertDuration(OUStringBuffer &rBuffer, const double fTime)
static bool convertBool(bool &rBool, std::u16string_view rString)
css::uno::Reference< css::animations::XAnimationNode > mxNode
AnimationNodeContext(const css::uno::Reference< css::animations::XAnimationNode > &xParentNode, SvXMLImport &rImport, sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList > &xAttrList, const std::shared_ptr< AnimationsImportHelperImpl > &pImpl=nullptr)
virtual css::uno::Reference< XFastContextHandler > SAL_CALL createFastChildContext(sal_Int32 Element, const css::uno::Reference< css::xml::sax::XFastAttributeList > &Attribs) override
static void postProcessRootNode(const css::uno::Reference< css::animations::XAnimationNode > &xNode, css::uno::Reference< css::beans::XPropertySet > const &xPageProps)
void init_node(const css::uno::Reference< css::xml::sax::XFastAttributeList > &xAttrList)
std::shared_ptr< AnimationsImportHelperImpl > mpHelper
static Sequence< double > convertKeyTimes(std::string_view rValue)
Any convertTiming(const OUString &rValue)
static Sequence< TimeFilterPair > convertTimeFilter(std::string_view rValue)
Any convertValue(XMLTokenEnum eAttributeName, const OUString &rValue)
AnimationsImportHelperImpl(SvXMLImport &rImport)
static Any convertPath(const OUString &rValue)
Any convertTarget(const OUString &rValue)
Sequence< Any > convertValueSequence(XMLTokenEnum eAttributeName, std::u16string_view rValue)
#define TOOLS_WARN_EXCEPTION(area, stream)
#define SAL_WARN(area, stream)
std::unique_ptr< sal_Int32[]> pData
sal_Int32 getTokenCount(std::string_view rIn, char cTok)
css::uno::Any SAL_CALL queryInterface(const css::uno::Type &rType, Interface1 *p1)
std::basic_string_view< charT, traits > getToken(std::basic_string_view< charT, traits > sv, charT delimiter, std::size_t &position)
double toDouble(std::u16string_view str)
FastAttributeList & castToFastAttributeList(const css::uno::Reference< css::xml::sax::XFastAttributeList > &xAttrList)
Handling of tokens in XML:
XMLTokenEnum
The enumeration of all XML tokens.
@ XML_PHYSICS_ANIMATION_START_VELOCITY_X
@ XML_PHYSICS_ANIMATION_START_VELOCITY_Y
@ XML_COLOR_INTERPOLATION
@ XML_PHYSICS_ANIMATION_DENSITY
@ XML_PHYSICS_ANIMATION_BOUNCINESS
@ XML_TEXT_ROTATION_ANGLE
@ XML_COLOR_INTERPOLATION_DIRECTION
bool IsXMLToken(std::u16string_view rString, enum XMLTokenEnum eToken)
compare eToken to the string
const OUString & GetXMLToken(enum XMLTokenEnum eToken)
return the OUString representation for eToken
const SvXMLEnumMapEntry< sal_Int16 > aAnimations_EnumMap_Endsync[]
const SvXMLEnumMapEntry< sal_Int16 > aAnimations_EnumMap_EventTrigger[]
const SvXMLEnumMapEntry< sal_Int16 > aAnimations_EnumMap_Fill[]
const SvXMLEnumMapEntry< sal_Int16 > aAnimations_EnumMap_TransitionSubType[]
static bool isTime(const OUString &rValue)
const SvXMLEnumMapEntry< sal_Int16 > aAnimations_EnumMap_Command[]
const SvXMLEnumMapEntry< sal_Int16 > aAnimations_EnumMap_TransformType[]
const SvXMLEnumMapEntry< sal_Int16 > aAnimations_EnumMap_AdditiveMode[]
const SvXMLEnumMapEntry< sal_Int16 > aAnimations_EnumMap_FillDefault[]
const SvXMLEnumMapEntry< sal_Int16 > aAnimations_EnumMap_RestartDefault[]
const SvXMLEnumMapEntry< sal_Int16 > aAnimations_EnumMap_CalcMode[]
const struct ImplAttributeNameConversion * getAnimationAttributeNamesConversionList()
const SvXMLEnumMapEntry< sal_Int16 > aAnimations_EnumMap_EffectNodeType[]
const SvXMLEnumMapEntry< sal_Int16 > aAnimations_EnumMap_Restart[]
const SvXMLEnumMapEntry< sal_Int16 > aAnimations_EnumMap_EffectPresetClass[]
const SvXMLEnumMapEntry< sal_Int16 > aAnimations_EnumMap_SubItem[]
const SvXMLEnumMapEntry< sal_Int16 > aAnimations_EnumMap_TransitionType[]
static bool isDouble(std::string_view rValue)
const SvXMLEnumMapEntry< sal_Int16 > aAnimations_EnumMap_IterateType[]
#define XMLOFF_WARN_UNKNOWN(area, rIter)
#define XML_ELEMENT(prefix, name)
constexpr bool IsTokenInNamespace(sal_Int32 nToken, sal_uInt16 nNamespacePrefix)
constexpr sal_Int32 TOKEN_MASK
constexpr sal_uInt16 XML_NAMESPACE_PRESENTATION_OASIS
constexpr sal_uInt16 XML_NAMESPACE_PRESENTATION
constexpr sal_uInt16 XML_NAMESPACE_PRESENTATION_OOO
constexpr sal_uInt16 XML_NAMESPACE_PRESENTATION_SO52
#define XML_SD_TYPE_PRESPAGE_VISIBILITY
#define XML_SD_TYPE_STROKE
#define XML_SD_TYPE_FILLSTYLE
#define XML_TYPE_TEXT_POSTURE
#define XML_TYPE_TEXT_UNDERLINE_STYLE
#define XML_TYPE_TEXT_WEIGHT
#define XML_TYPE_TEXT_ROTATION_ANGLE
#define XML_TYPE_DOUBLE_PERCENT