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.
nmWTAI-Platform/Include/nmNum/nmPlot/nmObjRegionMark.h

136 lines
3.5 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#pragma once
#include "nmDefines.h"
#include "nmPlot_global.h"
#include "nmObjBase.h"
#include "ZxPlot.h"
class nmPlotGraphicBinder;
class nmDataRegionMark;
class NM_PLOT_EXPORT nmObjRegionMark : public nmObjBase {
Q_OBJECT
ZX_DECLARE_DYNAMIC
public:
nmObjRegionMark();
nmObjRegionMark(const QString& sName, \
ZxSubAxisX* pAxisX, \
ZxSubAxisY* pAxisY, \
int RegionMarkCount);
~nmObjRegionMark();
//初始化
virtual void init(const QString& sName, \
ZxSubAxisX* pAxisX, \
ZxSubAxisY* pAxisY) override;
//初始化工具
virtual void initTools() override;
// 设置图元对象的属性标志
virtual void initFlags() 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;
// 击中后ButtonUp后的处理
// pt1:鼠标Down点pt2鼠标Up点
virtual bool runMove(const QPointF& pt1, const QPointF& pt2) override;
// 创建后被调用
virtual void afterCreated() override;
// 删除区域标记数据对象
virtual void removeData() override;
public:
virtual void paintBack(QPainter* painter, \
const ZxPaintParam& param) override;
// 属性填充内容
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;
public:
// 填充背景颜色
QColor getBackgrdColor() const;
void setBackgrdColor(QColor color);
// 根据索引生成颜色
QColor generateColor(int index);
void setColorIndex(int newIndex);
int getColorIndex() const;
void setResevoirType(int newResevoirType);
int getResevoirType();
void setComKr(double newComkr);
double getComKr();
void setComW(double newComW);
double getComW();
void setNetToGross(double newNetToGross);
double getNetToGross();
void setSelectRegion(bool select);
bool getSelectRegion() const;
// 注入 Binder 指针
void setGraphicBinder(nmPlotGraphicBinder* pBinder) { m_pGraphicBinder = pBinder; }
// 通过 Binder 查询关联的数据对象(供 nmObjRegion 使用)
nmDataRegionMark* getRegionMarkData() const;
signals:
// 储层类型变更
void sigResevoirTypeChanged(int type);
// 综合压缩系数(Kr)变更
void sigComKrChanged(double comKr);
// 综合压缩系数(W)变更
void sigComWChanged(double comW);
// 净毛比变更
void sigNetToGrossChanged(double netToGross);
// 可见性变更
void sigRegionMarkVisibleChanged(bool bVisible);
public slots:
// 图元状态改变
void onObjVisibleChanged(bool bIsVisible);
private:
bool m_bSelectRegion;
int m_iColorIndex; //颜色索引
QColor m_clrBackgrd;//填充颜色
// 本地属性副本(与数据中心同步)
int m_reservoirType; // 0=Homogeneous, 1=Dual porosity
double m_comKr;
double m_comW;
double m_netToGross;
nmPlotGraphicBinder* m_pGraphicBinder;
QPixmap m_icon;
};