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/Include/nmNum/nmData/nmDataLayer.h

66 lines
2.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.

#ifndef NMDATALAYER_H
#define NMDATALAYER_H
#include "nmData_global.h"
#include "nmDefines.h"
#include "nmDataAttribute.h"
#include <QColor>
// 工程持久化的单层数据。顶深、底深和厚度均以米保存;对象由 DataManager 拥有。
// 界面编辑使用 nmLayerGeometry 值快照,不能直接修改这里的对象。
class NM_DATA_EXPORT nmDataLayer : public nmDataBase
{
Q_OBJECT
public:
// 默认对象尚未具备有效几何,创建方需完整设置顶深、底深和厚度。
nmDataLayer();
// 只复制业务字段;QObject 身份、父对象和信号连接不从源对象复制。
nmDataLayer(const nmDataLayer &other);
virtual ~nmDataLayer();
// 替换业务字段但保留当前 QObject 身份,调用方仍负责几何一致性。
nmDataLayer &operator = (const nmDataLayer &other);
// 按原始米制值序列化,名称以 UTF-8 写入;字符串内存由传入的 JSON 分配器持有。
virtual rapidjson::Value ToJsonValue(rapidjson::Document::AllocatorType& allocator) const override;
// 兼容旧工程缺少 name 字段;读取时不重排边界,保留原始几何供后续检查。
virtual void FromJsonValue(const rapidjson::Value& jsonValue) override;
virtual QString getTableName();
virtual QString type() const;
// 层名称随工程保存;旧工程没有名称时保持空串,由显示端提供默认名称。
void setName(const QString& value);
QString getName() const;
// 几何访问器只读写各自字段,不联动其他边界,也不发出 Manager 的数据变化通知。
// 修改前应通过 nmLayerGeometry 校验,持久化时再整体设置这三个米制值。
void setTop(double value);
double getTop() const;
void setBottom(double value);
double getBottom() const;
void setThickness(double value);
double getThickness() const;
// 历史命名沿用旧格式:表示与下一层分离,不是当前表格的选中状态。
void setIsChecked(bool value);
bool getIsChecked() const;
// 颜色属于层的显示属性,与深度、厚度和求解物性无关。
void setColor(const QColor& value);
QColor getColor() const;
private:
QString m_sName; // 持久化名称;旧工程未提供时保留空串。
double m_dTopDepth; // 层顶深,单位 m;保存原始值,不随界面显示单位变化。
double m_dBottomDepth; // 层底深,单位 m;有效几何中等于顶深加层自身厚度。
double m_dThickness; // 层自身厚度,单位 m;有效值大于零,不包含层间间隙。
bool m_bLegacyGap; // 旧格式中与下一层分离的标志,保留用于读写兼容。
QColor m_clrLayer; // 层填充颜色,含透明度;随工程保存,不参与几何或求解物性计算。
};
#endif // NMDATALAYER_H