Leaked source code of windows server 2003
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.
 
 
 
 
 
 

186 lines
5.2 KiB

#if !defined(CTRL__Flow_h__INCLUDED)
#define CTRL__Flow_h__INCLUDED
#pragma once
#if ENABLE_MSGTABLE_API
//------------------------------------------------------------------------------
class DuFlow :
public FlowImpl<DuFlow, DUser::SGadget>
{
// Construction
public:
inline DuFlow();
// Public API
public:
dapi HRESULT ApiAddRef(Flow::AddRefMsg *) { AddRef(); return S_OK; }
dapi HRESULT ApiRelease(Flow::ReleaseMsg *) { Release(); return S_OK; }
dapi HRESULT ApiGetPRID(Flow::GetPRIDMsg * pmsg) { pmsg->prid = 0; return S_OK; }
dapi HRESULT ApiGetKeyFrame(Flow::GetKeyFrameMsg * pmsg);
dapi HRESULT ApiSetKeyFrame(Flow::SetKeyFrameMsg * pmsg);
dapi HRESULT ApiOnReset(Flow::OnResetMsg * pmsg);
dapi HRESULT ApiOnAction(Flow::OnActionMsg * pmsg);
// Implementation
protected:
inline void AddRef();
inline void Release();
// Data
protected:
UINT m_cRef;
};
//------------------------------------------------------------------------------
class DuAlphaFlow :
public AlphaFlowImpl<DuAlphaFlow, DuFlow>
{
// Construction
public:
static HRESULT InitClass();
HRESULT PostBuild(DUser::Gadget::ConstructInfo * pci);
// Operations
public:
// Public API:
public:
dapi HRESULT ApiGetPRID(Flow::GetPRIDMsg * pmsg) { pmsg->prid = s_pridAlpha; return S_OK; }
dapi HRESULT ApiGetKeyFrame(Flow::GetKeyFrameMsg * pmsg);
dapi HRESULT ApiSetKeyFrame(Flow::SetKeyFrameMsg * pmsg);
dapi HRESULT ApiOnReset(Flow::OnResetMsg * pmsg);
dapi HRESULT ApiOnAction(Flow::OnActionMsg * pmsg);
// Implementaton
protected:
void SetVisualAlpha(Visual * pgvSubject, float flAlpha);
inline float BoxAlpha(float flAlpha) const;
// Data
public:
static PRID s_pridAlpha;
protected:
float m_flStart;
float m_flEnd;
};
//------------------------------------------------------------------------------
class DuRectFlow :
public RectFlowImpl<DuRectFlow, DuFlow>
{
// Construction
public:
static HRESULT InitClass();
HRESULT PostBuild(DUser::Gadget::ConstructInfo * pci);
// Operations
public:
// Public API:
public:
dapi HRESULT ApiGetPRID(Flow::GetPRIDMsg * pmsg) { pmsg->prid = s_pridRect; return S_OK; }
dapi HRESULT ApiGetKeyFrame(Flow::GetKeyFrameMsg * pmsg);
dapi HRESULT ApiSetKeyFrame(Flow::SetKeyFrameMsg * pmsg);
dapi HRESULT ApiOnReset(Flow::OnResetMsg * pmsg);
dapi HRESULT ApiOnAction(Flow::OnActionMsg * pmsg);
// Implementaton
protected:
// Data
public:
static PRID s_pridRect;
protected:
POINT m_ptStart;
POINT m_ptEnd;
SIZE m_sizeStart;
SIZE m_sizeEnd;
UINT m_nChangeFlags;
};
//------------------------------------------------------------------------------
class DuRotateFlow :
public RotateFlowImpl<DuRotateFlow, DuFlow>
{
// Construction
public:
static HRESULT InitClass();
HRESULT PostBuild(DUser::Gadget::ConstructInfo * pci);
// Operations
public:
// Public API:
public:
dapi HRESULT ApiGetPRID(Flow::GetPRIDMsg * pmsg) { pmsg->prid = s_pridRotate; return S_OK; }
dapi HRESULT ApiGetKeyFrame(Flow::GetKeyFrameMsg * pmsg);
dapi HRESULT ApiSetKeyFrame(Flow::SetKeyFrameMsg * pmsg);
dapi HRESULT ApiOnReset(Flow::OnResetMsg * pmsg);
dapi HRESULT ApiOnAction(Flow::OnActionMsg * pmsg);
// Implementaton
protected:
void ComputeAngles();
inline void MarkDirty();
// Data
public:
static PRID s_pridRotate;
protected:
float m_flRawStart; // User specified starting angle
float m_flRawEnd;
float m_flActualStart;// Actually computed starting angle
float m_flActualEnd;
RotateFlow::EDirection
m_nDir;
BOOL m_fDirty; // State has changed since last updated
};
//------------------------------------------------------------------------------
class DuScaleFlow :
public ScaleFlowImpl<DuScaleFlow, DuFlow>
{
// Construction
public:
static HRESULT InitClass();
HRESULT PostBuild(DUser::Gadget::ConstructInfo * pci);
// Operations
public:
// Public API:
public:
dapi HRESULT ApiGetPRID(Flow::GetPRIDMsg * pmsg) { pmsg->prid = s_pridScale; return S_OK; }
dapi HRESULT ApiGetKeyFrame(Flow::GetKeyFrameMsg * pmsg);
dapi HRESULT ApiSetKeyFrame(Flow::SetKeyFrameMsg * pmsg);
dapi HRESULT ApiOnReset(Flow::OnResetMsg * pmsg);
dapi HRESULT ApiOnAction(Flow::OnActionMsg * pmsg);
// Implementaton
protected:
// Data
public:
static PRID s_pridScale;
protected:
float m_flStart;
float m_flEnd;
};
#endif // ENABLE_MSGTABLE_API
#include "Flow.inl"
#endif // CTRL__Flow_h__INCLUDED