You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1704 lines
43 KiB
1704 lines
43 KiB
|
|
/*
|
|
*
|
|
* This software is released under the provisions of the GPL version 2.
|
|
* see file "COPYING". If that file is not available, the full statement
|
|
* of the license can be found at
|
|
*
|
|
* http://www.fsf.org/licensing/licenses/gpl.txt
|
|
*
|
|
* Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
|
|
*
|
|
*/
|
|
|
|
#ifndef _HXWIN_H_
|
|
#define _HXWIN_H_
|
|
|
|
/*
|
|
* Forward declarations of some interfaces defined or used here-in.
|
|
*/
|
|
typedef _INTERFACE IHXSite IHXSite;
|
|
typedef _INTERFACE IHXSiteUser IHXSiteUser;
|
|
typedef _INTERFACE IHXSiteWindowed IHXSiteWindowed;
|
|
typedef _INTERFACE IHXSiteEventHandler IHXSiteEventHandler;
|
|
typedef _INTERFACE IHXSiteWindowless IHXSiteWindowless;
|
|
typedef _INTERFACE IHXSiteWatcher IHXSiteWatcher;
|
|
typedef _INTERFACE IHXValues IHXValues;
|
|
typedef _INTERFACE IHXSiteFullScreen IHXSiteFullScreen;
|
|
typedef _INTERFACE IHXLayoutSiteGroupManager IHXLayoutSiteGroupManager;
|
|
typedef _INTERFACE IHXEventHook IHXEventHook;
|
|
typedef _INTERFACE IHXColorConverter IHXColorConverter;
|
|
typedef _INTERFACE IHXSubRectVideoSurface IHXSubRectVideoSurface;
|
|
|
|
typedef struct _HXBitmapInfoHeader HXBitmapInfoHeader;
|
|
typedef struct _HXxWindow HXxWindow;
|
|
typedef struct _HXxRegion HXxBoxRegion;
|
|
typedef struct _HXxSize HXxSize;
|
|
typedef struct _HXxPoint HXxPoint;
|
|
typedef struct _HXxRect HXxRect;
|
|
typedef void* HXxRegion;
|
|
|
|
|
|
/*
|
|
* Styles for IHXDrawFocus
|
|
*/
|
|
#define HX_SOLID_LINE 1
|
|
#define HX_DASHED_LINE HX_SOLID_LINE<<1
|
|
#define HX_DOTTED_LINE HX_SOLID_LINE<<2
|
|
#define HX_CUSTOM_LINE HX_SOLID_LINE<<3
|
|
|
|
/*
|
|
* Focus Navigation
|
|
*/
|
|
typedef enum _HXFocusContext
|
|
{
|
|
HXFirstFocus,
|
|
HXUpFocus,
|
|
HXDownFocus,
|
|
HXLeftFocus,
|
|
HXRightFocus,
|
|
HXNextFocus,
|
|
HXPrevFocus,
|
|
HXLastFocus
|
|
} HXFocusContext;
|
|
|
|
typedef enum _HXFocusState
|
|
{
|
|
HXNoFocus,
|
|
HXFocused
|
|
} HXFocusState;
|
|
|
|
/****************************************************************************
|
|
*
|
|
* Interface:
|
|
*
|
|
* IHXSiteWindowed
|
|
*
|
|
* Purpose:
|
|
*
|
|
* Interface for IHXSite objects which are associated with platform
|
|
* specific window objects on Microsoft Windows and X-Windows.
|
|
*
|
|
* IID_IHXSiteWindowed:
|
|
*
|
|
* {00000D01-0901-11d1-8B06-00A024406D59}
|
|
*
|
|
*/
|
|
DEFINE_GUID(IID_IHXSiteWindowed, 0x00000D01, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
|
|
0xa0, 0x24, 0x40, 0x6d, 0x59);
|
|
|
|
#define CLSID_IHXSiteWindowed IID_IHXSiteWindowed
|
|
|
|
// $Private:
|
|
DEFINE_GUID(IID_IHXGetImplementation, 0x00000D11, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
|
|
0xa0, 0x24, 0x40, 0x6d, 0x59);
|
|
// $EndPrivate.
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IHXSiteWindowed
|
|
|
|
DECLARE_INTERFACE_(IHXSiteWindowed, IUnknown)
|
|
{
|
|
/*
|
|
* IUnknown methods
|
|
*/
|
|
STDTQT_METHOD(QueryInterface) (THIS_
|
|
REFIID riid,
|
|
void** ppvObj) PURE;
|
|
|
|
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
|
|
|
|
STDMETHOD_(ULONG32,Release) (THIS) PURE;
|
|
|
|
/*
|
|
* IHXSiteWindowed methods called by site suppliers
|
|
* when they want the site associated with a
|
|
* previously created (and externally managed) window.
|
|
* This method will "sub-class" that window (Win32).
|
|
* On Unix, the site supplier must pass events from
|
|
* the externally managed window to the core via
|
|
* IHXClientEngine::EventOccurred(). Please note that
|
|
* The HXxWindow ptr must remain in scope for the life
|
|
* of Site.
|
|
*
|
|
*/
|
|
STDTQT_METHOD(AttachWindow) (THIS_
|
|
HXxWindow* /*IN*/ pWindow) PURE;
|
|
|
|
STDTQT_METHOD(DetachWindow) (THIS) PURE;
|
|
|
|
/*
|
|
* IHXSiteWindowed methods called by Owners of the site
|
|
* in the event that want a default top level window created
|
|
* for the site.
|
|
*/
|
|
STDTQT_METHOD(Create) (THIS_
|
|
void* ParentWindow,
|
|
UINT32 style) PURE;
|
|
|
|
STDTQT_METHOD(Destroy) (THIS) PURE;
|
|
|
|
/*
|
|
* IHXSiteWindowed method. Returns actual window of the site.
|
|
*/
|
|
STDMETHOD_(HXxWindow*,GetWindow)(THIS) PURE;
|
|
};
|
|
|
|
// $Private:
|
|
/****************************************************************************
|
|
*
|
|
* Interface:
|
|
*
|
|
* IHXSiteEventHandler
|
|
*
|
|
* Purpose:
|
|
*
|
|
* Interface for allowing client core engine to pass events to a site imeplementor
|
|
* which it implemented as a factory plugin.
|
|
*
|
|
* IID_IHXSiteEventHandler
|
|
*
|
|
* {00000D12-0901-11d1-8B-6-00A024406D59}
|
|
*
|
|
*/
|
|
|
|
DEFINE_GUID(IID_IHXSiteEventHandler, 0x00000D12, 0x901, 0x11d1, 0x8b, 0x6,
|
|
0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
|
|
|
|
#define CLSID_IHXSiteEventHandler IID_IHXSiteEventHandler
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IHXSiteEventHandler
|
|
|
|
DECLARE_INTERFACE_(IHXSiteEventHandler, IUnknown)
|
|
{
|
|
/*
|
|
* IUnknown methods
|
|
*/
|
|
STDTQT_METHOD(QueryInterface) (THIS_
|
|
REFIID riid,
|
|
void** ppvObj) PURE;
|
|
|
|
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
|
|
|
|
STDMETHOD_(ULONG32,Release) (THIS) PURE;
|
|
|
|
/*
|
|
* This method is called from Site Manager EventOccured().
|
|
* The imeplementation of this interface must pass the events
|
|
* on to the individual CHXSiteWindowed sites.
|
|
*/
|
|
STDTQT_METHOD(EventOccurred) (THIS_ HXxEvent* pEvent) PURE;
|
|
};
|
|
// $EndPrivate.
|
|
|
|
|
|
/****************************************************************************
|
|
*
|
|
* Interface:
|
|
*
|
|
* IHXSiteWindowless
|
|
*
|
|
* Purpose:
|
|
*
|
|
* Interface for IHXSite objects which are "windowless" or not
|
|
* associated with platform specific window objects.
|
|
*
|
|
* IID_IHXSiteWindowless:
|
|
*
|
|
* {00000D02-0901-11d1-8B06-00A024406D59}
|
|
*
|
|
*/
|
|
DEFINE_GUID(IID_IHXSiteWindowless, 0x00000D02, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
|
|
0xa0, 0x24, 0x40, 0x6d, 0x59);
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IHXSiteWindowless
|
|
|
|
#define CLSID_IHXSiteWindowless IID_IHXSiteWindowless
|
|
|
|
DECLARE_INTERFACE_(IHXSiteWindowless, IUnknown)
|
|
{
|
|
/*
|
|
* IUnknown methods
|
|
*/
|
|
STDTQT_METHOD(QueryInterface) (THIS_
|
|
REFIID riid,
|
|
void** ppvObj) PURE;
|
|
|
|
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
|
|
|
|
STDMETHOD_(ULONG32,Release) (THIS) PURE;
|
|
|
|
/*
|
|
* IHXSiteWindowless methods called by owners of the site.
|
|
*/
|
|
STDTQT_METHOD(EventOccurred) (THIS_
|
|
HXxEvent* /*IN*/ pEvent) PURE;
|
|
|
|
/*
|
|
* IHXSiteWindowless method. Returns some parent window that
|
|
* owns the windowless site. Useful for right-click menus and
|
|
* dialog box calls.
|
|
*/
|
|
STDMETHOD_(HXxWindow*,GetParentWindow)(THIS) PURE;
|
|
};
|
|
|
|
|
|
/****************************************************************************
|
|
*
|
|
* Interface:
|
|
*
|
|
* IHXSite
|
|
*
|
|
* Purpose:
|
|
*
|
|
* Interface for IHXSite objects.
|
|
*
|
|
* IID_IHXSite:
|
|
*
|
|
* {00000D03-0901-11d1-8B06-00A024406D59}
|
|
*
|
|
*/
|
|
DEFINE_GUID(IID_IHXSite, 0x00000D03, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
|
|
0xa0, 0x24, 0x40, 0x6d, 0x59);
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IHXSite
|
|
|
|
DECLARE_INTERFACE_(IHXSite, IUnknown)
|
|
{
|
|
/*
|
|
* IUnknown methods
|
|
*/
|
|
STDTQT_METHOD(QueryInterface) (THIS_
|
|
REFIID riid,
|
|
void** ppvObj) PURE;
|
|
|
|
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
|
|
|
|
STDMETHOD_(ULONG32,Release) (THIS) PURE;
|
|
|
|
/*
|
|
* IHXSite methods usually called by the "context" to
|
|
* associate users with the site, and to create child sites
|
|
* as appropriate.
|
|
*/
|
|
STDTQT_METHOD(AttachUser) (THIS_
|
|
IHXSiteUser* /*IN*/ pUser) PURE;
|
|
|
|
STDTQT_METHOD(DetachUser) (THIS) PURE;
|
|
|
|
|
|
STDTQT_METHOD(GetUser) (THIS_
|
|
REF(IHXSiteUser*) /*OUT*/ pUser) PURE;
|
|
|
|
STDTQT_METHOD(CreateChild) (THIS_
|
|
REF(IHXSite*) /*OUT*/ pChildSite) PURE;
|
|
|
|
STDTQT_METHOD(DestroyChild) (THIS_
|
|
IHXSite* /*IN*/ pChildSite) PURE;
|
|
|
|
/*
|
|
* IHXSite methods called by the the "context" in which the site
|
|
* is displayed in order to manage its position. Site users should
|
|
* not generally call these methods.
|
|
*/
|
|
STDTQT_METHOD(AttachWatcher) (THIS_
|
|
IHXSiteWatcher* /*IN*/ pWatcher) PURE;
|
|
|
|
STDTQT_METHOD(DetachWatcher) (THIS) PURE;
|
|
|
|
STDTQT_METHOD(SetPosition) (THIS_
|
|
HXxPoint position) PURE;
|
|
|
|
STDTQT_METHOD(GetPosition) (THIS_
|
|
REF(HXxPoint) position) PURE;
|
|
|
|
/*
|
|
* IHXSite methods called by the user of the site to get
|
|
* information about the site, and to manipulate the site.
|
|
*/
|
|
STDTQT_METHOD(SetSize) (THIS_
|
|
HXxSize size) PURE;
|
|
|
|
STDTQT_METHOD(GetSize) (THIS_
|
|
REF(HXxSize) size) PURE;
|
|
|
|
STDTQT_METHOD(DamageRect) (THIS_
|
|
HXxRect rect) PURE;
|
|
|
|
STDTQT_METHOD(DamageRegion) (THIS_
|
|
HXxRegion region) PURE;
|
|
|
|
STDTQT_METHOD(ForceRedraw) (THIS) PURE;
|
|
};
|
|
|
|
|
|
// $Private
|
|
/****************************************************************************
|
|
*
|
|
* Interface:
|
|
*
|
|
* IHXSiteComposition
|
|
*
|
|
* Purpose:
|
|
*
|
|
* Interface for IHXSite objects to let them compose composition
|
|
* frames and display them on a regular basis rather than many
|
|
* discrete blts.
|
|
*
|
|
* IID_IHXSiteComposition:
|
|
*
|
|
* {00000D03-0901-11d1-8B06-00A024406D59}
|
|
*
|
|
*/
|
|
DEFINE_GUID(IID_IHXSiteComposition, 0x00000D19, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
|
|
0xa0, 0x24, 0x40, 0x6d, 0x59);
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IHXSiteComposition
|
|
|
|
DECLARE_INTERFACE_(IHXSiteComposition, IUnknown)
|
|
{
|
|
/* IUnknown methods */
|
|
STDTQT_METHOD(QueryInterface) (THIS_ REFIID riid, void** ppvObj) PURE;
|
|
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
|
|
STDMETHOD_(ULONG32,Release) (THIS) PURE;
|
|
|
|
/* IHXSiteComposition methods. */
|
|
STDTQT_METHOD(LockComposition) (THIS) PURE;
|
|
STDTQT_METHOD(UnlockComposition) (THIS) PURE;
|
|
STDTQT_METHOD(BltComposition) (THIS) PURE;
|
|
STDTQT_METHOD(SetCompositionMode) (THIS_ HXBOOL OnOrOff) PURE;
|
|
STDMETHOD_(HXBOOL, IsCompositionLocked) (THIS) PURE;
|
|
STDMETHOD_(HXBOOL, IsCompositionMode) (THIS) PURE;
|
|
};
|
|
// $EndPrivate.
|
|
|
|
|
|
/****************************************************************************
|
|
*
|
|
* Interface:
|
|
*
|
|
* IHXSiteUser
|
|
*
|
|
* Purpose:
|
|
*
|
|
* Interface for the user of the IHXSite objects.
|
|
*
|
|
* IID_IHXSiteUser:
|
|
*
|
|
* {00000D04-0901-11d1-8B06-00A024406D59}
|
|
*
|
|
*/
|
|
DEFINE_GUID(IID_IHXSiteUser, 0x00000D04, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
|
|
0xa0, 0x24, 0x40, 0x6d, 0x59);
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IHXSiteUser
|
|
|
|
DECLARE_INTERFACE_(IHXSiteUser, IUnknown)
|
|
{
|
|
/*
|
|
* IUnknown methods
|
|
*/
|
|
STDTQT_METHOD(QueryInterface) (THIS_
|
|
REFIID riid,
|
|
void** ppvObj) PURE;
|
|
|
|
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
|
|
|
|
STDMETHOD_(ULONG32,Release) (THIS) PURE;
|
|
|
|
/*
|
|
* IHXSiteUser methods usually called by the "context" to
|
|
* associate users with the site.
|
|
*/
|
|
STDTQT_METHOD(AttachSite) (THIS_
|
|
IHXSite* /*IN*/ pSite) PURE;
|
|
|
|
STDTQT_METHOD(DetachSite) (THIS) PURE;
|
|
|
|
/*
|
|
* IHXSiteUser methods called to inform user of an event.
|
|
*/
|
|
STDTQT_METHOD(HandleEvent) (THIS_
|
|
HXxEvent* /*IN*/ pEvent) PURE;
|
|
|
|
STDMETHOD_(HXBOOL,NeedsWindowedSites) (THIS) PURE;
|
|
};
|
|
|
|
/****************************************************************************
|
|
*
|
|
* Interface:
|
|
*
|
|
* IHXSiteWatcher
|
|
*
|
|
* Purpose:
|
|
*
|
|
* Interface for IHXSiteWatcher objects.
|
|
*
|
|
* IID_IHXSite:
|
|
*
|
|
* {00000D05-0901-11d1-8B06-00A024406D59}
|
|
*
|
|
*/
|
|
DEFINE_GUID(IID_IHXSiteWatcher, 0x00000D05, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
|
|
0xa0, 0x24, 0x40, 0x6d, 0x59);
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IHXSiteWatcher
|
|
|
|
DECLARE_INTERFACE_(IHXSiteWatcher, IUnknown)
|
|
{
|
|
/*
|
|
* IUnknown methods
|
|
*/
|
|
STDTQT_METHOD(QueryInterface) (THIS_
|
|
REFIID riid,
|
|
void** ppvObj) PURE;
|
|
|
|
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
|
|
|
|
STDMETHOD_(ULONG32,Release) (THIS) PURE;
|
|
|
|
/*
|
|
* IHXSiteWatcher methods called by the site when a watcher
|
|
* is attached to or detached from it.
|
|
*/
|
|
STDTQT_METHOD(AttachSite) (THIS_
|
|
IHXSite* /*IN*/ pSite) PURE;
|
|
|
|
STDTQT_METHOD(DetachSite) (THIS) PURE;
|
|
|
|
/*
|
|
* IHXSiteWatcher methods called by the site an attempt is
|
|
* made to change it's position or size. The site watcher must
|
|
* return HXR_OK for the change to occur. If the site watcher
|
|
* returns any value other than HXR_OK then the size or position
|
|
* will not change. The site watcher can also modify the new
|
|
* size of position.
|
|
*/
|
|
STDTQT_METHOD(ChangingPosition) (THIS_
|
|
HXxPoint posOld,
|
|
REF(HXxPoint)/*IN-OUT*/ posNew) PURE;
|
|
|
|
STDTQT_METHOD(ChangingSize) (THIS_
|
|
HXxSize sizeOld,
|
|
REF(HXxSize) /*IN-OUT*/ sizeNew) PURE;
|
|
};
|
|
|
|
/****************************************************************************
|
|
*
|
|
* Interface:
|
|
*
|
|
* IHXSiteUserSupplier
|
|
*
|
|
* Purpose:
|
|
*
|
|
* Interface implemented by renderers and objects with provide layouts to
|
|
* the client core. This interface is called by the core when it needs a
|
|
* new IHXSiteUser, or when it is done using an IHXSiteUser.
|
|
*
|
|
* IID_IHXSiteUserSupplier:
|
|
*
|
|
* {00000D06-0901-11d1-8B06-00A024406D59}
|
|
*
|
|
*/
|
|
DEFINE_GUID(IID_IHXSiteUserSupplier, 0x00000D06, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
|
|
0xa0, 0x24, 0x40, 0x6d, 0x59);
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IHXSiteUserSupplier
|
|
|
|
DECLARE_INTERFACE_(IHXSiteUserSupplier, IUnknown)
|
|
{
|
|
/*
|
|
* IUnknown methods
|
|
*/
|
|
STDTQT_METHOD(QueryInterface) (THIS_
|
|
REFIID riid,
|
|
void** ppvObj) PURE;
|
|
|
|
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
|
|
|
|
STDMETHOD_(ULONG32,Release) (THIS) PURE;
|
|
|
|
/*
|
|
* IHXSiteUserSupplier methods usually called by the
|
|
* "context" to ask for additional or to release previously
|
|
* created site users.
|
|
*/
|
|
STDTQT_METHOD(CreateSiteUser) (THIS_
|
|
REF(IHXSiteUser*)/*OUT*/ pSiteUser) PURE;
|
|
|
|
STDTQT_METHOD(DestroySiteUser) (THIS_
|
|
IHXSiteUser* /*IN*/ pSiteUser) PURE;
|
|
|
|
STDMETHOD_(HXBOOL,NeedsWindowedSites) (THIS) PURE;
|
|
};
|
|
|
|
|
|
/****************************************************************************
|
|
*
|
|
* Interface:
|
|
*
|
|
* IHXSiteSupplier
|
|
*
|
|
* Purpose:
|
|
*
|
|
* Interface implemented by users of the client core. This interface is
|
|
* called by the core when it needs a new IHXSite, or when it is done
|
|
* using an IHXSite.
|
|
*
|
|
* IID_IHXSiteSupplier:
|
|
*
|
|
* {00000D07-0901-11d1-8B06-00A024406D59}
|
|
*
|
|
*/
|
|
DEFINE_GUID(IID_IHXSiteSupplier, 0x00000D07, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
|
|
0xa0, 0x24, 0x40, 0x6d, 0x59);
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IHXSiteSupplier
|
|
|
|
DECLARE_INTERFACE_(IHXSiteSupplier, IUnknown)
|
|
{
|
|
/*
|
|
* IUnknown methods
|
|
*/
|
|
STDTQT_METHOD(QueryInterface) (THIS_
|
|
REFIID riid,
|
|
void** ppvObj) PURE;
|
|
|
|
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
|
|
|
|
STDMETHOD_(ULONG32,Release) (THIS) PURE;
|
|
|
|
/*
|
|
* IHXSiteSupplier methods
|
|
*/
|
|
|
|
/************************************************************************
|
|
* Method:
|
|
* IHXSiteSupplier::SitesNeeded
|
|
* Purpose:
|
|
* Called to inform the site supplier that a site with a particular
|
|
* set of characteristics is needed. If the site supplier can
|
|
* fulfill the request it should call the site manager and add one
|
|
* or more new sites.
|
|
* Note that the request for sites is associated with a Request ID
|
|
* the client core will inform the site supplier when this requested
|
|
* site is no longer needed.
|
|
*/
|
|
STDTQT_METHOD(SitesNeeded) (THIS_
|
|
UINT32 uReqestID,
|
|
IHXValues* pSiteProps) PURE;
|
|
|
|
/************************************************************************
|
|
* Method:
|
|
* IHXSiteSupplier::SitesNotNeeded
|
|
* Purpose:
|
|
* Called to inform the site supplier that all sites from a previos
|
|
* site request are no longer needed. If the site supplier had
|
|
* previously created non-persistant sites (like popup windows)
|
|
* to fulfill a request for sites it should call the site manager
|
|
* and remove those sites.
|
|
*/
|
|
STDTQT_METHOD(SitesNotNeeded) (THIS_
|
|
UINT32 uReqestID) PURE;
|
|
|
|
|
|
/************************************************************************
|
|
* Method:
|
|
* IHXSiteSupplier::BeginChangeLayout
|
|
* Purpose:
|
|
* Called to inform the site supplier a layout change has beginning
|
|
* it can expect to receive SitesNeeded() and SitesNotNeeded() calls
|
|
* while a layout change is in progress,
|
|
*/
|
|
STDTQT_METHOD(BeginChangeLayout) (THIS) PURE;
|
|
|
|
/************************************************************************
|
|
* Method:
|
|
* IHXSiteSupplier::DoneChangeLayout
|
|
* Purpose:
|
|
* Called to inform the site supplier the layout change has been
|
|
* completed.
|
|
*/
|
|
STDTQT_METHOD(DoneChangeLayout) (THIS) PURE;
|
|
|
|
};
|
|
|
|
|
|
/****************************************************************************
|
|
*
|
|
* Interface:
|
|
*
|
|
* IHXSiteManager
|
|
*
|
|
* Purpose:
|
|
*
|
|
* Interface implemented by the client core. This interface is called
|
|
* by users of the client core to inform it of IHXSite's which are
|
|
* available for layout of renderers
|
|
*
|
|
* IID_IHXSiteManager:
|
|
*
|
|
* {00000D08-0901-11d1-8B06-00A024406D59}
|
|
*
|
|
*/
|
|
DEFINE_GUID(IID_IHXSiteManager, 0x00000D08, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
|
|
0xa0, 0x24, 0x40, 0x6d, 0x59);
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IHXSiteManager
|
|
|
|
DECLARE_INTERFACE_(IHXSiteManager, IUnknown)
|
|
{
|
|
/*
|
|
* IUnknown methods
|
|
*/
|
|
STDTQT_METHOD(QueryInterface) (THIS_
|
|
REFIID riid,
|
|
void** ppvObj) PURE;
|
|
|
|
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
|
|
|
|
STDMETHOD_(ULONG32,Release) (THIS) PURE;
|
|
|
|
/*
|
|
* IHXSiteManager methods
|
|
*/
|
|
|
|
/************************************************************************
|
|
* Method:
|
|
* IHXSiteManager::AddSite
|
|
* Purpose:
|
|
* Called to inform the site manager of the existence of a site.
|
|
*/
|
|
STDTQT_METHOD(AddSite) (THIS_
|
|
IHXSite* pSite) PURE;
|
|
|
|
/************************************************************************
|
|
* Method:
|
|
* IHXSiteManager::RemoveSite
|
|
* Purpose:
|
|
* Called to inform the site manager that a site is no longer
|
|
* available.
|
|
*/
|
|
STDTQT_METHOD(RemoveSite) (THIS_
|
|
IHXSite* pSite) PURE;
|
|
};
|
|
|
|
|
|
// $Private:
|
|
/****************************************************************************
|
|
*
|
|
* Interface:
|
|
*
|
|
* IHXSiteManager2
|
|
*
|
|
* Purpose:
|
|
*
|
|
* Interface implemented by the client core. This interface is called
|
|
* by users of the client core to iterate over the sites known by this
|
|
* site manager.
|
|
*
|
|
* IID_IHXSiteManager:
|
|
*
|
|
* {00000D20-0901-11d1-8B06-00A024406D59}
|
|
*
|
|
*/
|
|
DEFINE_GUID(IID_IHXSiteManager2, 0x00000D20, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
|
|
0xa0, 0x24, 0x40, 0x6d, 0x59);
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IHXSiteManager2
|
|
|
|
DECLARE_INTERFACE_(IHXSiteManager2, IUnknown)
|
|
{
|
|
/*
|
|
* IHXSiteManager2 methods
|
|
*/
|
|
|
|
/************************************************************************
|
|
* Method:
|
|
* IHXSiteManager2::GetNumberOfSites
|
|
* Purpose:
|
|
* Called to get the number of sites that the site mananger currently
|
|
* knows about.
|
|
*/
|
|
STDTQT_METHOD(GetNumberOfSites) (THIS_ REF(UINT32) nNumSites ) PURE;
|
|
|
|
/************************************************************************
|
|
* Method:
|
|
* IHXSiteManager2::GetSiteAt
|
|
* Purpose:
|
|
* Used to iterate over the sites.
|
|
*
|
|
*/
|
|
STDTQT_METHOD(GetSiteAt) (THIS_ UINT32 nIndex, REF(IHXSite*) pSite) PURE;
|
|
};
|
|
// $EndPrivate.
|
|
|
|
|
|
/****************************************************************************
|
|
*
|
|
* Interface:
|
|
*
|
|
* IHXMultiInstanceSiteUserSupplier
|
|
*
|
|
* Purpose:
|
|
*
|
|
* This is the interface for a special default object which is available
|
|
* from the common class factory. This object will act as a site user
|
|
* supplier for any renderer (or other site user object) that wants
|
|
* default support for multiple instances. The site user must work as
|
|
* a windowless site for this default implementation to work. The
|
|
* default object also implements the IHXSite interfave to allow
|
|
* the site user object to control all the sites through a single
|
|
* interface instance.
|
|
*
|
|
* IID_IHXMultiInstanceSiteUserSupplier:
|
|
*
|
|
* {00000D09-0901-11d1-8B06-00A024406D59}
|
|
*
|
|
*/
|
|
DEFINE_GUID(IID_IHXMultiInstanceSiteUserSupplier, 0x00000D09, 0x901,
|
|
0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
|
|
|
|
#define CLSID_IHXMultiInstanceSiteUserSupplier \
|
|
IID_IHXMultiInstanceSiteUserSupplier
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IHXMultiInstanceSiteUserSupplier
|
|
|
|
DECLARE_INTERFACE_(IHXMultiInstanceSiteUserSupplier, IUnknown)
|
|
{
|
|
/*
|
|
* IUnknown methods
|
|
*/
|
|
STDTQT_METHOD(QueryInterface) (THIS_
|
|
REFIID riid,
|
|
void** ppvObj) PURE;
|
|
|
|
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
|
|
|
|
STDMETHOD_(ULONG32,Release) (THIS) PURE;
|
|
|
|
/*
|
|
* IHXMultiInstanceSiteUserSupplier methods called by site users.
|
|
*/
|
|
STDTQT_METHOD(SetSingleSiteUser) (THIS_
|
|
IUnknown* pUnknown) PURE;
|
|
|
|
STDTQT_METHOD(ReleaseSingleSiteUser) (THIS) PURE;
|
|
|
|
};
|
|
|
|
|
|
/****************************************************************************
|
|
*
|
|
* Interface:
|
|
*
|
|
* IHXSiteEnumerator
|
|
*
|
|
* Purpose:
|
|
*
|
|
* Provides an interface to enumerate sites. Currently implemented
|
|
* in the IHXMultiInstanceSiteUserSupplier supplied by the core player,
|
|
* it can be used to render to MISUS sites outside of an HX_SURFACE_UPDATE;
|
|
* this is especially useful when using IHXVideoSurface2.
|
|
*
|
|
* IID_IHXSiteEnumerator:
|
|
*
|
|
* {67f8c5bd-4b1d-4c09-8fb7-8ac7c20d29c7}
|
|
*
|
|
*/
|
|
DEFINE_GUID(IID_IHXSiteEnumerator, 0x67f8c5bd, 0x4b1d,
|
|
0x4c09, 0x8f, 0xb7, 0x8a, 0xc7, 0xc2, 0x0d, 0x29, 0xc7);
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IHXSiteEnumerator
|
|
|
|
DECLARE_INTERFACE_(IHXSiteEnumerator, IUnknown)
|
|
{
|
|
/*
|
|
* IUnknown methods
|
|
*/
|
|
STDTQT_METHOD(QueryInterface) (THIS_
|
|
REFIID riid,
|
|
void** ppvObj) PURE;
|
|
|
|
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
|
|
|
|
typedef void* SitePosition;
|
|
|
|
/*
|
|
* HXSiteEnumerator methods
|
|
*/
|
|
|
|
|
|
/************************************************************************
|
|
* Method:
|
|
* HXSiteEnumerator::GetFirstSite
|
|
* Purpose:
|
|
* Retrieves both the first site in the enumeration and initializes
|
|
* sitePosition with the position of the next site (if any).
|
|
* Returns HXR_OK if the first site is available, HXR_FAIL if not.
|
|
*/
|
|
STDTQT_METHOD(GetFirstSite) (THIS_
|
|
REF(IHXSite*) /* OUT */ pFirstSite,
|
|
REF(SitePosition) /* OUT */ nextPosition) PURE;
|
|
|
|
/************************************************************************
|
|
* Method:
|
|
* HXSiteEnumerator::GetNextSite
|
|
* Purpose:
|
|
* Retrieves both the next site in the enumeration (as specified by
|
|
* nextSite) and initializes sitePosition with the position of the
|
|
* following site (if any).
|
|
* Returns HXR_OK if the first site is available, HXR_FAIL if not.
|
|
*/
|
|
STDTQT_METHOD(GetNextSite) (THIS_
|
|
REF(IHXSite*) pNextSite,
|
|
REF(SitePosition) /* IN/OUT */ nextPosition) PURE;
|
|
};
|
|
|
|
|
|
/****************************************************************************
|
|
*
|
|
* Interface:
|
|
* IHXSiteFullScreen
|
|
*
|
|
* Purpose:
|
|
*
|
|
* This is the interface for turning on/off the full screen mode
|
|
*
|
|
* IID_IHXSiteFullScreen:
|
|
*
|
|
* {00000D0B-0901-11d1-8B06-00A024406D59}
|
|
*
|
|
*/
|
|
DEFINE_GUID(IID_IHXSiteFullScreen, 0x00000D0B, 0x901,
|
|
0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IHXSiteFullScreen
|
|
|
|
DECLARE_INTERFACE_(IHXSiteFullScreen, IUnknown)
|
|
{
|
|
/*
|
|
* IUnknown methods
|
|
*/
|
|
STDTQT_METHOD(QueryInterface) (THIS_
|
|
REFIID riid,
|
|
void** ppvObj) PURE;
|
|
|
|
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
|
|
|
|
STDMETHOD_(ULONG32,Release) (THIS) PURE;
|
|
|
|
/*
|
|
* IHXSiteFullScreen methods
|
|
*/
|
|
STDTQT_METHOD(EnterFullScreen) (THIS) PURE;
|
|
|
|
STDTQT_METHOD(ExitFullScreen) (THIS) PURE;
|
|
|
|
STDTQT_METHOD(TestFullScreen) (THIS_
|
|
void* hTestBitmap,const char* pszStatusText) PURE;
|
|
|
|
STDMETHOD_(HXBOOL, IsFullScreen) (THIS) PURE;
|
|
};
|
|
|
|
|
|
// $Private:
|
|
/****************************************************************************
|
|
*
|
|
* Interface:
|
|
* IHXLayoutSiteGroupManager
|
|
*
|
|
* Purpose:
|
|
*
|
|
* Allow layout site groups to be added and removed
|
|
*
|
|
* IID_IHXLayoutSiteGroupManager:
|
|
*
|
|
* {00000D0C-0901-11d1-8B06-00A024406D59}
|
|
*
|
|
*/
|
|
DEFINE_GUID(IID_IHXLayoutSiteGroupManager, 0x00000D0C, 0x901,
|
|
0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IHXLayoutSiteGroupManager
|
|
|
|
DECLARE_INTERFACE_(IHXLayoutSiteGroupManager, IUnknown)
|
|
{
|
|
/*
|
|
* IUnknown methods
|
|
*/
|
|
STDTQT_METHOD(QueryInterface) (THIS_
|
|
REFIID riid,
|
|
void** ppvObj) PURE;
|
|
|
|
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
|
|
|
|
STDMETHOD_(ULONG32,Release) (THIS) PURE;
|
|
|
|
/*
|
|
* IHXLayoutSiteGroupManager methods
|
|
*/
|
|
STDTQT_METHOD(AddLayoutSiteGroup) (THIS_
|
|
IUnknown* pLSG) PURE;
|
|
|
|
STDTQT_METHOD(RemoveLayoutSiteGroup) (THIS_
|
|
IUnknown* pLSG) PURE;
|
|
};
|
|
// $EndPrivate.
|
|
|
|
|
|
/****************************************************************************
|
|
*
|
|
* Interface:
|
|
* IHXEventHookMgr
|
|
*
|
|
* Purpose:
|
|
*
|
|
* Add ability to hook events from a named region
|
|
*
|
|
* IID_IHXEventHookMgr:
|
|
*
|
|
* {00000D0D-0901-11d1-8B06-00A024406D59}
|
|
*
|
|
*/
|
|
DEFINE_GUID(IID_IHXEventHookMgr, 0x00000D0D, 0x901,
|
|
0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IHXEventHookMgr
|
|
|
|
DECLARE_INTERFACE_(IHXEventHookMgr, IUnknown)
|
|
{
|
|
/*
|
|
* IUnknown methods
|
|
*/
|
|
STDTQT_METHOD(QueryInterface) (THIS_
|
|
REFIID riid,
|
|
void** ppvObj) PURE;
|
|
|
|
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
|
|
|
|
STDMETHOD_(ULONG32,Release) (THIS) PURE;
|
|
|
|
/*
|
|
* IHXEventHookMgr methods
|
|
*/
|
|
STDTQT_METHOD(AddHook) (THIS_
|
|
IHXEventHook* pHook,
|
|
const char* pRegionName,
|
|
UINT16 uLayer) PURE;
|
|
|
|
STDTQT_METHOD(RemoveHook) (THIS_
|
|
IHXEventHook* pHook,
|
|
const char* pRegionName,
|
|
UINT16 uLayer) PURE;
|
|
};
|
|
|
|
/****************************************************************************
|
|
*
|
|
* Interface:
|
|
* IHXEventHook
|
|
*
|
|
* Purpose:
|
|
*
|
|
* Object that gets hooked events sent by IHXEventHookMgr
|
|
*
|
|
* IID_IHXEventHookMgr:
|
|
*
|
|
* {00000D0E-0901-11d1-8B06-00A024406D59}
|
|
*
|
|
*/
|
|
DEFINE_GUID(IID_IHXEventHook, 0x00000D0E, 0x901,
|
|
0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IHXEventHook
|
|
|
|
DECLARE_INTERFACE_(IHXEventHook, IUnknown)
|
|
{
|
|
/*
|
|
* IUnknown methods
|
|
*/
|
|
STDTQT_METHOD(QueryInterface) (THIS_
|
|
REFIID riid,
|
|
void** ppvObj) PURE;
|
|
|
|
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
|
|
|
|
STDMETHOD_(ULONG32,Release) (THIS) PURE;
|
|
|
|
/*
|
|
* IHXEventHook methods
|
|
*/
|
|
STDTQT_METHOD(SiteAdded) (THIS_
|
|
IHXSite* pSite) PURE;
|
|
STDTQT_METHOD(HandleEvent) (THIS_
|
|
IHXSite* pSite,
|
|
HXxEvent* pEvent) PURE;
|
|
STDTQT_METHOD(SiteRemoved) (THIS_
|
|
IHXSite* pSite) PURE;
|
|
};
|
|
|
|
|
|
/****************************************************************************
|
|
*
|
|
* Interface:
|
|
* IHXStatusMessage
|
|
*
|
|
* Purpose:
|
|
*
|
|
* This is the interface for setting the status text.
|
|
*
|
|
* IID_IHXStatusMessage:
|
|
*
|
|
* {00000D10-0901-11d1-8B06-00A024406D59}
|
|
*
|
|
*/
|
|
DEFINE_GUID(IID_IHXStatusMessage, 0x00000D10, 0x901,
|
|
0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IHXStatusMessage
|
|
|
|
DECLARE_INTERFACE_(IHXStatusMessage, IUnknown)
|
|
{
|
|
/*
|
|
* IUnknown methods
|
|
*/
|
|
STDTQT_METHOD(QueryInterface) (THIS_
|
|
REFIID riid,
|
|
void** ppvObj) PURE;
|
|
|
|
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
|
|
|
|
STDMETHOD_(ULONG32,Release) (THIS) PURE;
|
|
|
|
/*
|
|
* IHXStatusMessage methods
|
|
*/
|
|
|
|
STDTQT_METHOD(SetStatus) (THIS_ const char* pText) PURE;
|
|
};
|
|
|
|
// $Private:
|
|
/****************************************************************************
|
|
*
|
|
* Interface:
|
|
*
|
|
* IHXSiteTransition
|
|
*
|
|
* Purpose:
|
|
*
|
|
* Interface for transitioning between IHXSites.
|
|
*
|
|
* IID_IHXSiteTransition:
|
|
*
|
|
* {00000D01-0901-11d1-8B06-00A024406D59}
|
|
*
|
|
*/
|
|
DEFINE_GUID(IID_IHXSiteTransition, 0x00000D13, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
|
|
0xa0, 0x24, 0x40, 0x6d, 0x59);
|
|
|
|
#define CLSID_IHXSiteTransition IID_IHXSiteTransition
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IHXSiteTransition
|
|
|
|
DECLARE_INTERFACE_(IHXSiteTransition, IUnknown)
|
|
{
|
|
/*
|
|
* IUnknown methods
|
|
*/
|
|
STDTQT_METHOD(QueryInterface) (THIS_
|
|
REFIID riid,
|
|
void** ppvObj) PURE;
|
|
|
|
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
|
|
|
|
STDMETHOD_(ULONG32,Release) (THIS) PURE;
|
|
|
|
STDTQT_METHOD(Initialize) (THIS_
|
|
IHXValues* pParams) PURE;
|
|
|
|
STDTQT_METHOD(SetPercentage) (THIS_
|
|
UINT32 nThousandnthsComplete) PURE;
|
|
|
|
};
|
|
|
|
|
|
/****************************************************************************
|
|
*
|
|
* Interface:
|
|
*
|
|
* IHXRegion
|
|
*
|
|
* Purpose:
|
|
*
|
|
* Interface for managing HXRegions.
|
|
*
|
|
* IHXRegion:
|
|
*
|
|
* {00002200-0903-11d1-8B06-00A024406D59}
|
|
*
|
|
*/
|
|
|
|
|
|
DEFINE_GUID(IID_IHXRegion, 0x00000D14, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
|
|
0xa0, 0x24, 0x40, 0x6d, 0x59);
|
|
|
|
#define CLSID_IHXRegion IID_IHXRegion
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IHXRegion
|
|
|
|
DECLARE_INTERFACE_(IHXRegion, IUnknown)
|
|
{
|
|
/************************************************************************
|
|
* Method:
|
|
* IHXRegion::SetRect
|
|
* Purpose:
|
|
* This function creates a rectangular region.
|
|
*
|
|
*/
|
|
STDTQT_METHOD(SetRect) (THIS_ HXxRect* pRect) PURE;
|
|
|
|
/************************************************************************
|
|
* Method:
|
|
* IHXRegion::SetRect
|
|
* Purpose:
|
|
* This function creates a rectangular region.
|
|
*
|
|
*/
|
|
STDTQT_METHOD(SetRect) (THIS_ int x, int y, int x1, int y1) PURE;
|
|
|
|
/************************************************************************
|
|
* Method:
|
|
* IHXRegion::SetPoly
|
|
* Purpose:
|
|
* This function creates a region defined by an arbitrary polygon.
|
|
*
|
|
*/
|
|
|
|
STDTQT_METHOD(SetPoly) (THIS_ HXxPoint** pRect, HXBOOL bUseWinding) PURE;
|
|
|
|
/************************************************************************
|
|
* Method:
|
|
* IHXRegion::IsEqual
|
|
* Purpose:
|
|
* This function determines if two regions are equal.
|
|
*
|
|
*/
|
|
|
|
STDMETHOD_(HXBOOL,IsEqual) (THIS_ IHXRegion* pRegion) PURE;
|
|
|
|
/************************************************************************
|
|
* Method:
|
|
* IHXRegion::GetExtents
|
|
* Purpose:
|
|
* This function allows the user to determine the extents of the region
|
|
*
|
|
*/
|
|
|
|
STDTQT_METHOD(GetExtents) (THIS_ REF(HXxRect) rExtents) PURE;
|
|
|
|
/************************************************************************
|
|
* Method:
|
|
* IHXRegion::Offset
|
|
* Purpose:
|
|
* This function offsets the region by the spectified origin
|
|
*
|
|
*/
|
|
|
|
STDTQT_METHOD(Offset) (THIS_ HXxPoint* pOrigin) PURE;
|
|
|
|
/************************************************************************
|
|
* Method:
|
|
* IHXRegion::PointHitTest
|
|
* Purpose:
|
|
* This function returns if TRUE if the specified point is in the region
|
|
*
|
|
*/
|
|
|
|
STDMETHOD_(HXBOOL,PointHitTest) (THIS_ HXxPoint* pPoint) PURE;
|
|
|
|
/************************************************************************
|
|
* Method:
|
|
* IHXRegion::RectHitTest
|
|
* Purpose:
|
|
* This function returns
|
|
* HX_CONTAINED if the rect is fully contained within the region
|
|
* HX_PART if part of the rect is within the region
|
|
* HX_OUT if no part of the rect is within the region
|
|
*
|
|
*/
|
|
|
|
STDMETHOD_(INT32,RectHitTest) (THIS_ HXxRect* pRect) PURE;
|
|
|
|
/************************************************************************
|
|
* Method:
|
|
* IHXRegion::GetNumRects
|
|
* Purpose:
|
|
* This function gets the number of rects which describe the
|
|
* region
|
|
*
|
|
*/
|
|
|
|
STDMETHOD_(UINT32, GetNumRects) (THIS) PURE;
|
|
|
|
/************************************************************************
|
|
* Method:
|
|
* IHXRegion::GetRectAtIndex
|
|
* Purpose:
|
|
* This function gets the RECT at index nRectIndex
|
|
*
|
|
*/
|
|
|
|
STDTQT_METHOD(GetRectAtIndex) (THIS_ UINT32 nRectIndex, REF(HXxRect) rRect) PURE;
|
|
|
|
/************************************************************************
|
|
* Method:
|
|
* IHXRegion::UnionRegion
|
|
* Purpose:
|
|
* Union Region -- this operator like all of the operators will create an IHXRegion
|
|
* if pDest is NULL.
|
|
*
|
|
*/
|
|
|
|
STDTQT_METHOD(UnionRegion) (THIS_ REF(IHXRegion*) pDest, IHXRegion* pSrc1) PURE;
|
|
|
|
/************************************************************************
|
|
* Method:
|
|
* IHXRegion::GetRectAtIndex
|
|
* Purpose:
|
|
* Copy Region
|
|
*
|
|
*/
|
|
|
|
STDTQT_METHOD(CopyRegion) (THIS_ REF(IHXRegion*) pDest) PURE;
|
|
|
|
/************************************************************************
|
|
* Method:
|
|
* IHXRegion::GetRectAtIndex
|
|
* Purpose:
|
|
* Diff Region
|
|
*
|
|
*/
|
|
|
|
STDTQT_METHOD(DiffRegion) (THIS_ REF(IHXRegion*) pDest, IHXRegion* pSrc1) PURE;
|
|
|
|
/************************************************************************
|
|
* Method:
|
|
* IHXRegion::GetRectAtIndex
|
|
* Purpose:
|
|
* And Region
|
|
*
|
|
*/
|
|
|
|
STDTQT_METHOD(AndRegion) (THIS_ REF(IHXRegion*) pDest, IHXRegion* pSrc1) PURE;
|
|
|
|
/************************************************************************
|
|
* Method:
|
|
* IHXRegion::GetRectAtIndex
|
|
* Purpose:
|
|
* XOR Region
|
|
*
|
|
*/
|
|
|
|
STDTQT_METHOD(XORRegion) (THIS_ REF(IHXRegion*) pDest, IHXRegion* pSrc1) PURE;
|
|
|
|
/************************************************************************
|
|
* Method:
|
|
* IHXRegion::GetRegion
|
|
* Purpose:
|
|
* Bad hack for the moment to obtain the REGION pointer of an HXRegion.
|
|
* Will have to remove this later.
|
|
*
|
|
*/
|
|
|
|
STDMETHOD_(void*, GetRegion) (THIS) PURE;
|
|
|
|
};
|
|
|
|
/****************************************************************************
|
|
*
|
|
* Interface:
|
|
*
|
|
* IHXColorConverterManager
|
|
*
|
|
* Purpose:
|
|
*
|
|
* Interface for obtaining IHXColorConverters
|
|
*
|
|
* IHXColorConverterManager:
|
|
*
|
|
* {00000D15-0902-11d1-8B06-00A024406D59}
|
|
*
|
|
*/
|
|
|
|
DEFINE_GUID(IID_IHXColorConverterManager, 0x00000D15, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
|
|
0xa0, 0x24, 0x40, 0x6d, 0x59);
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IHXColorConverterManager
|
|
|
|
DECLARE_INTERFACE_(IHXColorConverterManager, IUnknown)
|
|
{
|
|
/*
|
|
* Get ColorConverter is called to obtain a color converter to convert
|
|
* from a particular bitmap to another bitmap.
|
|
*/
|
|
STDTQT_METHOD(GetColorConverter) (THIS_
|
|
HXBitmapInfoHeader* /*IN*/ pBitmapInfoIn,
|
|
HXBitmapInfoHeader* /*IN*/ pBitmapInfoOut,
|
|
REF(IHXColorConverter*) /*OUT*/ pConverter) PURE;
|
|
|
|
};
|
|
|
|
/****************************************************************************
|
|
*
|
|
* Interface:
|
|
*
|
|
* IHXColorConverter
|
|
*
|
|
* Purpose:
|
|
*
|
|
* Interface for converting between two bitmaps of different color formats.
|
|
*
|
|
* IHXColorConverterManager:
|
|
*
|
|
* {00000D16-0902-11d1-8B06-00A024406D59}
|
|
*
|
|
*/
|
|
|
|
DEFINE_GUID(IID_IHXColorConverter, 0x00000D16, 0x903, 0x11d1, 0x8b,
|
|
0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IHXColorConverter
|
|
|
|
DECLARE_INTERFACE_(IHXColorConverter, IUnknown)
|
|
{
|
|
/*
|
|
* ColorConvert converts the pBitsIn from one color format to
|
|
* the format of pBitsOut
|
|
*/
|
|
STDTQT_METHOD(ColorConvert) (THIS_
|
|
UCHAR* pBitsIn,
|
|
UCHAR* pBitsOut,
|
|
HXxRect* pRectIn,
|
|
HXxRect* pRectOut
|
|
) PURE;
|
|
|
|
};
|
|
|
|
/****************************************************************************
|
|
*
|
|
* Interface:
|
|
*
|
|
* IHXOverlayResponse
|
|
*
|
|
* Purpose:
|
|
*
|
|
* Interface for reporting/computing the current statistics relevant to
|
|
* Video Presentations.
|
|
*
|
|
* IHXOverlayResponse:
|
|
*
|
|
* {00000D22-0902-11d1-8B06-00A024406D59}
|
|
*
|
|
*/
|
|
|
|
DEFINE_GUID(IID_IHXOverlayResponse, 0x00000D22, 0x903, 0x11d1, 0x8b,
|
|
0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IHXOverlayResponse
|
|
|
|
DECLARE_INTERFACE_(IHXOverlayResponse, IUnknown)
|
|
{
|
|
STDTQT_METHOD(OverlayGranted) (THIS ) PURE;
|
|
STDTQT_METHOD(OverlayRevoked) (THIS ) PURE;
|
|
};
|
|
|
|
|
|
/****************************************************************************
|
|
*
|
|
* Interface:
|
|
*
|
|
* IHXOverlayManager
|
|
*
|
|
* Purpose:
|
|
*
|
|
* Interface for reporting/computing the current statistics relevant to
|
|
* Video Presentations.
|
|
*
|
|
* IHXOverlayManager:
|
|
*
|
|
* {00000D21-0902-11d1-8B06-00A024406D59}
|
|
*
|
|
*/
|
|
|
|
DEFINE_GUID(IID_IHXOverlayManager, 0x00000D21, 0x903, 0x11d1, 0x8b,
|
|
0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IHXOverlayManager
|
|
|
|
DECLARE_INTERFACE_(IHXOverlayManager, IUnknown)
|
|
{
|
|
STDTQT_METHOD(HasOverlay) (THIS_
|
|
IHXOverlayResponse* pResp
|
|
) PURE;
|
|
|
|
STDTQT_METHOD(AddStats) (THIS_
|
|
IHXOverlayResponse* pResp,
|
|
UINT32 ulNumPixels
|
|
) PURE;
|
|
|
|
|
|
STDTQT_METHOD(RemoveOverlayRequest)(THIS_ IHXOverlayResponse* pResp ) PURE;
|
|
};
|
|
|
|
|
|
// $EndPrivate.
|
|
|
|
/****************************************************************************
|
|
*
|
|
* Interface:
|
|
*
|
|
* IHXKeyBoardFocus
|
|
*
|
|
* Purpose:
|
|
*
|
|
* Interface for setting/getting the keyboard focus for a particular siteuser
|
|
*
|
|
* IHXKeyBoardFocus:
|
|
*
|
|
* {00000D23-0902-11d1-8B06-00A024406D59}
|
|
*
|
|
*/
|
|
|
|
DEFINE_GUID(IID_IHXKeyBoardFocus, 0x00000D23, 0x903, 0x11d1, 0x8b,
|
|
0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IHXKeyBoardFocus
|
|
|
|
DECLARE_INTERFACE_(IHXKeyBoardFocus, IUnknown)
|
|
{
|
|
STDTQT_METHOD(SetKeyboardFocus)(THIS_ IHXSiteUser* pSiteUser ) PURE;
|
|
STDTQT_METHOD(GetKeyboardFocus)(THIS_ IHXSiteUser* &pSiteUser ) PURE;
|
|
|
|
};
|
|
|
|
/****************************************************************************
|
|
*
|
|
* Interface:
|
|
*
|
|
* IHXDrawFocus
|
|
*
|
|
* Purpose:
|
|
*
|
|
* Interface for displaying the site that has the keyboard focus
|
|
*
|
|
* IHXDrawFocus:
|
|
*
|
|
* {00000D24-0902-11d1-8B06-00A024406D59}
|
|
*
|
|
*/
|
|
|
|
DEFINE_GUID(IID_IHXDrawFocus, 0x00000D24, 0x903, 0x11d1, 0x8b,
|
|
0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IHXDrawFocus
|
|
|
|
DECLARE_INTERFACE_(IHXDrawFocus, IUnknown)
|
|
{
|
|
/************************************************************************
|
|
* Method:
|
|
* IHXDrawFocus::SetStyle
|
|
* Purpose:
|
|
* Ask the site to set the focus style.
|
|
*
|
|
* Syles:
|
|
* ULONG32 Properties:
|
|
*
|
|
* LINE_STYLE = HX_SOLID_LINE, HX_DASHED_LINE, HX_DOTTED_LINE,
|
|
* HX_CUSTOM_LINE
|
|
* LINE_WIDTH = Width of the line in pixels
|
|
* RED = 0-255 color of the primary pixel
|
|
* GREEN = 0-255 color of the primary pixel
|
|
* BLUE = 0-255 color of the primary pixel
|
|
* RED_OFF = 0-255 color of the secondary pixel
|
|
* GREEN_OFF = 0-255 color of the secondary pixel
|
|
* BLUE_OFF = 0-255 color of the secondary pixel
|
|
* CUSTOM_LINE_ENTRIES number of ULONG32s in CUSTOM_LINE_PATTERN
|
|
*
|
|
* IHXBuffer Properties:
|
|
*
|
|
* CUSTOM_LINE_PATTERN list of ULONG32s describing the number
|
|
* of primary and secondary pixels (eq 4241 = "----..----." where
|
|
* - is a primary pixel and . is a secondary pixel) and
|
|
* CUSTOM_LINE_ENTRIES equals 4. Secondary pixels are not
|
|
* drawn if RED_OFF, GREEN_OFF, and BLUE_OFF are not set.
|
|
*/
|
|
STDTQT_METHOD(SetStyle) (THIS_ IHXValues* pProperties) PURE;
|
|
|
|
/************************************************************************
|
|
* Method:
|
|
* IHXDrawFocus::ClearFocus
|
|
* Purpose:
|
|
* Ask the site to clear the current focus drawing.
|
|
*/
|
|
STDTQT_METHOD(ClearFocus)(THIS) PURE;
|
|
|
|
/************************************************************************
|
|
* Method:
|
|
* IHXDrawFocus::SetFocusPolygon
|
|
* Purpose:
|
|
* Ask the site to draw polygon around focus
|
|
*/
|
|
STDTQT_METHOD(SetFocusPolygon)(THIS_ HXxPoint* pPoints, ULONG32 numPoints) PURE;
|
|
|
|
/************************************************************************
|
|
* Method:
|
|
* IHXDrawFocus::SetFocusRect
|
|
* Purpose:
|
|
* Ask the site to draw rectangle around focus
|
|
*/
|
|
STDTQT_METHOD(SetFocusRect) (THIS_ HXxRect* pRect) PURE;
|
|
|
|
/************************************************************************
|
|
* Method:
|
|
* IHXDrawFocus::SetFocusEllipse
|
|
* Purpose:
|
|
* Ask the site to draw ellipse around focus
|
|
*/
|
|
STDTQT_METHOD(SetFocusEllipse) (THIS_ HXxRect* pRect) PURE;
|
|
};
|
|
|
|
// $Private:
|
|
|
|
/****************************************************************************
|
|
*
|
|
* Interface:
|
|
*
|
|
* IHXSubRectSite
|
|
*
|
|
* Purpose:
|
|
*
|
|
* Interface to determine if a site support sub rect BLT'ing via
|
|
* the HX_SURFACE_UPDATE2 message. If the site does support sub
|
|
* rect BLT'ing you can tell the site to send you the
|
|
* HX_SURFACE_UPDATE2 messages via this interface.
|
|
*
|
|
* IHXSubRectSite:
|
|
*
|
|
* {00000D25-0902-11d1-8B06-00A024406D59}
|
|
*
|
|
*/
|
|
DEFINE_GUID(IID_IHXSubRectSite, 0x00000D25, 0x903, 0x11d1, 0x8b,
|
|
0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IHXSubRectSite
|
|
|
|
DECLARE_INTERFACE_(IHXSubRectSite, IHXSite)
|
|
{
|
|
/*
|
|
* Tells the site to send/not-send HX_SURFACE_UPDATE2 messages.
|
|
* These messages contain actuall dirty rects so that the renderer
|
|
* does not need to BLT the entire frame.
|
|
*/
|
|
STDTQT_METHOD(SendSubRectMessages) (THIS_ HXBOOL bRet ) PURE;
|
|
/*
|
|
* New damage region call that takes the cross platfrom region
|
|
* defined in hxwintyp.h and invalidates the rects in it
|
|
*/
|
|
STDTQT_METHOD(SubRectDamageRegion) (THIS_ HXxBoxRegion* pRegion ) PURE;
|
|
/*
|
|
* Method to get the new video surface that comes with the sub
|
|
* rect BLT'ing support.
|
|
*/
|
|
STDTQT_METHOD(GetSubRectVideoSurface) (THIS_
|
|
REF(IHXSubRectVideoSurface*) pSurface
|
|
) PURE;
|
|
};
|
|
|
|
// $EndPrivate.
|
|
|
|
/****************************************************************************
|
|
*
|
|
* Interface:
|
|
*
|
|
* IHXFocusNavigation
|
|
*
|
|
* Purpose:
|
|
*
|
|
* Interface for navigating between and within keyboard focus sites
|
|
*
|
|
* IHXFocusNavigation:
|
|
*
|
|
* {B42B7677-F605-438e-9002-E2AAB7784B43}
|
|
*
|
|
*/
|
|
|
|
DEFINE_GUID(IID_IHXFocusNavigation, 0xb42b7677, 0xf605, 0x438e, 0x90,
|
|
0x2, 0xe2, 0xaa, 0xb7, 0x78, 0x4b, 0x43);
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IHXFocusNavigation
|
|
|
|
DECLARE_INTERFACE_(IHXFocusNavigation, IUnknown)
|
|
{
|
|
/************************************************************************
|
|
* Method:
|
|
* IHXFocusNavigation::SetFocus
|
|
* Purpose:
|
|
* Ask the renderer to set the focus to the given item.
|
|
*/
|
|
STDTQT_METHOD(SetFocus) (THIS_ HXFocusContext eFocus) PURE;
|
|
|
|
/************************************************************************
|
|
* Method:
|
|
* IHXFocusNavigation::ClearFocus
|
|
* Purpose:
|
|
* Ask the renderer to clear the current focus.
|
|
*/
|
|
STDTQT_METHOD(ClearFocus) (THIS) PURE;
|
|
|
|
/************************************************************************
|
|
* Method:
|
|
* IHXFocusNavigation::ActivateFocus
|
|
* Purpose:
|
|
* Ask the renderer to activate the focused link. Do nothing if
|
|
* there is no focus point.
|
|
*/
|
|
STDTQT_METHOD(ActivateFocus) (THIS) PURE;
|
|
|
|
/************************************************************************
|
|
* Method:
|
|
* IHXFocusNavigation::GetFocusState
|
|
* Purpose:
|
|
* Obtain the current focus state
|
|
*/
|
|
STDMETHOD_(HXFocusState,GetFocusState) (THIS) PURE;
|
|
};
|
|
|
|
#endif /* _HXWIN_H_ */
|