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/nmDataLayer.cpp

230 lines
5.2 KiB
C++

#include "nmDataLayer.h"
//#include "ZxSerializer.h"
nmDataLayer::nmDataLayer()
{
m_top = 0.0;
m_bottom = 0.0;
m_thickness = 0.0;
m_isChecked = false;
//checkXmlTable();
}
nmDataLayer::nmDataLayer(const nmDataLayer &other)
{
if (this == &other)
{
return;
}
m_top = other.m_top;
m_bottom = other.m_bottom;
m_thickness = other.m_thickness;
m_isChecked = other.m_isChecked;
m_color = other.m_color;
}
// 单例模式实现
nmDataLayer* nmDataLayer::s_instance = NULL;
nmDataLayer* nmDataLayer::getInstance()
{
if (NULL == s_instance) {
s_instance = new nmDataLayer();
}
return s_instance;
}
nmDataLayer::~nmDataLayer()
{
}
nmDataLayer &nmDataLayer::operator = (const nmDataLayer &other)
{
m_top = other.m_top;
m_bottom = other.m_bottom;
m_thickness = other.m_thickness;
m_isChecked = other.m_isChecked;
m_color = other.m_color;
return *this;
}
// 序列化 nmDataLayer 为 RapidJSON Value
rapidjson::Value nmDataLayer::ToJsonValue(rapidjson::Document::AllocatorType& allocator) const
{
// 创建一个 RapidJSON 对象类型的值
rapidjson::Value layObject(rapidjson::kObjectType);
layObject.AddMember("top", m_top, allocator);
layObject.AddMember("bottom", m_bottom, allocator);
layObject.AddMember("thickness", m_thickness, allocator);
layObject.AddMember("isChecked", m_isChecked, allocator);
// 颜色序列化为一个子对象,包含 r/g/b/a
rapidjson::Value colorObject(rapidjson::kObjectType);
colorObject.AddMember("r", m_color.red(), allocator);
colorObject.AddMember("g", m_color.green(), allocator);
colorObject.AddMember("b", m_color.blue(), allocator);
colorObject.AddMember("a", m_color.alpha(), allocator);
layObject.AddMember("color", colorObject, allocator);
return layObject; // 返回序列化后的 RapidJSON Value
}
// 从 RapidJSON Value 反序列化数据到 nmDataLayer
void nmDataLayer::FromJsonValue(const rapidjson::Value& jsonValue)
{
if (jsonValue.HasMember("top") && jsonValue["top"].IsNumber())
{
m_top = jsonValue["top"].GetDouble();
}
if (jsonValue.HasMember("bottom") && jsonValue["bottom"].IsNumber())
{
m_bottom = jsonValue["bottom"].GetDouble();
}
if (jsonValue.HasMember("thickness") && jsonValue["thickness"].IsNumber())
{
m_thickness = jsonValue["thickness"].GetDouble();
}
if (jsonValue.HasMember("isChecked") && jsonValue["isChecked"].IsBool())
{
m_isChecked = jsonValue["isChecked"].GetBool();
}
// 反序列化颜色
if (jsonValue.HasMember("color") && jsonValue["color"].IsObject())
{
const rapidjson::Value& colorValue = jsonValue["color"];
int r = 0, g = 0, b = 0, a = 255;
if (colorValue.HasMember("r") && colorValue["r"].IsInt())
r = colorValue["r"].GetInt();
if (colorValue.HasMember("g") && colorValue["g"].IsInt())
g = colorValue["g"].GetInt();
if (colorValue.HasMember("b") && colorValue["b"].IsInt())
b = colorValue["b"].GetInt();
if (colorValue.HasMember("a") && colorValue["a"].IsInt())
a = colorValue["a"].GetInt();
m_color = QColor(r, g, b, a);
}
}
//ZxDataObject* nmDataLayer::clone()
//{
// ensureLoaded();
//
// return (new nmDataLayer(*this));
//}
QString nmDataLayer::type() const
{
return nmDataModelType::sTypeNumDataLayer;
}
QString nmDataLayer::getTableName()
{
return nmDataTableName::sTableNumDataLayer;
}
void nmDataLayer::setTop(double value)
{
m_top = value;
}
double nmDataLayer::getTop() const
{
//ensureLoaded();
return m_top;
}
void nmDataLayer::setBottom(double value)
{
m_bottom = value;
}
double nmDataLayer::getBottom() const
{
//ensureLoaded();
return m_bottom;
}
void nmDataLayer::setThickness(double value)
{
m_thickness = value;
}
double nmDataLayer::getThickness() const
{
//ensureLoaded();
return m_thickness;
}
void nmDataLayer::setIsChecked(bool value)
{
m_isChecked = value;
}
bool nmDataLayer::getIsChecked() const
{
return m_isChecked;
}
//bool nmDataLayer::_parseData(VecVariant vec, int& n)
//{
// m_top = vec.at(n++).toDouble();
// m_bottom = vec.at(n++).toDouble();
// m_thickness = vec.at(n++).toDouble();
// m_isChecked = vec.at(n++).toBool();
//
// return ZxDataObjectDbl::_parseData(vec, n);
//}
//
//bool nmDataLayer::_sumUpData(VecVariant& vec)
//{
// ensureLoaded();
//
// vec.append(m_top);
// vec.append(m_bottom);
// vec.append(m_thickness);
// vec.append(m_isChecked);
//
// return ZxDataObjectDbl::_sumUpData(vec);
//}
//
//void nmDataLayer::onSerialize(ZxSerializer* ser)
//{
// ZxDataObjectDbl::onSerialize(ser);
//
// ser->write("Top", m_top);
// ser->write("Bottom", m_bottom);
// ser->write("Thickness", m_thickness);
// ser->write("IsChecked", m_isChecked);
//}
//
//void nmDataLayer::onDeserialize(ZxSerializer* ser)
//{
// ZxDataObjectDbl::onDeserialize(ser);
//
// ser->read("Top", m_top);
// ser->read("Bottom", m_bottom);
// ser->read("Thickness", m_thickness);
// ser->read("IsChecked", m_isChecked);
//}
//QIcon nmDataLayer::getIcon(bool expanded) const
//{
// return zxLoadIcon("DataLayer");
//}
void nmDataLayer::setColor(const QColor& value)
{
m_color = value;
}
QColor nmDataLayer::getColor() const
{
return m_color;
}