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

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. #ifndef _HXMETA_
  36. #define _HXMETA_
  37. #define HX_RAM_ENTRY_TAG "##"
  38. #define HX_RAM_ENTRY_TAGSIZE 2
  39. #define HX_RAM20_START_TAG "## .RAM_V2.0_START"
  40. #define HX_RAM20_START_TAGSIZE 22
  41. #define HX_RAM20_END_TAG "## .RAM_V2.0_END"
  42. #define HX_RAM20_END_TAGSIZE 20
  43. #define HX_RAM30_START_TAG "## .RAM_V3.0_START"
  44. #define HX_RAM30_START_TAGSIZE 22
  45. #define HX_RAM30_END_TAG "## .RAM_V3.0_END"
  46. #define HX_RAM30_END_TAGSIZE 20
  47. /*
  48.  * Forward declarations of some interfaces defined or used here-in.
  49.  */
  50. typedef struct _HXxWindow   HXxWindow;
  51. typedef _INTERFACE IUnknown IUnknown;
  52. typedef _INTERFACE IHXFileSystemObject IHXFileSystemObject;
  53. typedef _INTERFACE IHXFileObject IHXFileObject;
  54. typedef _INTERFACE IHXRequest IHXRequest;
  55. typedef _INTERFACE IHXMetaGroup IHXMetaGroup;
  56. typedef _INTERFACE IHXSiteLayout IHXSiteLayout;
  57. typedef _INTERFACE IHXMetaFileFormatObject IHXMetaFileFormatObject;
  58. typedef _INTERFACE IHXMetaFileFormatResponse IHXMetaFileFormatResponse;
  59. enum GROUP_TYPE
  60. {
  61.     SEQUENCE_GROUP,
  62.     PARALLEL_GROUP,
  63.     SWITCH_GROUP
  64. };
  65. /****************************************************************************
  66.  * 
  67.  *  Interface:
  68.  *
  69.  * IHXMetaTrack
  70.  *
  71.  *  Purpose:
  72.  *
  73.  * This interface allows access to a track's properties with special
  74.  * functions to get a track's layout & channel.
  75.  *
  76.  *
  77.  *  IID_IHXMetaTrack:
  78.  *
  79.  * {00000E01-0901-11d1-8B06-00A024406D59}
  80.  *
  81.  */
  82. DEFINE_GUID(IID_IHXMetaTrack, 0x00000E01, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  83. 0xa0, 0x24, 0x40, 0x6d, 0x59); 
  84. #undef  INTERFACE
  85. #define INTERFACE   IHXMetaTrack
  86. DECLARE_INTERFACE_(IHXMetaTrack, IUnknown)
  87. {
  88.     /*
  89.      * IUnknown methods
  90.      */
  91.     STDMETHOD(QueryInterface) (THIS_
  92. REFIID riid,
  93. void** ppvObj) PURE;
  94.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  95.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  96.     /*
  97.      * IHXMetaTrack methods
  98.      */
  99.     /************************************************************************
  100.      * Method:
  101.      *     IHXMetaGroup::GetStreamCount
  102.      * Purpose:
  103.      *     Gets a count of the number of streams exposed by this track
  104.      */
  105.     STDMETHOD_(INT32,GetStreamCount) (THIS) PURE;
  106.     /************************************************************************
  107.      * Method:
  108.      *     IHXMetaTrack::GetStreamById
  109.      * Purpose:
  110.      *     Gets a stream object whose "ID" property equals nStreamID
  111.      *     file group.
  112.      */
  113.     STDMETHOD(GetStreamById)  (THIS_
  114.    INT32 /*IN*/  nStreamID,
  115.        REF(IUnknown*) /*OUT*/ pStream) PURE;
  116.     /************************************************************************
  117.      * Method:
  118.      *     IHXMetaTrack::GetStreamByName
  119.      * Purpose:
  120.      *     Gets a stream object whose "ID" property equals nStreamID
  121.      *     file group.
  122.      */
  123.     STDMETHOD(GetStreamByName)  (THIS_
  124.    const char* /*IN*/  pName,
  125.        REF(IUnknown*) /*OUT*/ pStream) PURE;
  126. };
  127. /****************************************************************************
  128.  * 
  129.  *  Interface:
  130.  *
  131.  * IHXMetaGroup
  132.  *
  133.  *  Purpose:
  134.  *
  135.  * This interface allows access to a group's properties with special
  136.  * functions to get a track's layout.
  137.  *
  138.  *
  139.  *  IID_IHXMetaGroup:
  140.  *
  141.  * {00000E02-0901-11d1-8B06-00A024406D59}
  142.  *
  143.  */
  144. DEFINE_GUID(IID_IHXMetaGroup, 0x00000E02, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  145. 0xa0, 0x24, 0x40, 0x6d, 0x59); 
  146. #undef  INTERFACE
  147. #define INTERFACE   IHXMetaGroup
  148. DECLARE_INTERFACE_(IHXMetaGroup, IUnknown)
  149. {
  150.     /*
  151.      * IUnknown methods
  152.      */
  153.     STDMETHOD(QueryInterface) (THIS_
  154. REFIID riid,
  155. void** ppvObj) PURE;
  156.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  157.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  158.     /*
  159.      * IHXMetaGroup methods
  160.      */
  161.     /************************************************************************
  162.      * Method:
  163.      *     IHXMetaGroup::GetTrackCount
  164.      * Purpose:
  165.      *     Gets a count of the number of tracks exposed by this meta file
  166.      *     group.
  167.      */
  168.     STDMETHOD_(INT32,GetTrackCount) (THIS) PURE;
  169.     /************************************************************************
  170.      * Method:
  171.      *     IHXMetaGroup::GetTrack
  172.      * Purpose:
  173.      *     Gets a track object of the numbered track exposed by this meta 
  174.      *     file group.
  175.      */
  176.     STDMETHOD(GetTrack) (THIS_
  177. INT32 /*IN*/  nTrackNumber,
  178.     REF(IHXMetaTrack*) /*OUT*/ pTrack) PURE;
  179.     /************************************************************************
  180.      * Method:
  181.      *     IHXMetaGroup::GetLayoutCount
  182.      * Purpose:
  183.      *     Gets a count of the number of Layouts exposed by this meta file
  184.      *     group.
  185.      */
  186.     STDMETHOD_(INT32,GetLayoutCount) (THIS) PURE;
  187.     /************************************************************************
  188.      * Method:
  189.      *     IHXMetaGroup::GetLayout
  190.      * Purpose:
  191.      *     Gets a Layout object of the numbered Layout exposed by this meta 
  192.      *     file group.
  193.      */
  194.     STDMETHOD(GetLayoutSite)(THIS_
  195.    REF(IHXSiteLayout*) /*OUT*/ pLayout) PURE;
  196.     STDMETHOD(GetLayout)(THIS_
  197. INT32 /*IN*/  nLayoutNumber,
  198.     REF(IUnknown*) /*OUT*/ pUnknown)PURE;
  199. };
  200. /****************************************************************************
  201.  * 
  202.  *  Interface:
  203.  * 
  204.  * IHXMetaFileFormatObject
  205.  * 
  206.  *  Purpose:
  207.  * 
  208.  * This interface allows a new meta-file format to be pluged into
  209.  * the client application.
  210.  * 
  211.  *  IID_IHXMetaFileFormatObject:
  212.  * 
  213.  * {00000E05-0901-11d1-8B06-00A024406D59}
  214.  * 
  215.  */
  216. DEFINE_GUID(IID_IHXMetaFileFormatObject, 0x00000E05, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  217. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  218. #undef  INTERFACE
  219. #define INTERFACE   IHXMetaFileFormatObject
  220. DECLARE_INTERFACE_(IHXMetaFileFormatObject, IUnknown)
  221. {
  222. /*
  223.  * IUnknown methods
  224.  */
  225.     STDMETHOD(QueryInterface) (THIS_
  226. REFIID riid,
  227. void** ppvObj) PURE;
  228.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  229.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  230. /*
  231.  * IHXMetaFileFormatObject methods
  232.  */
  233.     /************************************************************************
  234.      * Method:
  235.      *     IHXMetaFileFormatObject::GetMetaFileFormatInfo
  236.      * Purpose:
  237.      *     Returns information vital to the instantiation of meta file 
  238.      *     format plugins.
  239.      */
  240.     STDMETHOD(GetMetaFileFormatInfo)
  241. (THIS_
  242. REF(const char**) /*OUT*/ pFileMimeTypes,
  243. REF(const char**) /*OUT*/ pFileExtensions,
  244. REF(const char**) /*OUT*/ pFileOpenNames
  245. ) PURE;
  246.     STDMETHOD(InitMetaFileFormat)
  247. (THIS_
  248.      IHXRequest*          /*IN*/  pRequest,
  249. IHXMetaFileFormatResponse* /*IN*/  pMetaResponse,
  250. IHXFileObject*     /*IN*/  pFileObject
  251. ) PURE;
  252.     /************************************************************************
  253.      * Method:
  254.      *     IHXMetaGroup::GetGroupCount
  255.      * Purpose:
  256.      *     Gets a count of the number of Groups exposed by this meta file
  257.      *     group.
  258.      */
  259.     STDMETHOD_(INT32,GetGroupCount) (THIS) PURE;
  260.     /************************************************************************
  261.      * Method:
  262.      *     IHXMetaGroup::GetGroup
  263.      * Purpose:
  264.      *     Gets a Group object of the numbered Group exposed by this meta 
  265.      *     file group.
  266.      */
  267.     STDMETHOD(GetGroup) (THIS_
  268. INT32 /*IN*/  nGroupNumber,
  269.     REF(IHXMetaGroup*) /*OUT*/ pGroup) PURE;
  270.     STDMETHOD(Close) (THIS) PURE;
  271. };
  272. /****************************************************************************
  273.  * 
  274.  *  Interface:
  275.  * 
  276.  * IHXMetaFileFormatResponse
  277.  * 
  278.  *  Purpose:
  279.  * 
  280.  * This interface allows a new meta-file format to be pluged into
  281.  * the client application.
  282.  * 
  283.  *  IID_IHXMetaFileFormatResponse:
  284.  * 
  285.  * {00000E06-0901-11d1-8B06-00A024406D59}
  286.  * 
  287.  */
  288. DEFINE_GUID(IID_IHXMetaFileFormatResponse, 0x00000E06, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  289. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  290. #undef  INTERFACE
  291. #define INTERFACE   IHXMetaFileFormatResponse
  292. DECLARE_INTERFACE_(IHXMetaFileFormatResponse, IUnknown)
  293. {
  294. /*
  295.  * IUnknown methods
  296.  */
  297.     STDMETHOD(QueryInterface) (THIS_
  298. REFIID riid,
  299. void** ppvObj) PURE;
  300.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  301.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  302. /*
  303.  * IHXMetaFileFormatResponse methods
  304.  */
  305.     /************************************************************************
  306.      * Method:
  307.      *     IHXMetaFileFormatResponse::InitDone
  308.      * Purpose:
  309.      *     Call to inform the metafile format response that the metafile
  310.      *     format plugin has completed the initialization of the metafile,
  311.      *     and is ready to respond to queries.
  312.      *
  313.      *     Use HXR_OK if the create was succesful
  314.      *
  315.      *     Use HXR_FAILED if the contents of the file was not valid
  316.      *     or if the creation failed for some reason.
  317.      */
  318.     STDMETHOD(InitDone)   (THIS_
  319.     HX_RESULT status) PURE;
  320. };
  321. /****************************************************************************
  322.  * 
  323.  *  Interface:
  324.  *
  325.  * IHXSiteLayout
  326.  *
  327.  *  Purpose:
  328.  *
  329.  * Interface for IHXSiteLayout...
  330.  *
  331.  *  IID_IHXSiteLayout:
  332.  *
  333.  * {00000E07-0901-11d1-8B06-00A024406D59}
  334.  *
  335.  */
  336. DEFINE_GUID(IID_IHXSiteLayout, 0x00000E07, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  337. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  338. #undef  INTERFACE
  339. #define INTERFACE   IHXSiteLayout
  340. DECLARE_INTERFACE_(IHXSiteLayout, IUnknown)
  341. {
  342.     /*
  343.      * IUnknown methods
  344.      */
  345.     STDMETHOD(QueryInterface) (THIS_
  346. REFIID riid,
  347. void** ppvObj) PURE;
  348.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  349.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  350.     /*
  351.      * IHXSiteLayout methods called the client core.
  352.      */
  353.     STDMETHOD_(ULONG32,GetLayoutSiteGroupCount) (THIS) PURE;
  354.     STDMETHOD(GetLayoutSiteGroup) (THIS_ 
  355. ULONG32 nGroupNumber,
  356. REF(IUnknown*) pLSG) PURE;
  357. };
  358. #endif /* _HXMETA_ */