|
|
#if !defined(INC__DUserCtrl_h__INCLUDED) #define INC__DUserCtrl_h__INCLUDED
#ifdef __cplusplus extern "C" { #endif
#ifdef __cplusplus
#define BEGIN_INTERPOLATION_INTERFACE(i, guid) \ struct __declspec(uuid(guid)) i; \ struct i : public IInterpolation \ {
#define END_INTERPOLATION_INTERFACE() \ };
#define BEGIN_ANIMATION_INTERFACE(i, guid) \ struct __declspec(uuid(guid)) i; \ struct i : public IAnimation \ {
#define END_ANIMATION_INTERFACE() \ };
#else // TODO: Create C definition #endif
/***************************************************************************\ * * ButtonGadget * \***************************************************************************/
DEFINE_EVENT(evButtonClicked, "DCADCE53-062B-4d1f-B36F-3F2EB27B88CF");
#ifdef GADGET_ENABLE_COM
/***************************************************************************\ * * Interpolation * \***************************************************************************/
struct __declspec(uuid("E188CC9E-4805-487d-9313-3B22AC8FE336")) IInterpolation; interface IInterpolation : public IUnknown { public: STDMETHOD_(float, Compute)(float flProgress, float flStart, float flEnd) PURE; };
BEGIN_INTERPOLATION_INTERFACE(ILinearInterpolation, "3FD65045-7BF5-4a65-B137-F441529BD8F4") END_INTERPOLATION_INTERFACE()
BEGIN_INTERPOLATION_INTERFACE(ILogInterpolation, "98C0FB9A-534D-4b9f-A439-A8E13F0C2D9E") STDMETHOD_(void, SetScale)(float flScale) PURE; END_INTERPOLATION_INTERFACE()
BEGIN_INTERPOLATION_INTERFACE(IExpInterpolation, "280DC2CC-7703-4147-8356-3FAACE662CD1") STDMETHOD_(void, SetScale)(float flScale) PURE; END_INTERPOLATION_INTERFACE()
BEGIN_INTERPOLATION_INTERFACE(ISInterpolation, "D07C8B2F-1896-438f-9EC2-6938ABD0D20C") STDMETHOD_(void, SetScale)(float flScale) PURE; END_INTERPOLATION_INTERFACE()
#define INTERPOLATION_LINEAR (1) #define INTERPOLATION_LOG (2) #define INTERPOLATION_EXP (3) #define INTERPOLATION_S (4)
DUSER_API BOOL WINAPI BuildInterpolation(UINT nIPolID, int nVersion, REFIID riid, void ** ppvUnk);
/***************************************************************************\ * * Animations * \***************************************************************************/
#ifdef GADGET_ENABLE_TRANSITIONS
interface IAnimationCallback;
struct __declspec(uuid("7AACE668-81EB-48d7-8734-267C83FF6DFF")) IAnimation; interface IAnimation : public IUnknown { public: STDMETHOD_(void, SetFunction)(IInterpolation * pipol) PURE;
enum ETime { tComplete, // Completed normally tEnd, // Jumped to end tAbort, // Aborted in place tReset, // Reset to beginning tDestroy // The Gadget being animationed has been destroyed }; STDMETHOD_(void, SetTime)(ETime time) PURE; STDMETHOD_(UINT, GetID)() const PURE; STDMETHOD_(void, SetCallback)(IAnimationCallback * pcb) PURE; };
interface IAnimationCallback : public IUnknown { public: STDMETHOD_(void, OnComplete)(IAnimation * pAni, IAnimation::ETime time) PURE; STDMETHOD_(void, OnSetTime)(IAnimation * pAni, IAnimation::ETime time) PURE; };
#define ANIF_USESTART 0x00000001 // Use the specified start values // instead of querying the current
struct GANI_DESC { DWORD cbSize; HGADGET hgadChange; GMA_ACTION act; UINT nAniFlags; IInterpolation * pipol; IAnimationCallback * pcb; };
#define GANI_ALPHACOMPLETE_OPTIMIZE 0x00000001 // Turn off alpha-blending if not needed
struct GANI_ALPHADESC : public GANI_DESC { float flStart; float flEnd; BOOL fPushToChildren; UINT nOnComplete; };
struct GANI_SCALEDESC : public GANI_DESC { enum EAlignment { aTopLeft, aTopCenter, aTopRight, aMiddleLeft, aMiddleCenter, aMiddleRight, aBottomLeft, aBottomCenter, aBottomRight };
EAlignment al; float flStart; float flEnd; };
struct GANI_RECTDESC : public GANI_DESC { POINT ptStart; POINT ptEnd; SIZE sizeStart; SIZE sizeEnd; UINT nChangeFlags; };
#define GANI_ROTATEDIRECTION_SHORT 0 // Shortest arc #define GANI_ROTATEDIRECTION_LONG 1 // Longer arc #define GANI_ROTATEDIRECTION_CW 2 // Clock-wise #define GANI_ROTATEDIRECTION_CCW 3 // Counter clock-wise
struct GANI_ROTATEDESC : public GANI_DESC { float flStart; float flEnd; UINT nDir; };
#define ANIMATION_ALPHA (1) #define ANIMATION_SCALE (2) #define ANIMATION_RECT (3) #define ANIMATION_ROTATE (4)
DUSER_API BOOL WINAPI BuildAnimation(UINT nAniID, int nVersion, GANI_DESC * pDesc, REFIID riid, void ** ppvUnk); DUSER_API BOOL WINAPI GetGadgetAnimation(HGADGET hgad, UINT nAniID, REFIID riid, void ** ppvUnk);
#endif // GADGET_ENABLE_TRANSITIONS #endif // GADGET_ENABLE_COM
DUSER_API BOOL WINAPI BuildDropTarget(HGADGET hgadRoot, HWND hwnd);
#ifdef __cplusplus }; #endif
#endif // INC__DUserCtrl_h__INCLUDED
|