Files
admin
base
com
developer
drivers
ds
enduser
inetcore
inetsrv
loc
mergedcomponents
multimedia
net
printscan
public
published
sdktools
shell
termsrv
tools
windows
advcore
ctf
directui
duser
all
bridgecp
directui
docs
duexts
engine
inc
public
duser.gh.w
duser.gidl.w
duser.w
dusercore.w
dusercp.gh
duserctrl.gh
duserctrl.gidl
duserctrl.w
dusererror.w
dusermotion.w
duserservices.w
duserutil.w
gadget.w
makefile
sources
autoutil.h
commonstdafx.h
dirs
duser.cs
duserbasep.h
dusercorep.h
duserctrlp.h
dusergadget.cs
duserlavap.h
dusermotionp.h
dusermsgp.h
duserobjectapip.h
duserservicesp.h
duserwinapip.h
duserx.h
dxtransguid.h
icecap.h
renderutil.h
rockall.hpp
slist.h
smgadget.h
smgadget.inl
smobject.h
lib
profile
resources
util
bldenv.cmd
dirs
gadgets.dsw
makedrop.cmd
makeice.cmd
placefil.txt
setup.cmd
gdiplus
rcml
dirs
appcompat
core
ddk
dload
feime
netdde
oleacc
published
richedit
winstate
dirs
project.mk
dirs
makefil0
2025-04-27 07:49:33 -04:00

213 lines
5.5 KiB
OpenEdge ABL

#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