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

Symbian

开发平台:

Visual C++

  1. /* ***** BEGIN LICENSE BLOCK *****
  2.  * Source last modified: $Id: hxwin.h,v 1.1.1.1.50.3 2004/07/09 01:45:13 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 _HXWIN_H_
  50. #define _HXWIN_H_
  51. /*
  52.  * Forward declarations of some interfaces defined or used here-in.
  53.  */
  54. typedef _INTERFACE IHXSite IHXSite;
  55. typedef _INTERFACE IHXSiteUser IHXSiteUser;
  56. typedef _INTERFACE IHXSiteWindowed IHXSiteWindowed;
  57. typedef _INTERFACE IHXSiteEventHandler            IHXSiteEventHandler;
  58. typedef _INTERFACE IHXSiteWindowless IHXSiteWindowless;
  59. typedef _INTERFACE IHXSiteWatcher IHXSiteWatcher;
  60. typedef _INTERFACE IHXValues IHXValues;
  61. typedef _INTERFACE IHXSiteFullScreen IHXSiteFullScreen;
  62. typedef _INTERFACE IHXLayoutSiteGroupManager IHXLayoutSiteGroupManager;
  63. typedef _INTERFACE IHXEventHook IHXEventHook;
  64. typedef _INTERFACE IHXColorConverter IHXColorConverter;
  65. typedef _INTERFACE IHXSubRectVideoSurface IHXSubRectVideoSurface;
  66. typedef struct _HXBitmapInfoHeader HXBitmapInfoHeader;
  67. typedef struct _HXxWindow   HXxWindow;
  68. typedef struct _HXxRegion  HXxBoxRegion;
  69. typedef struct _HXxSize     HXxSize;
  70. typedef struct _HXxPoint    HXxPoint;
  71. typedef struct _HXxRect     HXxRect;
  72. typedef void* HXxRegion;
  73. /*
  74.  * Styles for IHXDrawFocus
  75.  */
  76. #define HX_SOLID_LINE      1
  77. #define HX_DASHED_LINE     HX_SOLID_LINE<<1
  78. #define HX_DOTTED_LINE     HX_SOLID_LINE<<2
  79. #define HX_CUSTOM_LINE     HX_SOLID_LINE<<3
  80. /*
  81.  * Focus Navigation
  82.  */
  83. typedef enum _HXFocusContext
  84. {
  85.     HXFirstFocus,
  86.     HXUpFocus,
  87.     HXDownFocus,
  88.     HXLeftFocus,
  89.     HXRightFocus,
  90.     HXNextFocus,
  91.     HXPrevFocus,
  92.     HXLastFocus
  93. } HXFocusContext;
  94. typedef enum _HXFocusState
  95. {
  96.     HXNoFocus,
  97.     HXFocused
  98. } HXFocusState;
  99. /****************************************************************************
  100.  * 
  101.  *  Interface:
  102.  *
  103.  * IHXSiteWindowed
  104.  *
  105.  *  Purpose:
  106.  *
  107.  * Interface for IHXSite objects which are associated with platform
  108.  * specific window objects on Microsoft Windows and X-Windows.
  109.  *
  110.  *  IID_IHXSiteWindowed:
  111.  *
  112.  * {00000D01-0901-11d1-8B06-00A024406D59}
  113.  *
  114.  */
  115. DEFINE_GUID(IID_IHXSiteWindowed, 0x00000D01, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  116. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  117. #define CLSID_IHXSiteWindowed IID_IHXSiteWindowed
  118. // $Private:
  119. DEFINE_GUID(IID_IHXGetImplementation, 0x00000D11, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  120. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  121. // $EndPrivate.
  122. #undef  INTERFACE
  123. #define INTERFACE   IHXSiteWindowed
  124. DECLARE_INTERFACE_(IHXSiteWindowed, IUnknown)
  125. {
  126.     /*
  127.      * IUnknown methods
  128.      */
  129.     STDMETHOD(QueryInterface) (THIS_
  130. REFIID riid,
  131. void** ppvObj) PURE;
  132.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  133.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  134.     /*
  135.      * IHXSiteWindowed methods called by site suppliers 
  136.      * when they want the site associated with a
  137.      * previously created (and externally managed) window.
  138.      * This method will "sub-class" that window (Win32).
  139.      * On Unix, the site supplier must pass events from 
  140.      * the externally managed window to the core via
  141.      * IHXClientEngine::EventOccurred(). Please note that
  142.      * The HXxWindow ptr must remain in scope for the life
  143.      * of Site.
  144.      * 
  145.      */
  146.     STDMETHOD(AttachWindow) (THIS_
  147. HXxWindow* /*IN*/ pWindow) PURE;
  148.     STDMETHOD(DetachWindow) (THIS) PURE;
  149.     /*
  150.      * IHXSiteWindowed methods called by Owners of the site
  151.      * in the event that want a default top level window created
  152.      * for the site.
  153.      */
  154.     STDMETHOD(Create) (THIS_
  155. void* ParentWindow, 
  156. UINT32 style) PURE;
  157.     STDMETHOD(Destroy) (THIS) PURE;
  158.     /*
  159.      * IHXSiteWindowed method. Returns actual window of the site.
  160.      */
  161.     STDMETHOD_(HXxWindow*,GetWindow)(THIS) PURE;
  162. };
  163. // $Private:
  164. /****************************************************************************
  165.  * 
  166.  *  Interface:
  167.  *
  168.  * IHXSiteEventHandler
  169.  *
  170.  *  Purpose:
  171.  *
  172.  * Interface for allowing client core engine to pass events to a site imeplementor
  173.  *      which it implemented as a factory plugin. 
  174.  *
  175.  *  IID_IHXSiteEventHandler                      
  176.  *
  177.  * {00000D12-0901-11d1-8B-6-00A024406D59}
  178.  *
  179.  */
  180. DEFINE_GUID(IID_IHXSiteEventHandler, 0x00000D12, 0x901, 0x11d1, 0x8b, 0x6, 
  181.                 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  182. #define CLSID_IHXSiteEventHandler IID_IHXSiteEventHandler
  183. #undef  INTERFACE
  184. #define INTERFACE   IHXSiteEventHandler
  185. DECLARE_INTERFACE_(IHXSiteEventHandler, IUnknown)
  186. {
  187.     /*
  188.      * IUnknown methods
  189.      */
  190.     STDMETHOD(QueryInterface) (THIS_
  191. REFIID riid,
  192. void** ppvObj) PURE;
  193.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  194.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  195.     /*
  196.      * This method is called from Site Manager EventOccured().
  197.      * The imeplementation of this interface must pass the events 
  198.      * on to the individual CHXSiteWindowed sites.
  199.      */
  200.     STDMETHOD(EventOccurred) (THIS_ HXxEvent* pEvent) PURE;
  201. };
  202. // $EndPrivate.
  203. /****************************************************************************
  204.  * 
  205.  *  Interface:
  206.  *
  207.  * IHXSiteWindowless
  208.  *
  209.  *  Purpose:
  210.  *
  211.  * Interface for IHXSite objects which are "windowless" or not 
  212.  * associated with platform specific window objects.
  213.  *
  214.  *  IID_IHXSiteWindowless:
  215.  *
  216.  * {00000D02-0901-11d1-8B06-00A024406D59}
  217.  *
  218.  */
  219. DEFINE_GUID(IID_IHXSiteWindowless, 0x00000D02, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  220. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  221. #undef  INTERFACE
  222. #define INTERFACE   IHXSiteWindowless
  223. #define CLSID_IHXSiteWindowless IID_IHXSiteWindowless
  224. DECLARE_INTERFACE_(IHXSiteWindowless, IUnknown)
  225. {
  226.     /*
  227.      * IUnknown methods
  228.      */
  229.     STDMETHOD(QueryInterface) (THIS_
  230. REFIID riid,
  231. void** ppvObj) PURE;
  232.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  233.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  234.     /*
  235.      * IHXSiteWindowless methods called by owners of the site.
  236.      */
  237.     STDMETHOD(EventOccurred) (THIS_
  238. HXxEvent* /*IN*/ pEvent) PURE;
  239.     /*
  240.      * IHXSiteWindowless method. Returns some parent window that
  241.      * owns the windowless site. Useful for right-click menus and
  242.      * dialog box calls.
  243.      */
  244.     STDMETHOD_(HXxWindow*,GetParentWindow)(THIS) PURE;
  245. };
  246. /****************************************************************************
  247.  * 
  248.  *  Interface:
  249.  *
  250.  * IHXSite
  251.  *
  252.  *  Purpose:
  253.  *
  254.  * Interface for IHXSite objects.
  255.  *
  256.  *  IID_IHXSite:
  257.  *
  258.  * {00000D03-0901-11d1-8B06-00A024406D59}
  259.  *
  260.  */
  261. DEFINE_GUID(IID_IHXSite, 0x00000D03, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  262. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  263. #undef  INTERFACE
  264. #define INTERFACE   IHXSite
  265. DECLARE_INTERFACE_(IHXSite, IUnknown)
  266. {
  267.     /*
  268.      * IUnknown methods
  269.      */
  270.     STDMETHOD(QueryInterface) (THIS_
  271. REFIID riid,
  272. void** ppvObj) PURE;
  273.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  274.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  275.     /*
  276.      * IHXSite methods usually called by the "context" to 
  277.      * associate users with the site, and to create child sites
  278.      * as appropriate.
  279.      */
  280.     STDMETHOD(AttachUser) (THIS_
  281. IHXSiteUser* /*IN*/ pUser) PURE;
  282.     STDMETHOD(DetachUser) (THIS) PURE;
  283.     STDMETHOD(GetUser) (THIS_
  284. REF(IHXSiteUser*) /*OUT*/ pUser) PURE;
  285.     STDMETHOD(CreateChild) (THIS_
  286. REF(IHXSite*) /*OUT*/ pChildSite) PURE;
  287.     STDMETHOD(DestroyChild) (THIS_
  288. IHXSite* /*IN*/ pChildSite) PURE;
  289.     /*
  290.      * IHXSite methods called by the the "context" in which the site
  291.      * is displayed in order to manage its position. Site users should
  292.      * not generally call these methods.
  293.      */
  294.     STDMETHOD(AttachWatcher) (THIS_
  295. IHXSiteWatcher* /*IN*/ pWatcher) PURE;
  296.     STDMETHOD(DetachWatcher) (THIS) PURE;
  297.     STDMETHOD(SetPosition) (THIS_
  298. HXxPoint position) PURE;
  299.     STDMETHOD(GetPosition) (THIS_
  300. REF(HXxPoint) position) PURE;
  301.     /*
  302.      * IHXSite methods called by the user of the site to get
  303.      * information about the site, and to manipulate the site.
  304.      */
  305.     STDMETHOD(SetSize) (THIS_
  306. HXxSize size) PURE;
  307.     STDMETHOD(GetSize) (THIS_
  308. REF(HXxSize) size) PURE;
  309.     STDMETHOD(DamageRect) (THIS_
  310. HXxRect rect) PURE;
  311.     STDMETHOD(DamageRegion) (THIS_
  312. HXxRegion region) PURE;
  313.     STDMETHOD(ForceRedraw) (THIS) PURE;
  314. };
  315. // $Private
  316. /****************************************************************************
  317.  * 
  318.  *  Interface:
  319.  *
  320.  * IHXSiteComposition
  321.  *
  322.  *  Purpose:
  323.  *
  324.  * Interface for IHXSite objects to let them compose composition
  325.  *      frames and display them on a regular basis rather than many
  326.  *      discrete blts.
  327.  *
  328.  *  IID_IHXSiteComposition:
  329.  *
  330.  * {00000D03-0901-11d1-8B06-00A024406D59}
  331.  *
  332.  */
  333. DEFINE_GUID(IID_IHXSiteComposition, 0x00000D19, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  334. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  335. #undef  INTERFACE
  336. #define INTERFACE   IHXSiteComposition
  337. DECLARE_INTERFACE_(IHXSiteComposition, IUnknown)
  338. {
  339.     /* IUnknown methods */
  340.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, void** ppvObj) PURE;
  341.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  342.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  343.     /* IHXSiteComposition methods. */
  344.     STDMETHOD(LockComposition)            (THIS) PURE;
  345.     STDMETHOD(UnlockComposition)          (THIS) PURE;
  346.     STDMETHOD(BltComposition)             (THIS) PURE;
  347.     STDMETHOD(SetCompositionMode)         (THIS_ BOOL OnOrOff) PURE;
  348.     STDMETHOD_(BOOL, IsCompositionLocked) (THIS) PURE;
  349.     STDMETHOD_(BOOL, IsCompositionMode)   (THIS) PURE;
  350. };
  351. // $EndPrivate.
  352. /****************************************************************************
  353.  * 
  354.  *  Interface:
  355.  *
  356.  * IHXSiteUser
  357.  *
  358.  *  Purpose:
  359.  *
  360.  * Interface for the user of the IHXSite objects.
  361.  *
  362.  *  IID_IHXSiteUser:
  363.  *
  364.  * {00000D04-0901-11d1-8B06-00A024406D59}
  365.  *
  366.  */
  367. DEFINE_GUID(IID_IHXSiteUser, 0x00000D04, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  368. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  369. #undef  INTERFACE
  370. #define INTERFACE   IHXSiteUser
  371. DECLARE_INTERFACE_(IHXSiteUser, IUnknown)
  372. {
  373.     /*
  374.      * IUnknown methods
  375.      */
  376.     STDMETHOD(QueryInterface) (THIS_
  377. REFIID riid,
  378. void** ppvObj) PURE;
  379.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  380.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  381.     /*
  382.      * IHXSiteUser methods usually called by the "context" to 
  383.      * associate users with the site.
  384.      */
  385.     STDMETHOD(AttachSite) (THIS_
  386. IHXSite* /*IN*/ pSite) PURE;
  387.     STDMETHOD(DetachSite) (THIS) PURE;
  388.     /*
  389.      * IHXSiteUser methods called to inform user of an event.
  390.      */
  391.     STDMETHOD(HandleEvent) (THIS_
  392. HXxEvent* /*IN*/ pEvent) PURE;
  393.     STDMETHOD_(BOOL,NeedsWindowedSites) (THIS) PURE;
  394. };
  395. /****************************************************************************
  396.  * 
  397.  *  Interface:
  398.  *
  399.  * IHXSiteWatcher
  400.  *
  401.  *  Purpose:
  402.  *
  403.  * Interface for IHXSiteWatcher objects.
  404.  *
  405.  *  IID_IHXSite:
  406.  *
  407.  * {00000D05-0901-11d1-8B06-00A024406D59}
  408.  *
  409.  */
  410. DEFINE_GUID(IID_IHXSiteWatcher, 0x00000D05, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  411. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  412. #undef  INTERFACE
  413. #define INTERFACE   IHXSiteWatcher
  414. DECLARE_INTERFACE_(IHXSiteWatcher, IUnknown)
  415. {
  416.     /*
  417.      * IUnknown methods
  418.      */
  419.     STDMETHOD(QueryInterface) (THIS_
  420. REFIID riid,
  421. void** ppvObj) PURE;
  422.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  423.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  424.     /*
  425.      * IHXSiteWatcher methods called by the site when a watcher 
  426.      * is attached to or detached from it.
  427.      */
  428.     STDMETHOD(AttachSite) (THIS_
  429. IHXSite* /*IN*/ pSite) PURE;
  430.     STDMETHOD(DetachSite) (THIS) PURE;
  431.     /*
  432.      * IHXSiteWatcher methods called by the site an attempt is
  433.      * made to change it's position or size. The site watcher must
  434.      * return HXR_OK for the change to occur. If the site watcher
  435.      * returns any value other than HXR_OK then the size or position
  436.      * will not change. The site watcher can also modify the new
  437.      * size of position.
  438.      */
  439.     STDMETHOD(ChangingPosition) (THIS_
  440. HXxPoint posOld,
  441. REF(HXxPoint)/*IN-OUT*/ posNew) PURE;
  442.     STDMETHOD(ChangingSize) (THIS_
  443. HXxSize sizeOld,
  444. REF(HXxSize) /*IN-OUT*/ sizeNew) PURE;
  445. };
  446. /****************************************************************************
  447.  * 
  448.  *  Interface:
  449.  *
  450.  * IHXSiteUserSupplier
  451.  *
  452.  *  Purpose:
  453.  *
  454.  * Interface implemented by renderers and objects with provide layouts to
  455.  * the client core. This interface is called by the core when it needs a 
  456.  * new IHXSiteUser, or when it is done using an IHXSiteUser.
  457.  *
  458.  *  IID_IHXSiteUserSupplier:
  459.  *
  460.  * {00000D06-0901-11d1-8B06-00A024406D59}
  461.  *
  462.  */
  463. DEFINE_GUID(IID_IHXSiteUserSupplier, 0x00000D06, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  464. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  465. #undef  INTERFACE
  466. #define INTERFACE   IHXSiteUserSupplier
  467. DECLARE_INTERFACE_(IHXSiteUserSupplier, IUnknown)
  468. {
  469.     /*
  470.      * IUnknown methods
  471.      */
  472.     STDMETHOD(QueryInterface) (THIS_
  473. REFIID riid,
  474. void** ppvObj) PURE;
  475.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  476.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  477.     /*
  478.      * IHXSiteUserSupplier methods usually called by the 
  479.      * "context" to ask for additional or to release previously
  480.      * created site users.
  481.      */
  482.     STDMETHOD(CreateSiteUser) (THIS_
  483. REF(IHXSiteUser*)/*OUT*/ pSiteUser) PURE;
  484.     STDMETHOD(DestroySiteUser) (THIS_
  485. IHXSiteUser*   /*IN*/ pSiteUser) PURE;
  486.     STDMETHOD_(BOOL,NeedsWindowedSites) (THIS) PURE;
  487. };
  488. /****************************************************************************
  489.  * 
  490.  *  Interface:
  491.  *
  492.  * IHXSiteSupplier
  493.  *
  494.  *  Purpose:
  495.  *
  496.  * Interface implemented by users of the client core. This interface is
  497.  * called by the core when it needs a new IHXSite, or when it is done
  498.  * using an IHXSite.
  499.  *
  500.  *  IID_IHXSiteSupplier:
  501.  *
  502.  * {00000D07-0901-11d1-8B06-00A024406D59}
  503.  *
  504.  */
  505. DEFINE_GUID(IID_IHXSiteSupplier, 0x00000D07, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  506. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  507. #undef  INTERFACE
  508. #define INTERFACE   IHXSiteSupplier
  509. DECLARE_INTERFACE_(IHXSiteSupplier, IUnknown)
  510. {
  511.     /*
  512.      * IUnknown methods
  513.      */
  514.     STDMETHOD(QueryInterface) (THIS_
  515. REFIID riid,
  516. void** ppvObj) PURE;
  517.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  518.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  519.     /*
  520.      * IHXSiteSupplier methods
  521.      */
  522.     /************************************************************************
  523.      * Method:
  524.      *     IHXSiteSupplier::SitesNeeded
  525.      * Purpose:
  526.      *   Called to inform the site supplier that a site with a particular
  527.      *   set of characteristics is needed. If the site supplier can 
  528.      *   fulfill the request it should call the site manager and add one
  529.      *   or more new sites.
  530.      *    Note that the request for sites is associated with a Request ID
  531.      *    the client core will inform the site supplier when this requested
  532.      *    site is no longer needed.
  533.      */
  534.     STDMETHOD(SitesNeeded) (THIS_
  535. UINT32 uReqestID,
  536. IHXValues* pSiteProps) PURE;
  537.     /************************************************************************
  538.      *  Method:
  539.      *    IHXSiteSupplier::SitesNotNeeded
  540.      *  Purpose:
  541.      *    Called to inform the site supplier that all sites from a previos
  542.      *   site request are no longer needed. If the site supplier had 
  543.      *   previously created non-persistant sites (like popup windows)
  544.      *    to fulfill a request for sites it should call the site manager 
  545.      *    and remove those sites.
  546.      */
  547.     STDMETHOD(SitesNotNeeded) (THIS_
  548. UINT32 uReqestID) PURE;
  549.     /************************************************************************
  550.      *  Method:
  551.      *    IHXSiteSupplier::BeginChangeLayout
  552.      *  Purpose:
  553.      *    Called to inform the site supplier a layout change has beginning
  554.      *   it can expect to recieve SitesNeeded() and SitesNotNeeded() calls
  555.      *   while a layout change is in progress,
  556.      */
  557.     STDMETHOD(BeginChangeLayout) (THIS) PURE;
  558.     /************************************************************************
  559.      *  Method:
  560.      *    IHXSiteSupplier::DoneChangeLayout
  561.      *  Purpose:
  562.      *    Called to inform the site supplier the layout change has been
  563.      *   completed.
  564.      */
  565.     STDMETHOD(DoneChangeLayout) (THIS) PURE;
  566. };
  567. /****************************************************************************
  568.  * 
  569.  *  Interface:
  570.  *
  571.  * IHXSiteManager
  572.  *
  573.  *  Purpose:
  574.  *
  575.  * Interface implemented by the client core. This interface is called
  576.  * by users of the client core to inform it of IHXSite's which are
  577.  * available for layout of renderers
  578.  *
  579.  *  IID_IHXSiteManager:
  580.  *
  581.  * {00000D08-0901-11d1-8B06-00A024406D59}
  582.  *
  583.  */
  584. DEFINE_GUID(IID_IHXSiteManager, 0x00000D08, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  585. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  586. #undef  INTERFACE
  587. #define INTERFACE   IHXSiteManager
  588. DECLARE_INTERFACE_(IHXSiteManager, IUnknown)
  589. {
  590.     /*
  591.      * IUnknown methods
  592.      */
  593.     STDMETHOD(QueryInterface) (THIS_
  594. REFIID riid,
  595. void** ppvObj) PURE;
  596.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  597.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  598.     /*
  599.      * IHXSiteManager methods
  600.      */
  601.     /************************************************************************
  602.      * Method:
  603.      *     IHXSiteManager::AddSite
  604.      * Purpose:
  605.      *   Called to inform the site manager of the existance of a site.
  606.      */
  607.     STDMETHOD(AddSite) (THIS_
  608. IHXSite* pSite) PURE;
  609.     /************************************************************************
  610.      * Method:
  611.      *     IHXSiteManager::RemoveSite
  612.      * Purpose:
  613.      *   Called to inform the site manager that a site is no longer 
  614.      *   available.
  615.      */
  616.     STDMETHOD(RemoveSite) (THIS_
  617. IHXSite* pSite) PURE;
  618. };
  619. // $Private:
  620. /****************************************************************************
  621.  * 
  622.  *  Interface:
  623.  *
  624.  * IHXSiteManager2
  625.  *
  626.  *  Purpose:
  627.  *
  628.  * Interface implemented by the client core. This interface is called
  629.  * by users of the client core to iterate over the sites known by this
  630.  * site manager.
  631.  *
  632.  *  IID_IHXSiteManager:
  633.  *
  634.  * {00000D20-0901-11d1-8B06-00A024406D59}
  635.  *
  636.  */
  637. DEFINE_GUID(IID_IHXSiteManager2, 0x00000D20, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  638. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  639. #undef  INTERFACE
  640. #define INTERFACE   IHXSiteManager2
  641. DECLARE_INTERFACE_(IHXSiteManager2, IUnknown)
  642. {
  643.     /*
  644.      * IHXSiteManager2 methods
  645.      */
  646.     /************************************************************************
  647.      * Method:
  648.      *     IHXSiteManager2::GetNumberOfSites
  649.      * Purpose:
  650.      *   Called to get the number of sites that the site mananger currently 
  651.      *    knows about.
  652.      */
  653.     STDMETHOD(GetNumberOfSites) (THIS_  REF(UINT32) nNumSites ) PURE;
  654.     /************************************************************************
  655.      * Method:
  656.      *     IHXSiteManager2::GetSiteAt
  657.      * Purpose:
  658.      *   Used to iterate over the sites.
  659.      *   
  660.      */
  661.     STDMETHOD(GetSiteAt) (THIS_ UINT32 nIndex, REF(IHXSite*) pSite) PURE;
  662. };
  663. // $EndPrivate.
  664. /****************************************************************************
  665.  * 
  666.  *  Interface:
  667.  *
  668.  * IHXMultiInstanceSiteUserSupplier
  669.  *
  670.  *  Purpose:
  671.  *
  672.  * This is the interface for a special default object which is available
  673.  * from the common class factory. This object will act as a site user 
  674.  * supplier for any renderer (or other site user object) that wants
  675.  * default support for multiple instances. The site user must work as
  676.  * a windowless site for this default implementation to work. The 
  677.  * default object also implements the IHXSite interfave to allow
  678.  * the site user object to control all the sites through a single 
  679.  * interface instance.
  680.  *
  681.  *  IID_IHXMultiInstanceSiteUserSupplier:
  682.  *
  683.  * {00000D09-0901-11d1-8B06-00A024406D59}
  684.  *
  685.  */
  686. DEFINE_GUID(IID_IHXMultiInstanceSiteUserSupplier, 0x00000D09, 0x901, 
  687.             0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  688. #define CLSID_IHXMultiInstanceSiteUserSupplier
  689. IID_IHXMultiInstanceSiteUserSupplier
  690. #undef  INTERFACE
  691. #define INTERFACE   IHXMultiInstanceSiteUserSupplier
  692. DECLARE_INTERFACE_(IHXMultiInstanceSiteUserSupplier, IUnknown)
  693. {
  694.     /*
  695.      * IUnknown methods
  696.      */
  697.     STDMETHOD(QueryInterface) (THIS_
  698. REFIID riid,
  699. void** ppvObj) PURE;
  700.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  701.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  702.     /*
  703.      * IHXMultiInstanceSiteUserSupplier methods called by site users.
  704.      */
  705.     STDMETHOD(SetSingleSiteUser) (THIS_ 
  706. IUnknown* pUnknown) PURE;
  707.     STDMETHOD(ReleaseSingleSiteUser) (THIS) PURE;
  708. };
  709. /****************************************************************************
  710.  * 
  711.  *  Interface:
  712.  *
  713.  * IHXSiteEnumerator
  714.  *
  715.  *  Purpose:
  716.  *
  717.  *      Provides an interface to enumerate sites.  Currently implemented 
  718.  *      in the IHXMultiInstanceSiteUserSupplier supplied by the core player,
  719.  *      it can be used to render to MISUS sites outside of an HX_SURFACE_UPDATE;
  720.  *      this is especially useful when using IHXVideoSurface2.
  721.  *
  722.  *  IID_IHXSiteEnumerator:
  723.  *
  724.  * {67f8c5bd-4b1d-4c09-8fb7-8ac7c20d29c7}
  725.  *
  726.  */
  727. DEFINE_GUID(IID_IHXSiteEnumerator, 0x67f8c5bd, 0x4b1d,  
  728.             0x4c09, 0x8f, 0xb7, 0x8a, 0xc7, 0xc2, 0x0d, 0x29, 0xc7);
  729. #undef  INTERFACE
  730. #define INTERFACE   IHXSiteEnumerator
  731. DECLARE_INTERFACE_(IHXSiteEnumerator, IUnknown)
  732. {
  733.     /*
  734.      * IUnknown methods
  735.      */
  736.     STDMETHOD(QueryInterface) (THIS_
  737. REFIID riid,
  738. void** ppvObj) PURE;
  739.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  740.     typedef void* SitePosition;
  741.     /*
  742.      * HXSiteEnumerator methods
  743.      */
  744.     /************************************************************************
  745.      * Method:
  746.      *     HXSiteEnumerator::GetFirstSite
  747.      * Purpose:
  748.      *     Retrieves both the first site in the enumeration and initializes 
  749.      *      sitePosition with the position of the next site (if any).  
  750.      *      Returns HXR_OK if the first site is available, HXR_FAIL if not.
  751.      */
  752.     STDMETHOD(GetFirstSite) (THIS_
  753.                              REF(IHXSite*) /* OUT */ pFirstSite,
  754.                              REF(SitePosition) /* OUT */ nextPosition) PURE;
  755.     /************************************************************************
  756.      * Method:
  757.      *     HXSiteEnumerator::GetNextSite
  758.      * Purpose:
  759.      *     Retrieves both the next site in the enumeration (as specified by
  760.      *      nextSite) and initializes sitePosition with the position of the 
  761.      *      following site (if any).  
  762.      *      Returns HXR_OK if the first site is available, HXR_FAIL if not.
  763.      */
  764.     STDMETHOD(GetNextSite)  (THIS_
  765.                              REF(IHXSite*) pNextSite,
  766.                              REF(SitePosition) /* IN/OUT */ nextPosition) PURE;
  767. };
  768. /****************************************************************************
  769.  * 
  770.  *  Interface:
  771.  * IHXSiteFullScreen
  772.  *
  773.  *  Purpose:
  774.  *
  775.  * This is the interface for turning on/off the full screen mode
  776.  *
  777.  *  IID_IHXSiteFullScreen:
  778.  *
  779.  * {00000D0B-0901-11d1-8B06-00A024406D59}
  780.  *
  781.  */
  782. DEFINE_GUID(IID_IHXSiteFullScreen, 0x00000D0B, 0x901, 
  783.             0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  784. #undef  INTERFACE
  785. #define INTERFACE   IHXSiteFullScreen
  786. DECLARE_INTERFACE_(IHXSiteFullScreen, IUnknown)
  787. {
  788.     /*
  789.      * IUnknown methods
  790.      */
  791.     STDMETHOD(QueryInterface) (THIS_
  792. REFIID riid,
  793. void** ppvObj) PURE;
  794.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  795.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  796.     /*
  797.      * IHXSiteFullScreen methods
  798.      */
  799.     STDMETHOD(EnterFullScreen) (THIS) PURE;
  800.     STDMETHOD(ExitFullScreen) (THIS) PURE;
  801.     STDMETHOD(TestFullScreen) (THIS_
  802. void* hTestBitmap,const char* pszStatusText) PURE;
  803.     STDMETHOD_(BOOL, IsFullScreen) (THIS) PURE;
  804. };
  805. // $Private:
  806. /****************************************************************************
  807.  * 
  808.  *  Interface:
  809.  * IHXLayoutSiteGroupManager
  810.  *
  811.  *  Purpose:
  812.  *
  813.  * Allow layout site groups to be added and removed
  814.  *
  815.  *  IID_IHXLayoutSiteGroupManager:
  816.  *
  817.  * {00000D0C-0901-11d1-8B06-00A024406D59}
  818.  *
  819.  */
  820. DEFINE_GUID(IID_IHXLayoutSiteGroupManager, 0x00000D0C, 0x901, 
  821.             0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  822. #undef  INTERFACE
  823. #define INTERFACE   IHXLayoutSiteGroupManager
  824. DECLARE_INTERFACE_(IHXLayoutSiteGroupManager, IUnknown)
  825. {
  826.     /*
  827.      * IUnknown methods
  828.      */
  829.     STDMETHOD(QueryInterface) (THIS_
  830. REFIID riid,
  831. void** ppvObj) PURE;
  832.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  833.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  834.     /*
  835.      * IHXLayoutSiteGroupManager methods
  836.      */
  837.     STDMETHOD(AddLayoutSiteGroup) (THIS_
  838. IUnknown* pLSG) PURE;
  839.     STDMETHOD(RemoveLayoutSiteGroup) (THIS_
  840. IUnknown* pLSG) PURE;
  841. };
  842. // $EndPrivate.
  843. /****************************************************************************
  844.  * 
  845.  *  Interface:
  846.  * IHXEventHookMgr
  847.  *
  848.  *  Purpose:
  849.  *
  850.  * Add ability to hook events from a named region
  851.  *
  852.  *  IID_IHXEventHookMgr:
  853.  *
  854.  * {00000D0D-0901-11d1-8B06-00A024406D59}
  855.  *
  856.  */
  857. DEFINE_GUID(IID_IHXEventHookMgr, 0x00000D0D, 0x901, 
  858.             0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  859. #undef  INTERFACE
  860. #define INTERFACE   IHXEventHookMgr
  861. DECLARE_INTERFACE_(IHXEventHookMgr, IUnknown)
  862. {
  863.     /*
  864.      * IUnknown methods
  865.      */
  866.     STDMETHOD(QueryInterface) (THIS_
  867. REFIID riid,
  868. void** ppvObj) PURE;
  869.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  870.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  871.     /*
  872.      * IHXEventHookMgr methods
  873.      */
  874.     STDMETHOD(AddHook) (THIS_
  875. IHXEventHook* pHook,
  876. const char* pRegionName,
  877. UINT16 uLayer) PURE;
  878.     STDMETHOD(RemoveHook) (THIS_
  879.      IHXEventHook* pHook,
  880. const char* pRegionName,
  881. UINT16 uLayer) PURE;
  882. };
  883. /****************************************************************************
  884.  * 
  885.  *  Interface:
  886.  * IHXEventHook
  887.  *
  888.  *  Purpose:
  889.  *
  890.  * Object that gets hooked events sent by IHXEventHookMgr
  891.  *
  892.  *  IID_IHXEventHookMgr:
  893.  *
  894.  * {00000D0E-0901-11d1-8B06-00A024406D59}
  895.  *
  896.  */
  897. DEFINE_GUID(IID_IHXEventHook, 0x00000D0E, 0x901, 
  898.             0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  899. #undef  INTERFACE
  900. #define INTERFACE   IHXEventHook
  901. DECLARE_INTERFACE_(IHXEventHook, IUnknown)
  902. {
  903.     /*
  904.      * IUnknown methods
  905.      */
  906.     STDMETHOD(QueryInterface) (THIS_
  907. REFIID riid,
  908. void** ppvObj) PURE;
  909.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  910.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  911.     /*
  912.      * IHXEventHook methods
  913.      */
  914.     STDMETHOD(SiteAdded) (THIS_
  915. IHXSite* pSite) PURE;
  916.     STDMETHOD(HandleEvent) (THIS_
  917.      IHXSite* pSite,
  918. HXxEvent* pEvent) PURE;
  919.     STDMETHOD(SiteRemoved) (THIS_
  920.      IHXSite* pSite) PURE;
  921. };
  922. /****************************************************************************
  923.  * 
  924.  *  Interface:
  925.  * IHXStatusMessage
  926.  *
  927.  *  Purpose:
  928.  *
  929.  * This is the interface for setting the status text. 
  930.  *
  931.  *  IID_IHXStatusMessage:
  932.  *
  933.  * {00000D10-0901-11d1-8B06-00A024406D59}
  934.  *
  935.  */
  936. DEFINE_GUID(IID_IHXStatusMessage, 0x00000D10, 0x901, 
  937.             0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  938. #undef  INTERFACE
  939. #define INTERFACE   IHXStatusMessage
  940. DECLARE_INTERFACE_(IHXStatusMessage, IUnknown)
  941. {
  942.     /*
  943.      * IUnknown methods
  944.      */
  945.     STDMETHOD(QueryInterface) (THIS_
  946. REFIID riid,
  947. void** ppvObj) PURE;
  948.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  949.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  950.     /*
  951.      * IHXStatusMessage methods
  952.      */
  953.     STDMETHOD(SetStatus) (THIS_ const char* pText) PURE;
  954. };
  955. // $Private:
  956. /****************************************************************************
  957.  * 
  958.  *  Interface:
  959.  *
  960.  * IHXSiteTransition
  961.  *
  962.  *  Purpose:
  963.  *
  964.  * Interface for transitioning between IHXSites.
  965.  *
  966.  *  IID_IHXSiteTransition:
  967.  *
  968.  * {00000D01-0901-11d1-8B06-00A024406D59}
  969.  *
  970.  */
  971. DEFINE_GUID(IID_IHXSiteTransition, 0x00000D13, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  972. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  973. #define CLSID_IHXSiteTransition IID_IHXSiteTransition
  974. #undef  INTERFACE
  975. #define INTERFACE   IHXSiteTransition
  976. DECLARE_INTERFACE_(IHXSiteTransition, IUnknown)
  977. {
  978.     /*
  979.      * IUnknown methods
  980.      */
  981.     STDMETHOD(QueryInterface) (THIS_
  982. REFIID riid,
  983. void** ppvObj) PURE;
  984.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  985.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  986.     STDMETHOD(Initialize) (THIS_
  987. IHXValues* pParams) PURE;
  988.     STDMETHOD(SetPercentage) (THIS_
  989. UINT32 nThousandnthsComplete) PURE;
  990. };
  991. /****************************************************************************
  992.  *
  993.  *  Interface:
  994.  *
  995.  *  IHXRegion
  996.  *
  997.  *  Purpose:
  998.  *
  999.  *  Iterface for managing HXRegions.
  1000.  *
  1001.  *  IHXRegion:
  1002.  *
  1003.  *  {00002200-0903-11d1-8B06-00A024406D59}
  1004.  *
  1005.  */
  1006. DEFINE_GUID(IID_IHXRegion, 0x00000D14, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  1007. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  1008. #define CLSID_IHXRegion IID_IHXRegion
  1009. #undef  INTERFACE
  1010. #define INTERFACE   IHXRegion
  1011. DECLARE_INTERFACE_(IHXRegion, IUnknown)
  1012. {
  1013.     /************************************************************************
  1014.      * Method:
  1015.      *     IHXRegion::SetRect
  1016.      * Purpose:
  1017.      *     This function creates a rectangular region.
  1018.      *
  1019.      */
  1020.     STDMETHOD(SetRect)      (THIS_ HXxRect*    pRect) PURE;
  1021.     /************************************************************************
  1022.      * Method:
  1023.      *     IHXRegion::SetRect
  1024.      * Purpose:
  1025.      *     This function creates a rectangular region.
  1026.      *
  1027.      */
  1028.     STDMETHOD(SetRect)      (THIS_ int x, int y, int x1, int y1) PURE;
  1029.     /************************************************************************
  1030.      * Method:
  1031.      *     IHXRegion::SetPoly
  1032.      * Purpose:
  1033.      *     This function creates a region defined by an arbitary polygon.
  1034.      *
  1035.      */
  1036.     STDMETHOD(SetPoly)      (THIS_ HXxPoint**  pRect, BOOL bUseWinding) PURE;
  1037.     /************************************************************************
  1038.      * Method:
  1039.      *     IHXRegion::IsEqual
  1040.      * Purpose:
  1041.      *     This function determines if two regions are equal.
  1042.      *
  1043.      */
  1044.     STDMETHOD_(BOOL,IsEqual)      (THIS_ IHXRegion* pRegion) PURE;
  1045.     /************************************************************************
  1046.      * Method:
  1047.      *     IHXRegion::GetExtents
  1048.      * Purpose:
  1049.      *     This function allows the user to determine the extents of the region
  1050.      *
  1051.      */
  1052.     STDMETHOD(GetExtents)      (THIS_ REF(HXxRect) rExtents) PURE;
  1053.     /************************************************************************
  1054.      * Method:
  1055.      *     IHXRegion::Offset
  1056.      * Purpose:
  1057.      *     This function offsets the region by the spectified origin
  1058.      *
  1059.      */
  1060.     STDMETHOD(Offset)      (THIS_ HXxPoint* pOrigin) PURE;
  1061.     /************************************************************************
  1062.      * Method:
  1063.      *     IHXRegion::PointHitTest
  1064.      * Purpose:
  1065.      *     This function returns if TRUE if the specified point is in the region
  1066.      *
  1067.      */
  1068.     STDMETHOD_(BOOL,PointHitTest)      (THIS_ HXxPoint* pPoint) PURE;
  1069.     /************************************************************************
  1070.      * Method:
  1071.      *     IHXRegion::RectHitTest
  1072.      * Purpose:
  1073.      * This function returns 
  1074.      *     HX_CONTAINED if the rect is fully contained within the region
  1075.      *     HX_PART if part of the rect is within the region
  1076.      *     HX_OUT if no part of the rect is within the region
  1077.      *
  1078.      */
  1079.     STDMETHOD_(INT32,RectHitTest)      (THIS_ HXxRect* pRect) PURE;
  1080.     /************************************************************************
  1081.      * Method:
  1082.      *     IHXRegion::GetNumRects
  1083.      * Purpose:
  1084.      *     This function gets the number of rects which describe the 
  1085.      *     region
  1086.      *
  1087.      */
  1088.     STDMETHOD_(UINT32, GetNumRects)      (THIS) PURE;
  1089.     /************************************************************************
  1090.      * Method:
  1091.      *     IHXRegion::GetRectAtIndex
  1092.      * Purpose:
  1093.      *     This function gets the RECT at index nRectIndex
  1094.      *
  1095.      */
  1096.     STDMETHOD(GetRectAtIndex)      (THIS_ UINT32 nRectIndex, REF(HXxRect) rRect) PURE;
  1097.     /************************************************************************
  1098.      * Method:
  1099.      *     IHXRegion::UnionRegion
  1100.      * Purpose:
  1101.      * Union Region -- this operator like all of the operators will create an IHXRegion 
  1102.      * if pDest is NULL.
  1103.      *
  1104.      */
  1105.     STDMETHOD(UnionRegion)      (THIS_ REF(IHXRegion*) pDest, IHXRegion* pSrc1) PURE;
  1106.     /************************************************************************
  1107.      * Method:
  1108.      *     IHXRegion::GetRectAtIndex
  1109.      * Purpose:
  1110.      *     Copy Region
  1111.      *
  1112.      */
  1113.     STDMETHOD(CopyRegion)      (THIS_ REF(IHXRegion*) pDest) PURE;
  1114.     /************************************************************************
  1115.      * Method:
  1116.      *     IHXRegion::GetRectAtIndex
  1117.      * Purpose:
  1118.      *     Diff Region
  1119.      *
  1120.      */
  1121.     STDMETHOD(DiffRegion)      (THIS_ REF(IHXRegion*) pDest, IHXRegion* pSrc1) PURE;
  1122.     /************************************************************************
  1123.      * Method:
  1124.      *     IHXRegion::GetRectAtIndex
  1125.      * Purpose:
  1126.      *     And Region
  1127.      *
  1128.      */
  1129.     STDMETHOD(AndRegion)      (THIS_ REF(IHXRegion*) pDest, IHXRegion* pSrc1) PURE;
  1130.     /************************************************************************
  1131.      * Method:
  1132.      *     IHXRegion::GetRectAtIndex
  1133.      * Purpose:
  1134.      *     XOR Region
  1135.      *
  1136.      */
  1137.     STDMETHOD(XORRegion)      (THIS_ REF(IHXRegion*) pDest, IHXRegion* pSrc1) PURE;
  1138.     /************************************************************************
  1139.      * Method:
  1140.      *     IHXRegion::GetRegion
  1141.      * Purpose:
  1142.      *     Bad hack for the moment to obtain the REGION pointer of an HXRegion.
  1143.      *     Will have to remove this later.
  1144.      *
  1145.      */
  1146.     STDMETHOD_(void*, GetRegion)      (THIS) PURE;
  1147. };
  1148. /****************************************************************************
  1149.  *
  1150.  *  Interface:
  1151.  *
  1152.  *  IHXColorConverterManager
  1153.  *
  1154.  *  Purpose:
  1155.  *
  1156.  *  Interface for obtaining IHXColorConverters
  1157.  *
  1158.  *  IHXColorConverterManager:
  1159.  *
  1160.  *  {00000D15-0902-11d1-8B06-00A024406D59}
  1161.  *
  1162.  */
  1163. DEFINE_GUID(IID_IHXColorConverterManager, 0x00000D15, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  1164. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  1165. #undef  INTERFACE
  1166. #define INTERFACE   IHXColorConverterManager
  1167. DECLARE_INTERFACE_(IHXColorConverterManager, IUnknown)
  1168. {
  1169.     /*
  1170.      * Get ColorConverter is called to obtain a color converter to convert 
  1171.      * from a particular bitmap to another bitmap.
  1172.      */
  1173.     STDMETHOD(GetColorConverter)      (THIS_
  1174.                 HXBitmapInfoHeader*    /*IN*/  pBitmapInfoIn,
  1175.                 HXBitmapInfoHeader*    /*IN*/  pBitmapInfoOut,
  1176. REF(IHXColorConverter*) /*OUT*/ pConverter) PURE;
  1177. };
  1178. /****************************************************************************
  1179.  *
  1180.  *  Interface:
  1181.  *
  1182.  *  IHXColorConverter
  1183.  *
  1184.  *  Purpose:
  1185.  *
  1186.  *  Interface for converting between two bitmaps of different color formats.
  1187.  *
  1188.  *  IHXColorConverterManager:
  1189.  *
  1190.  *  {00000D16-0902-11d1-8B06-00A024406D59}
  1191.  *
  1192.  */
  1193. DEFINE_GUID(IID_IHXColorConverter, 0x00000D16, 0x903, 0x11d1, 0x8b,
  1194.     0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  1195. #undef  INTERFACE
  1196. #define INTERFACE   IHXColorConverter
  1197. DECLARE_INTERFACE_(IHXColorConverter, IUnknown)
  1198. {
  1199.     /*
  1200.      * ColorConvert converts the pBitsIn from one color format to 
  1201.      * the format of pBitsOut
  1202.      */
  1203.     STDMETHOD(ColorConvert)      (THIS_
  1204.                 UCHAR*     pBitsIn,
  1205.                 UCHAR*     pBitsOut,
  1206. HXxRect*    pRectIn,
  1207. HXxRect*    pRectOut
  1208.                 ) PURE;
  1209. };
  1210. /****************************************************************************
  1211.  *
  1212.  *  Interface:
  1213.  *
  1214.  *  IHXOverlayResponse
  1215.  *
  1216.  *  Purpose:
  1217.  *
  1218.  *  Interface for reporting/computing the current statistics relevant to 
  1219.  *  Video Presentations.
  1220.  *
  1221.  *  IHXOverlayResponse:
  1222.  *
  1223.  *  {00000D22-0902-11d1-8B06-00A024406D59}
  1224.  *
  1225.  */
  1226. DEFINE_GUID(IID_IHXOverlayResponse, 0x00000D22, 0x903, 0x11d1, 0x8b,
  1227.     0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  1228. #undef  INTERFACE
  1229. #define INTERFACE   IHXOverlayResponse
  1230. DECLARE_INTERFACE_(IHXOverlayResponse, IUnknown)
  1231. {
  1232.     STDMETHOD(OverlayGranted)      (THIS ) PURE;
  1233.     STDMETHOD(OverlayRevoked)      (THIS ) PURE;
  1234. };
  1235. /****************************************************************************
  1236.  *
  1237.  *  Interface:
  1238.  *
  1239.  *  IHXOverlayManager
  1240.  *
  1241.  *  Purpose:
  1242.  *
  1243.  *  Interface for reporting/computing the current statistics relevant to 
  1244.  *  Video Presentations.
  1245.  *
  1246.  *  IHXOverlayManager:
  1247.  *
  1248.  *  {00000D21-0902-11d1-8B06-00A024406D59}
  1249.  *
  1250.  */
  1251. DEFINE_GUID(IID_IHXOverlayManager, 0x00000D21, 0x903, 0x11d1, 0x8b,
  1252.     0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  1253. #undef  INTERFACE
  1254. #define INTERFACE   IHXOverlayManager
  1255. DECLARE_INTERFACE_(IHXOverlayManager, IUnknown)
  1256. {
  1257.     STDMETHOD(HasOverlay)      (THIS_
  1258.                     IHXOverlayResponse* pResp
  1259.                     ) PURE;
  1260.     
  1261.     STDMETHOD(AddStats)      (THIS_
  1262.                     IHXOverlayResponse* pResp,
  1263.                     UINT32    ulNumPixels
  1264.                     ) PURE;
  1265.     
  1266.     STDMETHOD(RemoveOverlayRequest)(THIS_ IHXOverlayResponse* pResp ) PURE;
  1267. };
  1268. // $EndPrivate.
  1269. /****************************************************************************
  1270.  *
  1271.  *  Interface:
  1272.  *
  1273.  *  IHXKeyBoardFocus
  1274.  *
  1275.  *  Purpose:
  1276.  *
  1277.  *  Interface for setting/getting the keyboard focus for a particular siteuser
  1278.  *
  1279.  *  IHXKeyBoardFocus:
  1280.  *
  1281.  *  {00000D23-0902-11d1-8B06-00A024406D59}
  1282.  *
  1283.  */
  1284. DEFINE_GUID(IID_IHXKeyBoardFocus, 0x00000D23, 0x903, 0x11d1, 0x8b,
  1285.     0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  1286. #undef  INTERFACE
  1287. #define INTERFACE   IHXKeyBoardFocus
  1288. DECLARE_INTERFACE_(IHXKeyBoardFocus, IUnknown)
  1289. {
  1290.     STDMETHOD(SetKeyboardFocus)(THIS_ IHXSiteUser* pSiteUser ) PURE;
  1291.     STDMETHOD(GetKeyboardFocus)(THIS_ IHXSiteUser* &pSiteUser ) PURE;
  1292. };
  1293. /****************************************************************************
  1294.  *
  1295.  *  Interface:
  1296.  *
  1297.  *  IHXDrawFocus
  1298.  *
  1299.  *  Purpose:
  1300.  *
  1301.  *  Interface for displaying the site that has the keyboard focus
  1302.  *
  1303.  *  IHXDrawFocus:
  1304.  *
  1305.  *  {00000D24-0902-11d1-8B06-00A024406D59}
  1306.  *
  1307.  */
  1308. DEFINE_GUID(IID_IHXDrawFocus, 0x00000D24, 0x903, 0x11d1, 0x8b,
  1309.     0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  1310. #undef  INTERFACE
  1311. #define INTERFACE   IHXDrawFocus
  1312. DECLARE_INTERFACE_(IHXDrawFocus, IUnknown)
  1313. {
  1314.     /************************************************************************
  1315.      *  Method:
  1316.      *          IHXDrawFocus::SetStyle
  1317.      *  Purpose:
  1318.      *          Ask the site to set the focus style.
  1319.      *
  1320.      *  Syles:
  1321.      *          ULONG32 Properties:
  1322.      *
  1323.      *          LINE_STYLE = HX_SOLID_LINE, HX_DASHED_LINE, HX_DOTTED_LINE,
  1324.      *                       HX_CUSTOM_LINE
  1325.      *          LINE_WIDTH = Width of the line in pixels
  1326.      *          RED = 0-255 color of the primary pixel
  1327.      *          GREEN = 0-255 color of the primary pixel
  1328.      *          BLUE = 0-255 color of the primary pixel
  1329.      *          RED_OFF = 0-255 color of the secondary pixel
  1330.      *          GREEN_OFF = 0-255 color of the secondary pixel
  1331.      *          BLUE_OFF = 0-255 color of the secondary pixel
  1332.      *          CUSTOM_LINE_ENTRIES number of ULONG32s in CUSTOM_LINE_PATTERN
  1333.      *
  1334.      *          IHXBuffer Properties:
  1335.      *
  1336.      *          CUSTOM_LINE_PATTERN list of ULONG32s describing the number
  1337.      *           of primary and secondary pixels (eq 4241 = "----..----." where
  1338.      *           - is a primary pixel and . is a secondary pixel) and
  1339.      *           CUSTOM_LINE_ENTRIES equals 4.  Secondary pixels are not
  1340.      *           drawn if RED_OFF, GREEN_OFF, and BLUE_OFF are not set.
  1341.      */
  1342.     STDMETHOD(SetStyle) (THIS_ IHXValues* pProperties) PURE;
  1343.     /************************************************************************
  1344.      *  Method:
  1345.      *          IHXDrawFocus::ClearFocus
  1346.      *  Purpose:
  1347.      *          Ask the site to clear the current focus drawing.
  1348.      */
  1349.     STDMETHOD(ClearFocus)(THIS) PURE;
  1350.     /************************************************************************
  1351.      *  Method:
  1352.      *          IHXDrawFocus::SetFocusPolygon
  1353.      *  Purpose:
  1354.      *          Ask the site to draw polygon around focus
  1355.      */
  1356.     STDMETHOD(SetFocusPolygon)(THIS_  HXxPoint* pPoints, ULONG32 numPoints) PURE;
  1357.     /************************************************************************
  1358.      *  Method:
  1359.      *          IHXDrawFocus::SetFocusRect
  1360.      *  Purpose:
  1361.      *          Ask the site to draw rectangle around focus
  1362.      */
  1363.     STDMETHOD(SetFocusRect) (THIS_ HXxRect* pRect) PURE;
  1364.     /************************************************************************
  1365.      *  Method:
  1366.      *          IHXDrawFocus::SetFocusEllipse
  1367.      *  Purpose:
  1368.      *          Ask the site to draw ellipse around focus
  1369.      */
  1370.     STDMETHOD(SetFocusEllipse) (THIS_ HXxRect* pRect) PURE;
  1371. };
  1372. // $Private:
  1373. /****************************************************************************
  1374.  *
  1375.  *  Interface:
  1376.  *
  1377.  *  IHXSubRectSite
  1378.  *
  1379.  *  Purpose:
  1380.  *
  1381.  *  Interface to determine if a site support sub rect BLT'ing via
  1382.  *  the HX_SURFACE_UPDATE2 message. If the site does support sub
  1383.  *  rect BLT'ing you can tell the site to send you the
  1384.  *  HX_SURFACE_UPDATE2 messages via this interface.
  1385.  *
  1386.  *  IHXSubRectSite:
  1387.  *
  1388.  *  {00000D25-0902-11d1-8B06-00A024406D59}
  1389.  *
  1390.  */
  1391. DEFINE_GUID(IID_IHXSubRectSite, 0x00000D25, 0x903, 0x11d1, 0x8b,
  1392.     0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  1393. #undef  INTERFACE
  1394. #define INTERFACE   IHXSubRectSite
  1395. DECLARE_INTERFACE_(IHXSubRectSite, IHXSite)
  1396. {
  1397.     /*
  1398.      * Tells the site to send/not-send HX_SURFACE_UPDATE2 messages.
  1399.      * These messages contain actuall dirty rects so that the renderer
  1400.      * does not need to BLT the entire frame.
  1401.      */
  1402.     STDMETHOD(SendSubRectMessages) (THIS_ BOOL bRet ) PURE;
  1403.     /*
  1404.      * New damage region call that takes the cross platfrom region
  1405.      * defined in hxwintyp.h and invalidates the rects in it
  1406.      */
  1407.     STDMETHOD(SubRectDamageRegion) (THIS_ HXxBoxRegion* pRegion ) PURE;
  1408.     /*
  1409.      * Method to get the new video surface that comes with the sub
  1410.      * rect BLT'ing support.
  1411.      */
  1412.     STDMETHOD(GetSubRectVideoSurface) (THIS_ 
  1413.                                        REF(IHXSubRectVideoSurface*) pSurface
  1414.                                        ) PURE;
  1415. };
  1416. // $EndPrivate.
  1417. /****************************************************************************
  1418.  *
  1419.  *  Interface:
  1420.  *
  1421.  *  IHXFocusNavigation
  1422.  *
  1423.  *  Purpose:
  1424.  *
  1425.  *  Interface for navigating between and within keyboard focus sites
  1426.  *
  1427.  *  IHXFocusNavigation:
  1428.  *
  1429.  *  {B42B7677-F605-438e-9002-E2AAB7784B43}
  1430.  *
  1431.  */
  1432. DEFINE_GUID(IID_IHXFocusNavigation, 0xb42b7677, 0xf605, 0x438e, 0x90,
  1433.             0x2, 0xe2, 0xaa, 0xb7, 0x78, 0x4b, 0x43);
  1434. #undef  INTERFACE
  1435. #define INTERFACE   IHXFocusNavigation
  1436. DECLARE_INTERFACE_(IHXFocusNavigation, IUnknown)
  1437. {
  1438.     /************************************************************************
  1439.      *  Method:
  1440.      *          IHXFocusNavigation::SetFocus
  1441.      *  Purpose:
  1442.      *          Ask the renderer to set the focus to the given item.
  1443.      */
  1444.     STDMETHOD(SetFocus) (THIS_ HXFocusContext eFocus) PURE;
  1445.     /************************************************************************
  1446.      *  Method:
  1447.      *          IHXFocusNavigation::ClearFocus
  1448.      *  Purpose:
  1449.      *          Ask the renderer to clear the current focus.
  1450.      */
  1451.     STDMETHOD(ClearFocus) (THIS) PURE;
  1452.     /************************************************************************
  1453.      *  Method:
  1454.      *          IHXFocusNavigation::ActivateFocus
  1455.      *  Purpose:
  1456.      *          Ask the renderer to activate the focused link. Do nothing if 
  1457.      *   there is no focus point.
  1458.      */
  1459.     STDMETHOD(ActivateFocus) (THIS) PURE;
  1460.     /************************************************************************
  1461.      *  Method:
  1462.      *          IHXFocusNavigation::GetFocusState
  1463.      *  Purpose:
  1464.      *          Obtain the current focus state
  1465.      */
  1466.     STDMETHOD_(HXFocusState,GetFocusState) (THIS) PURE;
  1467. };
  1468. #endif /* _HXWIN_H_ */