|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
|
|
#include <QObject>
|
|
|
|
|
|
#include <QMap>
|
|
|
|
|
|
#include <QSet>
|
|
|
|
|
|
|
|
|
|
|
|
#include "nmPlot_global.h"
|
|
|
|
|
|
|
|
|
|
|
|
class nmDataAnalyzeManager;
|
|
|
|
|
|
class nmDataFault;
|
|
|
|
|
|
class nmObjLineFault;
|
|
|
|
|
|
class nmDataFracture;
|
|
|
|
|
|
class nmObjLineCrack;
|
|
|
|
|
|
class nmDataOutline;
|
|
|
|
|
|
class nmObjBase;
|
|
|
|
|
|
class nmObjRoundOutline;
|
|
|
|
|
|
class nmObjRectOutline;
|
|
|
|
|
|
class nmObjPolygonOutline;
|
|
|
|
|
|
class nmDataMeasure;
|
|
|
|
|
|
class nmObjLineMeasure;
|
|
|
|
|
|
class nmDataRegionMark;
|
|
|
|
|
|
class nmObjRegionMark;
|
|
|
|
|
|
|
|
|
|
|
|
// 图元与数据绑定协调器,由 nmGuiPlot 托管
|
|
|
|
|
|
class NM_PLOT_EXPORT nmPlotGraphicBinder : public QObject
|
|
|
|
|
|
{
|
|
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
explicit nmPlotGraphicBinder(nmDataAnalyzeManager* pDataMgr, QObject* parent = nullptr);
|
|
|
|
|
|
|
|
|
|
|
|
// 调用:用户画完断层后
|
|
|
|
|
|
void createFaultForGraphic(nmObjLineFault* pGraphic);
|
|
|
|
|
|
|
|
|
|
|
|
// 调用:从文件加载,绑定已有数据到已有图元
|
|
|
|
|
|
void bindFaultToGraphic(nmObjLineFault* pGraphic, nmDataFault* pData);
|
|
|
|
|
|
|
|
|
|
|
|
// 调用:删除图元前
|
|
|
|
|
|
void removeFaultBinding(nmObjLineFault* pGraphic);
|
|
|
|
|
|
|
|
|
|
|
|
// 查找图元对应的数据指针
|
|
|
|
|
|
nmDataFault* getFaultDataFor(nmObjLineFault* pGraphic);
|
|
|
|
|
|
|
|
|
|
|
|
// 名称同步,由图元在 paintBack 中调用
|
|
|
|
|
|
void syncFaultName(nmObjLineFault* pGraphic);
|
|
|
|
|
|
|
|
|
|
|
|
// 调用:用户画完裂缝后
|
|
|
|
|
|
void createCrackForGraphic(nmObjLineCrack* pGraphic);
|
|
|
|
|
|
|
|
|
|
|
|
// 调用:从文件加载,绑定已有裂缝数据到已有图元
|
|
|
|
|
|
void bindCrackToGraphic(nmObjLineCrack* pGraphic, nmDataFracture* pData);
|
|
|
|
|
|
|
|
|
|
|
|
// 调用:删除裂缝图元前
|
|
|
|
|
|
void removeCrackBinding(nmObjLineCrack* pGraphic);
|
|
|
|
|
|
|
|
|
|
|
|
// 查找裂缝图元对应的数据指针
|
|
|
|
|
|
nmDataFracture* getCrackDataFor(nmObjLineCrack* pGraphic);
|
|
|
|
|
|
|
|
|
|
|
|
// 名称同步,由图元在 paintBack 中调用
|
|
|
|
|
|
void syncCrackName(nmObjLineCrack* pGraphic);
|
|
|
|
|
|
|
|
|
|
|
|
// 调用:用户画完圆形边界后
|
|
|
|
|
|
void createOutlineForGraphic(nmObjRoundOutline* pGraphic);
|
|
|
|
|
|
|
|
|
|
|
|
// 调用:用户画完矩形边界后
|
|
|
|
|
|
void createOutlineForGraphic(nmObjRectOutline* pGraphic);
|
|
|
|
|
|
|
|
|
|
|
|
// 调用:用户画完多边形边界后
|
|
|
|
|
|
void createOutlineForGraphic(nmObjPolygonOutline* pGraphic);
|
|
|
|
|
|
|
|
|
|
|
|
// 调用:从文件加载,绑定已有边界数据到已有图元(三种类型通用)
|
|
|
|
|
|
void bindOutlineToGraphic(nmObjBase* pGraphic, nmDataOutline* pData);
|
|
|
|
|
|
|
|
|
|
|
|
// 调用:删除边界图元前(三种类型通用)
|
|
|
|
|
|
void removeOutlineBinding(nmObjBase* pGraphic);
|
|
|
|
|
|
|
|
|
|
|
|
// 查找边界图元对应的数据指针
|
|
|
|
|
|
nmDataOutline* getOutlineDataFor(nmObjBase* pGraphic);
|
|
|
|
|
|
|
|
|
|
|
|
// 名称同步,由边界图元在 paintBack 中调用
|
|
|
|
|
|
void syncOutlineName(nmObjBase* pGraphic);
|
|
|
|
|
|
|
|
|
|
|
|
// 视觉属性兜底同步(画笔宽度、填充色、透明度),由边界图元在 paintBack 中调用
|
|
|
|
|
|
void syncOutlineVisual(nmObjBase* pGraphic);
|
|
|
|
|
|
|
|
|
|
|
|
// 调用:用户画完测量线后
|
|
|
|
|
|
void createMeasureForGraphic(nmObjLineMeasure* pGraphic);
|
|
|
|
|
|
|
|
|
|
|
|
// 调用:删除测量线图元前
|
|
|
|
|
|
void removeMeasureBinding(nmObjLineMeasure* pGraphic);
|
|
|
|
|
|
|
|
|
|
|
|
// 坐标同步:从数据对象读取起点终点,写回图元(拟合功能修改数据后由 paintBack 调用)
|
|
|
|
|
|
void syncMeasurePoints(nmObjLineMeasure* pGraphic);
|
|
|
|
|
|
|
|
|
|
|
|
// ==================== 区域标记图元 ====================
|
|
|
|
|
|
|
|
|
|
|
|
// 调用:用户画完区域标记后
|
|
|
|
|
|
void createRegionMarkForGraphic(nmObjRegionMark* pGraphic);
|
|
|
|
|
|
|
|
|
|
|
|
// 调用:从文件加载,绑定已有区域标记数据到已有图元
|
|
|
|
|
|
void bindRegionMarkToGraphic(nmObjRegionMark* pGraphic, nmDataRegionMark* pData);
|
|
|
|
|
|
|
|
|
|
|
|
// 调用:删除区域标记图元前
|
|
|
|
|
|
void removeRegionMarkBinding(nmObjRegionMark* pGraphic);
|
|
|
|
|
|
|
|
|
|
|
|
// 兜底同步:名称、位置,由区域标记图元在 paintBack 中调用
|
|
|
|
|
|
void syncRegionMarkData(nmObjRegionMark* pGraphic);
|
|
|
|
|
|
|
|
|
|
|
|
// 查找区域标记图元对应的数据指针
|
|
|
|
|
|
nmDataRegionMark* getRegionMarkDataFor(nmObjRegionMark* pGraphic);
|
|
|
|
|
|
|
|
|
|
|
|
// 切换分析时更新绑定的 DataManager,并清理旧图元的残留映射
|
|
|
|
|
|
void updateDataMgr(nmDataAnalyzeManager* pDataMgr);
|
|
|
|
|
|
|
|
|
|
|
|
// 供 dataChanged 信号连接
|
|
|
|
|
|
public slots:
|
|
|
|
|
|
void onDataChanged();
|
|
|
|
|
|
|
|
|
|
|
|
private slots:
|
|
|
|
|
|
// 断层图元信号 → 数据同步
|
|
|
|
|
|
void onGraphicFlowModelChanged(int model);
|
|
|
|
|
|
void onGraphicLeakageChanged(double leakage);
|
|
|
|
|
|
void onGraphicPointsChanged();
|
|
|
|
|
|
void onGraphicVisibleChanged(bool bVisible);
|
|
|
|
|
|
|
|
|
|
|
|
// 裂缝图元信号 → 数据同步
|
|
|
|
|
|
void onGraphicCrackFlowModelChanged(int model);
|
|
|
|
|
|
void onGraphicCrackDfcChanged(double dfc);
|
|
|
|
|
|
void onGraphicCrackDwChanged(double dw);
|
|
|
|
|
|
void onGraphicCrackPointsChanged();
|
|
|
|
|
|
void onGraphicCrackVisibleChanged(bool bVisible);
|
|
|
|
|
|
|
|
|
|
|
|
// 边界图元信号 → 数据同步
|
|
|
|
|
|
void onGraphicOutlinePointsChanged();
|
|
|
|
|
|
void onGraphicOutlineFlowTypeChanged();
|
|
|
|
|
|
void onGraphicOutlineVisibleChanged(bool bVisible);
|
|
|
|
|
|
|
|
|
|
|
|
// 区域标记图元信号 → 数据同步
|
|
|
|
|
|
void onGraphicRegionMarkReservoirTypeChanged(int type);
|
|
|
|
|
|
void onGraphicRegionMarkComKrChanged(double comKr);
|
|
|
|
|
|
void onGraphicRegionMarkComWChanged(double comW);
|
|
|
|
|
|
void onGraphicRegionMarkNetToGrossChanged(double netToGross);
|
|
|
|
|
|
void onGraphicRegionMarkVisibleChanged(bool bVisible);
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
nmDataAnalyzeManager* m_pDataMgr; // 数据中心,不持有,外部注入
|
|
|
|
|
|
|
|
|
|
|
|
// 图元 → 数据 的映射表,供 sender() 反查使用
|
|
|
|
|
|
QMap<nmObjLineFault*, nmDataFault*> m_mapFaultData;
|
|
|
|
|
|
|
|
|
|
|
|
// 已建立信号连接的图元集合,断开时用于精确匹配
|
|
|
|
|
|
QSet<nmObjLineFault*> m_setBoundGraphics;
|
|
|
|
|
|
|
|
|
|
|
|
// 图元 ←→ 数据 双向信号连接(图元 emit → Binder slot → 数据 setter)
|
|
|
|
|
|
void _connectFault(nmObjLineFault* pGraphic, nmDataFault* pData);
|
|
|
|
|
|
|
|
|
|
|
|
// 断开指定图元与本 Binder 的四条信号连接
|
|
|
|
|
|
void _disconnectFault(nmObjLineFault* pGraphic);
|
|
|
|
|
|
|
|
|
|
|
|
// 从数据对象读取值,写入图元本地副本(加载时用)
|
|
|
|
|
|
void _pushFaultDataToGraphic(nmObjLineFault* pGraphic, nmDataFault* pData);
|
|
|
|
|
|
|
|
|
|
|
|
// 裂缝图元 → 数据 的映射表
|
|
|
|
|
|
QMap<nmObjLineCrack*, nmDataFracture*> m_mapCrackData;
|
|
|
|
|
|
|
|
|
|
|
|
// 已建立信号连接的裂缝图元集合
|
|
|
|
|
|
QSet<nmObjLineCrack*> m_setBoundCrackGraphics;
|
|
|
|
|
|
|
|
|
|
|
|
// 裂缝图元 ←→ 数据 双向信号连接
|
|
|
|
|
|
void _connectCrack(nmObjLineCrack* pGraphic, nmDataFracture* pData);
|
|
|
|
|
|
|
|
|
|
|
|
// 断开指定裂缝图元与本 Binder 的五条信号连接
|
|
|
|
|
|
void _disconnectCrack(nmObjLineCrack* pGraphic);
|
|
|
|
|
|
|
|
|
|
|
|
// 从裂缝数据对象读取值,写入图元本地副本(加载时用)
|
|
|
|
|
|
void _pushCrackDataToGraphic(nmObjLineCrack* pGraphic, nmDataFracture* pData);
|
|
|
|
|
|
|
|
|
|
|
|
// 边界图元 → 数据 的映射表(三种边界类型共用)
|
|
|
|
|
|
QMap<nmObjBase*, nmDataOutline*> m_mapOutlineData;
|
|
|
|
|
|
|
|
|
|
|
|
// 已建立信号连接的边界图元集合
|
|
|
|
|
|
QSet<nmObjBase*> m_setBoundOutlineGraphics;
|
|
|
|
|
|
|
|
|
|
|
|
// 边界图元 ←→ 数据 信号连接(三条信号)
|
|
|
|
|
|
void _connectOutline(nmObjBase* pGraphic, nmDataOutline* pData);
|
|
|
|
|
|
|
|
|
|
|
|
// 断开指定边界图元与本 Binder 的信号连接
|
|
|
|
|
|
void _disconnectOutline(nmObjBase* pGraphic);
|
|
|
|
|
|
|
|
|
|
|
|
// 从边界数据对象读取值,写入图元本地副本(加载时用)
|
|
|
|
|
|
void _pushOutlineDataToGraphic(nmObjBase* pGraphic, nmDataOutline* pData);
|
|
|
|
|
|
|
|
|
|
|
|
// 测量线图元 → 数据 的映射表
|
|
|
|
|
|
QMap<nmObjLineMeasure*, nmDataMeasure*> m_mapMeasureData;
|
|
|
|
|
|
|
|
|
|
|
|
// ==================== 区域标记图元 ====================
|
|
|
|
|
|
|
|
|
|
|
|
// 区域标记图元 → 数据 的映射表
|
|
|
|
|
|
QMap<nmObjRegionMark*, nmDataRegionMark*> m_mapRegionMarkData;
|
|
|
|
|
|
|
|
|
|
|
|
// 已建立信号连接的区域标记图元集合
|
|
|
|
|
|
QSet<nmObjRegionMark*> m_setBoundRegionMarkGraphics;
|
|
|
|
|
|
|
|
|
|
|
|
// 区域标记图元 ←→ 数据 信号连接
|
|
|
|
|
|
void _connectRegionMark(nmObjRegionMark* pGraphic, nmDataRegionMark* pData);
|
|
|
|
|
|
|
|
|
|
|
|
// 断开指定区域标记图元与本 Binder 的信号连接
|
|
|
|
|
|
void _disconnectRegionMark(nmObjRegionMark* pGraphic);
|
|
|
|
|
|
|
|
|
|
|
|
// 从区域标记数据对象读取值,写入图元本地副本(加载时用)
|
|
|
|
|
|
void _pushRegionMarkDataToGraphic(nmObjRegionMark* pGraphic, nmDataRegionMark* pData);
|
|
|
|
|
|
};
|