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

Symbian

开发平台:

Visual C++

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