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/Src/nmNum/nmData/nmDataRegionMark.cpp

176 lines
5.4 KiB
C++

#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;
}