diff -r 6465d5bb863a -r 13e71d907dc3 profilesservices/RingingTone3DPlugin/inc/C3DAudioPattern.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/profilesservices/RingingTone3DPlugin/inc/C3DAudioPattern.h Thu Nov 04 13:38:47 2010 +0800 @@ -0,0 +1,222 @@ +/* +* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Handles accessing 3D motion pattern data. +* +*/ + + +#ifndef C3DAUDIOPATTERN_H +#define C3DAUDIOPATTERN_H + +// INCLUDES +#include // CBase + +// FORWARD DECLARATIONS +class RReadStream; +class RWriteStream; + +// DATA TYPES + +// Struct representing position in three dimensional space. +struct T3DPosition + { + // X-coordinate + TInt iX; + // Y-coordinate + TInt iY; + // Z-coordinate + TInt iZ; + }; + +// Struct representing velocity. +struct T3DVelocity + { + // Boolean indicating is scalar velocity in use + TBool iScalar; + // Scalar velocity + TInt iScalarVelocity; + // Velocity along x-axis. + TInt iXVector; + // Velocity along y-axis. + TInt iYVector; + // Velocity along z-axis. + TInt iZVector; + }; + +// Struct representing update in motion pattern. +struct T3DScriptUpdate + { + // Position of the trajectory. + T3DPosition iPosition; + // Velocity + T3DVelocity iVelocity; + // Time the pattern stays in this position. + TInt iDTime; + }; + +// Struct representing loop in pattern. +struct T3DLoop + { + // Position where to start the loop. + TInt iLoopStart; + // Position where to end the loop. + TInt iLoopEnd; + // How many times the loop is to be gone through. + TInt iCount; + }; + + +// CLASS DECLARATION + +/** +* Handles accessing 3D motion pattern data. +* +* @lib RingingTone3DPlugin.dll +* @since 5.0 +*/ +NONSHARABLE_CLASS (C3DAudioPattern): public CBase + { + + public: // Constructors and destructor + + /** + * Two-phased constructor. + */ + static C3DAudioPattern* NewL(); + + /** + * Two-phased constructor. + */ + static C3DAudioPattern* NewLC(); + + /** + * Two-phased constructor. + * @param aStream Stream used to internalise the pattern. + */ + static C3DAudioPattern* NewL( RReadStream& aStream ); + + /** + * Two-phased constructor. + * @param aStream Stream used to internalise the pattern. + */ + static C3DAudioPattern* NewLC( RReadStream& aStream ); + + /** + * Destructor + */ + virtual ~C3DAudioPattern(); + + private: + + /** + * C++ default constructor. + */ + C3DAudioPattern(); + + private: + + /** + * Internalizes the pattern from readstream. + * @param aStream Readstream from which to internalize the pattern. + */ + void InternalizeL( RReadStream& aStream ); + + public: + + /** + * Externalizes the pattern. + * @param aStream Writestream to externalize the pattern to. + */ + void ExternalizeL( RWriteStream& aStream ) const; + + /** + * Sets the name of the pattern. + * @param aName Descriptor containing the name of the pattern. + */ + void SetNameL( const TDesC8& aName ); + + /** + * Getter for name of the pattern. + * @return Descriptor containing name of the pattern. + */ + const TDesC8& Name(); + + /** + * Sets the doppler of the pattern. + * @param aDoppler Boolean whether doppler is available or not. + */ + void SetDoppler( const TBool aDoppler ); + + /** + * Queries if doppler-effect is available in the pattern. + * @return Boolean indicating whether doppler is available. + */ + TBool DopplerAvailable() const; + + /** + * Sets the reververation of pattern. + * @param aReverb Index of reverberation used with CEnvironmentalReverbUtility. + */ + void SetReverb( const TUint aReverb ); + + /** + * Queries reverberation preset of the pattern. + * @return Reverberation preset used in pattern. + */ + TInt Reverb() const; + + /** + * Adds a new update to script. + * @param aUpdate Update to add to the script. + */ + void AddUpdateL( T3DScriptUpdate& aUpdate ); + + /** + * Used to indicate a start of a loop in pattern. + * @param aCount Amount of times the loop takes place. + */ + void StartLoopL( TUint& aCount ); + + /** + * Used to indicate end of a loop in pattern. + */ + void EndLoop(); + + /** + * Getter for script containg motion pattern. + * @return Array containing timeframes of pattern. + */ + RArray< T3DScriptUpdate > Script(); + + + private: // Data + + // Name of the pattern. + HBufC8* iName; + // Initial status of doppler-effect. + TBool iInitialDoppler; + // Initial reverb preset. + TUint iInitialReverb; + // Array containing indexes of open loops. + RArray< TInt > iOpenLoops; + // Array containing loops in the pattern. + RArray< T3DLoop > iLoops; + // Array containing the whole pattern as timeframes. + RArray< T3DScriptUpdate > iScript; + + }; + +#endif // C3DAUDIOPATTERN_H + +// End of File