#pragma once #include "HTrackerCommon.h" #include "HTrackerHandleCalculator.h" #include "HTrackerTransform.h" #include "HTrackerDrawer.h" class CSigmaDoc; class TransformMotiveGraphDrawer; class ScaleMotionGraphDrawer; class PanMotionGraphDrawer; class CHSimpleTracker { public: enum HTRACKER_STATUS { HTRACKER_STATUS_HIDE, HTRACKER_STATUS_NOT_DRAG, //δÍÏק״̬ HTRACKER_STATUS_DRAGING //ÍÏק״̬ }; public: CHSimpleTracker(); ~CHSimpleTracker(); bool Create(CSigmaDoc * pDoc, CRect boundRect); void LButtonDown(int mouseX, int mouseY); void MouseMove(CDC * pDC, int mouseX, int mouseY); void LButtonUp(int mouseX, int mouseY, CDC * pDC); void Draw(CDC * pDC); void Reset(); HTRACKER_HANDLE_KIND HitTest(int mouseX, int mouseY); CRect GetBoundRect(); protected: void TranslateBoundRect(CRect & boundRectOut); HTRACKER_TRANSFORM_KIND JudgeTransformKind(HTRACKER_HANDLE_KIND kind); void ChangeGraphDrawer(); void ChangeHtrackerDrawerState(); private: CRect m_boundRect; CSigmaDoc * m_pDoc; HTRACKER_STATUS m_status; int m_motionCount; HTrackerDrawer m_drawer; TransformMotiveGraphDrawer * m_pTMGDrawer; ScaleMotionGraphDrawer * m_pScaleMotionGraphDrawer; PanMotionGraphDrawer * m_pPanMotionGraphDrawer; HTRACKER_TRANSFORM_KIND m_transformKind; HTrackerHandleCalculator m_handleCalctor; HTrackerTransform m_trackerTransform; };