/*****************************************************************//** * @file OperGraphPick.h * @brief 拾取高亮操作器。 * * @author ChengHaotian (yeguangbaozi@foxmail.com) * @date 2024-07-19 *********************************************************************/ #ifndef __OPERGRAPHPICK_H__ #define __OPERGRAPHPICK_H__ #include "OperatorsInterface/GraphInteractionOperator.h" #include "FITK_Kernel/FITKCore/FITKOperatorRepo.h" // 前置声明 class vtkDataSet; namespace Interface { class PostGraphObjectPick; } namespace GraphData { class PickedDataProvider; } namespace GUIOper { /** * @brief 高亮可视化事件处理。 * @author ChengHaotian (yeguangbaozi@foxmail.com) * @date 2024-07-19 */ class OperGraphPick : public EventOper::GraphInteractionOperator { public: /** * @brief 构造函数。 * @author ChengHaotian (yeguangbaozi@foxmail.com) * @date 2024-07-19 */ explicit OperGraphPick(); /** * @brief 析构函数。 * @author ChengHaotian (yeguangbaozi@foxmail.com) * @date 2024-07-19 */ ~OperGraphPick(); /** * @brief 拾取高亮单个节点或单元接口。[重写] * @param graphWindow:可视化窗口 * @param actor:演员 * @param index:索引 * @param pickedWorldPos:拾取的世界坐标 * @author ChengHaotian (yeguangbaozi@foxmail.com) * @date 2024-07-19 */ void picked(Comp::FITKGraph3DWindowVTK* graphWindow, vtkActor* actor, int index, double* pickedWorldPos) override; /** * @brief 根据当前拾取对象类型隐藏或显示部分演员或修改可拾取性。[重写] * @param pickObjType:拾取对象类型 * @param pickMethod:拾取方法 * @param dataObjId:生效数据ID(-1则对所有数据生效)[缺省] * @author ChengHaotian (yeguangbaozi@foxmail.com) * @date 2024-07-19 */ void setActorStateByPickInfo(int pickObjType, int pickMethod, int dataObjId = -1) override; private: /** * @brief 添加可视化对象至三维窗口。 * @param obj:可视化对象 * @param graphWidget:三维窗口 * @author ChengHaotian (yeguangbaozi@foxmail.com) * @date 2024-07-19 */ void addGraphObjectToWidget(Interface::PostGraphObjectPick* obj, Comp::FITKGraph3DWindowVTK* graphWidget); private: /** * @brief 拾取信息管理器。 * @author ChengHaotian (yeguangbaozi@foxmail.com) * @date 2024-07-19 */ GraphData::PickedDataProvider* m_pickedProvider{ nullptr }; }; Register2FITKOPeratorRepo(GraphPick, OperGraphPick); } // namespace GUIOper #endif // __OPERGRAPHPICK_H__