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