|
|
#include "nmDataRegionMark.h"
|
|
|
#include "ZxSerializer.h"
|
|
|
|
|
|
|
|
|
nmDataRegionMark::nmDataRegionMark()
|
|
|
: m_sRegionMarkName()
|
|
|
, m_bSelectRegion(false)
|
|
|
, m_ptPos()
|
|
|
, m_reservoirType()
|
|
|
, m_comKr()
|
|
|
, m_comW()
|
|
|
, m_netToGross()
|
|
|
, m_clrBackground()
|
|
|
, m_bPlotVisible(true)
|
|
|
{
|
|
|
m_reservoirType = nmDataAttribute("Reservoir type", "Homogeneous", "", UNIT_TYPE_DIMENSIONLESS, QStringList() << "Homogeneous" << "Dual porosity pseudo steady state", QStringList());
|
|
|
m_comKr = nmDataAttribute("ComKr", 1.0, "", UNIT_TYPE_DIMENSIONLESS, QStringList(), QStringList());
|
|
|
m_comW = nmDataAttribute("ComW", 1.0, "", UNIT_TYPE_DIMENSIONLESS, QStringList(), QStringList());
|
|
|
m_netToGross = nmDataAttribute("NetToGross", 1.0, "", UNIT_TYPE_DIMENSIONLESS, QStringList(), QStringList());
|
|
|
|
|
|
// 图元可见性,默认为true
|
|
|
}
|
|
|
|
|
|
nmDataRegionMark::nmDataRegionMark(const nmDataRegionMark& other) {
|
|
|
*this = other; // 使用赋值运算符实现
|
|
|
}
|
|
|
|
|
|
nmDataRegionMark& nmDataRegionMark::operator=(const nmDataRegionMark& other) {
|
|
|
if (this != &other) {
|
|
|
// 拷贝基本类型和Qt对象(自动深拷贝)
|
|
|
m_sRegionMarkName = other.m_sRegionMarkName;
|
|
|
m_bSelectRegion = other.m_bSelectRegion;
|
|
|
m_ptPos = other.m_ptPos;
|
|
|
m_reservoirType = other.m_reservoirType;
|
|
|
m_comKr = other.m_comKr;
|
|
|
m_comW = other.m_comW;
|
|
|
m_netToGross = other.m_netToGross;
|
|
|
m_clrBackground = other.m_clrBackground;
|
|
|
|
|
|
m_bPlotVisible = other.m_bPlotVisible;
|
|
|
}
|
|
|
return *this;
|
|
|
}
|
|
|
|
|
|
nmDataRegionMark::~nmDataRegionMark(){
|
|
|
}
|
|
|
|
|
|
// 序列化 nmDataRegionMark 为 RapidJSON Value
|
|
|
rapidjson::Value nmDataRegionMark::ToJsonValue(rapidjson::Document::AllocatorType& allocator) const
|
|
|
{
|
|
|
// 创建一个 RapidJSON 对象类型的值
|
|
|
rapidjson::Value regionMarkObject(rapidjson::kObjectType);
|
|
|
|
|
|
// 序列化名称
|
|
|
// 将 QString 转换为 UTF-8 编码的 C 字符串,并添加到 JSON 中
|
|
|
regionMarkObject.AddMember("RegionName", rapidjson::Value(m_sRegionMarkName.toStdString().c_str(), allocator).Move(), allocator);
|
|
|
|
|
|
// 序列化 nmDataAttribute 类型的成员
|
|
|
// 调用 nmDataAttribute 自身的 ToJsonValue 方法进行递归序列化
|
|
|
regionMarkObject.AddMember("ReservoirType", m_reservoirType.ToJsonValue(allocator), allocator);
|
|
|
regionMarkObject.AddMember("ComKr", m_comKr.ToJsonValue(allocator), allocator);
|
|
|
regionMarkObject.AddMember("ComW", m_comW.ToJsonValue(allocator), allocator);
|
|
|
regionMarkObject.AddMember("NetToGross", m_netToGross.ToJsonValue(allocator), allocator);
|
|
|
|
|
|
// 序列化图元可见性 (m_bPlotVisible)
|
|
|
regionMarkObject.AddMember("PlotVisible", m_bPlotVisible, allocator);
|
|
|
|
|
|
return regionMarkObject; // 返回序列化后的 RapidJSON Value
|
|
|
}
|
|
|
|
|
|
// 从 RapidJSON Value 反序列化数据到 nmDataRegionMark
|
|
|
void nmDataRegionMark::FromJsonValue(const rapidjson::Value& jsonValue)
|
|
|
{
|
|
|
// 反序列化名称
|
|
|
if (jsonValue.HasMember("RegionMarkName") && jsonValue["RegionMarkName"].IsString()) {
|
|
|
m_sRegionMarkName = QString::fromUtf8(jsonValue["RegionMarkName"].GetString());
|
|
|
}
|
|
|
|
|
|
// 反序列化 nmDataAttribute 类型的成员
|
|
|
// 调用 nmDataAttribute 自身的 FromJsonValue 方法进行递归反序列化
|
|
|
if (jsonValue.HasMember("ReservoirType") && jsonValue["ReservoirType"].IsObject()) {
|
|
|
m_reservoirType.FromJsonValue(jsonValue["ReservoirType"]);
|
|
|
}
|
|
|
if (jsonValue.HasMember("ComKr") && jsonValue["ComKr"].IsObject()) {
|
|
|
m_comKr.FromJsonValue(jsonValue["ComKr"]);
|
|
|
}
|
|
|
if (jsonValue.HasMember("ComW") && jsonValue["ComW"].IsObject()) {
|
|
|
m_comW.FromJsonValue(jsonValue["ComW"]);
|
|
|
}
|
|
|
if (jsonValue.HasMember("NetToGross") && jsonValue["NetToGross"].IsObject()) {
|
|
|
m_netToGross.FromJsonValue(jsonValue["NetToGross"]);
|
|
|
}
|
|
|
|
|
|
// 反序列化图元可见性 (m_bPlotVisible)
|
|
|
if (jsonValue.HasMember("PlotVisible") && jsonValue["PlotVisible"].IsBool()) {
|
|
|
m_bPlotVisible = jsonValue["PlotVisible"].GetBool();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
QString nmDataRegionMark::getRegionMarkName() const {
|
|
|
return m_sRegionMarkName;
|
|
|
}
|
|
|
|
|
|
void nmDataRegionMark::setRegionMarkName(QString sRegionMarkName) {
|
|
|
m_sRegionMarkName = sRegionMarkName;
|
|
|
}
|
|
|
|
|
|
QPointF nmDataRegionMark::getPtPos() const {
|
|
|
return m_ptPos;
|
|
|
}
|
|
|
|
|
|
void nmDataRegionMark::setPtPos(const QPointF& ptPos) {
|
|
|
m_ptPos = ptPos;
|
|
|
}
|
|
|
|
|
|
// Getter and Setter for m_reservoirType
|
|
|
nmDataAttribute& nmDataRegionMark::getReservoirType() {
|
|
|
return m_reservoirType;
|
|
|
}
|
|
|
|
|
|
void nmDataRegionMark::setReservoirType(const nmDataAttribute& reservoirType) {
|
|
|
m_reservoirType = reservoirType;
|
|
|
}
|
|
|
|
|
|
|
|
|
bool nmDataRegionMark::isSelectRegion() const {
|
|
|
return m_bSelectRegion;
|
|
|
}
|
|
|
|
|
|
void nmDataRegionMark::setSelectRegion(bool bSelectRegion) {
|
|
|
m_bSelectRegion = bSelectRegion;
|
|
|
}
|
|
|
|
|
|
// Getter and Setter for m_comKr
|
|
|
nmDataAttribute& nmDataRegionMark::getComKr() {
|
|
|
return m_comKr;
|
|
|
}
|
|
|
|
|
|
void nmDataRegionMark::setComKr(const nmDataAttribute& comKr) {
|
|
|
m_comKr = comKr;
|
|
|
}
|
|
|
|
|
|
// Getter and Setter for m_comW
|
|
|
nmDataAttribute& nmDataRegionMark::getComW() {
|
|
|
return m_comW;
|
|
|
}
|
|
|
|
|
|
void nmDataRegionMark::setComW(const nmDataAttribute& comW) {
|
|
|
m_comW = comW;
|
|
|
}
|
|
|
|
|
|
// Getter and Setter for m_netToGross
|
|
|
nmDataAttribute& nmDataRegionMark::getNetToGross() {
|
|
|
return m_netToGross;
|
|
|
}
|
|
|
|
|
|
void nmDataRegionMark::setNetToGross(const nmDataAttribute& netToGross) {
|
|
|
m_netToGross = netToGross;
|
|
|
}
|
|
|
|
|
|
QColor nmDataRegionMark::getBackgroundColor() const {
|
|
|
return m_clrBackground;
|
|
|
}
|
|
|
|
|
|
void nmDataRegionMark::setBackgroundColor(const QColor& clrBackground) {
|
|
|
m_clrBackground = clrBackground;
|
|
|
}
|
|
|
|
|
|
bool nmDataRegionMark::getPlotVisible() const{
|
|
|
return m_bPlotVisible;
|
|
|
}
|
|
|
|
|
|
void nmDataRegionMark::setPlotVisible(const bool newState) {
|
|
|
m_bPlotVisible = newState;
|
|
|
}
|