#pragma once #include "nmObjRect.h" #include "nmDefines.h" #include "nmPlot_global.h" #include "nmDataOutline.h" // 数值试井绘图对象(矩形) class NM_PLOT_EXPORT nmObjRectOutline : public nmObjRect { Q_OBJECT ZX_DECLARE_DYNAMIC public: nmObjRectOutline(); nmObjRectOutline(const QString& sName, \ ZxSubAxisX* pAxisX, \ ZxSubAxisY* pAxisY); ~nmObjRectOutline(); // 设置初始参数 virtual void init(const QString& sName, \ ZxSubAxisX* pAxisX, \ ZxSubAxisY* pAxisY) override; // 设置Tools virtual void initTools() override; public: // 击中 virtual bool hitTest(const QPointF& pt) override; // 具体击中实现的函数,单纯击中,不做选项的改变 // nOption用int是因为Rect类的击中选项不一致 // nOption为负值,表示未击中,此时返回false virtual bool _runHitTest(const QPointF& pt, \ int& nOption, int& nSubIndex) override; public: // 属性填充内容 virtual void fillPtyPano(IxPtyPano* sheet) override; // 成果序列化 virtual void onSerialize(ZxSerializer* ser) override; virtual void onDeserialize(ZxSerializer* ser) override; // 模版处理(从道理上讲,模版处理与成果序列化机制完全一致) // 但此处放开是为了调用方更灵活的控制 virtual void onLoadTempl(ZxSerializer* ser) override; virtual void onSaveTempl(ZxSerializer* ser) override; virtual void paintBack(QPainter* painter, \ const ZxPaintParam& param) override; // 设置所有的Pos,外界调用 virtual void setAllPos(QVector vecPoss, QVector* pVecIndexes = NULL) override; // 创建后被调用 virtual void afterCreated() override; // 删除矩形边界数据对象 virtual void removeData() override; nmDataOutline* getOutlineData() const; void setOutlineData(nmDataOutline* newOutlineData); // 新增方法,按照绘图坐标系更新矩形边界四个点的顺序为【左上角、右上角、右下角、左下角】顺时针排布 void reorderPoints(QVector& points); // 上边界流动类型 void setTopOutlineFlowType(int newValue); int getTopOutlineFlowType(); // 右边界流动类型 void setRightOutlineFlowType(int newValue); int getRightOutlineFlowType(); // 下边界流动类型 void setBottomOutlineFlowType(int newValue); int getBottomOutlineFlowType(); // 左边界流动类型 void setLeftOutlineFlowType(int newValue); int getLeftOutlineFlowType(); public slots: // 图元状态改变 void onObjVisibleChanged(bool bIsVisible); public: QVector m_vFlowTypeList; // 边界的压力类型 RectBoundPos m_eChangeOutlineType; // 需要修改哪个边界的压力类型 nmDataOutline* m_outlineData; // 边界数据 };