diff -r 8bda91a87a00 -r 8ee96d21d9bf profilesservices/RingingTone3DPlugin/inc/C3DAudioXMLParser.h --- a/profilesservices/RingingTone3DPlugin/inc/C3DAudioXMLParser.h Thu Aug 19 10:12:30 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,512 +0,0 @@ -/* -* 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: XML-Parser used to parse motion patterns. -* -*/ - - -#ifndef C3DAUDIOXMLPARSER_H -#define C3DAUDIOXMLPARSER_H - -// INCLUDES -#include -#include "C3DAudioPattern.h" // C3DAudioPatter, T3DScriptPosition -#include // Xml::MContentHandler -#include // Xml::CParser - -#include // RProperty - - -//CONSTANTS - -// Maximum length for names of element and attribute and for value of attribute. -const TUint KMaxDataLength = 20; -const TUint KBufSize32 = 32; - - -// DATA TYPES - -// Enumeration to use in determining the last tag. -enum TLastTag - { - EInitialization = 0, - EUpdate - }; - - -// Identifiers for reverberation presets. Used in mapping. -enum TReverbPresets - { - EReverbNotEnabled = 0, - EReverbPresetOne = 14, // Livingroom - EReverbPresetTwo = 5, // Cave - EReverbPresetThree = 26, // Stone Corridor - EReverbPresetFour = 8, // Forest - EReverbPresetFive = 24, // Sewerpipe - EReverbPresetSix = 28 // Underwater - }; - - -// FORWARD DECLARATIONS - -class C3DPatternPS; - - -// CLASS DECLARATION - -/** -* XML-parser used to parse motion patterns. -* -* @lib RingingTone3DPlugin.dll -* @since 5.0 -*/ -NONSHARABLE_CLASS (C3DAudioXMLParser) : public CBase, public Xml::MContentHandler - { - public: - - enum TPatternAttributeKeys - { - EKeyPatternId = 1, - EKeyDopplerUsed = 2, - EKeyVelocity = 3 - }; - - public: - - /** - * Two-phased constructor. - */ - static C3DAudioXMLParser* NewL(); - - /** - * Two-phased constructor. - */ - static C3DAudioXMLParser* NewLC(); - - /** - * Destructor. - */ - virtual ~C3DAudioXMLParser(); - - private: - - /** - * C++ default constructor. - */ - C3DAudioXMLParser(); - - /** - * By default Symbian 2nd phase constructor is private. - */ - void ConstructL(); - - - public: - - /** - * Parses the motion pattern from XML-file. - * @param aPatternNum Motion pattern to be parsed. - */ - void ParseL( TInt aPatternId ); - - /** - * Parses the motion pattern from XML-file. - * @param aPatternNum Motion pattern to be parsed. - */ - void ParseL( const TDesC& aFileName ); - - /** - * Returns single pattern attribute. - * @param Pattern attribute key. - * @return Pattern attribute value. - */ - TInt Attribute( TInt aKey ); - - const T3DPosition& PositionL( TInt aIndex ); - const T3DVelocity& VelocityL( TInt aIndex ); - const TInt& TimeL( TInt aIndex ); - TInt CountL(); - - private: - /** - * Reads 3D ringing tone pattern data from cache (PubSub) - * @param aPatternId Pattern id. - */ - TBool ReadFromPatternCacheL( TInt aPatternId ); - - /** - * Writes 3D ringing tone pattern data into cache (PubSub) - * @param aPatternId Pattern id. - */ - void WriteToPatternCacheL( TInt aPatternId ); - -#ifdef _DEBUG - public: - void AssertParseDataL( TInt aPatternId ); - static void GetPatternString(TDes& aText, TInt aPattern); - static void FlogPatternsL(TInt aOldPattern, TInt aNewPattern); - static void FlogPatternL(TInt aPattern); - static void FlogPubSubL(TInt aEcho); - static void GetEchoString(TDes& aText, TInt aEcho); -#endif - - - public: // from MContentHandler - - /** - * From MContentHandler This method is a callback to indicate the start of the document. - * @param aDocParam Specifies the various parameters of the document. - * @param aErrorCode The error code. - */ - void OnStartDocumentL( const Xml::RDocumentParameters& aDocParam, TInt aErrorCode ); - - /** - * This method is a callback to indicate the end of the document. - * @param aErrorCode The error code. - */ - void OnEndDocumentL( TInt aErrorCode ); - - /** - * This method is a callback to indicate an element has been parsed. - * @param aElement Handle to the element's details. - * @param aAttributes Attributes for the element. - * @param aErrorCode The error code. - */ - void OnStartElementL( const Xml::RTagInfo& aElement, const Xml::RAttributeArray& aAttributes, TInt aErrorCode ); - - /** - * This method is a callback to indicate the end of the element has been reached. - * @param aElement Handle to the element's details. - * @param aErrorCode The error code. - */ - void OnEndElementL( const Xml::RTagInfo& aElement, TInt aErrorCode ); - - /** - * This method is a callback that sends the content of the element. - * @param aBytes Raw content data for the element - * @param aErrorCode The error code. - */ - void OnContentL( const TDesC8& aBytes, TInt aErrorCode ); - - /** - * This method is a notification of the beginning of the scope of a prefix-URI Namespace mapping. - * @param aPrefix Namespace prefix being declared. - * @param aUri Namespace URI the prefix is mapped to. - * @param aErrorCode The error code. - */ - void OnStartPrefixMappingL( const RString& aPrefix, const RString& aUri, TInt aErrorCode ); - - /** - * This method is a notification of the end of the scope of a prefix-URI mapping. - * @param aPrefix Namespace prefix that was mapped. - * @param aErrorCode The error code. - */ - void OnEndPrefixMappingL( const RString& aPrefix, TInt aErrorCode ); - - /** - * This method is a notification of ignorable whitespace in element content. - * @since Series ?XX ?SeriesXX_version - * @param aBytes Ignored bytes from the document being parsed. - * @param aErrorCode The error code. - */ - void OnIgnorableWhiteSpaceL( const TDesC8& aBytes, TInt aErrorCode ); - - /** - * This method is a notification of a skipped entity. - * @param aName Name of the skipped entity. - * @param aErrorCode The error code. - */ - void OnSkippedEntityL( const RString& aName, TInt aErrorCode ); - - /** - * This method is a receive notification of a processing instruction. - * @param aTarget Processing instruction target. - * @param aData Processing instruction data. If empty none was supplied. - * @param aErrorCode The error code. - */ - void OnProcessingInstructionL( const TDesC8& aTarget, const TDesC8& aData, TInt aErrorCode ); - - /** - * This method indicates an error has occurred. - * @param aErrorCode The error code. - */ - void OnError( TInt aErrorCode ); - - /** - * This method obtains the interface matching the specified uid. - * @param aUid UID identifying the required interface. - */ - TAny* GetExtendedInterface( const TInt32 aUid ); - - - private: - - /** - * Processes the attributes of initialization-element. - * @param aAttributes Array of attributes. - */ - void ProcessInitAttributesL( const Xml::RAttributeArray& aAttributes ); - - /** - * Processes the attributes of loop-element. - * @param aAttributes Array of attributes. - */ - void ProcessLoopAttributesL( const Xml::RAttributeArray& aAttributes ); - - /** - * Processes the attributes of position-element. - * @param aAttributes Array of attributes. - */ - void ProcessPositionAttributesL( const Xml::RAttributeArray& aAttributes ); - - /** - * Processes the attributes of update-element. - * @param aAttributes Array of attributes. - */ - void ProcessUpdateAttributesL( const Xml::RAttributeArray& aAttributes ); - - /** - * Processes the attributes of velocity-element. - * @param aAttributes Array of attributes. - */ - void ProcessVelocityAttributesL( const Xml::RAttributeArray& aAttributes ); - - private: - - /** - * String copy with length check. - * @param aTarget. - * @param aSource. - */ - void CopyL( TDes8& aTarget, const TDesC8& aSource ); - - /** - * Panics plugin dll. - * @param aReason Panic code. - */ - void Panic(TInt aReason); - - void GetPatternFullPathL(TDes& aText, TInt aPatternId); - CBufFlat* ReadPatternFileL( const TDesC& aFullName ); - CBufFlat* ReadPatternFileL( TInt aPatternId ); - - - private: // Data - - // Xml::CParser - Xml::CParser* iParser; - - // file server session - RFs iFsSession; - - // Parsed pattern - C3DAudioPattern* iParsedPattern; - - // element name - TBuf8 iElementName; - - // attribute name - TBuf8 iAttributeName; - - // attribute value - TBuf8 iAttributeValue; - - // Currently parsed pattern update. - T3DScriptUpdate iCurrentUpdate; - - // Last tag occurred. - TLastTag iLastTag; - - // 3DTone file name and path - TFileName iFullPath; - - // Pattern id - TInt iPatternId; - }; - - - -/** -* C3DPatternPS is used for storing 3D pattern data in -* Public and Subcribe. Max pattern size is 65536 bytes. -* -* @lib RingingTone3DPlugin.dll -* @since 5.0 -*/ -NONSHARABLE_CLASS (C3DPatternPS) : public CBase - { - public: - - enum TPatternStoreKeys - { - EKeyPatternId = 1, - EKeyDopplerUsed = 2, - EKeyVelocity = 3, - EKeyDataSize = 4, - EKeyPatternData = 5 - }; - - public: - static C3DPatternPS* NewLC( TInt aStoreId ); - virtual ~C3DPatternPS(); - - private: - C3DPatternPS( TInt aStoreId ); - void ConstructL(); - - public: - void SetIntL( TInt aKey, TInt aValue ); - TInt IntL( TInt aKey ); - - CBufFlat* DataLC(); - void GetDataL( TDes8& aData ); - void SetDataL( const TDesC8& aData ); - - void TestL(); - - private: - TBool DefineKeyL( TInt aKeyId, TInt aKeyType ); - - private: - RProperty iProperty; - TUid iStoreUid; - }; - - - -////////////////////////////////////// START TEST CODE ////////////////////////// - -#include - -const TInt KBufSize128 = 128; -const TInt KBufSize64 = 64; - - -class T3DPatternData - { - public: - TInt iTime; - TInt iX; - TInt iY; - TInt iZ; - }; - - -/** -* C3DPatternParser -* -* Used to parse xml files. -*/ -NONSHARABLE_CLASS (C3DPatternParser) : public CBase, public Xml::MContentHandler - { - public: - static C3DPatternParser* NewL(); - virtual ~C3DPatternParser(); - - private: - C3DPatternParser(); - void ConstructL(); - - public: - void ParseDocumentL(const TDesC& aFullName); - void ParseDocumentL(TInt aPatternId); - TInt PositionCount(); - T3DPatternData& Position(TInt aIndex); - T3DPatternData& Velocity(TInt aIndex); - void GetPatternName(TDes& aText); - void GetEchoName(TDes& aText); - TBool DopplerEnabled(); - - void AssertPosition(TInt aIndex, TInt aX, TInt aY, TInt aZ); - void AssertVelocity(TInt aIndex, TInt aX, TInt aY, TInt aZ); - void AssertTime(TInt aIndex, TInt aTime); - - - - private: - void Print(); - void PrintCoordinates(T3DPatternData& aData, TBool aVelocity); - - - private: // from MContentHandler - - void OnStartDocumentL(const Xml::RDocumentParameters& aDocParam, TInt aErrorCode); - void OnEndDocumentL(TInt aErrorCode); - void OnStartElementL(const Xml::RTagInfo& aElement, - const Xml::RAttributeArray& aAttributes, - TInt aErrorCode); - void OnEndElementL(const Xml::RTagInfo& aElement, TInt aErrorCode); - void OnContentL(const TDesC8& aBytes, TInt aErrorCode); - void OnStartPrefixMappingL(const RString& aPrefix, const RString& aUri, - TInt aErrorCode); - void OnEndPrefixMappingL(const RString& aPrefix, TInt aErrorCode); - void OnIgnorableWhiteSpaceL(const TDesC8& aBytes, TInt aErrorCode); - void OnSkippedEntityL(const RString& aName, TInt aErrorCode); - void OnProcessingInstructionL(const TDesC8& aTarget, const TDesC8& aData, - TInt aErrorCode); - void OnError(TInt aErrorCode); - TAny* GetExtendedInterface(const TInt32 aUid); - - private: - CBufFlat* ReadDocumentL(const TDesC& aFullName); - void ReadPositionAttributesL(const Xml::RAttributeArray& aAttributes); - void ReadVelocityAttributesL(const Xml::RAttributeArray& aAttributes); - void ReadInitAttributesL(const Xml::RAttributeArray& aAttributes); - void ReadUpdateAttributesL(const Xml::RAttributeArray& aAttributes); - - private: - void StrCopy(TDes& aTarget, const TDesC8& aSource); - void StrCopy(TDes& aTarget, const TDesC& aSource); - TInt StrToIntL(const TDesC& aText); - void Panic(TInt aReason); - void GetPatternFileNameL(TDes& aText, TInt aPatternId); - - private: - - // Xml parser - Xml::CParser* iParser; - - // file server session - RFs iFsSession; - - TBuf iElementName; - TBuf iAttributeName; - TBuf iAttributeValue; - TBuf iEchoName; - TBuf iPatternName; - - TBool iDopplerUsed; - TBool iVelocityUsed; - - T3DPatternData iCurrentPosition; - T3DPatternData iCurrentVelocity; - - T3DPatternData iInitPosition; - T3DPatternData iInitVelocity; - - - - // list for parsed 3d pattern position coordinates - RArray iPositionList; - - // list for parsed 3d pattern velocity coordinates - RArray iVelocityList; - }; - -////////////////////////////////////// END TEST CODE //////////////////////////// - - -#endif // C3DAUDIOXMLPARSER_H - -// End of File