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.

69 lines
2.2 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#pragma once
#include <DrawModel/Curve.h>
#include "HTrackerCommon.h"
#include "HTrackerHandleCalculator.h"
#include "HTrackerDrawer.h"
#include "HTrackerTransform.h"
#include "RubberLine.h"
#include "HTrackerSwitch.h"
#include "HTrackerBound.h"
class CSigmaDoc;
class TransformMotiveGraphDrawer;
class ScaleMotionGraphDrawer;
class PanMotionGraphDrawer;
class RotationMotionGraphDrawer;
class ShearMotionGraphDrawer;
class SelectedItemMotionGraphDrawer;
class HTracker
{
public:
enum HTRACKER_STATUS
{
HTRACKER_STATUS_HIDE,
HTRACKER_STATUS_NOT_DRAG, //未拖拽状态
HTRACKER_STATUS_DRAGING //拖拽状态
};
public:
HTracker();
~HTracker();
bool Create(CSigmaDoc * pDoc, CPositionList & selectionSet);
void LButtonDown(int mouseX, int mouseY);
void MouseMove(CDC * pDC, int mouseX, int mouseY);
void LButtonUp(int mouseX, int mouseY);
void Draw(CDC * pDC);
bool IsDraging();
void Reset();
//函数功能:测试鼠标点是否在Handle上。
//返回值:在Handle上返回正数。数值代表是哪个Handle。不在Handle上返回0。
HTRACKER_HANDLE_KIND HitTest(int mouseX, int mouseY);
bool IsRotateAndShearState();
protected:
void CopySelectionSet(CPositionList & selectionSet);
void TranslateBoundRect(CRect & boundRectOut);
HTRACKER_TRANSFORM_KIND JudgeTransformKind(HTRACKER_HANDLE_KIND kind);
void ChangeGraphDrawer();
void ChangeHtrackerDrawerState();
private:
HTRACKER_STATUS m_status;
CPositionList m_selectionSet; //选择集
CRect m_boundRect; //tracker的外包矩形
HTrackerBound m_bound;
int m_HandleSize; //Handle宽度 单位为像素
HTrackerHandleCalculator m_handleCalctor;
HTrackerDrawer m_drawer;
HTrackerTransform m_trackerTransform;
CSigmaDoc * m_pDoc;
TransformMotiveGraphDrawer* m_pTMGDrawer;
ScaleMotionGraphDrawer * m_pScaleMotionGraphDrawer;
PanMotionGraphDrawer * m_pPanMotionGraphDrawer;
RotationMotionGraphDrawer * m_pRotationMotionGraphDrawer;
ShearMotionGraphDrawer * m_pShearMotionGraphDrawer;
int m_motionCount;
HTrackerSwitch m_switch;
HTRACKER_TRANSFORM_KIND m_transformKind;
SelectedItemMotionGraphDrawer * m_pSIMGDrawer;
};