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

192 lines
5.8 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.

#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);
// 序列化名称
regionMarkObject.AddMember("RegionMarkName", rapidjson::Value(m_sRegionMarkName.toStdString().c_str(), allocator).Move(), allocator);
// 序列化位置 (m_ptPos)
rapidjson::Value ptPosObj(rapidjson::kObjectType);
ptPosObj.AddMember("X", m_ptPos.x(), allocator);
ptPosObj.AddMember("Y", m_ptPos.y(), allocator);
regionMarkObject.AddMember("PtPos", ptPosObj, allocator);
// 序列化 nmDataAttribute 类型的成员
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 反序列化数据到 nmDataRegionMark
void nmDataRegionMark::FromJsonValue(const rapidjson::Value& jsonValue)
{
// 反序列化名称
if (jsonValue.HasMember("RegionMarkName") && jsonValue["RegionMarkName"].IsString()) {
m_sRegionMarkName = QString::fromUtf8(jsonValue["RegionMarkName"].GetString());
}
// 反序列化位置 (m_ptPos)
if (jsonValue.HasMember("PtPos") && jsonValue["PtPos"].IsObject()) {
const rapidjson::Value& ptPosObj = jsonValue["PtPos"];
double x = 0.0, y = 0.0;
if (ptPosObj.HasMember("X") && ptPosObj["X"].IsDouble()) {
x = ptPosObj["X"].GetDouble();
}
if (ptPosObj.HasMember("Y") && ptPosObj["Y"].IsDouble()) {
y = ptPosObj["Y"].GetDouble();
}
m_ptPos = QPointF(x, y);
}
// 反序列化 nmDataAttribute 类型的成员
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;
}