Fixed "extra qualification" syntax errors.
/*
* Copyright (c) 2005 - 2006 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: SVG Implementation header file
*
*/
#ifndef C_SVGAUDIOELEMENTIMPL_H
#define C_SVGAUDIOELEMENTIMPL_H
#include "SVGMediaElementBase.h"
#include "SVGRequestObserver.h"
#include <mdaaudiosampleplayer.h>
class CSvgDocumentImpl;
class MXmlDocument;
/**
* Class description:
* This class provides the implementation for the audio
* element as mentioned in the svg-t 1.2 specification.
* @lib SVGEngine.lib
* @since S60 3.2
*/
NONSHARABLE_CLASS( CSvgAudioElementImpl ) : public CSvgMediaElementBase,
public MMdaAudioPlayerCallback
{
public:
/**
* Deep Copy of the parent
*
* @since S60 3.2
* @param element to be copied
* @return
*/
MXmlElement* CloneL(MXmlElement* aParentElement);
/**
* Create new element of audioelementimpl
*
* @since S60 3.2
* @param
* @return
*/
static CSvgAudioElementImpl* NewL( const TUint8 aElemID,
CSvgDocumentImpl* aDoc );
/**
* Create new element of audioimpl
*
* @since S60 3.2
* @param
* @return
*/
static CSvgAudioElementImpl* NewLC( const TUint8 aElemID,
CSvgDocumentImpl* aDoc );
private:
/**
* Create new element of audioelementimpl
*
* @since S60 3.2
* @param
* @return
*/
void ConstructL( const TUint8 aElemID,CSvgDocumentImpl* aDoc );
public:
void SetUriL( const TDesC& aUri );
/**
* Constructor for AudioElement
*
* @since S60 3.2
* @param SvgDocument
* @return None
*/
CSvgAudioElementImpl( CSvgDocumentImpl* aDoc );
/**
* Destructor for Audioelement
*
* @since S60 3.2
* @param None
* @return None
*/
virtual ~CSvgAudioElementImpl();
/**
* Need method description
*
* @since S60 3.2
* @param
* @return
*/
void LoadUriL();
// From MXmlElement API
/**
* Sets attributes of audio element
*
* @since S60 3.2
* @param name of attribute and value to be set to attribute
* @return
*/
TInt SetAttributeL( const TDesC& aName, const TDesC& aValue );
/**
* Sets attributes of audio element
*
* @since S60 3.2
* @param name of attribute and value to be set to attribute
* @return
*/
TInt SetAttributeDesL( const TInt aNameId, const TDesC& aValue );
/**
* Get attributes of audio element
*
* @since S60 3.2
* @param name of attribute and value to be set to attribute
* @return
*/
TInt GetAttributeFloat( const TInt aNameId, TFloatFixPt& aValue );
/**
* Sets attributes of audio element
*
* @since S60 3.2
* @param name of attribute and value to be set to attribute
* @return
*/
TInt SetAttributeFloatL( const TInt aNameId, TFloatFixPt aValue );
/**
* From CSvgMediaElementBase
* ReceiveEventL: This function will be called whenever the registered
* event was happened.
*
* @since S60 3.2
* @param MSvgEvent* aEvent
* @return TBool ETrue if redraw is needed
*/
TBool ReceiveEventL( MSvgEvent* aEvent );
/**
* From CSvgMediaElementBase
*
* @since S60 3.2
* @param none.
* @return none.
*/
void ResetAnimationL();
/**
* From CSvgMediaElementBase
*
* @since S60 3.2
* @param MSvgEvent* aEvent
* @return none.
*/
void Reset( MSvgEvent* aEvent );
/**
* Call AnimaProcL
*
* @since S60 3.2
* @param MsvgEvent
* @return Boolean indicating successfull completion of the event
*/
TBool DoAnimProcL(MSvgEvent* aEvent);
/**
* Return wether an svg element is displayable, such as <rect>,
* <circle>, or an abstract element, such as <g>, <animate>.
*
* @since S60 3.2
* @param None
* @return ETrue if element is viewable.
*/
TBool IsViewable() { return EFalse; }
/*
* Set the volume of the Audio Player to the specified level
*
* @since S60 3.2
* @param TInt Volume
* @return none
*/
void SetVolume(TInt aVolume);
void Print( TBool aIsEncodeOn );
protected:
/**
* Need method description
*
* @since S60 3.2
* @param CSvgAudioElementImpl
* @return None
*/
void CopyL( CSvgAudioElementImpl* aDestElement );
private:
/*
* From MsvgAnimationBase
*/
virtual TBool AnimProcL( MSvgTimerEvent* aEvent );
/*
* From MsvgAnimationBase
*/
virtual void InitAnimationL();
/*
* From CMdaAudioPlayerUtility
* Callback from Audio Player indicating the audio has finished
* initialisation
* @ since S60 3.2
*/
virtual void MapcInitComplete( TInt aError,
const TTimeIntervalMicroSeconds& aDuration );
/*
* From CMdaAudioPlayerUtility
* Callback from Audio Player indicating the audio has finished
* playing
* @ since S60 3.2
*/
virtual void MapcPlayComplete(TInt aError);
private:
// From base classes
/**
* From CSvgMediaElementBase
* When the timed entity acts as timing master in the time container,
* the time container gets the timed entity clock using this method
* and feeds to rest of timed entities.
* @since S60 3.2
* @param aEntityCurTime Current Entity Time in msecs.
* @return none.
*/
void GetEntityCurrentTime( TUint32& aEntityCurTime );
/**
* From CSvgMediaElementBase
* Check if timed entity can provide timing ticks to rest of time
* container elements. This behavior could change dynamically.
* For example, if audio clip is over, the audio element can't generate
* ticks for others.
* @since S60 3.2
* @param none.
* @return TBool True if can generate timing tick.
*/
TBool CanGenerateTick();
/**
* From CSvgMediaElementBase
* If the timed entity needs to be in sync with the time container and
* it has slipped beyond the sync tolerance limit, the method is called to
* bring the element in sync with the time container.
* @since S60 3.2
* @param aSynctime Time for resync in msecs.
* @return none.
*/
void ResyncTimedEntity( TUint32 aSynctime );
/**
* From CSvgMediaElementBase
* This would be used for pausing the timed entity while other locked
* timed entities get loaded.
* @since S60 3.2
* @param none.
* @return none.
*/
void PauseTimedEntity();
/**
* From CSvgMediaElementBase
* This would be used for resuming the timed entity once all locked
* timed entities get loaded.
* @since S60 3.2
* @param none.
* @return none.
*/
void ResumeTimedEntity();
/**
* From CSvgMediaElementBase
* This would be used for stoping the timed entity once all locked
* timed entities get loaded.
* @since S60 3.2
* @param none.
* @return none.
*/
void StopTimedEntity();
/*
* From MSvgTimedEntityInterface
* Would return the type of object
* @param none
* @return type of object
*/
TSvgObjectType ObjectType();
CSvgTimeContainer* GetChildTimeContainer();
void DeactivateAnimation();
private:
//Audio Player Utility
CMdaAudioPlayerUtility* iAudioPlayer;
enum TPlayerState
{
EPlayerStateIdle,
EPlayerStatePlayInit,
EPlayerStatePlaying,
EPlayerStatePaused,
EPlayerStateStop,
EPlayerProhibit,
EPlayerStateComplete,
};
//Current status of player
TPlayerState iAudioStatus;
//Current Volume of the player
TReal32 iVolume;
TInt iPercentLevelVolume;
// Media duration in usecs
TTimeIntervalMicroSeconds iMediaDuration;
// Indicates whether time container issued a pause command
enum TcCommandStatus
{
ESvgTEPausedState,
ESvgTEStoppedState,
ESvgTEPlayingState
};
//Current Command on the player
TcCommandStatus iTcCommandState;
// Offset in msecs from document start since the audio
// element became active
TUint32 iAudioStartOffset;
//Flag indicating if duration is specified as media
TBool iDurMedia;
HBufC* iUri;
//Indicates the length of the clip that has already played
//Introduced to ensure that getentitycurrent time returns correct value
//At the end of a clip getPosition returns zero
//because of some bug in audio player
TTimeIntervalMicroSeconds iStoredPos;
};
#endif //C_SVGAUDIOELEMENTIMPL_H
// ---------------------------------------------------------------------------
// End of file
// ---------------------------------------------------------------------------