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.
230 lines
5.2 KiB
C++
230 lines
5.2 KiB
C++
|
3 weeks ago
|
#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;
|
||
|
|
}
|