VTK交互功能-callback/observe模式-vtkCommand

前言:本博文为系列博文,尝试将vtk交互功能讲清楚,包括常用的接口分析、常用的交互逻辑以及常用的交互Widget。若各位小伙伴有需要请多多关注,也希望能给各位小伙伴有所帮助。vtkCommand作为callback/obseve交互模式的基类,提供了很多基础和可继承的方法,那么我们就从vtkCommand开始。

vtkCommand

 描述:

vtkCommand是callback/obseve交互模式的一个实现。这个设计模式下,可以“观察”到对象(任何vtkObject的实例)触发的任何事件。例如:vtkRenderer在开始渲染时触发StartEvent事件,在结束渲染时触发EndEvent事件。事件观察者是通过在vtkObject中找到的AddObserver()方法添加的。AddObserver()除了需要一个事件id或名称外,还需要一个vtkCommand的实例(或子类)。请注意,vtkCommand意味着子类化,因此您可以打包支持回调所需的信息。

所有事件的处理在priority list列表中组织,可以通过设置AbortFlag变量截断特定事件的处理。使用AddObserver()方法设置优先级。缺省情况下,优先级为0,优先级相同的事件按照后发先处的顺序进行顺序处理。对于像3DWidget这类窗口来说,事件的ordering/aborting很重要。如果小部件被选中,它将处理一个事件(然后中止对该事件的进一步处理)。否则。该事件被传递以进行进一步处理。

当vtkObject的实例调用事件时,它也传递一个可选的void指针给callData。这个callData大多数时候是null。callData不是特定于事件类型,而是特定于调用特定事件的vtkObject类型。例如,vtkCommand::PickEvent由vtkProp使用nullptr callData调用,但由vtkInteractorStyleImage使用指向vtkInteractorStyleImage对象本身的指针调用。

通过non-nullptr触发的事件列表

vtkCommand::ProgressEvent

-大多数对象返回一个指针,指向范围在0.0到1.0之间的双精度值

-Infovis/vtkFixedWidthTextReader返回一个指针,浮点值等于到目前为止读取的行数。

vtkCommand::ErrorEvent  - 返回const char*类型的错误信息。
vtkCommand::WarningEvent- 返回const char*类型的错误信息。
vtkCommand::StartAnimationCueEvent- 返回指向vtkAnimationCue::AnimationCueInfo的指针
vtkCommand::EndAnimationCueEvent- 返回指向vtkAnimationCue::AnimationCueInfo的指针
vtkCommand::AnimationCueTickEvent- 返回指向vtkAnimationCue::AnimationCueInfo的指针
vtkCommand::PickEvent

- Common/vtkProp返回nullptr

- Rendering/vtkInteractorStyleImage返回指向自身的指针

vtkCommand::StartPickEvent

- Common/vtkProp返回nullptr

- Rendering/vtkInteractorStyleImage返回指向自身的指针

vtkCommand::EndPickEvent

- Common/vtkProp返回nullptr

- Rendering/vtkInteractorStyleImage返回指向自身的指针

vtkCommand::WrongTagEvent- Parallel/vtkSocketCommunicator返回一个char* 类型的标签
vtkCommand::SelectionChangedEvent

- Views/vtkView返回空指针

- Views/vtkDataRepresentation返回一个指向vtkSelection的指针

- Rendering/

vtkInteractorStyleRubberBand2D在vtkInteractorStyleRubberBand2D

::SELECT_UNION或vtkInteractorStyleRubberBand2D

::SELECT_NORMAL时返回一个包含五个无符号的Int类型的矩阵

vtkCommand::AnnotationChangedEvent- GUISupport/Qt/vtkQtAnnotationView返回一个指向vtkAnnotationLayers的指针
vtkCommand::PlacePointEvent- Widgets/vtkSeedWidget返回一个指向int类型的指针,指向当前Handle的Number
vtkCommand::DeletePointEvent- Widgets/vtkSeedWidget返回一个指向int类型的指针,指向当前删除的Handle的Number
vtkCommand::ResetWindowLevelEvent

- Widgets/vtkImagePlaneWidget返回两个double值(window和level)

- Rendering/vtkInteractorStyleImage返回一个指向自身的指针

vtkCommand::StartWindowLevelEvent

- Widgets/vtkImagePlaneWidget返回两个double值(window和level)

- Rendering/vtkInteractorStyleImage返回一个指向自身的指针

vtkCommand::EndWindowLevelEvent

- Widgets/vtkImagePlaneWidget返回两个double值(window和level)

- Rendering/vtkInteractorStyleImage返回一个指向自身的指针

vtkCommand::WindowLevelEvent

- Widgets/vtkImagePlaneWidget返回两个double值(window和level)

- Rendering/vtkInteractorStyleImage返回一个指向自身的指针

vtkCommand::CharEvent

- 大多数对象返回空指针

- GUISupport/Qt/

QVTKOpenGLStereoWidget返回QKeyEvent*

vtkCommand::TimerEvent

- 大多数对象返回一个代表timer ID的Int类型

- Widgets/vtkHoverWidget返回nullptr

vtkCommand::CreateTimerEvent

- Rendering/

vtkGenericRenderWindowInteractor返回一个Interesting类型代表timer的ID

vtkCommand::DestroyTimerEvent

- Rendering/

vtkGenericRenderWindowInteractor返回一个Interesting类型代表timer的ID

vtkCommand::UserEvent

- 大多数对象返回空指针

