|
|
#ifndef NMPEBIRESULTDISPLAYSTATEBUILDER_H
|
|
|
#define NMPEBIRESULTDISPLAYSTATEBUILDER_H
|
|
|
|
|
|
#include "nmPebiResultDisplaySettings.h"
|
|
|
|
|
|
#include <QSharedPointer>
|
|
|
#include <QString>
|
|
|
#include <vtkLookupTable.h>
|
|
|
#include <vtkSmartPointer.h>
|
|
|
|
|
|
class nmPebiResultSnapshot;
|
|
|
/** @brief 屏幕场景和离屏导出共同使用的完整属性显示状态。 */
|
|
|
struct nmPebiResultDisplayState
|
|
|
{
|
|
|
/** @brief 创建不持有LUT的空显示状态。 */
|
|
|
nmPebiResultDisplayState();
|
|
|
|
|
|
/** @brief 经过normalized()处理并实际用于构造状态的设置。 */
|
|
|
nmPebiResultDisplaySettings m_oSettings;
|
|
|
/** @brief 快照中的真实属性范围,不受手工显示范围影响。 */
|
|
|
double m_dBusinessRange[2];
|
|
|
/** @brief 色标和设置界面对外显示的范围。 */
|
|
|
double m_dVisibleRange[2];
|
|
|
/** @brief LUT实际范围;单值模式下为满足VTK要求进行微量扩展。 */
|
|
|
double m_dInternalRange[2];
|
|
|
/** @brief 网格和色标共同使用的完整LookupTable。 */
|
|
|
vtkSmartPointer<vtkLookupTable> m_pLookupTable;
|
|
|
/** @brief 与线性或对数模式对应的ASCII色标标题。 */
|
|
|
QString m_sScalarBarTitle;
|
|
|
/** @brief 自动范围为单值时为true,手工范围始终为false。 */
|
|
|
bool m_bSingleValueMode;
|
|
|
};
|
|
|
|
|
|
/** @brief 统一构造结果网格和色标使用的颜色映射状态。 */
|
|
|
class nmPebiResultDisplayStateBuilder
|
|
|
{
|
|
|
public:
|
|
|
/**
|
|
|
* @brief 事务式构造网格和色标共用的完整颜色显示状态。
|
|
|
* @param pSnapshot 只读结果快照强引用。
|
|
|
* @param sPropertyId 快照中的稳定属性ID。
|
|
|
* @param oRequestedSettings 待规范化和校验的显示设置。
|
|
|
* @param oState 成功时接收完整状态;失败时保持原值不变。
|
|
|
* @param pError 可选错误输出;进入函数后先清空。
|
|
|
* @return 属性、范围、比例模式和LUT全部构造成功时返回true。
|
|
|
*/
|
|
|
static bool build(
|
|
|
const QSharedPointer<const nmPebiResultSnapshot>& pSnapshot,
|
|
|
const QString& sPropertyId,
|
|
|
const nmPebiResultDisplaySettings& oRequestedSettings,
|
|
|
nmPebiResultDisplayState& oState,
|
|
|
QString* pError = nullptr);
|
|
|
|
|
|
private:
|
|
|
/** @brief 纯静态构造器,不允许创建实例。 */
|
|
|
nmPebiResultDisplayStateBuilder();
|
|
|
};
|
|
|
|
|
|
#endif // NMPEBIRESULTDISPLAYSTATEBUILDER_H
|