1*aaef562fSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*aaef562fSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*aaef562fSAndrew Rist * or more contributor license agreements. See the NOTICE file 5*aaef562fSAndrew Rist * distributed with this work for additional information 6*aaef562fSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*aaef562fSAndrew Rist * to you under the Apache License, Version 2.0 (the 8*aaef562fSAndrew Rist * "License"); you may not use this file except in compliance 9*aaef562fSAndrew Rist * with the License. You may obtain a copy of the License at 10*aaef562fSAndrew Rist * 11*aaef562fSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*aaef562fSAndrew Rist * 13*aaef562fSAndrew Rist * Unless required by applicable law or agreed to in writing, 14*aaef562fSAndrew Rist * software distributed under the License is distributed on an 15*aaef562fSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*aaef562fSAndrew Rist * KIND, either express or implied. See the License for the 17*aaef562fSAndrew Rist * specific language governing permissions and limitations 18*aaef562fSAndrew Rist * under the License. 19*aaef562fSAndrew Rist * 20*aaef562fSAndrew Rist *************************************************************/ 21*aaef562fSAndrew Rist 22*aaef562fSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir #ifndef INCLUDED_SLIDESHOW_ACCUMULATION_HXX 25cdf0e10cSrcweir #define INCLUDED_SLIDESHOW_ACCUMULATION_HXX 26cdf0e10cSrcweir 27cdf0e10cSrcweir #include <sal/types.h> 28cdf0e10cSrcweir #include <rtl/ustring.hxx> 29cdf0e10cSrcweir 30cdf0e10cSrcweir 31cdf0e10cSrcweir namespace slideshow 32cdf0e10cSrcweir { 33cdf0e10cSrcweir namespace internal 34cdf0e10cSrcweir { 35cdf0e10cSrcweir /** Generic accumulation. 36cdf0e10cSrcweir 37cdf0e10cSrcweir This template handles value accumulation across repeated 38cdf0e10cSrcweir effect runs: returned is the end value times the repeat 39cdf0e10cSrcweir count, plus the current value. 40cdf0e10cSrcweir 41cdf0e10cSrcweir @param rEndValue 42cdf0e10cSrcweir End value of the simple animation. 43cdf0e10cSrcweir 44cdf0e10cSrcweir @param nRepeatCount 45cdf0e10cSrcweir Number of completed repeats (i.e. 0 during the first 46cdf0e10cSrcweir effect run) 47cdf0e10cSrcweir 48cdf0e10cSrcweir @param rCurrValue 49cdf0e10cSrcweir Current animation value 50cdf0e10cSrcweir */ accumulate(const ValueType & rEndValue,sal_uInt32 nRepeatCount,const ValueType & rCurrValue)51cdf0e10cSrcweir template< typename ValueType > ValueType accumulate( const ValueType& rEndValue, 52cdf0e10cSrcweir sal_uInt32 nRepeatCount, 53cdf0e10cSrcweir const ValueType& rCurrValue ) 54cdf0e10cSrcweir { 55cdf0e10cSrcweir return nRepeatCount*rEndValue + rCurrValue; 56cdf0e10cSrcweir } 57cdf0e10cSrcweir 58cdf0e10cSrcweir /// Specialization for non-addable enums/constant values accumulate(const sal_Int16 &,sal_uInt32,const sal_Int16 & rCurrValue)59cdf0e10cSrcweir template<> sal_Int16 accumulate< sal_Int16 >( const sal_Int16&, 60cdf0e10cSrcweir sal_uInt32, 61cdf0e10cSrcweir const sal_Int16& rCurrValue ) 62cdf0e10cSrcweir { 63cdf0e10cSrcweir // always return rCurrValue, it's forbidden to add enums/constant values... 64cdf0e10cSrcweir return rCurrValue; 65cdf0e10cSrcweir } 66cdf0e10cSrcweir 67cdf0e10cSrcweir /// Specialization for non-addable strings accumulate(const::rtl::OUString &,sal_uInt32,const::rtl::OUString & rCurrValue)68cdf0e10cSrcweir template<> ::rtl::OUString accumulate< ::rtl::OUString >( const ::rtl::OUString&, 69cdf0e10cSrcweir sal_uInt32, 70cdf0e10cSrcweir const ::rtl::OUString& rCurrValue ) 71cdf0e10cSrcweir { 72cdf0e10cSrcweir // always return rCurrValue, it's impossible to add strings... 73cdf0e10cSrcweir return rCurrValue; 74cdf0e10cSrcweir } 75cdf0e10cSrcweir 76cdf0e10cSrcweir /// Specialization for non-addable bools accumulate(const bool &,sal_uInt32,const bool & bCurrValue)77cdf0e10cSrcweir template<> bool accumulate< bool >( const bool&, 78cdf0e10cSrcweir sal_uInt32, 79cdf0e10cSrcweir const bool& bCurrValue ) 80cdf0e10cSrcweir { 81cdf0e10cSrcweir // always return bCurrValue, SMIL spec requires to ignore 82cdf0e10cSrcweir // cumulative behaviour for bools. 83cdf0e10cSrcweir return bCurrValue; 84cdf0e10cSrcweir } 85cdf0e10cSrcweir } 86cdf0e10cSrcweir } 87cdf0e10cSrcweir 88cdf0e10cSrcweir #endif /* INCLUDED_SLIDESHOW_ACCUMULATION_HXX */ 89