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