diff --git a/sd/source/filter/eppt/epptso.cxx b/sd/source/filter/eppt/epptso.cxx index a6b390f0d605..43e502bcc315 100644 --- a/sd/source/filter/eppt/epptso.cxx +++ b/sd/source/filter/eppt/epptso.cxx @@ -4,9 +4,9 @@ * * $RCSfile: epptso.cxx,v $ * - * $Revision: 1.89 $ + * $Revision: 1.90 $ * - * last change: $Author: rt $ $Date: 2006-02-09 14:05:31 $ + * last change: $Author: rt $ $Date: 2006-03-06 09:03:32 $ * * The Contents of this file are made available subject to * the terms of GNU Lesser General Public License Version 2.1. @@ -367,188 +367,6 @@ void GroupTable::SkipCurrentGroup() // --------------------------------------------------------------------------------------------- -SoundEntry::SoundEntry( const String& rString ) : - aSoundURL( rString ), - nFileSize( 0 ) -{ - try - { - ::ucb::Content aCnt( aSoundURL, - ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XCommandEnvironment >() ); - sal_Int64 nVal; - ::cppu::convertPropertyValue( nVal, aCnt.getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Size" ) ) ) ); - nFileSize = (sal_uInt32)nVal; - } - catch( ::com::sun::star::uno::Exception& ) - { - - } -}; - -String SoundEntry::ImplGetName() const -{ - INetURLObject aTmp( aSoundURL ); - return aTmp.GetName(); -} - -String SoundEntry::ImplGetExtension() const -{ - INetURLObject aTmp( aSoundURL ); - String aExtension( aTmp.GetExtension() ); - if ( aExtension.Len() ) - aExtension.Insert( (sal_Unicode)'.', 0 ); - return aExtension; -} - -sal_Bool SoundEntry::IsSameURL( const String& rURL ) const -{ - return ( rURL == aSoundURL ); -} - -sal_uInt32 SoundEntry::GetSize( sal_uInt32 nId ) const -{ - String aName( ImplGetName() ); - String aExtension( ImplGetExtension() ); - - sal_uInt32 nSize = 8; // SoundContainer Header - if ( aName.Len() ) // String Atom ( instance 0 - name of sound ) - nSize += aName.Len() * 2 + 8; - if ( aExtension.Len() ) // String Atom ( instance 1 - extension of sound ) - nSize += aExtension.Len() * 2 + 8; - - String aId( String::CreateFromInt32( nId ) ); // String Atom ( instance 2 - reference id ) - nSize += 2 * aId.Len() + 8; - - nSize += nFileSize + 8; // SoundData Atom - - return nSize; -} - -void SoundEntry::Write( SvStream& rSt, sal_uInt32 nId ) -{ - try - { - ::ucb::Content aCnt( aSoundURL, - ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XCommandEnvironment >() ); - - // create SoundContainer - rSt << (sal_uInt32)( ( EPP_Sound << 16 ) | 0xf ) << (sal_uInt32)( GetSize( nId ) - 8 ); - - String aSoundName( ImplGetName() ); - sal_uInt16 i, nSoundNameLen = aSoundName.Len(); - if ( nSoundNameLen ) - { - // name of sound ( instance 0 ) - rSt << (sal_uInt32)( EPP_CString << 16 ) << (sal_uInt32)( nSoundNameLen * 2 ); - for ( i = 0; i < nSoundNameLen; i++ ) - rSt << aSoundName.GetChar( i ); - } - String aExtension( ImplGetExtension() ); - sal_uInt32 nExtensionLen = aExtension.Len(); - if ( nExtensionLen ) - { - // extension of sound ( instance 1 ) - rSt << (sal_uInt32)( ( EPP_CString << 16 ) | 16 ) << (sal_uInt32)( nExtensionLen * 2 ); - for ( i = 0; i < nExtensionLen; i++ ) - rSt << aExtension.GetChar( i ); - } - // id of sound ( instance 2 ) - String aId( String::CreateFromInt32( nId ) ); - sal_uInt32 nIdLen = aId.Len(); - rSt << (sal_uInt32)( ( EPP_CString << 16 ) | 32 ) << (sal_uInt32)( nIdLen * 2 ); - for ( i = 0; i < nIdLen; i++ ) - rSt << aId.GetChar( i ); - - rSt << (sal_uInt32)( EPP_SoundData << 16 ) << (sal_uInt32)( nFileSize ); - sal_uInt32 nBytesLeft = nFileSize; - SvStream* pSourceFile = ::utl::UcbStreamHelper::CreateStream( aSoundURL, STREAM_READ ); - if ( pSourceFile ) - { - sal_uInt8* pBuf = new sal_uInt8[ 0x10000 ]; // 64 kB Buffer - while ( nBytesLeft ) - { - sal_uInt32 nToDo = ( nBytesLeft > 0x10000 ) ? 0x10000 : nBytesLeft; - pSourceFile->Read( pBuf, nToDo ); - rSt.Write( pBuf, nToDo ); - nBytesLeft -= nToDo; - } - delete pSourceFile; - delete[] pBuf; - } - } - catch( ::com::sun::star::uno::Exception& ) - { - - } -} - -SoundCollection::~SoundCollection() -{ - for( void* pPtr = List::First(); pPtr; pPtr = List::Next() ) - delete (SoundEntry*)pPtr; -} - -sal_uInt32 SoundCollection::GetId( const String& rString ) -{ - sal_uInt32 nSoundId = 0; - if( rString.Len() ) - { - const sal_uInt32 nCount = Count(); - - for( ; nSoundId < nCount; nSoundId++ ) - if( ImplGetByIndex( nSoundId )->IsSameURL( rString ) ) - break; - if ( nSoundId++ == nCount ) - { - SoundEntry* pEntry = new SoundEntry( rString ); - if ( pEntry->GetFileSize() ) - List::Insert( pEntry, LIST_APPEND ); - else - { - nSoundId = 0; // only insert sounds that are accessible - delete pEntry; - } - } - } - return nSoundId; -} - -const SoundEntry* SoundCollection::ImplGetByIndex( sal_uInt32 nIndex ) const -{ - return (SoundEntry*)List::GetObject( nIndex ); -} - -sal_uInt32 SoundCollection::GetSize() const -{ - sal_uInt32 nSize = 0; - sal_uInt32 i, nCount = Count(); - if ( nCount ) - { - nSize += 8 + 12; // size of SoundCollectionContainerHeader + SoundCollAtom - for ( i = 0; i < nCount; i++ ) - nSize += ImplGetByIndex( i )->GetSize( i + 1 ); - } - return nSize; -} - -void SoundCollection::Write( SvStream& rSt ) -{ - sal_uInt32 i, nCount = Count(); - if ( nCount ) - { - // create SoundCollection Container - rSt << (sal_uInt16)0xf << (sal_uInt16)EPP_SoundCollection << (sal_uInt32)( GetSize() - 8 ); - - // create SoundCollAtom ( reference to the next free SoundId ); - rSt << (sal_uInt32)( EPP_SoundCollAtom << 16 ) << (sal_uInt32)4 << nCount; - - for ( i = 0; i < nCount; i++ ) - ((SoundEntry*)List::GetObject( i ))->Write( rSt, i + 1 ); - } -} - -// --------------------------------------------------------------------------------------------- - FontCollectionEntry::~FontCollectionEntry() { }