C++模板实例.doc
文本预览下载声明
#pragma once
#include TlCGCore.h
#include SingChannelCopyTool.h
enum CGNODE_KEYFRAME
{
CGEFFECT_NOT_KEYFRAME ,
CGEFFECT_HAS_KEYFRAME ,
};
enum TLEFX_HITKIND
{
CGEFX_HITKIND_NULL = 0,
CGEFX_HITKIND_LINE,
CGEFX_HITKIND_KEYFRAMERECT,
CGEFX_HITKIND_KEYFRAMELINE,
CGEFX_HITKIND_HEADKEYFRAME,
CGEFX_HITKIND_TAILKEYFRAME,
};
//影响透明度的数据结构,
template typename T
struct CVxRatioChanged
{
IVxCGNode* m_pNode;
T m_fRatio;
bool m_bChaged;
CVxRatioChanged()
{
m_pNode = NULL;
m_bChaged = false;
}
};
//影响头尾关键帧的数据结构,一次操作过程,最多影响两个关键帧
template typename T
struct CVxHeadTailRatioChanged
{
IVxCGNode* m_pNode;
bool m_bChaged;
int m_iKeyFrameNum;
T m_fRatio;
CVxHeadTailRatioChanged()
{
m_pNode = NULL;
m_bChaged = false;
m_iKeyFrameNum = -1;
}
};
//移动关键帧矩形时。
template typename T
struct CVxKeyFrameRatioChanged
{
IVxCGNode* m_pNode;
bool m_bChanged;
int m_iKeyFrameNum;
T m_fRatio;
int m_iCurFrameNum;
CVxKeyFrameRatioChanged()
{
m_pNode = NULL;
m_bChanged = false;
m_iKeyFrameNum = -1;
m_iCurFrameNum = -1;
m_fRatio = - 1.0;
}
};
//移动两关键帧两线
templatetypename T
struct CVxKeyFrameLineRatioChanged
{
IVxCGNode* m_pNode;
bool m_bChanged;
int m_iKeyFrameNum1;
T m_fRatio1;
int m_iKeyFrameNum2;
float m_fRatio2;
CVxKeyFrameLineRatioChanged()
{
m_pNode = NULL;
m_bChanged = false;
m_iKeyFrameNum1 = -1;
m_iKeyFrameNum2 = -1;
m_fRatio1 = -1.0;
m_fRatio2 = -1.0;
}
};
templatetypename T
class CCGKeyFrameRectTool
{
public:
CCGKeyFrameRectTool(void);
virtual ~CCGKeyFrameRectTool(void);
public:
CVxPoint GetKeyPoint(long frame,float ratio,CVxRect keyContent);
void GetSubKeysRectTools(CCGNodeTrackRect *pCGNodeTrackRectTool,IVxCGNode *pNode, IVxEffect* pEffect, CVxRect realRect);
void SetChannel( int iChannel);
// 0----不在调整线上,1----在调整线上,2-----点到了关键帧点矩形,----点到了关键帧连线。
int HitTest(CCGNodeTrackRect *pCGNodeTrackRectTool,IVxCGNode *pNode, IVxE
显示全部