#pragma once #include "ZxObjLine.h" #include "mGuiPlot_global.h" //井段 class ZxObjWmLinePlus; class ZxObjSegData; class M_GUI_PLOT_EXPORT ZxObjSegLine : public ZxObjLine { Q_OBJECT ZX_DECLARE_DYNAMIC public: ZxObjSegLine(); ZxObjSegLine(const QString& sName, ZxSubAxisX* pAxisX, ZxSubAxisY* pAxisY); ~ZxObjSegLine(); //得到产液段数据体 ZxObjSegData* getObjSegData(); //得到深度点对应的点Pos QPointF getSegLineDepthPos(); //获得对应数据(长度,位置) bool getSegParamVal(QString sParam, double& dVal); void setSegParamVal(QString sParam, double& dVal); //位置长度 void setSegLineLenght(double dVal); double getSegLineLenght(); //位置 void setSegLineDepth(double dDepth); double getSegLineDepth(); //得到角度 void setSegLineAngle(double dAngle); double getSegLineAngle(); public: // 封装 virtual void initTools(); // 击中 virtual bool hitTest(const QPointF& pt); // 具体击中实现的函数,单纯击中,不做选项的改变 // nOption用int是因为Rect类的击中选项不一致 // nOption为负值,表示未击中,此时返回false virtual bool _runHitTest(const QPointF& pt, int& nOption, int& nSubIndex); // pt1:鼠标Down点,pt2:鼠标Up点 virtual bool runMove(const QPointF& pt1, const QPointF& pt2); //计算偏移后位置 QPointF offsetPoint(QPointF& pt, const QPointF& pt1, const QPointF& pt2); //移动点改变长度 bool calNewPosChangeLenght(QVector& vec, QPointF ptMouse); //移动点改变角度 bool calNewPosChangeAngle(QVector& vec, QPointF ptMouse); virtual bool calNewPos(QVector& vec, QPointF ptMouse); //属性 virtual void fillPtyPano(IxPtyPano* sheet); //得到线的中点Pos QPointF getCenterPosPt(); //得到线中点Val QPointF getCenterValPt(); //改变位置 void calChangedDepth(double dVal, QPointF& ptStart, QPointF& ptEnd); //改变长度 void calChangedLenght(double dVal, QPointF& p1); //改变角度 void calChangedAngle(double dVal, QPointF& p1, QPointF& p2); protected: //得到前一个 ZxObjSegLine* getPreSegLineObj(); //得到后一个 ZxObjSegLine* getNextSegLineObj(); //得到井段的起始深度点 ZxObjWmLinePlus* getWnLineObj(); protected: //产液线对象 ZxObjSegData* m_pData; };