/*****************************************************************//** * @file GraphProviderBase.h * @brief 三维可视化数据管理基类。 * * @author ChengHaotian (yeguangbaozi@foxmail.com) * @date 2024-06-12 *********************************************************************/ #ifndef __GRAPHPROVIDERBASE_H__ #define __GRAPHPROVIDERBASE_H__ #include #include "GraphDataProviderAPI.h" #include // 前置声明 namespace Core { class FITKAbstractDataObject; } namespace Comp { class FITKGraph3DWindowVTK; } namespace Exchange { class FITKFluidVTKGraphObject3D; } namespace GraphData { /** * @brief 三维可视化数据分类管理类。 * @author ChengHaotian (yeguangbaozi@foxmail.com) * @date 2024-06-12 */ class GRAPHDATAPROVIDERAPI GraphProviderBase : public QObject { Q_OBJECT // 友元,防止外部手动创建或析构。 friend class GraphProviderManager; public: /** * @brief 获取当前算例已实例化的可视化对象。[纯虚函数] * @return 可视化对象列表。 * @author ChengHaotian (yeguangbaozi@foxmail.com) * @date 2024-06-12 */ virtual QList getCurrentGraphObjs() = 0; /** * @brief 获取当前算例已实例化的当前可见可视化对象。 * @return 可视化对象列表。 * @author ChengHaotian (yeguangbaozi@foxmail.com) * @date 2024-06-12 */ QList getCurrentVisibleGraphObjs(); /** * @brief 获取类名。[虚函数] * @return 类名 * @author ChengHaotian (yeguangbaozi@foxmail.com) * @date 2024-06-12 */ virtual QString getClassName(); /** * @brief 根据数据ID更新可视化对象,没有则跳出。[虚函数] * @param dataId:数据ID * @param info:附加信息[缺省] * @return 是否存在该数据ID所对应可视化对象。 * @author ChengHaotian (yeguangbaozi@foxmail.com) * @date 2024-06-12 */ virtual bool updateObjById(int dataId, QVariant info = QVariant()); /** * @brief 更新全部当前可见可视化对象显示状态。 * @author ChengHaotian (yeguangbaozi@foxmail.com) * @date 2024-06-12 */ void updateVisibility(); /** * @brief 清除全部管理中的可视化对象高亮与高级高亮效果。 * @author ChengHaotian (yeguangbaozi@foxmail.com) * @date 2024-07-30 */ void clearHighlight(); protected: /** * @brief 构造函数。 * @param graphWidget:可视化窗口 * @author ChengHaotian (yeguangbaozi@foxmail.com) * @date 2024-06-12 */ GraphProviderBase(Comp::FITKGraph3DWindowVTK* graphWidget); /** * @brief 析构函数。[虚函数] * @author ChengHaotian (yeguangbaozi@foxmail.com) * @date 2024-06-12 */ virtual ~GraphProviderBase(); /** * @brief 移除数据管理字典中的所有可视化对象数据并析构。 * @param hash:数据字典 * @author ChengHaotian (yeguangbaozi@foxmail.com) * @date 2024-06-12 */ void deleteObjsHash(QHash& hash); /** * @brief 移除数据管理字典中的所有可视化对象数据并析构。 * @param hash:数据字典 * @author ChengHaotian (yeguangbaozi@foxmail.com) * @date 2024-06-12 */ void deleteObjsHash(QHash>& hash); /** * @brief 通过数据对象、适配器关键字与需要保存到的字典生成或获取可视化对象。 * @param adaptorKeyName:适配器关键字 * @param objDict:可视化对象字典[引用] * @param dataObj:数据对象 * @return 可视化对象 * @author ChengHaotian (yeguangbaozi@foxmail.com) * @date 2024-07-24 */ Exchange::FITKFluidVTKGraphObject3D* getGraphObject(QString adaptorKeyName, QHash& objDict, Core::FITKAbstractDataObject* dataObj); protected: /** * @brief 管理器所管理的可视化窗口。 * @author ChengHaotian (yeguangbaozi@foxmail.com) * @date 2024-06-12 */ Comp::FITKGraph3DWindowVTK* m_graphWidget{ nullptr }; /** * @brief 临时预览可视化对象数据字典。 * @author ChengHaotian (yeguangbaozi@foxmail.com) * @date 2024-06-12 */ QHash m_previewObjHash = {}; }; } // namespace GraphData #endif // __GRAPHPROVIDERBASE_H__