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.
nmWATI/Src/nmNum/nmPlot/nmObjPointTool.cpp

143 lines
3.2 KiB
C++

#include <QPainter>
//#include "ZxBaseUtil.h"
#include "nmObjPoint.h"
#include "nmObjPointTool.h"
nmObjPointTool::nmObjPointTool() : nmObjToolBase()
{
setText(tr("nObjPointTool"));
m_oNot = NOT_Point;
}
bool nmObjPointTool::onLeftDown(const QPointF& pt)
{
if (NULL == 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 nmObjPointTool::onMouseMove(const QPointF& pt)
{
if (NULL == m_pObj) //绘图对象尚未创建
{
m_ptMove = pt;
if (m_bTracking)
{
m_rtTracker = getView()->adjustRectFitViewAspect(getTrackRect());
updateLastMoveArea(true);
}
return true;
}
else //业已绑定绘图对象
{
return nmObjToolBase::onMouseMove(pt);
}
}
bool nmObjPointTool::onLeftUp(const QPointF& pt)
{
if (NULL == 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 nmObjPointTool::onLeftDoubleClick(const QPointF& pt)
{
return nmObjToolBase::onLeftDoubleClick(pt);
}
bool nmObjPointTool::onMouseWheel(const QPointF& pt, int delta)
{
return nmObjToolBase::onMouseWheel(pt, delta);
}
void nmObjPointTool::onPaint(QPainter* painter, const ZxPaintParam& param)
{
nmObjPoint* pObj = dynamic_cast<nmObjPoint*>(m_pObj);
if (pObj == NULL)
{
painter->save();
QPointF pt1 = getCurrentPos();
float r = 1.5f;
int nStyle = 3;
bool bFilling = true;
QColor clr = QColor(0, 255, 0);
ZxDrawHelper::drawPoint(painter, pt1, nStyle,
r, bFilling, clr);
Qt::CursorShape o = Qt::CrossCursor;
changeCursor(o);
painter->restore();
}
else
{
if (m_bTracking)
{
if (m_oHitOption == OHO_Point)
{
painter->save();
QPointF pt1 = getCurrentPos();
float r = pObj->getDotRadius();
int nStyle = pObj->getDotStyle();
bool bFilling = pObj->getDotFilling();
QColor clr = pObj->getDotColor();
ZxDrawHelper::drawPoint(painter, pt1, nStyle,
r, !bFilling, clr);
Qt::CursorShape o = getCursorBy((int)m_oHitOption, pObj->m_nHitIndex);
changeCursor(o);
painter->restore();
}
}
}
}
Qt::CursorShape nmObjPointTool::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;
}