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.

96 lines
2.9 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.

/*****************************************************************//**
* @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__