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.
nmWTAI-Platform/Src/nmNum/nmPlot/nmObjRegionMarkTool.cpp

109 lines
2.0 KiB
C++

#include <QPainter>
#include "nmDefines.h"
#include "nmObjRegionMark.h"
#include "nmObjRegionMarkTool.h"
#include "ZxBaseUtil.h"
#include "nmObjRegion.h"
nmObjRegionMarkTool::nmObjRegionMarkTool()
: nmObjToolBase()
, m_pCurPlot(nullptr)
{
setText(tr("nObjRegionMarkTool"));
m_oNot = NMOT_RegionMark;
}
nmObjRegionMarkTool::nmObjRegionMarkTool(ZxPlot* pCurPlot)
: nmObjToolBase()
, m_pCurPlot(pCurPlot)
{
setText(tr("nObjRegionMarkTool"));
m_oNot = NMOT_RegionMark;
}
bool nmObjRegionMarkTool::onLeftDown(const QPointF& pt)
{
if (nullptr == m_pObj) // 绘图对象尚未创建
{
m_ptStart = pt;
m_bTracking = true;
return true;
}
else // 已绑定绘图对象
{
if (nmObjToolBase::onLeftDown(pt))
{
m_ptStart = pt;
m_bTracking = true;
return true;
}
return false;
}
}
bool nmObjRegionMarkTool::onLeftUp(const QPointF& pt)
{
if (nullptr == m_pObj)
{
getView()->setSnapshotMode(false);
if (m_bTracking)
{
m_bTracking = false;
}
QVector<QPointF> vec;
vec << pt;
emit sigPtsFinished(vec);
return true;
}
else // 已绑定绘图对象
{
return nmObjToolBase::onLeftUp(pt);
}
}
bool nmObjRegionMarkTool::onMouseMove(const QPointF& pt)
{
if(NULL == m_pObj) { // 绘图对象尚未创建(鼠标选点ing
m_ptMove = pt;
if(m_bTracking) {
updateLastMoveArea(true);
}
return true;
} else { // 已绑定绘图对象
return nmObjToolBase::onMouseMove(pt);
}
}
void nmObjRegionMarkTool::onPaint(QPainter* painter, const ZxPaintParam& param)
{
nmObjRegionMark* pObj = dynamic_cast<nmObjRegionMark*>(m_pObj);
if (pObj == nullptr)
{
Qt::CursorShape o = Qt::ArrowCursor;
changeCursor(o);
}
}
Qt::CursorShape nmObjRegionMarkTool::getCursorBy(const int& nOption, \
const int& nSubIndex)
{
if (nOption < 0)
{
return Qt::ArrowCursor;
}
ObjHitOption oHitOption = (ObjHitOption)nOption;
if (oHitOption == OHO_Point)
{
return (Qt::SizeAllCursor);
}
return Qt::ArrowCursor;
}