You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

49 lines
1.4 KiB
C++

#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;
};