smlpkt.h
上传用户:dangjiwu
上传日期:2013-07-19
资源大小:42019k
文件大小:7k
源码类别:

Symbian

开发平台:

Visual C++

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