181 lines
3.4 KiB
Plaintext
181 lines
3.4 KiB
Plaintext
helper EventGadget
|
|
{
|
|
typedef UINT (CALLBACK * EventHandler)(void * pvData, EventMsg * pmsg);
|
|
};
|
|
|
|
|
|
helper Visual
|
|
{
|
|
struct VisualCI : public DUser::Gadget::ConstructInfo
|
|
{
|
|
Visual * pgvParent;
|
|
};
|
|
|
|
inline HRESULT IsVisible(BOOL * pfVisible, UINT nFlags)
|
|
{
|
|
return IsParentChainStyle(GS_VISIBLE, pfVisible, nFlags);
|
|
}
|
|
|
|
inline HRESULT IsEnabled(BOOL * pfEnabled, UINT nFlags)
|
|
{
|
|
return IsParentChainStyle(GS_ENABLED, pfEnabled, nFlags);
|
|
}
|
|
|
|
inline HRESULT SetRect(UINT nFlags, int x, int y, int cx, int cy)
|
|
{
|
|
RECT rc;
|
|
rc.left = x;
|
|
rc.top = y;
|
|
rc.right = x + cx;
|
|
rc.bottom = y + cy;
|
|
return SetRect(nFlags, &rc);
|
|
}
|
|
};
|
|
|
|
|
|
helper Animation
|
|
{
|
|
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
|
|
};
|
|
|
|
struct AniCI : public DUser::Gadget::ConstructInfo
|
|
{
|
|
DWORD cbSize;
|
|
Visual * pgvSubject;
|
|
GMA_ACTION act;
|
|
Interpolation *
|
|
pipol;
|
|
Flow * pgflow;
|
|
};
|
|
|
|
static void Stop(Visual * pgvSubject, PRID prid)
|
|
{
|
|
DUserStopAnimation(pgvSubject, prid);
|
|
}
|
|
|
|
BEGIN_STRUCT(CompleteEvent, EventMsg)
|
|
BOOL fNormal; // Sequenced finished normally
|
|
END_STRUCT(CompleteEvent)
|
|
|
|
DEFINE_EVENT(evComplete, "E90A6ABB-E4CF-4988-87EA-6D1EEDCD0097");
|
|
};
|
|
|
|
|
|
helper Flow
|
|
{
|
|
enum ETime
|
|
{
|
|
tBegin = 0,
|
|
tEnd
|
|
};
|
|
|
|
struct FlowCI : public DUser::Gadget::ConstructInfo
|
|
{
|
|
DWORD cbSize;
|
|
Visual * pgvSubject;
|
|
};
|
|
};
|
|
|
|
|
|
helper AlphaFlow
|
|
{
|
|
static PRID GetPRID()
|
|
{
|
|
return DUserGetAlphaPRID();
|
|
}
|
|
|
|
struct AlphaKeyFrame : DUser::KeyFrame
|
|
{
|
|
float flAlpha;
|
|
};
|
|
};
|
|
|
|
|
|
helper RectFlow
|
|
{
|
|
static PRID GetPRID()
|
|
{
|
|
return DUserGetRectPRID();
|
|
}
|
|
|
|
struct RectKeyFrame : DUser::KeyFrame
|
|
{
|
|
UINT nChangeFlags;
|
|
RECT rcPxl;
|
|
};
|
|
};
|
|
|
|
|
|
helper RotateFlow
|
|
{
|
|
enum EDirection
|
|
{
|
|
dMin = 0,
|
|
dShort = 0, // Shortest arc
|
|
dLong = 1, // Longer arc
|
|
dCW = 2, // Clock-wise
|
|
dCCW = 3, // Counter clock-wise
|
|
dMax = 3,
|
|
};
|
|
|
|
static PRID GetPRID()
|
|
{
|
|
return DUserGetRotatePRID();
|
|
}
|
|
|
|
struct RotateKeyFrame : DUser::KeyFrame
|
|
{
|
|
float flRotation;
|
|
EDirection nDir;
|
|
};
|
|
};
|
|
|
|
|
|
helper ScaleFlow
|
|
{
|
|
static PRID GetPRID()
|
|
{
|
|
return DUserGetScalePRID();
|
|
}
|
|
|
|
struct ScaleKeyFrame : DUser::KeyFrame
|
|
{
|
|
UINT nChangeFlags;
|
|
float flScale;
|
|
};
|
|
};
|
|
|
|
|
|
helper Sequence
|
|
{
|
|
struct AnimationInfo
|
|
{
|
|
DWORD cbSize;
|
|
};
|
|
};
|
|
|
|
helper DropTarget
|
|
{
|
|
struct DropCI : DUser::Gadget::ConstructInfo
|
|
{
|
|
HWND hwnd;
|
|
Visual * pgvRoot;
|
|
};
|
|
|
|
static DropTarget *
|
|
BuildDropTarget(HWND hwnd, Visual * pgvRoot)
|
|
{
|
|
DropTarget::DropCI ci;
|
|
ZeroMemory(&ci, sizeof(ci));
|
|
ci.hwnd = hwnd;
|
|
ci.pgvRoot = pgvRoot;
|
|
return DropTarget::Build(&ci);
|
|
}
|
|
};
|