文档详情

C++模板实例.doc

发布:2017-12-16约6.38千字共7页下载文档
文本预览下载声明
#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
显示全部
相似文档