- Infovis/vtkInteractorStyleTreeMapHover返回一个vtkIdType的指针,代表pedigree id

vtkCommand::KeyPressEvent

- 大多数对象返回空指针

- GUISupport/Qt/

QVTKOpenGLStereoWidget返回QKeyEvent*

vtkCommand::KeyReleaseEvent

- 大多数对象返回空指针

- GUISupport/Qt/

QVTKOpenGLStereoWidget返回QKeyEvent*

vtkCommand::LeftButtonPressEvent

- 大多数对象返回空指针

- GUISupport/Qt/

QVTKOpenGLStereoWidget返回QMouseEvent*

vtkCommand::LeftButtonReleaseEvent

- 大多数对象返回空指针

- GUISupport/Qt/

QVTKOpenGLStereoWidget返回QMouseEvent*

vtkCommand::MouseMoveEvent

- 大多数对象返回空指针

- GUISupport/Qt/

QVTKOpenGLStereoWidget返回QMouseEvent*

vtkCommand::MouseWheelForwardEvent

- 大多数对象返回空指针

- GUISupport/Qt/

QVTKOpenGLStereoWidget返回QWheelEvent*

vtkCommand::MouseWheelBackwardEvent

- 大多数对象返回空指针

- GUISupport/Qt/

QVTKOpenGLStereoWidget返回QWheelEvent*

vtkCommand::RightButtonPressEvent

- 大多数对象返回空指针

- GUISupport/Qt/

QVTKOpenGLStereoWidget返回QMouseEvent*

vtkCommand::RightButtonReleaseEvent

- 大多数对象返回空指针

- GUISupport/Qt/

QVTKOpenGLStereoWidget返回QMouseEvent*

vtkCommand::MiddleButtonPressEvent

- 大多数对象返回空指针

- GUISupport/Qt/

QVTKOpenGLStereoWidget返回QMouseEvent*

vtkCommand::MiddleButtonReleaseEvent

- 大多数对象返回空指针

- GUISupport/Qt/

QVTKOpenGLStereoWidget返回QMouseEvent*

vtkCommand::CursorChangedEvent

- 大多数对象返回一个指向表示形状的int型指针

- Rendering/vtkInteractorObserver 返回空指针

vtkCommand::ResetCameraEvent- Rendering/vtkRenderer返回指向自己的指针
vtkCommand::ResetCameraClippingRangeEvent- Rendering/vtkRenderer返回指向自己的指针
vtkCommand::ActiveCameraEvent- Rendering/vtkRenderer返回指向当前活动相机的指针
vtkCommand::CreateCameraEvent- Rendering/vtkRenderer返回指向新建相机的指针
vtkCommand::EnterEvent

- 大多数对象返回空指针

- GUISupport/Qt/

QVTKOpenGLStereoWidget

返回一个QEvent*

vtkCommand::LeaveEvent

- 大多数对象返回空指针

- GUISupport/Qt/

QVTKOpenGLStereoWidget

返回一个QEvent*

vtkCommand::RenderWindowMessageEvent

- Rendering/

vtkWin32OpenGLRenderWindow

返回一个指向UINT的信息

vtkCommand::ComputeVisiblePropBoundsEvent- Rendering/vtkRenderer返回指向自身的指针
QVTKOpenGLStereoWidget::ContextMenuEvent

- 返回GUISupport/Qt/

QVTKOpenGLStereoWidget的一个QDragEnterEvent*

QVTKOpenGLStereoWidget::DragEnterEvent

- 返回GUISupport/Qt/

QVTKOpenGLStereoWidget的一个QDragEnterEvent*

QVTKOpenGLStereoWidget::DragMoveEvent

- 返回GUISupport/Qt/

QVTKOpenGLStereoWidget的一个QDragMoveEvent*

QVTKOpenGLStereoWidget::DragLeaveEvent

- 返回GUISupport/Qt/

QVTKOpenGLStereoWidget的一个QDragLeaveEvent*

QVTKOpenGLStereoWidget::DropEvent

- 返回GUISupport/Qt/

QVTKOpenGLStereoWidget的一个QDropEvent*

vtkCommand::ViewProgressEvent- 返回View/vtkView的一个ViewProgressEventCallData*
vtkCommand::VolumeMapperRenderProgressEvent- 返回指向范围在0.0到1.0之间的double值
vtkCommand::VolumeMapperComputeGradientsProgressEvent- 返回指向范围在0.0到1.0之间的double值
vtkCommand::TDxMotionEvent (TDx=3DConnexion)vtkTDxMotionEventInfo*
vtkCommand::TDxButtonPressEvent

一个int*是按钮的编号

vtkCommand::TDxButtonReleaseEvent

一个int*是按钮的编号

vtkCommand::UpdateShaderEvent

当前正在使用的vtkOpenGLHelper*

vtkCommand::FourthButtonPressEvent- 大多数对象返回nullptr
vtkCommand::FourthButtonReleaseEvent- 大多数对象返回nullptr
vtkCommand::FifthButtonPressEvent- 大多数对象返回nullptr
vtkCommand::FifthButtonReleaseEvent- 大多数对象返回nullptr
vtkCommand::ErrorEventvtkoutputwwindow使用' char char* '为错误信息触发
vtkCommand::WarningEventvtkoutputwwindow使用' char char* '为警告信息触发
vtkCommand::MessageEventvtkoutputwwindow使用' char char* '为信息文本触发
vtkCommand::TextEventvtkoutputwwindow使用' char char* '为文本触发

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雪易

给我来点鼓励吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值