smlpkt.h
上传用户:zhongxx05
上传日期:2007-06-06
资源大小:33641k
文件大小:6k
源码类别:

Symbian

开发平台:

C/C++

  1. /* ***** BEGIN LICENSE BLOCK ***** 
  2.  * Version: RCSL 1.0/RPSL 1.0 
  3.  *  
  4.  * Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved. 
  5.  *      
  6.  * The contents of this file, and the files included with this file, are 
  7.  * subject to the current version of the RealNetworks Public Source License 
  8.  * Version 1.0 (the "RPSL") available at 
  9.  * http://www.helixcommunity.org/content/rpsl unless you have licensed 
  10.  * the file under the RealNetworks Community Source License Version 1.0 
  11.  * (the "RCSL") available at http://www.helixcommunity.org/content/rcsl, 
  12.  * in which case the RCSL will apply. You may also obtain the license terms 
  13.  * directly from RealNetworks.  You may not use this file except in 
  14.  * compliance with the RPSL or, if you have a valid RCSL with RealNetworks 
  15.  * applicable to this file, the RCSL.  Please see the applicable RPSL or 
  16.  * RCSL for the rights, obligations and limitations governing use of the 
  17.  * contents of the file.  
  18.  *  
  19.  * This file is part of the Helix DNA Technology. RealNetworks is the 
  20.  * developer of the Original Code and owns the copyrights in the portions 
  21.  * it created. 
  22.  *  
  23.  * This file, and the files included with this file, is distributed and made 
  24.  * available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
  25.  * EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
  26.  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 
  27.  * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
  28.  * 
  29.  * Technology Compatibility Kit Test Suite(s) Location: 
  30.  *    http://www.helixcommunity.org/content/tck 
  31.  * 
  32.  * Contributor(s): 
  33.  *  
  34.  * ***** END LICENSE BLOCK ***** */ 
  35.  
  36. #ifndef _SMLPKT_H_
  37. #define _SMLPKT_H_
  38. #include "hxwintyp.h"
  39. const char RMA_DRIVER_VERSION[] = "1.0";
  40. class CSmilPacket
  41. {
  42. public:
  43.     typedef enum
  44.     {
  45. SMILAddChannel,
  46. SMILAddGroup,
  47. SMILPlayGroup,
  48. SMILChannelAdded,
  49. SMILEndLayout,
  50. SMILAddSource,
  51. SMILSourceAdded,
  52. SMILMetaValues,
  53. SMILDocument
  54.     } SMILPacketType;
  55.     CSmilPacket     (SMILPacketType pktType):
  56. m_type(pktType)
  57. {}
  58.     virtual ~CSmilPacket     ()
  59. {};
  60.     virtual void assign     (const char* pName, 
  61.     const char** pValues,
  62.     INT32 nValues) 
  63. {};
  64.     SMILPacketType m_type;
  65.     CHXString m_id;
  66.     CHXString m_version;
  67. };
  68. class CSmilMetaValuesPacket: public CSmilPacket
  69. {
  70. public:
  71.     CSmilMetaValuesPacket     ();
  72.     virtual ~CSmilMetaValuesPacket  ();
  73.     virtual void assign     (const char* pName,
  74.     const char** pValues,
  75.     INT32 nValues);
  76.     CHXHeader* m_pValues;
  77. };
  78. class CSmilDocumentPacket: public CSmilPacket
  79. {
  80. public:
  81.     CSmilDocumentPacket     ();
  82.     virtual ~CSmilDocumentPacket    ();
  83.     virtual void assign     (const char* pName,
  84.     const char** pValues,
  85.     INT32 nValues);
  86.     UINT32    m_ulPacketNumber;
  87.     UINT32    m_ulTotalPackets;
  88.     CHXString m_document;
  89. };
  90. class CSmilAddGroupPacket: public CSmilPacket
  91. {
  92. public:
  93.     CSmilAddGroupPacket     ();
  94.     ~CSmilAddGroupPacket     ()
  95.     {};
  96.     virtual void assign     (const char* pName, 
  97.     const char** pValues,
  98.     INT32 nValues);
  99.     INT32 m_nGroup; // group to create
  100.     INT32 m_nTotalTracks; // total number of tracks in group
  101.     INT32 m_nInitTracks; // number of tracks needed to start group
  102.     CHXString m_title;
  103.     UINT32 m_ulDuration;
  104. };
  105. class CSmilPlayGroupPacket: public CSmilPacket
  106. {
  107. public:
  108.     CSmilPlayGroupPacket     ();
  109.     ~CSmilPlayGroupPacket     ()
  110.     {};
  111.     virtual void assign     (const char* pName, 
  112.     const char** pValues,
  113.     INT32 nValues);
  114.     INT32  m_nGroup;
  115.     UINT32 m_ulDelay;
  116.     UINT32  m_ulDuration;
  117. };
  118. class CSmilAddChannelPacket: public CSmilPacket
  119. {
  120. public:
  121.     CSmilAddChannelPacket     ();
  122.     ~CSmilAddChannelPacket     ()
  123.     {};
  124.     virtual void assign     (const char* pName, 
  125.     const char** pValues,
  126.     INT32 nValues);
  127.     UINT32 m_ulTop;
  128.     UINT32 m_ulLeft;
  129.     UINT32 m_ulHeight;
  130.     UINT32 m_ulWidth;
  131.     UINT32      m_ulZIndex;
  132.     HXxColor m_ulBgColor;
  133. };
  134. class CSmilEndLayoutPacket: public CSmilPacket
  135. {
  136. public:
  137.     CSmilEndLayoutPacket     ();
  138.     ~CSmilEndLayoutPacket     ();
  139.     virtual void assign     (const char* pName, 
  140.     const char** pValues,
  141.     INT32 nValues);
  142.     CHXString m_layoutName;
  143. };
  144. class CSmilAddSourcePacket: public CSmilPacket
  145. {
  146. public:
  147.     CSmilAddSourcePacket     ();
  148.     ~CSmilAddSourcePacket     ()
  149.     {};
  150.     virtual void assign     (const char* pName, 
  151.     const char** pValues,
  152.     INT32 nValues);
  153.     CHXString m_src;
  154.     CHXString m_channel;
  155.     CHXString m_fill;
  156.     UINT32 m_nGroup;
  157.     UINT32 m_ulDelay;
  158.     UINT32 m_ulDuration;
  159.     UINT32 m_ulClipStart;
  160.     UINT32 m_ulClipEnd;
  161. };
  162. class CSmilSourceAddedPacket: public CSmilPacket
  163. {
  164. public:
  165.     CSmilSourceAddedPacket     ();
  166.     ~CSmilSourceAddedPacket     ()
  167.     {};
  168.     virtual void assign     (const char* pName, 
  169.     const char** pValues,
  170.     INT32 nValues);
  171.     UINT32 m_duration;
  172. };
  173. class CSmilPacketTag
  174. {
  175. public:
  176.     CSmilPacketTag     () 
  177.     {};
  178.     ~CSmilPacketTag     ()
  179.     {};
  180.     CHXString   m_name;
  181. };
  182. class CSmilPacketParser
  183. {
  184. public:
  185.     CSmilPacketParser     ();
  186.     ~CSmilPacketParser     ();
  187.     typedef enum
  188.     {
  189.         SMILUnknown,
  190.         SMILNoValue,
  191.         SMILMissingQuote,
  192.         SMILOpenList,
  193.         SMILCloseList,
  194.         SMILString
  195.     } SMILPacketParseResult;
  196.     class Node
  197.     {
  198.     public:
  199.         Node     (): m_bIsSymbol(FALSE),
  200.     car(0),
  201.     cdr(0)
  202.     {}
  203.         ~Node     ()
  204.     {}
  205.         CHXString       m_name;
  206. BOOL m_bIsSymbol;
  207. Node* car;
  208. Node* cdr;
  209. void dump ();
  210.     };
  211.     CSmilPacket* parse(IHXBuffer* pBuffer,
  212. REF(CSmilPacketParser::SMILPacketParseResult) pktPrsRslt);
  213. private:
  214.     SMILPacketParseResult getAtom (const char*& pBuf, 
  215.      UINT32 len,
  216.          CSmilPacketTag*& pTag);
  217.     void  deleteNode (Node* pNode);
  218.     void eval (Node* pNode, 
  219.      CSmilPacket* pPkt);
  220.     CSmilPacket* evalNode (Node* pNode);
  221.     Node* getRoot () 
  222. { return m_pRootNode->car; }
  223.     Node*    m_pRootNode;
  224. };
  225. #endif /* _SMLPKT_H_ */