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++

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);
// 序列化名称
// 将 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;
}