#ifndef NMPEBIGRIDSCENECONTROLLER_H #define NMPEBIGRIDSCENECONTROLLER_H #include "nmSubWxs_global.h" #include class nmPebiGridSceneControllerPrivate; class nmPebiGridViewData; class nmWxVTKRenderContainerWidget; /** * @brief 把二维 PEBI 网格组合为 nmRender 通用图层。 * * Scene 拥有 Mesh、按需创建的 ScalarBar 和 BoundsGrid 图层;本控制器只 * 保存非所有权指针。所有批量修改完成后由控制器统一请求一次渲染。 */ class NM_SUB_WXS_EXPORT nmPebiGridSceneController { public: /** @param pContainer 非所有权指针,必须比控制器生命周期更长。 */ explicit nmPebiGridSceneController( nmWxVTKRenderContainerWidget* pContainer); ~nmPebiGridSceneController(); /** @brief 共享新网格、更新比例边界并以顶视图重新适配。 */ bool setViewData(const nmPebiGridViewData& oViewData, QString* pError = NULL); /** @brief 解除网格引用并隐藏图层,不销毁 Scene 或 Renderer。 */ void clear(); /** @brief 切换单元边线;网格表面始终保持不透明。 */ void setGridLinesVisible(bool bVisible); /** @brief 明确选择属性;空字符串表示固定面色,当前只接受有效 Material。 */ bool setProperty(const QString& sPropertyName); /** @brief 保存色标显示偏好;无活动属性时色标仍保持隐藏。 */ void setScalarBarVisible(bool bVisible); /** @brief 切换 XY 坐标比例网格。 */ void setBoundsGridVisible(bool bVisible); bool hasViewData() const; QString getProperty() const; bool isGridLinesVisible() const; bool isScalarBarVisible() const; bool isBoundsGridVisible() const; private: Q_DISABLE_COPY(nmPebiGridSceneController) nmPebiGridSceneControllerPrivate* m_pPrivate; ///< 独占实现对象。 }; #endif // NMPEBIGRIDSCENECONTROLLER_H