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

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