diff options
Diffstat (limited to 'animations')
-rw-r--r-- | animations/Library_animcore.mk | 58 | ||||
-rw-r--r-- | animations/Makefile | 39 | ||||
-rw-r--r-- | animations/Module_animations.mk | 37 | ||||
-rw-r--r-- | animations/Package_inc.mk | 33 | ||||
-rw-r--r-- | animations/Package_xml.mk | 33 | ||||
-rw-r--r-- | animations/inc/animations/animationnodehelper.hxx | 133 | ||||
-rw-r--r-- | animations/prj/build.lst | 3 | ||||
-rw-r--r-- | animations/prj/d.lst | 0 | ||||
-rwxr-xr-x | animations/prj/makefile.mk | 40 | ||||
-rw-r--r-- | animations/source/animcore/animcore.component | 67 | ||||
-rw-r--r-- | animations/source/animcore/animcore.cxx | 2082 | ||||
-rw-r--r-- | animations/source/animcore/animcore.xml | 28 | ||||
-rw-r--r-- | animations/source/animcore/factreg.cxx | 85 | ||||
-rw-r--r-- | animations/source/animcore/factreg.hxx | 54 | ||||
-rw-r--r-- | animations/source/animcore/targetpropertiescreator.cxx | 499 |
15 files changed, 0 insertions, 3191 deletions
diff --git a/animations/Library_animcore.mk b/animations/Library_animcore.mk deleted file mode 100644 index 962c91a78..000000000 --- a/animations/Library_animcore.mk +++ /dev/null @@ -1,58 +0,0 @@ -# -*- Mode: makefile; tab-width: 4; indent-tabs-mode: t -*- -#************************************************************************* -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2000, 2011 Oracle and/or its affiliates. -# -# OpenOffice.org - a multi-platform office productivity suite -# -# This file is part of OpenOffice.org. -# -# OpenOffice.org is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# only, as published by the Free Software Foundation. -# -# OpenOffice.org is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License version 3 for more details -# (a copy is included in the LICENSE file that accompanied this code). -# -# You should have received a copy of the GNU Lesser General Public License -# version 3 along with OpenOffice.org. If not, see -# <http://www.openoffice.org/license.html> -# for a copy of the LGPLv3 License. -# -#************************************************************************* - -$(eval $(call gb_Library_Library,animcore)) - -$(eval $(call gb_Library_add_package_headers,animcore,animations_inc)) - -$(eval $(call gb_Library_set_componentfile,animcore,animations/source/animcore/animcore)) - -$(eval $(call gb_Library_set_include,animcore,\ - $$(INCLUDE) \ - -I$(realpath $(SRCDIR)/animcore/source/animcore) \ - -I$(OUTDIR)/inc \ -)) - -$(eval $(call gb_Library_add_api,animcore,\ - offapi \ - udkapi \ -)) - -$(eval $(call gb_Library_add_linked_libs,animcore,\ - cppu \ - cppuhelper \ - sal \ -)) - -$(eval $(call gb_Library_add_exception_objects,animcore,\ - animations/source/animcore/animcore \ - animations/source/animcore/factreg \ - animations/source/animcore/targetpropertiescreator \ -)) - -# vim: set noet sw=4 ts=4: diff --git a/animations/Makefile b/animations/Makefile deleted file mode 100644 index 6c4d53b5f..000000000 --- a/animations/Makefile +++ /dev/null @@ -1,39 +0,0 @@ -# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- -#************************************************************************* -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2000, 2010 Oracle and/or its affiliates. -# -# OpenOffice.org - a multi-platform office productivity suite -# -# This file is part of OpenOffice.org. -# -# OpenOffice.org is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# only, as published by the Free Software Foundation. -# -# OpenOffice.org is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License version 3 for more details -# (a copy is included in the LICENSE file that accompanied this code). -# -# You should have received a copy of the GNU Lesser General Public License -# version 3 along with OpenOffice.org. If not, see -# <http://www.openoffice.org/license.html> -# for a copy of the LGPLv3 License. -# -#************************************************************************* - -ifeq ($(strip $(SOLARENV)),) -$(error No environment set!) -endif - -gb_PARTIALBUILD := T -GBUILDDIR := $(SOLARENV)/gbuild -include $(GBUILDDIR)/gbuild.mk - -$(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk))) - -# vim: set noet sw=4 ts=4: diff --git a/animations/Module_animations.mk b/animations/Module_animations.mk deleted file mode 100644 index 468f77dd5..000000000 --- a/animations/Module_animations.mk +++ /dev/null @@ -1,37 +0,0 @@ -# -*- Mode: makefile; tab-width: 4; indent-tabs-mode: t -*- -#************************************************************************* -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2000, 2011 Oracle and/or its affiliates. -# -# OpenOffice.org - a multi-platform office productivity suite -# -# This file is part of OpenOffice.org. -# -# OpenOffice.org is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# only, as published by the Free Software Foundation. -# -# OpenOffice.org is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License version 3 for more details -# (a copy is included in the LICENSE file that accompanied this code). -# -# You should have received a copy of the GNU Lesser General Public License -# version 3 along with OpenOffice.org. If not, see -# <http://www.openoffice.org/license.html> -# for a copy of the LGPLv3 License. -# -#************************************************************************* - -$(eval $(call gb_Module_Module,animations)) - -$(eval $(call gb_Module_add_targets,animations,\ - Library_animcore \ - Package_inc \ - Package_xml \ -)) - -# vim: set noet sw=4 ts=4: diff --git a/animations/Package_inc.mk b/animations/Package_inc.mk deleted file mode 100644 index ebc03bfaa..000000000 --- a/animations/Package_inc.mk +++ /dev/null @@ -1,33 +0,0 @@ -# -*- Mode: makefile; tab-width: 4; indent-tabs-mode: t -*- -#************************************************************************* -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2000, 2011 Oracle and/or its affiliates. -# -# OpenOffice.org - a multi-platform office productivity suite -# -# This file is part of OpenOffice.org. -# -# OpenOffice.org is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# only, as published by the Free Software Foundation. -# -# OpenOffice.org is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License version 3 for more details -# (a copy is included in the LICENSE file that accompanied this code). -# -# You should have received a copy of the GNU Lesser General Public License -# version 3 along with OpenOffice.org. If not, see -# <http://www.openoffice.org/license.html> -# for a copy of the LGPLv3 License. -# -#************************************************************************* - -$(eval $(call gb_Package_Package,animations_inc,$(SRCDIR)/animations/inc)) - -$(eval $(call gb_Package_add_file,animations_inc,inc/animations/animationnodehelper.hxx,animations/animationnodehelper.hxx)) - -# vim: set noet sw=4 ts=4: diff --git a/animations/Package_xml.mk b/animations/Package_xml.mk deleted file mode 100644 index 3883a7dd3..000000000 --- a/animations/Package_xml.mk +++ /dev/null @@ -1,33 +0,0 @@ -# -*- Mode: makefile; tab-width: 4; indent-tabs-mode: t -*- -#************************************************************************* -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2000, 2011 Oracle and/or its affiliates. -# -# OpenOffice.org - a multi-platform office productivity suite -# -# This file is part of OpenOffice.org. -# -# OpenOffice.org is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# only, as published by the Free Software Foundation. -# -# OpenOffice.org is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License version 3 for more details -# (a copy is included in the LICENSE file that accompanied this code). -# -# You should have received a copy of the GNU Lesser General Public License -# version 3 along with OpenOffice.org. If not, see -# <http://www.openoffice.org/license.html> -# for a copy of the LGPLv3 License. -# -#************************************************************************* - -$(eval $(call gb_Package_Package,animations_xml,$(SRCDIR)/animations/source/animcore)) - -$(eval $(call gb_Package_add_file,animations_xml,xml/animcore.xml,animcore.xml)) - -# vim: set noet sw=4 ts=4: diff --git a/animations/inc/animations/animationnodehelper.hxx b/animations/inc/animations/animationnodehelper.hxx deleted file mode 100644 index c6826d6e3..000000000 --- a/animations/inc/animations/animationnodehelper.hxx +++ /dev/null @@ -1,133 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef INCLUDED_ANIMATIONS_ANIMATIONNODEHELPER_HXX -#define INCLUDED_ANIMATIONS_ANIMATIONNODEHELPER_HXX - -#include <com/sun/star/uno/Reference.hxx> -#include <com/sun/star/animations/XAnimationNode.hpp> -#include <com/sun/star/container/XEnumerationAccess.hpp> -#include <com/sun/star/container/XEnumeration.hpp> - -#include <vector> - -/* Declaration and definition of AnimationNode helper */ - -namespace anim -{ - // TODO(Q1): this could possibly be implemented with a somewhat - // more lightweight template, by having the actual worker receive - // only a function pointer, and a thin templated wrapper around - // that which converts member functions into that. - - /** Apply given functor to every animation node child. - - @param xNode - Parent node - - @param rFunctor - Functor to apply. The functor must have an appropriate - operator()( const ::com::sun::star::uno::Reference< - ::com::sun::star::animations::XAnimationNode >& ) member. - - @return true, if the functor was successfully applied to - all children, false otherwise. - */ - template< typename Functor > inline bool for_each_childNode( const ::com::sun::star::uno::Reference< ::com::sun::star::animations::XAnimationNode >& xNode, - Functor& rFunctor ) - { - try - { - // get an XEnumerationAccess to the children - ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumerationAccess > - xEnumerationAccess( xNode, - ::com::sun::star::uno::UNO_QUERY_THROW ); - ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > - xEnumeration( xEnumerationAccess->createEnumeration(), - ::com::sun::star::uno::UNO_QUERY_THROW ); - - while( xEnumeration->hasMoreElements() ) - { - ::com::sun::star::uno::Reference< ::com::sun::star::animations::XAnimationNode > - xChildNode( xEnumeration->nextElement(), - ::com::sun::star::uno::UNO_QUERY_THROW ); - - rFunctor( xChildNode ); - } - - return true; - } - catch( ::com::sun::star::uno::Exception& ) - { - return false; - } - } - - - /** pushes the given node to the given vector and recursivly calls itself for each child node. - */ - inline void create_deep_vector( const ::com::sun::star::uno::Reference< ::com::sun::star::animations::XAnimationNode >& xNode, - std::vector< ::com::sun::star::uno::Reference< ::com::sun::star::animations::XAnimationNode > >& rVector ) - { - rVector.push_back( xNode ); - - try - { - // get an XEnumerationAccess to the children - ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumerationAccess > - xEnumerationAccess( xNode, - ::com::sun::star::uno::UNO_QUERY ); - - if( xEnumerationAccess.is() ) - { - ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > - xEnumeration( xEnumerationAccess->createEnumeration(), - ::com::sun::star::uno::UNO_QUERY ); - - if( xEnumeration.is() ) - { - while( xEnumeration->hasMoreElements() ) - { - ::com::sun::star::uno::Reference< ::com::sun::star::animations::XAnimationNode > - xChildNode( xEnumeration->nextElement(), - ::com::sun::star::uno::UNO_QUERY_THROW ); - - create_deep_vector( xChildNode, rVector ); - } - } - } - } - catch( ::com::sun::star::uno::Exception& ) - { - } - } -} - -#endif /* INCLUDED_ANIMATIONS_ANIMATIONNODEHELPER_HXX */ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/animations/prj/build.lst b/animations/prj/build.lst deleted file mode 100644 index 65baa77fe..000000000 --- a/animations/prj/build.lst +++ /dev/null @@ -1,3 +0,0 @@ -animations animations : cppuhelper comphelper offapi LIBXSLT:libxslt NULL -animations animations usr1 - all animations_mkout NULL -animations animations\prj nmake - all animations_prj NULL diff --git a/animations/prj/d.lst b/animations/prj/d.lst deleted file mode 100644 index e69de29bb..000000000 --- a/animations/prj/d.lst +++ /dev/null diff --git a/animations/prj/makefile.mk b/animations/prj/makefile.mk deleted file mode 100755 index bcb497038..000000000 --- a/animations/prj/makefile.mk +++ /dev/null @@ -1,40 +0,0 @@ -#************************************************************************* -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2000, 2010 Oracle and/or its affiliates. -# -# OpenOffice.org - a multi-platform office productivity suite -# -# This file is part of OpenOffice.org. -# -# OpenOffice.org is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# only, as published by the Free Software Foundation. -# -# OpenOffice.org is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License version 3 for more details -# (a copy is included in the LICENSE file that accompanied this code). -# -# You should have received a copy of the GNU Lesser General Public License -# version 3 along with OpenOffice.org. If not, see -# <http://www.openoffice.org/license.html> -# for a copy of the LGPLv3 License. -# -#************************************************************************* - -PRJ=.. -TARGET=prj - -.INCLUDE : settings.mk - -.IF "$(VERBOSE)"!="" -VERBOSEFLAG := -.ELSE -VERBOSEFLAG := -s -.ENDIF - -all: - cd $(PRJ) && $(GNUMAKE) $(VERBOSEFLAG) -r -j$(MAXPROCESS) $(gb_MAKETARGET) && $(GNUMAKE) $(VERBOSEFLAG) -r deliverlog diff --git a/animations/source/animcore/animcore.component b/animations/source/animcore/animcore.component deleted file mode 100644 index e0d28e164..000000000 --- a/animations/source/animcore/animcore.component +++ /dev/null @@ -1,67 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!--********************************************************************** -* -* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -* -* Copyright 2000, 2010 Oracle and/or its affiliates. -* -* OpenOffice.org - a multi-platform office productivity suite -* -* This file is part of OpenOffice.org. -* -* OpenOffice.org is free software: you can redistribute it and/or modify -* it under the terms of the GNU Lesser General Public License version 3 -* only, as published by the Free Software Foundation. -* -* OpenOffice.org is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU Lesser General Public License version 3 for more details -* (a copy is included in the LICENSE file that accompanied this code). -* -* You should have received a copy of the GNU Lesser General Public License -* version 3 along with OpenOffice.org. If not, see -* <http://www.openoffice.org/license.html> -* for a copy of the LGPLv3 License. -* -**********************************************************************--> - -<component loader="com.sun.star.loader.SharedLibrary" prefix="animcore" - xmlns="http://openoffice.org/2010/uno-components"> - <implementation name="animcore::Animate"> - <service name="com.sun.star.animations.Animate"/> - </implementation> - <implementation name="animcore::AnimateColor"> - <service name="com.sun.star.animations.AnimateColor"/> - </implementation> - <implementation name="animcore::AnimateMotion"> - <service name="com.sun.star.animations.AnimateMotion"/> - </implementation> - <implementation name="animcore::AnimateSet"> - <service name="com.sun.star.animations.AnimateSet"/> - </implementation> - <implementation name="animcore::AnimateTransform"> - <service name="com.sun.star.animations.AnimateTransform"/> - </implementation> - <implementation name="animcore::Audio"> - <service name="com.sun.star.animations.Audio"/> - </implementation> - <implementation name="animcore::Command"> - <service name="com.sun.star.animations.Command"/> - </implementation> - <implementation name="animcore::IterateContainer"> - <service name="com.sun.star.animations.IterateContainer"/> - </implementation> - <implementation name="animcore::ParallelTimeContainer"> - <service name="com.sun.star.animations.ParallelTimeContainer"/> - </implementation> - <implementation name="animcore::SequenceTimeContainer"> - <service name="com.sun.star.animations.SequenceTimeContainer"/> - </implementation> - <implementation name="animcore::TargetPropertiesCreator"> - <service name="com.sun.star.animations.TargetPropertiesCreator"/> - </implementation> - <implementation name="animcore::TransitionFilter"> - <service name="com.sun.star.animations.TransitionFilter"/> - </implementation> -</component> diff --git a/animations/source/animcore/animcore.cxx b/animations/source/animcore/animcore.cxx deleted file mode 100644 index cfed7a275..000000000 --- a/animations/source/animcore/animcore.cxx +++ /dev/null @@ -1,2082 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#include <com/sun/star/util/XCloneable.hpp> -#include <com/sun/star/uno/XComponentContext.hpp> -#include <com/sun/star/lang/XServiceInfo.hpp> -#include <com/sun/star/lang/XTypeProvider.hpp> -#include <com/sun/star/animations/XAnimateColor.hpp> -#include <com/sun/star/animations/XAnimateSet.hpp> -#include <com/sun/star/animations/XAnimateMotion.hpp> -#include <com/sun/star/animations/XAnimateTransform.hpp> -#include <com/sun/star/animations/XTransitionFilter.hpp> -#include <com/sun/star/animations/XTimeContainer.hpp> -#include <com/sun/star/animations/XIterateContainer.hpp> -#include <com/sun/star/animations/XAudio.hpp> -#include <com/sun/star/animations/XCommand.hpp> -#include <com/sun/star/animations/AnimationNodeType.hpp> -#include <com/sun/star/animations/AnimationCalcMode.hpp> -#include <com/sun/star/animations/AnimationFill.hpp> -#include <com/sun/star/animations/AnimationRestart.hpp> -#include <com/sun/star/animations/AnimationColorSpace.hpp> -#include <com/sun/star/animations/AnimationAdditiveMode.hpp> -#include <com/sun/star/animations/AnimationTransformType.hpp> -#include <com/sun/star/animations/TransitionType.hpp> -#include <com/sun/star/animations/TransitionSubType.hpp> -#include <com/sun/star/presentation/ShapeAnimationSubType.hpp> -#include <com/sun/star/container/XEnumerationAccess.hpp> -#include <com/sun/star/beans/NamedValue.hpp> -#include <com/sun/star/util/XChangesNotifier.hpp> -#include <com/sun/star/lang/XUnoTunnel.hpp> -#include <comphelper/servicehelper.hxx> -#include <cppuhelper/interfacecontainer.hxx> -#include <cppuhelper/implbase1.hxx> -#include <rtl/uuid.h> - -#include <osl/mutex.hxx> -#include <list> -#include <algorithm> - -using ::osl::Mutex; -using ::osl::Guard; -using ::rtl::OUString; -using ::cppu::OInterfaceContainerHelper; -using ::cppu::OInterfaceIteratorHelper; -using ::com::sun::star::uno::Any; -using ::com::sun::star::uno::UNO_QUERY; -using ::com::sun::star::uno::XInterface; -using ::com::sun::star::uno::RuntimeException; -using ::com::sun::star::uno::Sequence; -using ::com::sun::star::uno::Reference; -using ::com::sun::star::uno::XComponentContext; -using ::com::sun::star::uno::Exception; -using ::com::sun::star::uno::XWeak; -using ::com::sun::star::uno::Type; -using ::com::sun::star::uno::makeAny; -using ::com::sun::star::lang::NoSupportException; -using ::com::sun::star::lang::IllegalArgumentException; -using ::com::sun::star::lang::WrappedTargetException; -using ::com::sun::star::lang::NoSupportException; -using ::com::sun::star::lang::XServiceInfo; -using ::com::sun::star::lang::XTypeProvider; -using ::com::sun::star::container::NoSuchElementException; -using ::com::sun::star::container::ElementExistException; -using ::com::sun::star::container::XEnumeration; -using ::com::sun::star::container::XEnumerationAccess; -using ::com::sun::star::beans::NamedValue; -using ::com::sun::star::util::XCloneable; -using ::com::sun::star::lang::XUnoTunnel; -using ::com::sun::star::util::XChangesNotifier; -using ::com::sun::star::util::XChangesListener; -using ::com::sun::star::util::ElementChange; -using ::com::sun::star::util::ChangesEvent; - -using ::cppu::OWeakObject; - -using namespace ::com::sun::star::animations; -using namespace ::com::sun::star::animations::AnimationNodeType; - -namespace animcore -{ - -// ==================================================================== - -typedef ::std::list< Reference< XAnimationNode > > ChildList_t; - -// ==================================================================== - -class AnimationNodeBase : public XAnimateMotion, - public XAnimateColor, - public XTransitionFilter, - public XAnimateSet, - public XAnimateTransform, - public XIterateContainer, - public XEnumerationAccess, - public XServiceInfo, - public XTypeProvider, - public XAudio, - public XCommand, - public XCloneable, - public XChangesNotifier, - public XUnoTunnel, - public OWeakObject -{ -public: - // our first, last and only protection from mutli-threads! - Mutex maMutex; -}; - -class AnimationNode : public AnimationNodeBase -{ -public: - AnimationNode( sal_Int16 nNodeType ); - AnimationNode( const AnimationNode& rNode ); - virtual ~AnimationNode(); - - // XInterface - virtual Any SAL_CALL queryInterface( const Type& aType ) throw (RuntimeException); - virtual void SAL_CALL acquire() throw (); - virtual void SAL_CALL release() throw (); - - // XTypeProvider - virtual Sequence< Type > SAL_CALL getTypes() throw (RuntimeException); - virtual Sequence< sal_Int8 > SAL_CALL getImplementationId() throw (RuntimeException); - - // XServiceInfo - OUString SAL_CALL getImplementationName() throw(); - Sequence< OUString > SAL_CALL getSupportedServiceNames(void) throw(); - sal_Bool SAL_CALL supportsService(const OUString& ServiceName) throw(); - - // XChild - virtual Reference< XInterface > SAL_CALL getParent() throw (RuntimeException); - virtual void SAL_CALL setParent( const Reference< XInterface >& Parent ) throw (NoSupportException, RuntimeException); - - // XCloneable - virtual Reference< XCloneable > SAL_CALL createClone() throw (RuntimeException); - - // XAnimationNode - virtual sal_Int16 SAL_CALL getType() throw (RuntimeException); - virtual Any SAL_CALL getBegin() throw (RuntimeException); - virtual void SAL_CALL setBegin( const Any& _begin ) throw (RuntimeException); - virtual Any SAL_CALL getDuration() throw (RuntimeException); - virtual void SAL_CALL setDuration( const Any& _duration ) throw (RuntimeException); - virtual Any SAL_CALL getEnd() throw (RuntimeException); - virtual void SAL_CALL setEnd( const Any& _end ) throw (RuntimeException); - virtual Any SAL_CALL getEndSync() throw (RuntimeException); - virtual void SAL_CALL setEndSync( const Any& _endsync ) throw (RuntimeException); - virtual Any SAL_CALL getRepeatCount() throw (RuntimeException); - virtual void SAL_CALL setRepeatCount( const Any& _repeatcount ) throw (RuntimeException); - virtual Any SAL_CALL getRepeatDuration() throw (RuntimeException); - virtual void SAL_CALL setRepeatDuration( const Any& _repeatduration ) throw (RuntimeException); - virtual sal_Int16 SAL_CALL getFill() throw (RuntimeException); - virtual void SAL_CALL setFill( sal_Int16 _fill ) throw (RuntimeException); - virtual sal_Int16 SAL_CALL getFillDefault() throw (RuntimeException); - virtual void SAL_CALL setFillDefault( sal_Int16 _filldefault ) throw (RuntimeException); - virtual sal_Int16 SAL_CALL getRestart() throw (RuntimeException); - virtual void SAL_CALL setRestart( sal_Int16 _restart ) throw (RuntimeException); - virtual sal_Int16 SAL_CALL getRestartDefault() throw (RuntimeException); - virtual void SAL_CALL setRestartDefault( sal_Int16 _restartdefault ) throw (RuntimeException); - virtual double SAL_CALL getAcceleration() throw (RuntimeException); - virtual void SAL_CALL setAcceleration( double _acceleration ) throw (RuntimeException); - virtual double SAL_CALL getDecelerate() throw (RuntimeException); - virtual void SAL_CALL setDecelerate( double _decelerate ) throw (RuntimeException); - virtual sal_Bool SAL_CALL getAutoReverse() throw (RuntimeException); - virtual void SAL_CALL setAutoReverse( sal_Bool _autoreverse ) throw (RuntimeException); - virtual Sequence< NamedValue > SAL_CALL getUserData() throw (RuntimeException); - virtual void SAL_CALL setUserData( const Sequence< NamedValue >& _userdata ) throw (RuntimeException); - - // XAnimate - virtual Any SAL_CALL getTarget() throw (RuntimeException); - virtual void SAL_CALL setTarget( const Any& _target ) throw (RuntimeException); - virtual sal_Int16 SAL_CALL getSubItem() throw (RuntimeException); - virtual void SAL_CALL setSubItem( sal_Int16 _subitem ) throw (RuntimeException); - virtual OUString SAL_CALL getAttributeName() throw (RuntimeException); - virtual void SAL_CALL setAttributeName( const OUString& _attribute ) throw (RuntimeException); - virtual Sequence< Any > SAL_CALL getValues() throw (RuntimeException); - virtual void SAL_CALL setValues( const Sequence< Any >& _values ) throw (RuntimeException); - virtual Sequence< double > SAL_CALL getKeyTimes() throw (RuntimeException); - virtual void SAL_CALL setKeyTimes( const Sequence< double >& _keytimes ) throw (RuntimeException); - virtual sal_Int16 SAL_CALL getValueType() throw (RuntimeException); - virtual void SAL_CALL setValueType( sal_Int16 _valuetype ) throw (RuntimeException); - virtual sal_Int16 SAL_CALL getCalcMode() throw (RuntimeException); - virtual void SAL_CALL setCalcMode( sal_Int16 _calcmode ) throw (RuntimeException); - virtual sal_Bool SAL_CALL getAccumulate() throw (RuntimeException); - virtual void SAL_CALL setAccumulate( sal_Bool _accumulate ) throw (RuntimeException); - virtual sal_Int16 SAL_CALL getAdditive() throw (RuntimeException); - virtual void SAL_CALL setAdditive( sal_Int16 _additive ) throw (RuntimeException); - virtual Any SAL_CALL getFrom() throw (RuntimeException); - virtual void SAL_CALL setFrom( const Any& _from ) throw (RuntimeException); - virtual Any SAL_CALL getTo() throw (RuntimeException); - virtual void SAL_CALL setTo( const Any& _to ) throw (RuntimeException); - virtual Any SAL_CALL getBy() throw (RuntimeException); - virtual void SAL_CALL setBy( const Any& _by ) throw (RuntimeException); - virtual Sequence< TimeFilterPair > SAL_CALL getTimeFilter() throw (RuntimeException); - virtual void SAL_CALL setTimeFilter( const Sequence< TimeFilterPair >& _timefilter ) throw (RuntimeException); - virtual OUString SAL_CALL getFormula() throw (RuntimeException); - virtual void SAL_CALL setFormula( const OUString& _formula ) throw (RuntimeException); - - // XAnimateColor - virtual sal_Int16 SAL_CALL getColorInterpolation() throw (RuntimeException); - virtual void SAL_CALL setColorInterpolation( sal_Int16 _colorspace ) throw (RuntimeException); - virtual sal_Bool SAL_CALL getDirection() throw (RuntimeException); - virtual void SAL_CALL setDirection( sal_Bool _direction ) throw (RuntimeException); - - // XAnimateMotion - virtual Any SAL_CALL getPath() throw (RuntimeException); - virtual void SAL_CALL setPath( const Any& _path ) throw (RuntimeException); - virtual Any SAL_CALL getOrigin() throw (RuntimeException); - virtual void SAL_CALL setOrigin( const Any& _origin ) throw (RuntimeException); - - // XAnimateTransform - virtual sal_Int16 SAL_CALL getTransformType() throw (RuntimeException); - virtual void SAL_CALL setTransformType( sal_Int16 _transformtype ) throw (RuntimeException); - - // XTransitionFilter - virtual sal_Int16 SAL_CALL getTransition() throw (RuntimeException); - virtual void SAL_CALL setTransition( sal_Int16 _transition ) throw (RuntimeException); - virtual sal_Int16 SAL_CALL getSubtype() throw (RuntimeException); - virtual void SAL_CALL setSubtype( sal_Int16 _subtype ) throw (RuntimeException); - virtual sal_Bool SAL_CALL getMode() throw (RuntimeException); - virtual void SAL_CALL setMode( sal_Bool _mode ) throw (RuntimeException); - virtual sal_Int32 SAL_CALL getFadeColor() throw (RuntimeException); - virtual void SAL_CALL setFadeColor( sal_Int32 _fadecolor ) throw (RuntimeException); - - // XAudio - virtual Any SAL_CALL getSource() throw (RuntimeException); - virtual void SAL_CALL setSource( const Any& _source ) throw (RuntimeException); - virtual double SAL_CALL getVolume() throw (RuntimeException); - virtual void SAL_CALL setVolume( double _volume ) throw (RuntimeException); - - - // XCommand - the following two shadowed by animate, unfortunately -// virtual Any SAL_CALL getTarget() throw (RuntimeException); -// virtual void SAL_CALL setTarget( const Any& _target ) throw (RuntimeException); - virtual sal_Int16 SAL_CALL getCommand() throw (RuntimeException); - virtual void SAL_CALL setCommand( sal_Int16 _command ) throw (RuntimeException); - virtual Any SAL_CALL getParameter() throw (RuntimeException); - virtual void SAL_CALL setParameter( const Any& _parameter ) throw (RuntimeException); - - // XElementAccess - virtual Type SAL_CALL getElementType() throw (RuntimeException); - virtual sal_Bool SAL_CALL hasElements() throw (RuntimeException); - - // XEnumerationAccess - virtual Reference< XEnumeration > SAL_CALL createEnumeration() throw (RuntimeException); - - // XTimeContainer - virtual Reference< XAnimationNode > SAL_CALL insertBefore( const Reference< XAnimationNode >& newChild, const Reference< XAnimationNode >& refChild ) throw (IllegalArgumentException, NoSuchElementException, ElementExistException, WrappedTargetException, RuntimeException); - virtual Reference< XAnimationNode > SAL_CALL insertAfter( const Reference< XAnimationNode >& newChild, const Reference< XAnimationNode >& refChild ) throw (IllegalArgumentException, NoSuchElementException, ElementExistException, WrappedTargetException, RuntimeException); - virtual Reference< XAnimationNode > SAL_CALL replaceChild( const Reference< XAnimationNode >& newChild, const Reference< XAnimationNode >& oldChild ) throw( IllegalArgumentException, NoSuchElementException, ElementExistException, WrappedTargetException, RuntimeException); - virtual Reference< XAnimationNode > SAL_CALL removeChild( const Reference< XAnimationNode >& oldChild ) throw(IllegalArgumentException, NoSuchElementException, WrappedTargetException, RuntimeException); - virtual Reference< XAnimationNode > SAL_CALL appendChild( const Reference< XAnimationNode >& newChild ) throw(IllegalArgumentException, ElementExistException, WrappedTargetException, RuntimeException); - - // XIterateContainer - virtual sal_Int16 SAL_CALL getIterateType() throw (RuntimeException); - virtual void SAL_CALL setIterateType( sal_Int16 _iteratetype ) throw (RuntimeException); - virtual double SAL_CALL getIterateInterval() throw (RuntimeException); - virtual void SAL_CALL setIterateInterval( double _iterateinterval ) throw (RuntimeException); - - // XChangesNotifier - virtual void SAL_CALL addChangesListener( const Reference< XChangesListener >& aListener ) throw (RuntimeException); - virtual void SAL_CALL removeChangesListener( const Reference< XChangesListener >& aListener ) throw (RuntimeException); - - // XUnoTunnel - virtual ::sal_Int64 SAL_CALL getSomething( const Sequence< ::sal_Int8 >& aIdentifier ) throw (RuntimeException); - - static const Sequence< sal_Int8 > & getUnoTunnelId(); - void fireChangeListener(); - -private: - OInterfaceContainerHelper maChangeListener; - - static void initTypeProvider( sal_Int16 nNodeType ) throw(); - - const sal_Int16 mnNodeType; - - // for XTypeProvider - static Sequence< Type >* mpTypes[12]; - static Sequence< sal_Int8 >* mpId[12]; - - // attributes for the XAnimationNode interface implementation - Any maBegin, maDuration, maEnd, maEndSync, maRepeatCount, maRepeatDuration; - sal_Int16 mnFill, mnFillDefault, mnRestart, mnRestartDefault; - double mfAcceleration, mfDecelerate; - sal_Bool mbAutoReverse; - Sequence< NamedValue > maUserData; - - // parent interface for XChild interface implementation - Reference<XInterface> mxParent; - AnimationNode* mpParent; - - // attributes for XAnimate - Any maTarget; - OUString maAttributeName, maFormula; - Sequence< Any > maValues; - Sequence< double > maKeyTimes; - sal_Int16 mnValueType, mnSubItem; - sal_Int16 mnCalcMode, mnAdditive; - sal_Bool mbAccumulate; - Any maFrom, maTo, maBy; - Sequence< TimeFilterPair > maTimeFilter; - - // attributes for XAnimateColor - sal_Int16 mnColorSpace; - sal_Bool mbDirection; - - // atributes for XAnimateMotion - Any maPath, maOrigin; - - // attributes for XAnimateTransform - sal_Int16 mnTransformType; - - // attributes for XTransitionFilter - sal_Int16 mnTransition; - sal_Int16 mnSubtype; - sal_Bool mbMode; - sal_Int32 mnFadeColor; - - // XAudio - double mfVolume; - - // XCommand - sal_Int16 mnCommand; - Any maParameter; - - // XIterateContainer - sal_Int16 mnIterateType; - double mfIterateInterval; - - /** sorted list of child nodes for XTimeContainer*/ - ChildList_t maChilds; -}; - -// ==================================================================== - -class TimeContainerEnumeration : public ::cppu::WeakImplHelper1< XEnumeration > -{ -public: - TimeContainerEnumeration( const ChildList_t &rChilds ); - virtual ~TimeContainerEnumeration(); - - // Methods - virtual sal_Bool SAL_CALL hasMoreElements() throw (RuntimeException); - virtual Any SAL_CALL nextElement( ) throw (NoSuchElementException, WrappedTargetException, RuntimeException); - -private: - /** sorted list of child nodes */ - ChildList_t maChilds; - - /** current iteration position */ - ChildList_t::iterator maIter; - - /** our first, last and only protection from mutli-threads! */ - Mutex maMutex; -}; - -TimeContainerEnumeration::TimeContainerEnumeration( const ChildList_t &rChilds ) -: maChilds( rChilds ) -{ - maIter = maChilds.begin(); -} - -TimeContainerEnumeration::~TimeContainerEnumeration() -{ -} - -// Methods -sal_Bool SAL_CALL TimeContainerEnumeration::hasMoreElements() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - - return maIter != maChilds.end(); -} - -Any SAL_CALL TimeContainerEnumeration::nextElement() - throw (NoSuchElementException, WrappedTargetException, RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - - if( maIter == maChilds.end() ) - throw NoSuchElementException(); - - return makeAny( (*maIter++) ); -} - -// ==================================================================== - -Sequence< Type >* AnimationNode::mpTypes[] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }; -Sequence< sal_Int8 >* AnimationNode::mpId[] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }; - -AnimationNode::AnimationNode( sal_Int16 nNodeType ) -: maChangeListener(maMutex), - mnNodeType( nNodeType ), - mnFill( AnimationFill::DEFAULT ), - mnFillDefault( AnimationFill::INHERIT ), - mnRestart( AnimationRestart:: DEFAULT ), - mnRestartDefault( AnimationRestart:: INHERIT ), - mfAcceleration( 0.0 ), - mfDecelerate( 0.0 ), - mbAutoReverse( sal_False ), - mpParent(0), - mnValueType( 0 ), - mnSubItem( 0 ), - mnCalcMode( (nNodeType == AnimationNodeType::ANIMATEMOTION) ? AnimationCalcMode::PACED : AnimationCalcMode::LINEAR), - mnAdditive(AnimationAdditiveMode::REPLACE), - mbAccumulate(sal_False), - mnColorSpace( AnimationColorSpace::RGB ), - mbDirection( sal_True ), - mnTransformType( AnimationTransformType::TRANSLATE ), - mnTransition(TransitionType::BARWIPE), - mnSubtype(TransitionSubType::DEFAULT), - mbMode(true), - mnFadeColor(0), - mfVolume(1.0), - mnCommand(0), - mnIterateType( ::com::sun::star::presentation::ShapeAnimationSubType::AS_WHOLE ), - mfIterateInterval(0.0) -{ - OSL_ENSURE((sal_uInt32)nNodeType < sizeof(mpTypes)/sizeof(Sequence<Type>*), "NodeType out of range"); -} - -AnimationNode::AnimationNode( const AnimationNode& rNode ) -: AnimationNodeBase(), - maChangeListener(maMutex), - mnNodeType( rNode.mnNodeType ), - - // attributes for the XAnimationNode interface implementation - maBegin( rNode.maBegin ), - maDuration( rNode.maDuration ), - maEnd( rNode.maEnd ), - maEndSync( rNode.maEndSync ), - maRepeatCount( rNode.maRepeatCount ), - maRepeatDuration( rNode.maRepeatDuration ), - mnFill( rNode.mnFill ), - mnFillDefault( rNode.mnFillDefault ), - mnRestart( rNode.mnRestart ), - mnRestartDefault( rNode.mnRestartDefault ), - mfAcceleration( rNode.mfAcceleration ), - mfDecelerate( rNode.mfDecelerate ), - mbAutoReverse( rNode.mbAutoReverse ), - maUserData( rNode.maUserData ), - mpParent(0), - - // attributes for XAnimate - maTarget( rNode.maTarget ), - maAttributeName( rNode.maAttributeName ), - maFormula( rNode.maFormula ), - maValues( rNode.maValues ), - maKeyTimes( rNode.maKeyTimes ), - mnValueType( rNode.mnValueType ), - mnSubItem( rNode.mnSubItem ), - mnCalcMode( rNode.mnCalcMode ), - mnAdditive( rNode.mnAdditive ), - mbAccumulate( rNode.mbAccumulate ), - maFrom( rNode.maFrom ), - maTo( rNode.maTo ), - maBy( rNode.maBy ), - maTimeFilter( rNode.maTimeFilter ), - - // attributes for XAnimateColor - mnColorSpace( rNode.mnColorSpace ), - mbDirection( rNode.mbDirection ), - - // atributes for XAnimateMotion - maPath( rNode.maPath ), - maOrigin( rNode.maOrigin ), - - // attributes for XAnimateTransform - mnTransformType( rNode.mnTransformType ), - - // attributes for XTransitionFilter - mnTransition( rNode.mnTransition ), - mnSubtype( rNode.mnSubtype ), - mbMode( rNode.mbMode ), - mnFadeColor( rNode.mnFadeColor ), - - // XAudio - mfVolume( rNode.mfVolume ), - - // XCommand - mnCommand( rNode.mnCommand ), - maParameter( rNode.maParameter ), - - // XIterateContainer - mnIterateType( rNode.mnIterateType ), - mfIterateInterval( rNode.mfIterateInterval ) -{ -} - -AnimationNode::~AnimationNode() -{ -} - -// -------------------------------------------------------------------- - -#define IMPL_NODE_FACTORY(N,IN,SN)\ -Reference< XInterface > SAL_CALL createInstance_##N( const Reference< XComponentContext > & ) throw (Exception)\ -{\ - return Reference < XInterface > ( SAL_STATIC_CAST( ::cppu::OWeakObject * , new AnimationNode( N ) ) );\ -}\ -OUString getImplementationName_##N()\ -{\ - return OUString( RTL_CONSTASCII_USTRINGPARAM ( IN ) );\ -}\ -Sequence<OUString> getSupportedServiceNames_##N(void)\ -{\ - Sequence<OUString> aRet(1);\ - aRet.getArray()[0] = OUString( RTL_CONSTASCII_USTRINGPARAM( SN ));\ - return aRet;\ -} - -IMPL_NODE_FACTORY( PAR, "animcore::ParallelTimeContainer", "com.sun.star.animations.ParallelTimeContainer" ) -IMPL_NODE_FACTORY( SEQ, "animcore::SequenceTimeContainer", "com.sun.star.animations.SequenceTimeContainer" ) -IMPL_NODE_FACTORY( ITERATE, "animcore::IterateContainer", "com.sun.star.animations.IterateContainer" ) -IMPL_NODE_FACTORY( ANIMATE, "animcore::Animate", "com.sun.star.animations.Animate" ) -IMPL_NODE_FACTORY( SET, "animcore::AnimateSet", "com.sun.star.animations.AnimateSet" ) -IMPL_NODE_FACTORY( ANIMATECOLOR, "animcore::AnimateColor", "com.sun.star.animations.AnimateColor" ) -IMPL_NODE_FACTORY( ANIMATEMOTION, "animcore::AnimateMotion", "com.sun.star.animations.AnimateMotion" ) -IMPL_NODE_FACTORY( ANIMATETRANSFORM, "animcore::AnimateTransform", "com.sun.star.animations.AnimateTransform" ) -IMPL_NODE_FACTORY( TRANSITIONFILTER, "animcore::TransitionFilter", "com.sun.star.animations.TransitionFilter" ) -IMPL_NODE_FACTORY( AUDIO, "animcore::Audio", "com.sun.star.animations.Audio" ); -IMPL_NODE_FACTORY( COMMAND, "animcore::Command", "com.sun.star.animations.Command" ); - -// -------------------------------------------------------------------- - -// XInterface -Any SAL_CALL AnimationNode::queryInterface( const Type& aType ) throw (RuntimeException) -{ - Any aRet( ::cppu::queryInterface( - aType, - static_cast< XServiceInfo * >( this ), - static_cast< XTypeProvider * >( this ), - static_cast< XChild * >( static_cast< XTimeContainer * >(this) ), - static_cast< XCloneable* >( this ), - static_cast< XAnimationNode* >( static_cast< XTimeContainer * >(this) ), - static_cast< XInterface* >(static_cast< OWeakObject * >(this)), - static_cast< XWeak* >(static_cast< OWeakObject * >(this)), - static_cast< XChangesNotifier* >( this ), - static_cast< XUnoTunnel* >( this ) ) ); - - if(!aRet.hasValue()) - { - switch( mnNodeType ) - { - case AnimationNodeType::PAR: - case AnimationNodeType::SEQ: - aRet = ::cppu::queryInterface( - aType, - static_cast< XTimeContainer * >( this ), - static_cast< XEnumerationAccess * >( this ), - static_cast< XElementAccess * >( this ) ); - break; - case AnimationNodeType::ITERATE: - aRet = ::cppu::queryInterface( - aType, - static_cast< XTimeContainer * >( this ), - static_cast< XIterateContainer * >( this ), - static_cast< XEnumerationAccess * >( this ), - static_cast< XElementAccess * >( this ) ); - break; - case AnimationNodeType::ANIMATE: - aRet = ::cppu::queryInterface( - aType, - static_cast< XAnimate * >( static_cast< XAnimateMotion * >(this) ) ); - break; - case AnimationNodeType::ANIMATEMOTION: - aRet = ::cppu::queryInterface( - aType, - static_cast< XAnimate * >( static_cast< XAnimateMotion * >(this) ), - static_cast< XAnimateMotion * >( this ) ); - break; - case AnimationNodeType::ANIMATECOLOR: - aRet = ::cppu::queryInterface( - aType, - static_cast< XAnimate * >( static_cast< XAnimateColor * >(this) ), - static_cast< XAnimateColor * >( this ) ); - break; - case AnimationNodeType::SET: - aRet = ::cppu::queryInterface( - aType, - static_cast< XAnimate * >( static_cast< XAnimateSet * >(this) ), - static_cast< XAnimateSet * >( this ) ); - break; - case AnimationNodeType::ANIMATETRANSFORM: - aRet = ::cppu::queryInterface( - aType, - static_cast< XAnimate * >( static_cast< XAnimateTransform * >(this) ), - static_cast< XAnimateTransform * >( this ) ); - break; - case AnimationNodeType::AUDIO: - aRet = ::cppu::queryInterface( - aType, - static_cast< XAudio * >( static_cast< XAudio * >(this) ) ); - break; - case AnimationNodeType::COMMAND: - aRet = ::cppu::queryInterface( - aType, - static_cast< XCommand * >( static_cast< XCommand * >(this) ) ); - break; - case AnimationNodeType::TRANSITIONFILTER: - aRet = ::cppu::queryInterface( - aType, - static_cast< XAnimate * >( static_cast< XTransitionFilter * >(this) ), - static_cast< XTransitionFilter * >( this ) ); - break; - } - } - - return aRet.hasValue() ? aRet : OWeakObject::queryInterface( aType ); -} - -// -------------------------------------------------------------------- - -void AnimationNode::initTypeProvider( sal_Int16 nNodeType ) throw() -{ - ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); - - if(! mpTypes[nNodeType] ) - { - // create id - mpId[nNodeType] = new Sequence< sal_Int8 >( 16 ); - rtl_createUuid( (sal_uInt8 *)mpId[nNodeType]->getArray(), 0, sal_True ); - - static sal_Int32 type_numbers[] = - { - 7, // CUSTOM - 9, // PAR - 9, // SEQ - 9, // ITERATE - 8, // ANIMATE - 8, // SET - 8, // ANIMATEMOTION - 8, // ANIMATECOLOR - 8, // ANIMATETRANSFORM - 8, // TRANSITIONFILTER - 8, // AUDIO - 8, // COMMAND - }; - - // collect types - Sequence< Type > * types = new Sequence< Type >( type_numbers[nNodeType] ); - Type * pTypeAr = types->getArray(); - sal_Int32 nPos = 0; - - pTypeAr[nPos++] = ::getCppuType( (const Reference< XWeak > *)0 ); - pTypeAr[nPos++] = ::getCppuType( (const Reference< XChild > *)0 ); - pTypeAr[nPos++] = ::getCppuType( (const Reference< XCloneable > *)0 ); - pTypeAr[nPos++] = ::getCppuType( (const Reference< XTypeProvider > *)0 ); - pTypeAr[nPos++] = ::getCppuType( (const Reference< XServiceInfo > *)0 ); - pTypeAr[nPos++] = ::getCppuType( (const Reference< XUnoTunnel > *)0 ); - pTypeAr[nPos++] = ::getCppuType( (const Reference< XChangesNotifier> *)0 ); - - switch( nNodeType ) - { - case AnimationNodeType::PAR: - case AnimationNodeType::SEQ: - pTypeAr[nPos++] = ::getCppuType( (const Reference< XTimeContainer > *)0 ); - pTypeAr[nPos++] = ::getCppuType( (const Reference< XEnumerationAccess > *)0 ); - break; - case AnimationNodeType::ITERATE: - pTypeAr[nPos++] = ::getCppuType( (const Reference< XIterateContainer > *)0 ); - pTypeAr[nPos++] = ::getCppuType( (const Reference< XEnumerationAccess > *)0 ); - break; - case AnimationNodeType::ANIMATE: - pTypeAr[nPos++] = ::getCppuType( (const Reference< XAnimate > *)0 ); - break; - case AnimationNodeType::ANIMATEMOTION: - pTypeAr[nPos++] = ::getCppuType( (const Reference< XAnimateMotion > *)0 ); - break; - case AnimationNodeType::ANIMATECOLOR: - pTypeAr[nPos++] = ::getCppuType( (const Reference< XAnimateColor > *)0 ); - break; - case AnimationNodeType::ANIMATETRANSFORM: - pTypeAr[nPos++] = ::getCppuType( (const Reference< XAnimateTransform > *)0 ); - break; - case AnimationNodeType::SET: - pTypeAr[nPos++] = ::getCppuType( (const Reference< XAnimateSet > *)0 ); - break; - case AnimationNodeType::TRANSITIONFILTER: - pTypeAr[nPos++] = ::getCppuType( (const Reference< XTransitionFilter > *)0 ); - break; - case AnimationNodeType::AUDIO: - pTypeAr[nPos++] = ::getCppuType( (const Reference< XAudio > *)0 ); - break; - case AnimationNodeType::COMMAND: - pTypeAr[nPos++] = ::getCppuType( ( const Reference< XCommand > *)0 ); - break; - } - mpTypes[nNodeType] = types; - } -} - -// -------------------------------------------------------------------- - -Sequence< Type > AnimationNode::getTypes() throw (RuntimeException) -{ - if (! mpTypes[mnNodeType]) - initTypeProvider(mnNodeType); - return *mpTypes[mnNodeType]; -} -// -------------------------------------------------------------------- - -Sequence< sal_Int8 > AnimationNode::getImplementationId() throw (RuntimeException) -{ - if (! mpId[mnNodeType]) - initTypeProvider(mnNodeType); - return *mpId[mnNodeType]; -} - -// -------------------------------------------------------------------- - -// XInterface -void SAL_CALL AnimationNode::acquire( ) throw () -{ - OWeakObject::acquire(); -} - -// -------------------------------------------------------------------- - -// XInterface -void SAL_CALL AnimationNode::release( ) throw () -{ - OWeakObject::release(); -} - -// -------------------------------------------------------------------- - -// XServiceInfo -OUString AnimationNode::getImplementationName() throw() -{ - switch( mnNodeType ) - { - case AnimationNodeType::PAR: - return getImplementationName_PAR(); - case AnimationNodeType::SEQ: - return getImplementationName_SEQ(); - case AnimationNodeType::ITERATE: - return getImplementationName_ITERATE(); - case AnimationNodeType::SET: - return getImplementationName_SET(); - case AnimationNodeType::ANIMATECOLOR: - return getImplementationName_ANIMATECOLOR(); - case AnimationNodeType::ANIMATEMOTION: - return getImplementationName_ANIMATEMOTION(); - case AnimationNodeType::TRANSITIONFILTER: - return getImplementationName_TRANSITIONFILTER(); - case AnimationNodeType::ANIMATETRANSFORM: - return getImplementationName_ANIMATETRANSFORM(); - case AnimationNodeType::AUDIO: - return getImplementationName_AUDIO(); - case AnimationNodeType::COMMAND: - return getImplementationName_COMMAND(); - case AnimationNodeType::ANIMATE: - default: - return getImplementationName_ANIMATE(); - } -} - -// -------------------------------------------------------------------- - -// XServiceInfo -sal_Bool AnimationNode::supportsService(const OUString& ServiceName) throw() -{ - Sequence< OUString > aSNL( getSupportedServiceNames() ); - const OUString * pArray = aSNL.getConstArray(); - - for( sal_Int32 i = 0; i < aSNL.getLength(); i++ ) - if( pArray[i] == ServiceName ) - return sal_True; - - return sal_False; -} - -// -------------------------------------------------------------------- - -// XServiceInfo -Sequence< OUString > AnimationNode::getSupportedServiceNames(void) throw() -{ - switch( mnNodeType ) - { - case AnimationNodeType::PAR: - return getSupportedServiceNames_PAR(); - case AnimationNodeType::SEQ: - return getSupportedServiceNames_SEQ(); - case AnimationNodeType::ITERATE: - return getSupportedServiceNames_ITERATE(); - case AnimationNodeType::SET: - return getSupportedServiceNames_SET(); - case AnimationNodeType::ANIMATECOLOR: - return getSupportedServiceNames_ANIMATECOLOR(); - case AnimationNodeType::ANIMATEMOTION: - return getSupportedServiceNames_ANIMATEMOTION(); - case AnimationNodeType::TRANSITIONFILTER: - return getSupportedServiceNames_TRANSITIONFILTER(); - case AnimationNodeType::AUDIO: - return getSupportedServiceNames_AUDIO(); - case AnimationNodeType::COMMAND: - return getSupportedServiceNames_COMMAND(); - case AnimationNodeType::ANIMATE: - default: - return getSupportedServiceNames_ANIMATE(); - } -} - -// -------------------------------------------------------------------- - -// XAnimationNode -sal_Int16 SAL_CALL AnimationNode::getType() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return mnNodeType; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -Any SAL_CALL AnimationNode::getBegin() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return maBegin; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -void SAL_CALL AnimationNode::setBegin( const Any& _begin ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - if( _begin != maBegin ) - { - maBegin = _begin; - fireChangeListener(); - } -} - -// -------------------------------------------------------------------- - -// XAnimationNode -Any SAL_CALL AnimationNode::getDuration() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return maDuration; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -void SAL_CALL AnimationNode::setDuration( const Any& _duration ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - if( _duration != maDuration ) - { - maDuration = _duration; - fireChangeListener(); - } -} - -// -------------------------------------------------------------------- - -// XAnimationNode -Any SAL_CALL AnimationNode::getEnd() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return maEnd; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -void SAL_CALL AnimationNode::setEnd( const Any& _end ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - if( _end != maEnd ) - { - maEnd = _end; - fireChangeListener(); - } -} - -// -------------------------------------------------------------------- - -// XAnimationNode -Any SAL_CALL AnimationNode::getEndSync() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return maEndSync; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -void SAL_CALL AnimationNode::setEndSync( const Any& _endsync ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - if( _endsync != maEndSync ) - { - maEndSync = _endsync; - fireChangeListener(); - } -} - -// -------------------------------------------------------------------- - -// XAnimationNode -Any SAL_CALL AnimationNode::getRepeatCount() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return maRepeatCount; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -void SAL_CALL AnimationNode::setRepeatCount( const Any& _repeatcount ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - if( _repeatcount != maRepeatCount ) - { - maRepeatCount = _repeatcount; - fireChangeListener(); - } -} - -// -------------------------------------------------------------------- - -// XAnimationNode -Any SAL_CALL AnimationNode::getRepeatDuration() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return maRepeatDuration; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -void SAL_CALL AnimationNode::setRepeatDuration( const Any& _repeatduration ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - if( _repeatduration != maRepeatDuration ) - { - maRepeatDuration = _repeatduration; - fireChangeListener(); - } -} - -// -------------------------------------------------------------------- - -// XAnimationNode -sal_Int16 SAL_CALL AnimationNode::getFill() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return mnFill; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -void SAL_CALL AnimationNode::setFill( sal_Int16 _fill ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - if( _fill != mnFill ) - { - mnFill = _fill; - fireChangeListener(); - } -} - -// -------------------------------------------------------------------- - -// XAnimationNode -sal_Int16 SAL_CALL AnimationNode::getFillDefault() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return mnFillDefault; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -void SAL_CALL AnimationNode::setFillDefault( sal_Int16 _filldefault ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - if( _filldefault != mnFillDefault ) - { - mnFillDefault = _filldefault; - fireChangeListener(); - } -} - -// -------------------------------------------------------------------- - -// XAnimationNode -sal_Int16 SAL_CALL AnimationNode::getRestart() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return mnRestart; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -void SAL_CALL AnimationNode::setRestart( sal_Int16 _restart ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - if( _restart != mnRestart ) - { - mnRestart = _restart; - fireChangeListener(); - } -} - -// -------------------------------------------------------------------- - -// XAnimationNode -sal_Int16 SAL_CALL AnimationNode::getRestartDefault() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return mnRestartDefault; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -void SAL_CALL AnimationNode::setRestartDefault( sal_Int16 _restartdefault ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - if( _restartdefault != mnRestartDefault ) - { - mnRestartDefault = _restartdefault; - fireChangeListener(); - } -} - -// -------------------------------------------------------------------- - -// XAnimationNode -double SAL_CALL AnimationNode::getAcceleration() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return mfAcceleration; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -void SAL_CALL AnimationNode::setAcceleration( double _acceleration ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - if( _acceleration != mfAcceleration ) - { - mfAcceleration = _acceleration; - fireChangeListener(); - } -} - -// -------------------------------------------------------------------- - -// XAnimationNode -double SAL_CALL AnimationNode::getDecelerate() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return mfDecelerate; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -void SAL_CALL AnimationNode::setDecelerate( double _decelerate ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - if( _decelerate != mfDecelerate ) - { - mfDecelerate = _decelerate; - fireChangeListener(); - } -} - -// -------------------------------------------------------------------- - -// XAnimationNode -sal_Bool SAL_CALL AnimationNode::getAutoReverse() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return mbAutoReverse; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -void SAL_CALL AnimationNode::setAutoReverse( sal_Bool _autoreverse ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - if( _autoreverse != mbAutoReverse ) - { - mbAutoReverse = _autoreverse; - fireChangeListener(); - } -} - -// -------------------------------------------------------------------- - -Sequence< NamedValue > SAL_CALL AnimationNode::getUserData() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return maUserData; -} - -// -------------------------------------------------------------------- - -void SAL_CALL AnimationNode::setUserData( const Sequence< NamedValue >& _userdata ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - maUserData = _userdata; - fireChangeListener(); -} - -// -------------------------------------------------------------------- - -// XChild -Reference< XInterface > SAL_CALL AnimationNode::getParent() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return mxParent; -} - -// -------------------------------------------------------------------- - -// XChild -void SAL_CALL AnimationNode::setParent( const Reference< XInterface >& Parent ) throw (NoSupportException, RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - if( Parent != mxParent ) - { - mxParent = Parent; - - mpParent = 0; - Reference< XUnoTunnel > xTunnel( mxParent, UNO_QUERY ); - if( xTunnel.is() ) - mpParent = reinterpret_cast< AnimationNode* >( sal::static_int_cast< sal_IntPtr >(xTunnel->getSomething( getUnoTunnelId() ))); - - fireChangeListener(); - } -} - -// -------------------------------------------------------------------- - -// XCloneable -Reference< XCloneable > SAL_CALL AnimationNode::createClone() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - - Reference< XCloneable > xNewNode; - try - { - xNewNode = new AnimationNode( *this ); - - if( maChilds.size() ) - { - Reference< XTimeContainer > xContainer( xNewNode, UNO_QUERY ); - if( xContainer.is() ) - { - ChildList_t::iterator aIter( maChilds.begin() ); - ChildList_t::iterator aEnd( maChilds.end() ); - while( aIter != aEnd ) - { - Reference< XCloneable > xCloneable((*aIter++), UNO_QUERY ); - if( xCloneable.is() ) try - { - Reference< XAnimationNode > xNewChildNode( xCloneable->createClone(), UNO_QUERY ); - if( xNewChildNode.is() ) - xContainer->appendChild( xNewChildNode ); - } - catch( Exception& e ) - { - (void)e; - OSL_TRACE( "animations::AnimationNode::createClone(), exception caught!" ); - } - } - } - } - } - catch( Exception& e ) - { - (void)e; - OSL_TRACE( "animations::AnimationNode::createClone(), exception caught!" ); - } - - return xNewNode; -} - -// -------------------------------------------------------------------- - -// XAnimate -Any SAL_CALL AnimationNode::getTarget() - throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return maTarget; -} - -// -------------------------------------------------------------------- - -// XAnimate -void SAL_CALL AnimationNode::setTarget( const Any& _target ) - throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - if( _target != maTarget ) - { - maTarget= _target; - fireChangeListener(); - } -} - -// -------------------------------------------------------------------- - -// XAnimate -OUString SAL_CALL AnimationNode::getAttributeName() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return maAttributeName; -} - -// -------------------------------------------------------------------- - -// XAnimate -void SAL_CALL AnimationNode::setAttributeName( const OUString& _attribute ) - throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - if( _attribute != maAttributeName ) - { - maAttributeName = _attribute; - fireChangeListener(); - } -} - -// -------------------------------------------------------------------- - -// XAnimate -Sequence< Any > SAL_CALL AnimationNode::getValues() - throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return maValues; -} - -// -------------------------------------------------------------------- - -// XAnimate -void SAL_CALL AnimationNode::setValues( const Sequence< Any >& _values ) - throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - maValues = _values; - fireChangeListener(); -} - -// -------------------------------------------------------------------- - -// XAnimate -sal_Int16 SAL_CALL AnimationNode::getSubItem() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return mnSubItem; -} - -// -------------------------------------------------------------------- - -// XAnimate -void SAL_CALL AnimationNode::setSubItem( sal_Int16 _subitem ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - if( _subitem != mnSubItem ) - { - mnSubItem = _subitem; - fireChangeListener(); - } -} - -// -------------------------------------------------------------------- - -// XAnimate -Sequence< double > SAL_CALL AnimationNode::getKeyTimes() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return maKeyTimes; -} - -// -------------------------------------------------------------------- - -// XAnimate -void SAL_CALL AnimationNode::setKeyTimes( const Sequence< double >& _keytimes ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - maKeyTimes = _keytimes; - fireChangeListener(); -} - -// -------------------------------------------------------------------- - -// XAnimate -sal_Int16 SAL_CALL AnimationNode::getValueType() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return mnValueType; -} - -// -------------------------------------------------------------------- - -void SAL_CALL AnimationNode::setValueType( sal_Int16 _valuetype ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - if( _valuetype != mnValueType ) - { - mnValueType = _valuetype; - fireChangeListener(); - } -} - -// -------------------------------------------------------------------- - -// XAnimate -sal_Int16 SAL_CALL AnimationNode::getCalcMode() - throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return mnCalcMode; -} - -// -------------------------------------------------------------------- - -// XAnimate -void SAL_CALL AnimationNode::setCalcMode( sal_Int16 _calcmode ) - throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - if( _calcmode != mnCalcMode ) - { - mnCalcMode = _calcmode; - fireChangeListener(); - } -} - -// -------------------------------------------------------------------- - -// XAnimate -sal_Bool SAL_CALL AnimationNode::getAccumulate() - throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return mbAccumulate; -} - -// -------------------------------------------------------------------- - -// XAnimate -void SAL_CALL AnimationNode::setAccumulate( sal_Bool _accumulate ) - throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - if( _accumulate != mbAccumulate ) - { - mbAccumulate = _accumulate; - fireChangeListener(); - } -} - -// -------------------------------------------------------------------- - -// XAnimate -sal_Int16 SAL_CALL AnimationNode::getAdditive() - throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return mnAdditive; -} - -// -------------------------------------------------------------------- - -// XAnimate -void SAL_CALL AnimationNode::setAdditive( sal_Int16 _additive ) - throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - if( _additive != mnAdditive ) - { - mnAdditive = _additive; - fireChangeListener(); - } -} - -// -------------------------------------------------------------------- - -// XAnimate -Any SAL_CALL AnimationNode::getFrom() - throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return maFrom; -} - -// -------------------------------------------------------------------- - -// XAnimate -void SAL_CALL AnimationNode::setFrom( const Any& _from ) - throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - if( _from != maFrom ) - { - maFrom = _from; - fireChangeListener(); - } -} - -// -------------------------------------------------------------------- - -// XAnimate -Any SAL_CALL AnimationNode::getTo() - throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return maTo; -} - -// -------------------------------------------------------------------- - -// XAnimate -void SAL_CALL AnimationNode::setTo( const Any& _to ) - throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - if( _to != maTo ) - { - maTo = _to; - fireChangeListener(); - } -} - -// -------------------------------------------------------------------- - -// XAnimate -Any SAL_CALL AnimationNode::getBy() - throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return maBy; -} - -// -------------------------------------------------------------------- - -// XAnimate -void SAL_CALL AnimationNode::setBy( const Any& _by ) - throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - if( _by != maBy ) - { - maBy = _by; - fireChangeListener(); - } -} - -// -------------------------------------------------------------------- - -// XAnimate -Sequence< TimeFilterPair > SAL_CALL AnimationNode::getTimeFilter() - throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return maTimeFilter; -} - -// -------------------------------------------------------------------- - -// XAnimate -void SAL_CALL AnimationNode::setTimeFilter( const Sequence< TimeFilterPair >& _timefilter ) - throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - maTimeFilter = _timefilter; - fireChangeListener(); -} - -// -------------------------------------------------------------------- - -OUString SAL_CALL AnimationNode::getFormula() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return maFormula; -} - -// -------------------------------------------------------------------- - -void SAL_CALL AnimationNode::setFormula( const OUString& _formula ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - if( _formula != maFormula ) - { - maFormula = _formula; - fireChangeListener(); - } -} - -// -------------------------------------------------------------------- - -// XAnimateColor -sal_Int16 SAL_CALL AnimationNode::getColorInterpolation() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return mnColorSpace; -} - -// -------------------------------------------------------------------- - -// XAnimateColor -void SAL_CALL AnimationNode::setColorInterpolation( sal_Int16 _colorspace ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - if( _colorspace != mnColorSpace ) - { - mnColorSpace = _colorspace; - fireChangeListener(); - } -} - -// -------------------------------------------------------------------- - -// XAnimateColor -sal_Bool SAL_CALL AnimationNode::getDirection() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return mbDirection; -} - -// -------------------------------------------------------------------- - -// XAnimateColor -void SAL_CALL AnimationNode::setDirection( sal_Bool _direction ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - if( _direction != mbDirection ) - { - mbDirection = _direction; - fireChangeListener(); - } -} - -// -------------------------------------------------------------------- - -// XAnimateMotion -Any SAL_CALL AnimationNode::getPath() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return maPath; -} - -// -------------------------------------------------------------------- - -// XAnimateMotion -void SAL_CALL AnimationNode::setPath( const Any& _path ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - maPath = _path; - fireChangeListener(); -} - -// -------------------------------------------------------------------- - -// XAnimateMotion -Any SAL_CALL AnimationNode::getOrigin() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return maOrigin; -} - -// -------------------------------------------------------------------- - -// XAnimateMotion -void SAL_CALL AnimationNode::setOrigin( const Any& _origin ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - maOrigin = _origin; - fireChangeListener(); -} - -// -------------------------------------------------------------------- - -// XAnimateTransform -sal_Int16 SAL_CALL AnimationNode::getTransformType() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return mnTransformType; -} - -// -------------------------------------------------------------------- - -// XAnimateTransform -void SAL_CALL AnimationNode::setTransformType( sal_Int16 _transformtype ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - if( _transformtype != mnTransformType ) - { - mnTransformType = _transformtype; - fireChangeListener(); - } -} - -// -------------------------------------------------------------------- - -// XTransitionFilter -sal_Int16 SAL_CALL AnimationNode::getTransition() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return mnTransition; -} - -// -------------------------------------------------------------------- - -// XTransitionFilter -void SAL_CALL AnimationNode::setTransition( sal_Int16 _transition ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - if( _transition != mnTransition ) - { - mnTransition = _transition; - fireChangeListener(); - } -} - -// -------------------------------------------------------------------- - -// XTransitionFilter -sal_Int16 SAL_CALL AnimationNode::getSubtype() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return mnSubtype; -} - -// -------------------------------------------------------------------- - -// XTransitionFilter -void SAL_CALL AnimationNode::setSubtype( sal_Int16 _subtype ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - if( _subtype != mnSubtype ) - { - mnSubtype = _subtype; - fireChangeListener(); - } -} - -// -------------------------------------------------------------------- - -// XTransitionFilter -sal_Bool SAL_CALL AnimationNode::getMode() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return mbMode; -} - -// -------------------------------------------------------------------- - -// XTransitionFilter -void SAL_CALL AnimationNode::setMode( sal_Bool _mode ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - if( _mode != mbMode ) - { - mbMode = _mode; - fireChangeListener(); - } -} - -// -------------------------------------------------------------------- - -// XTransitionFilter -sal_Int32 SAL_CALL AnimationNode::getFadeColor() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return mnFadeColor; -} - -// -------------------------------------------------------------------- - -// XTransitionFilter -void SAL_CALL AnimationNode::setFadeColor( sal_Int32 _fadecolor ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - if( _fadecolor != mnFadeColor ) - { - mnFadeColor = _fadecolor; - fireChangeListener(); - } -} - -// -------------------------------------------------------------------- - -// XAudio -Any SAL_CALL AnimationNode::getSource() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return maTarget; -} - -// -------------------------------------------------------------------- - -// XAudio -void SAL_CALL AnimationNode::setSource( const Any& _source ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - maTarget = _source; - fireChangeListener(); -} - -// -------------------------------------------------------------------- - -// XAudio -double SAL_CALL AnimationNode::getVolume() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return mfVolume; -} - -// -------------------------------------------------------------------- - -// XAudio -void SAL_CALL AnimationNode::setVolume( double _volume ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - if( _volume != mfVolume ) - { - mfVolume = _volume; - fireChangeListener(); - } -} - -// -------------------------------------------------------------------- - -// XCommand -sal_Int16 SAL_CALL AnimationNode::getCommand() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return mnCommand; -} - -// -------------------------------------------------------------------- - -// XCommand -void SAL_CALL AnimationNode::setCommand( sal_Int16 _command ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - if( _command != mnCommand ) - { - mnCommand = _command; - fireChangeListener(); - } -} - -// -------------------------------------------------------------------- - -// XCommand -Any SAL_CALL AnimationNode::getParameter() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return maParameter; -} - -// -------------------------------------------------------------------- - -// XCommand -void SAL_CALL AnimationNode::setParameter( const Any& _parameter ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - maParameter = _parameter; - fireChangeListener(); -} - -// -------------------------------------------------------------------- - -// XElementAccess -Type SAL_CALL AnimationNode::getElementType() throw (RuntimeException) -{ - return ::getCppuType((const Reference< XAnimationNode >*)0); -} - -// -------------------------------------------------------------------- - -// XElementAccess -sal_Bool SAL_CALL AnimationNode::hasElements() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return !maChilds.empty(); -} - -// -------------------------------------------------------------------- - -// XEnumerationAccess -Reference< XEnumeration > SAL_CALL AnimationNode::createEnumeration() - throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - - return new TimeContainerEnumeration( maChilds); -} - -// -------------------------------------------------------------------- - - -// XTimeContainer -Reference< XAnimationNode > SAL_CALL AnimationNode::insertBefore( const Reference< XAnimationNode >& newChild, const Reference< XAnimationNode >& refChild ) - throw (IllegalArgumentException, NoSuchElementException, ElementExistException, WrappedTargetException, RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - - if( !newChild.is() || !refChild.is() ) - throw IllegalArgumentException(); - - ChildList_t::iterator before = ::std::find(maChilds.begin(), maChilds.end(), refChild); - if( before == maChilds.end() ) - throw NoSuchElementException(); - - if( ::std::find(maChilds.begin(), maChilds.end(), newChild) != maChilds.end() ) - throw ElementExistException(); - - maChilds.insert( before, newChild ); - - Reference< XInterface > xThis( static_cast< OWeakObject * >(this) ); - newChild->setParent( xThis ); - - return newChild; -} - -// -------------------------------------------------------------------- - -// XTimeContainer -Reference< XAnimationNode > SAL_CALL AnimationNode::insertAfter( const Reference< XAnimationNode >& newChild, const Reference< XAnimationNode >& refChild ) - throw (IllegalArgumentException, NoSuchElementException, ElementExistException, WrappedTargetException, RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - - if( !newChild.is() || !refChild.is() ) - throw IllegalArgumentException(); - - ChildList_t::iterator before = ::std::find(maChilds.begin(), maChilds.end(), refChild); - if( before == maChilds.end() ) - throw NoSuchElementException(); - - if( ::std::find(maChilds.begin(), maChilds.end(), newChild) != maChilds.end() ) - throw ElementExistException(); - - ++before; - if( before != maChilds.end() ) - maChilds.insert( before, newChild ); - else - maChilds.push_back( newChild ); - - Reference< XInterface > xThis( static_cast< OWeakObject * >(this) ); - newChild->setParent( xThis ); - - return newChild; -} - -// -------------------------------------------------------------------- - -// XTimeContainer -Reference< XAnimationNode > SAL_CALL AnimationNode::replaceChild( const Reference< XAnimationNode >& newChild, const Reference< XAnimationNode >& oldChild ) - throw( IllegalArgumentException, NoSuchElementException, ElementExistException, WrappedTargetException, RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - - if( !newChild.is() || !oldChild.is() ) - throw IllegalArgumentException(); - - ChildList_t::iterator replace = ::std::find(maChilds.begin(), maChilds.end(), oldChild); - if( replace == maChilds.end() ) - throw NoSuchElementException(); - - if( ::std::find(maChilds.begin(), maChilds.end(), newChild) != maChilds.end() ) - throw ElementExistException(); - - Reference< XInterface > xNull( 0 ); - oldChild->setParent( xNull ); - - (*replace) = newChild; - - Reference< XInterface > xThis( static_cast< OWeakObject * >(this) ); - newChild->setParent( xThis ); - - return newChild; -} - -// -------------------------------------------------------------------- - -// XTimeContainer -Reference< XAnimationNode > SAL_CALL AnimationNode::removeChild( const Reference< XAnimationNode >& oldChild ) - throw(IllegalArgumentException, NoSuchElementException, WrappedTargetException, RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - - if( !oldChild.is() ) - throw IllegalArgumentException(); - - ChildList_t::iterator old = ::std::find(maChilds.begin(), maChilds.end(), oldChild); - if( old == maChilds.end() ) - throw NoSuchElementException(); - - Reference< XInterface > xNull( 0 ); - oldChild->setParent( xNull ); - - maChilds.erase( old ); - - return oldChild; -} - -// -------------------------------------------------------------------- - -// XTimeContainer -Reference< XAnimationNode > SAL_CALL AnimationNode::appendChild( const Reference< XAnimationNode >& newChild ) - throw(IllegalArgumentException, ElementExistException, WrappedTargetException, RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - - if( !newChild.is() ) - throw IllegalArgumentException(); - - if( ::std::find(maChilds.begin(), maChilds.end(), newChild) != maChilds.end() ) - throw ElementExistException(); - - Reference< XInterface > xThis( static_cast< OWeakObject * >(this) ); - Reference< XInterface > xChild( newChild ); - - if( xThis == xChild ) - throw IllegalArgumentException(); - - maChilds.push_back( newChild ); - - newChild->setParent( xThis ); - - return newChild; -} - -// -------------------------------------------------------------------- - -// XIterateContainer -sal_Int16 SAL_CALL AnimationNode::getIterateType() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return mnIterateType; -} - -// -------------------------------------------------------------------- - -// XIterateContainer -void SAL_CALL AnimationNode::setIterateType( sal_Int16 _iteratetype ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - if( _iteratetype != mnIterateType ) - { - mnIterateType = _iteratetype; - fireChangeListener(); - } -} - -// -------------------------------------------------------------------- - -// XIterateContainer -double SAL_CALL AnimationNode::getIterateInterval() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return mfIterateInterval; -} - -// -------------------------------------------------------------------- - -// XIterateContainer -void SAL_CALL AnimationNode::setIterateInterval( double _iterateinterval ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - if( _iterateinterval != mfIterateInterval ) - { - mfIterateInterval = _iterateinterval; - fireChangeListener(); - } -} - -// -------------------------------------------------------------------- - -// XChangesNotifier -void SAL_CALL AnimationNode::addChangesListener( const Reference< XChangesListener >& aListener ) throw (RuntimeException) -{ - maChangeListener.addInterface( aListener ); -} - -// -------------------------------------------------------------------- - -// XChangesNotifier -void SAL_CALL AnimationNode::removeChangesListener( const Reference< XChangesListener >& aListener ) throw (RuntimeException) -{ - maChangeListener.removeInterface(aListener); -} - -// -------------------------------------------------------------------- - -// XUnoTunnel -::sal_Int64 SAL_CALL AnimationNode::getSomething( const Sequence< ::sal_Int8 >& rId ) throw (RuntimeException) -{ - if( rId.getLength() == 16 && 0 == rtl_compareMemory( getUnoTunnelId().getConstArray(), rId.getConstArray(), 16 ) ) - { - return sal::static_int_cast< sal_Int64 >(reinterpret_cast< sal_IntPtr >(this)); - - } - else - { - return 0; - } -} - -namespace -{ - class theAnimationNodeUnoTunnelId : public rtl::Static< UnoTunnelIdInit, theAnimationNodeUnoTunnelId > {}; -} - -const ::com::sun::star::uno::Sequence< sal_Int8 > & AnimationNode::getUnoTunnelId() -{ - return theAnimationNodeUnoTunnelId::get().getSeq(); -} - -// -------------------------------------------------------------------- - -void AnimationNode::fireChangeListener() -{ - Guard< Mutex > aGuard( maMutex ); - - OInterfaceIteratorHelper aIterator( maChangeListener ); - if( aIterator.hasMoreElements() ) - { - Reference< XInterface > xSource( static_cast<OWeakObject*>(this), UNO_QUERY ); - Sequence< ElementChange > aChanges; - const ChangesEvent aEvent( xSource, makeAny( mxParent ), aChanges ); - while( aIterator.hasMoreElements() ) - { - Reference< XChangesListener > xListener( aIterator.next(), UNO_QUERY ); - if( xListener.is() ) - xListener->changesOccurred( aEvent ); - } - } - - if( mpParent ) - mpParent->fireChangeListener(); -} - -// -------------------------------------------------------------------- - -} // namespace animcore - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/animations/source/animcore/animcore.xml b/animations/source/animcore/animcore.xml deleted file mode 100644 index 22c3ddda6..000000000 --- a/animations/source/animcore/animcore.xml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE module-description PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "module-description.dtd"> -<module-description xmlns:xlink="http://www.w3.org/1999/xlink"> - <module-name> animations </module-name> - - <component-description> - <author> Christian Lippka </author> - <name> todo </name> - <description> - This component provides ... - </description> - <loader-name> com.sun.star.loader.SharedLibrary </loader-name> - <language> c++ </language> - <status value="draft"/> - <supported-service> </supported-service> - <service-dependency> ... </service-dependency> - <type> ... </type> - </component-description> - - <project-build-dependency> cppuhelper </project-build-dependency> - <project-build-dependency> cppu </project-build-dependency> - <project-build-dependency> sal </project-build-dependency> - - <runtime-module-dependency> cppuhelper </runtime-module-dependency> - <runtime-module-dependency> cppu2 </runtime-module-dependency> - <runtime-module-dependency> sal2 </runtime-module-dependency> -</module-description> - diff --git a/animations/source/animcore/factreg.cxx b/animations/source/animcore/factreg.cxx deleted file mode 100644 index ec5a5210b..000000000 --- a/animations/source/animcore/factreg.cxx +++ /dev/null @@ -1,85 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#include <osl/diagnose.h> -#include <cppuhelper/factory.hxx> -#include <cppuhelper/implementationentry.hxx> - -#include <com/sun/star/registry/XRegistryKey.hpp> - -using namespace ::rtl; -using namespace ::cppu; -using namespace ::com::sun::star::uno; -using namespace ::com::sun::star::lang; -using namespace ::com::sun::star::registry; - -#include "factreg.hxx" - -namespace animcore -{ - rtl_StandardModuleCount g_moduleCount = MODULE_COUNT_INIT; -} - -using namespace animcore; - -#define IMPLEMENTATION_ENTRY(N)\ -{\ - createInstance_##N, getImplementationName_##N ,\ - getSupportedServiceNames_##N, createSingleComponentFactory ,\ - &g_moduleCount.modCnt , 0\ -}\ - -static struct ImplementationEntry g_entries[] = -{ - IMPLEMENTATION_ENTRY( PAR ), - IMPLEMENTATION_ENTRY( SEQ ), - IMPLEMENTATION_ENTRY( ITERATE ), - IMPLEMENTATION_ENTRY( ANIMATE ), - IMPLEMENTATION_ENTRY( SET ), - IMPLEMENTATION_ENTRY( ANIMATECOLOR ), - IMPLEMENTATION_ENTRY( ANIMATEMOTION ), - IMPLEMENTATION_ENTRY( ANIMATETRANSFORM ), - IMPLEMENTATION_ENTRY( TRANSITIONFILTER ), - IMPLEMENTATION_ENTRY( AUDIO ), - IMPLEMENTATION_ENTRY( COMMAND ), - IMPLEMENTATION_ENTRY( TargetPropertiesCreator ), - { 0, 0, 0, 0, 0, 0 } -}; - -extern "C" -{ - -SAL_DLLPUBLIC_EXPORT void * SAL_CALL animcore_component_getFactory( - const sal_Char * pImplName, void * pServiceManager, void * pRegistryKey ) -{ - return component_getFactoryHelper( pImplName, pServiceManager, pRegistryKey , g_entries ); -} - -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/animations/source/animcore/factreg.hxx b/animations/source/animcore/factreg.hxx deleted file mode 100644 index c9e0b1ad2..000000000 --- a/animations/source/animcore/factreg.hxx +++ /dev/null @@ -1,54 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#include <rtl/unload.h> - -namespace animcore { - -extern rtl_StandardModuleCount g_moduleCount; - -#define DECL_NODE_FACTORY(N)\ -extern ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL createInstance_##N( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > & rSMgr ) throw (::com::sun::star::uno::Exception);\ -extern ::rtl::OUString getImplementationName_##N();\ -extern ::com::sun::star::uno::Sequence< ::rtl::OUString> getSupportedServiceNames_##N(void) - -DECL_NODE_FACTORY( PAR ); -DECL_NODE_FACTORY( SEQ ); -DECL_NODE_FACTORY( ITERATE ); -DECL_NODE_FACTORY( ANIMATE ); -DECL_NODE_FACTORY( SET ); -DECL_NODE_FACTORY( ANIMATECOLOR ); -DECL_NODE_FACTORY( ANIMATEMOTION ); -DECL_NODE_FACTORY( ANIMATETRANSFORM ); -DECL_NODE_FACTORY( TRANSITIONFILTER ); -DECL_NODE_FACTORY( AUDIO ); -DECL_NODE_FACTORY( COMMAND ); -DECL_NODE_FACTORY( TargetPropertiesCreator ); - -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/animations/source/animcore/targetpropertiescreator.cxx b/animations/source/animcore/targetpropertiescreator.cxx deleted file mode 100644 index f0b343988..000000000 --- a/animations/source/animcore/targetpropertiescreator.cxx +++ /dev/null @@ -1,499 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#include <com/sun/star/uno/XComponentContext.hpp> -#include <com/sun/star/lang/XServiceInfo.hpp> -#include <com/sun/star/lang/XTypeProvider.hpp> -#include <com/sun/star/animations/XTargetPropertiesCreator.hpp> -#include <com/sun/star/animations/XIterateContainer.hpp> -#include <com/sun/star/animations/TargetProperties.hpp> -#include <com/sun/star/presentation/ParagraphTarget.hpp> -#include <com/sun/star/registry/XRegistryKey.hpp> -#include <com/sun/star/lang/XInitialization.hpp> -#include <com/sun/star/lang/XServiceName.hpp> -#include <com/sun/star/lang/XSingleServiceFactory.hpp> -#include <com/sun/star/drawing/XShape.hpp> -#include <com/sun/star/animations/AnimationNodeType.hpp> -#include <com/sun/star/animations/XAnimate.hpp> -#include <cppuhelper/compbase3.hxx> -#include <cppuhelper/factory.hxx> -#include <cppuhelper/implementationentry.hxx> -#include <comphelper/broadcasthelper.hxx> -#include <comphelper/sequence.hxx> - -#include <animations/animationnodehelper.hxx> - -#include <vector> -#include <boost/unordered_map.hpp> - - -using namespace ::com::sun::star; - -#define IMPLEMENTATION_NAME "animcore::TargetPropertiesCreator" -#define SERVICE_NAME "com.sun.star.animations.TargetPropertiesCreator" - -namespace animcore -{ - typedef ::cppu::WeakComponentImplHelper3< ::com::sun::star::animations::XTargetPropertiesCreator, - lang::XServiceInfo, - lang::XServiceName > TargetPropertiesCreator_Base; - - class TargetPropertiesCreator : public ::comphelper::OBaseMutex, - public TargetPropertiesCreator_Base - { - public: - static uno::Reference< uno::XInterface > SAL_CALL createInstance( const uno::Reference< uno::XComponentContext >& xContext ) throw ( uno::Exception ) - { - return uno::Reference< uno::XInterface >( static_cast<cppu::OWeakObject*>(new TargetPropertiesCreator( xContext )) ); - } - - /// Dispose all internal references - virtual void SAL_CALL disposing(); - - // XTargetPropertiesCreator - virtual uno::Sequence< animations::TargetProperties > SAL_CALL createInitialTargetProperties( const uno::Reference< animations::XAnimationNode >& rootNode ) throw (uno::RuntimeException); - - // XServiceInfo - virtual ::rtl::OUString SAL_CALL getImplementationName() throw( uno::RuntimeException ); - virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw( uno::RuntimeException ); - virtual uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw( uno::RuntimeException ); - - // XServiceName - virtual ::rtl::OUString SAL_CALL getServiceName( ) throw (uno::RuntimeException); - - protected: - ~TargetPropertiesCreator(); // we're a ref-counted UNO class. _We_ destroy ourselves. - - private: - // default: disabled copy/assignment - TargetPropertiesCreator(const TargetPropertiesCreator&); - TargetPropertiesCreator& operator=( const TargetPropertiesCreator& ); - - TargetPropertiesCreator( const uno::Reference< uno::XComponentContext >& rxContext ); - }; - - // -------------------------------------------------------------------- - - uno::Reference< uno::XInterface > SAL_CALL createInstance_TargetPropertiesCreator( const uno::Reference< uno::XComponentContext > & rSMgr ) throw (uno::Exception) - { - return TargetPropertiesCreator::createInstance( rSMgr ); - } - - ::rtl::OUString getImplementationName_TargetPropertiesCreator() - { - return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( IMPLEMENTATION_NAME ) ); - } - - uno::Sequence< ::rtl::OUString > getSupportedServiceNames_TargetPropertiesCreator(void) - { - uno::Sequence< ::rtl::OUString > aRet(1); - aRet.getArray()[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SERVICE_NAME ) ); - return aRet; - } - - // -------------------------------------------------------------------- - - namespace - { - // Vector containing all properties for a given shape - typedef ::std::vector< beans::NamedValue > VectorOfNamedValues; - - /** The hash map key - - This key contains both XShape reference and a paragraph - index, as we somehow have to handle shape and paragraph - targets with the same data structure. - */ - struct ShapeHashKey - { - /// Shape target - uno::Reference< drawing::XShape > mxRef; - - /** Paragraph index. - - If this is a pure shape target, mnParagraphIndex is - set to -1. - */ - sal_Int16 mnParagraphIndex; - - /// Comparison needed for boost::unordered_map - bool operator==( const ShapeHashKey& rRHS ) const - { - return mxRef == rRHS.mxRef && mnParagraphIndex == rRHS.mnParagraphIndex; - } - }; - - // A hash map which maps a XShape to the corresponding vector of initial properties - typedef ::boost::unordered_map< ShapeHashKey, - VectorOfNamedValues, - ::std::size_t (*)(const ShapeHashKey&) > XShapeHash; - - ::std::size_t refhasher( const ShapeHashKey& rKey ) - { - // TODO(P2): Maybe a better hash function would be to - // spread mnParagraphIndex to 32 bit: a0b0c0d0e0... Hakmem - // should have a formula. - // - // Yes it has: - // x = (x & 0x0000FF00) << 8) | (x >> 8) & 0x0000FF00 | x & 0xFF0000FF; - // x = (x & 0x00F000F0) << 4) | (x >> 4) & 0x00F000F0 | x & 0xF00FF00F; - // x = (x & 0x0C0C0C0C) << 2) | (x >> 2) & 0x0C0C0C0C | x & 0xC3C3C3C3; - // x = (x & 0x22222222) << 1) | (x >> 1) & 0x22222222 | x & 0x99999999; - // - // Costs about 17 cycles on a RISC machine with infinite - // instruction level parallelism (~42 basic - // instructions). Thus I truly doubt this pays off... - return reinterpret_cast< ::std::size_t >(rKey.mxRef.get()) ^ (rKey.mnParagraphIndex << 16L); - } - - - class NodeFunctor - { - public: - explicit NodeFunctor( XShapeHash& rShapeHash ) : - mrShapeHash( rShapeHash ), - mxTargetShape(), - mnParagraphIndex( -1 ) - { - } - - NodeFunctor( XShapeHash& rShapeHash, - const uno::Reference< drawing::XShape >& rTargetShape, - sal_Int16 nParagraphIndex ) : - mrShapeHash( rShapeHash ), - mxTargetShape( rTargetShape ), - mnParagraphIndex( nParagraphIndex ) - { - } - - void operator()( const uno::Reference< animations::XAnimationNode >& xNode ) const - { - if( !xNode.is() ) - { - OSL_FAIL( "AnimCore: NodeFunctor::operator(): invalid XAnimationNode" ); - return; - } - - uno::Reference< drawing::XShape > xTargetShape( mxTargetShape ); - sal_Int16 nParagraphIndex( mnParagraphIndex ); - - switch( xNode->getType() ) - { - case animations::AnimationNodeType::ITERATE: - { - // extract target shape from iterate node - // (will override the target for all children) - // -------------------------------------------------- - - uno::Reference< animations::XIterateContainer > xIterNode( xNode, - uno::UNO_QUERY ); - - // TODO(E1): I'm not too sure what to expect here... - if( !xIterNode->getTarget().hasValue() ) - { - OSL_FAIL( "animcore: NodeFunctor::operator(): no target on ITERATE node" ); - return; - } - - xTargetShape.set( xIterNode->getTarget(), - uno::UNO_QUERY ); - - if( !xTargetShape.is() ) - { - ::com::sun::star::presentation::ParagraphTarget aTarget; - - // no shape provided. Maybe a ParagraphTarget? - if( !(xIterNode->getTarget() >>= aTarget) ) - { - OSL_FAIL( "animcore: NodeFunctor::operator(): could not extract any " - "target information" ); - return; - } - - xTargetShape = aTarget.Shape; - nParagraphIndex = aTarget.Paragraph; - - if( !xTargetShape.is() ) - { - OSL_FAIL( "animcore: NodeFunctor::operator(): invalid shape in ParagraphTarget" ); - return; - } - } - } - // FALLTHROUGH intended - case animations::AnimationNodeType::PAR: - // FALLTHROUGH intended - case animations::AnimationNodeType::SEQ: - { - NodeFunctor aFunctor( mrShapeHash, - xTargetShape, - nParagraphIndex ); - if( !::anim::for_each_childNode( xNode, - aFunctor ) ) - { - OSL_FAIL( "AnimCore: NodeFunctor::operator(): child node iteration failed, " - "or extraneous container nodes encountered" ); - } - } - break; - - case animations::AnimationNodeType::CUSTOM: - // FALLTHROUGH intended - case animations::AnimationNodeType::ANIMATE: - // FALLTHROUGH intended - case animations::AnimationNodeType::ANIMATEMOTION: - // FALLTHROUGH intended - case animations::AnimationNodeType::ANIMATECOLOR: - // FALLTHROUGH intended - case animations::AnimationNodeType::ANIMATETRANSFORM: - // FALLTHROUGH intended - case animations::AnimationNodeType::TRANSITIONFILTER: - // FALLTHROUGH intended - case animations::AnimationNodeType::AUDIO: - // FALLTHROUGH intended - default: - // ignore this node, no valuable content for now. - break; - - case animations::AnimationNodeType::SET: - { - // evaluate set node content - uno::Reference< animations::XAnimate > xAnimateNode( xNode, - uno::UNO_QUERY ); - - if( !xAnimateNode.is() ) - break; // invalid node - - // determine target shape (if any) - ShapeHashKey aTarget; - if( xTargetShape.is() ) - { - // override target shape with parent-supplied - aTarget.mxRef = xTargetShape; - aTarget.mnParagraphIndex = nParagraphIndex; - } - else - { - // no parent-supplied target, retrieve - // node target - if( (xAnimateNode->getTarget() >>= aTarget.mxRef) ) - { - // pure shape target - set paragraph - // index to magic - aTarget.mnParagraphIndex = -1; - } - else - { - // not a pure shape target - maybe a - // ParagraphTarget? - presentation::ParagraphTarget aUnoTarget; - - if( !(xAnimateNode->getTarget() >>= aUnoTarget) ) - { - OSL_FAIL( "AnimCore: NodeFunctor::operator(): unknown target type encountered" ); - break; - } - - aTarget.mxRef = aUnoTarget.Shape; - aTarget.mnParagraphIndex = aUnoTarget.Paragraph; - } - } - - if( !aTarget.mxRef.is() ) - { - OSL_FAIL( "AnimCore: NodeFunctor::operator(): Found target, but XShape is NULL" ); - break; // invalid target XShape - } - - // check whether we already have an entry for - // this target (we only take the first set - // effect for every shape) - XShapeHash::const_iterator aIter; - if( (aIter=mrShapeHash.find( aTarget )) != mrShapeHash.end() ) - break; // already an entry in existence for given XShape - - // if this is an appear effect, hide shape - // initially. This is currently the only place - // where a shape effect influences shape - // attributes outside it's effective duration. - if( xAnimateNode->getAttributeName().equalsIgnoreAsciiCaseAscii("visibility") ) - { - sal_Bool bVisible( sal_False ); - - uno::Any aAny( xAnimateNode->getTo() ); - - // try to extract bool value - if( !(aAny >>= bVisible) ) - { - // try to extract string - ::rtl::OUString aString; - if( (aAny >>= aString) ) - { - // we also take the strings "true" and "false", - // as well as "on" and "off" here - if( aString.equalsIgnoreAsciiCaseAscii("true") || - aString.equalsIgnoreAsciiCaseAscii("on") ) - { - bVisible = sal_True; - } - if( aString.equalsIgnoreAsciiCaseAscii("false") || - aString.equalsIgnoreAsciiCaseAscii("off") ) - { - bVisible = sal_False; - } - } - } - - if( bVisible ) - { - // target is set to 'visible' at the - // first relevant effect. Thus, target - // must be initially _hidden_, for the - // effect to have visible impact. - mrShapeHash.insert( - XShapeHash::value_type( - aTarget, - VectorOfNamedValues( - 1, - beans::NamedValue( - xAnimateNode->getAttributeName(), - uno::makeAny( sal_False ) ) ) ) ); - } - } - } - break; - } - } - - private: - XShapeHash& mrShapeHash; - uno::Reference< drawing::XShape > mxTargetShape; - sal_Int16 mnParagraphIndex; - }; - } - - // -------------------------------------------------------------------- - - TargetPropertiesCreator::TargetPropertiesCreator( const uno::Reference< uno::XComponentContext >& ) : - TargetPropertiesCreator_Base( m_aMutex ) - { - } - - TargetPropertiesCreator::~TargetPropertiesCreator() - { - } - - void SAL_CALL TargetPropertiesCreator::disposing() - { - ::osl::MutexGuard aGuard( m_aMutex ); - } - - // XTargetPropertiesCreator - uno::Sequence< animations::TargetProperties > SAL_CALL TargetPropertiesCreator::createInitialTargetProperties - ( - const uno::Reference< animations::XAnimationNode >& xRootNode - ) throw (uno::RuntimeException) - { - ::osl::MutexGuard aGuard( m_aMutex ); - - // scan all nodes for visibility changes, and record first - // 'visibility=true' for each shape - XShapeHash aShapeHash( 101, - &refhasher ); - - NodeFunctor aFunctor( aShapeHash ); - - // TODO(F1): Maybe limit functor application to main sequence - // alone (CL said something that shape visibility is only - // affected by effects in the main sequence for PPT). - // - // OTOH, client code can pass us only the main sequence (which - // it actually does right now, for the slideshow implementation). - aFunctor( xRootNode ); - - - // output to result sequence - // ---------------------------------------------------------------------- - - uno::Sequence< animations::TargetProperties > aRes( aShapeHash.size() ); - - ::std::size_t nCurrIndex(0); - XShapeHash::const_iterator aCurr( aShapeHash.begin() ); - const XShapeHash::const_iterator aEnd ( aShapeHash.end() ); - while( aCurr != aEnd ) - { - animations::TargetProperties& rCurrProps( aRes[ nCurrIndex++ ] ); - - if( aCurr->first.mnParagraphIndex == -1 ) - { - rCurrProps.Target = uno::makeAny( aCurr->first.mxRef ); - } - else - { - rCurrProps.Target = uno::makeAny( - presentation::ParagraphTarget( - aCurr->first.mxRef, - aCurr->first.mnParagraphIndex ) ); - } - - rCurrProps.Properties = ::comphelper::containerToSequence( aCurr->second ); - - ++aCurr; - } - - return aRes; - } - - // XServiceInfo - ::rtl::OUString SAL_CALL TargetPropertiesCreator::getImplementationName() throw( uno::RuntimeException ) - { - return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( IMPLEMENTATION_NAME ) ); - } - - sal_Bool SAL_CALL TargetPropertiesCreator::supportsService( const ::rtl::OUString& ServiceName ) throw( uno::RuntimeException ) - { - return ServiceName.equalsIgnoreAsciiCaseAscii( SERVICE_NAME ); - } - - uno::Sequence< ::rtl::OUString > SAL_CALL TargetPropertiesCreator::getSupportedServiceNames() throw( uno::RuntimeException ) - { - uno::Sequence< ::rtl::OUString > aRet(1); - aRet[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( SERVICE_NAME ) ); - - return aRet; - } - - // XServiceName - ::rtl::OUString SAL_CALL TargetPropertiesCreator::getServiceName( ) throw (uno::RuntimeException) - { - return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SERVICE_NAME ) ); - } - -} // namespace animcore - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |