superclass for callback/observer methods

vtkCommand is an implementation of the observer/command design pattern. In this design pattern, any instance of vtkObject can be "observed" for any events it might invoke. For example, vtkRenderer invokes a StartEvent as it begins to render and a EndEvent when it finishes rendering. Filters (subclasses of vtkProcessObject) invoke StartEvent, ProgressEvent, and EndEvent as the filter processes data. Observers of events are added with the AddObserver() method found in vtkObject. AddObserver(), besides requiring an event id or name, also takes an instance of vtkCommand (or a subclasses). Note that vtkCommand is meant to be subclassed, so that you can package the information necessary to support your callback.

Event processing can be organized in priority lists, so it is possible to truncate the processing of a particular event by setting the AbortFlag variable. The priority is set using the AddObserver() method. By default the priority is 0, events of the same priority are processed in last-in-first-processed order. The ordering/aborting of events is important for things like 3D widgets, which handle an event if the widget is selected (and then aborting further processing of that event). Otherwise. the event is passed along for further processing.

When an instance of vtkObject invokes an event, it also passes an optional void pointer to a callData. This callData is NULL most of the time. The callData is not specific to a type of event but specific to a type of vtkObject invoking a specific event. For instance, vtkCommand::PickEvent is invoked by vtkProp with a NULL callData but is invoked by vtkInteractorStyleImage with a pointer to the vtkInteractorStyleImage object itself.

Here is the list of events that may be invoked with a non-NULL callData.

  • vtkCommand::ProgressEvent

    • most of the objects return a pointer to a double value ranged between 0.0 and 1.0
    • Infovis/vtkFixedWidthTextReader returns a pointer to a float value equal to the number of lines read so far.
  • vtkCommand::ErrorEvent
    • an error message as a const char * string
  • vtkCommand::WarningEvent
    • a warning message as a const char * string
  • vtkCommand::StartAnimationCueEvent
  • vtkCommand::EndAnimationCueEvent
  • vtkCommand::AnimationCueTickEvent
  • vtkCommand::PickEvent
    • Common/vtkProp returns NULL
    • Rendering/vtkInteractorStyleImage returns a pointer to itself
  • vtkCommand::StartPickEvent
    • Rendering/vtkPropPicker returns NULL
    • Rendering/vtkInteractorStyleImage returns a pointer to itself
  • vtkCommand::EndPickEvent
    • Rendering/vtkPropPicker returns NULL
    • Rendering/vtkInteractorStyleImage returns a pointer to itself
  • vtkCommand::WrongTagEvent
    • Parallel/vtkSocketCommunicator returns a received tag as a char *
  • vtkCommand::SelectionChangedEvent
  • vtkCommand::AnnotationChangedEvent
  • vtkCommand::PlacePointEvent
    • Widgets/vtkSeedWidget returns a pointer to an int, being the current handle number
  • vtkCommand::ResetWindowLevelEvent
    • Widgets/vtkImagePlaneWidget returns an array of 2 double values (window and level)
    • Rendering/vtkInteractorStyleImage returns a pointer to itself
  • vtkCommand::StartWindowLevelEvent
    • Widgets/vtkImagePlaneWidget returns an array of 2 double values (window and level)
    • Rendering/vtkInteractorStyleImage returns a pointer to itself
  • vtkCommand::EndWindowLevelEvent
    • Widgets/vtkImagePlaneWidget returns an array of 2 double values (window and level)
    • Rendering/vtkInteractorStyleImage returns a pointer to itself
  • vtkCommand::WindowLevelEvent
    • Widgets/vtkImagePlaneWidget returns an array of 2 double values (window and level)
    • Rendering/vtkInteractorStyleImage returns a pointer to itself
  • vtkCommand::CharEvent
    • most of the objects return NULL
    • GUISupport/Qt/QVTKWidget returns a QKeyEvent *
  • vtkCommand::TimerEvent
    • most of the objects return a to an int representing a timer id
    • Rendering/vtkXRenderWindowTclInteractor returns NULL
    • Widgets/vtkHoverWidget returns NULL
  • vtkCommand::CreateTimerEvent
    • Rendering/vtkGenericRenderWindowInteractor returns a to an int representing a timer id
  • vtkCommand::DestroyTimerEvent
    • Rendering/vtkGenericRenderWindowInteractor returns a to an int representing a timer id
  • vtkCommand::UserEvent
    • most of the objects return NULL
    • Infovis/vtkInteractorStyleTreeMapHover returns a pointer to a vtkIdType representing a pedigree id
  • vtkCommand::KeyPressEvent
    • most of the objects return NULL
    • GUISupport/Qt/QVTKWidget returns a QKeyEvent*
  • vtkCommand::KeyReleaseEvent
    • most of the objects return NULL
    • GUISupport/Qt/QVTKWidget returns a QKeyEvent*
  • vtkCommand::LeftButtonPressEvent
    • most of the objects return NULL
    • GUISupport/Qt/QVTKWidget returns a QMouseEvent*
  • vtkCommand::LeftButtonReleaseEvent
    • most of the objects return NULL
    • GUISupport/Qt/QVTKWidget returns a QMouseEvent*
  • vtkCommand::MouseMoveEvent
    • most of the objects return NULL
    • GUISupport/Qt/QVTKWidget returns a QMouseEvent*
  • vtkCommand::MouseWheelForwardEvent
    • most of the objects return NULL
    • GUISupport/Qt/QVTKWidget returns a QWheelEvent*
  • vtkCommand::MouseWheelBackwardEvent
    • most of the objects return NULL
    • GUISupport/Qt/QVTKWidget returns a QWheelEvent*
  • vtkCommand::RightButtonPressEvent
    • most of the objects return NULL
    • GUISupport/Qt/QVTKWidget returns a QMouseEvent*
  • vtkCommand::RightButtonReleaseEvent
    • most of the objects return NULL
    • GUISupport/Qt/QVTKWidget returns a QMouseEvent*
  • vtkCommand::MiddleButtonPressEvent
    • most of the objects return NULL
    • GUISupport/Qt/QVTKWidget returns a QMouseEvent*
  • vtkCommand::MiddleButtonReleaseEvent
    • most of the objects return NULL
    • GUISupport/Qt/QVTKWidget returns a QMouseEvent*
  • vtkCommand::CursorChangedEvent
    • most of the objects return a pointer to an int representing a shape
    • Rendering/vtkInteractorObserver returns NULL
  • vtkCommand::ResetCameraEvent
    • Rendering/vtkRenderer returns a pointer to itself
  • vtkCommand::ResetCameraClippingRangeEvent
    • Rendering/vtkRenderer returns a pointer to itself
  • vtkCommand::ActiveCameraEvent
    • Rendering/vtkRenderer returns a pointer to the active camera
  • vtkCommand::CreateCameraEvent
    • Rendering/vtkRenderer returns a pointer to the created camera
  • vtkCommand::EnterEvent
    • most of the objects return NULL
    • GUISupport/Qt/QVTKWidget returns a QEvent*
  • vtkCommand::LeaveEvent
    • most of the objects return NULL
    • GUISupport/Qt/QVTKWidget returns a QEvent*
  • vtkCommand::RenderWindowMessageEvent
    • Rendering/vtkWin32OpenGLRenderWindow return a pointer to a UINT message
  • vtkCommand::ComputeVisiblePropBoundsEvent
    • Rendering/vtkRenderer returns a pointer to itself
  • QVTKWidget::ContextMenuEvent
    • GUISupport/Qt/QVTKWidget returns a QContextMenuEvent*
  • QVTKWidget::DragEnterEvent
    • GUISupport/Qt/QVTKWidget returns a QDragEnterEvent*
  • QVTKWidget::DragMoveEvent
    • GUISupport/Qt/QVTKWidget returns a QDragMoveEvent*
  • QVTKWidget::DragLeaveEvent
    • GUISupport/Qt/QVTKWidget returns a QDragLeaveEvent*
  • QVTKWidget::DropEvent
    • GUISupport/Qt/QVTKWidget returns a QDropEvent*
  • vtkCommand::ViewProgressEvent
    • View/vtkView returns a ViewProgressEventCallData*
  • vtkCommand::VolumeMapperRenderProgressEvent
    • A pointer to a double value between 0.0 and 1.0
  • vtkCommand::VolumeMapperComputeGradientsProgressEvent
    • A pointer to a double value between 0.0 and 1.0
  • vtkCommand::TDxMotionEvent (TDx=3DConnexion)
    • A vtkTDxMotionEventInfo*
  • vtkCommand::TDxButtonPressEvent
    • A int* being the number of the button
  • vtkCommand::TDxButtonReleaseEvent
    • A int* being the number of the button
  • vtkCommand::UpdateShaderEvent
    • A vtkOpenGLHelper* currently being used

关于tkCommand的各种事件的解释的更多相关文章

  1. cocos2d-x 3.0 touch事件官方解释

    官方解释 http://www.cocos2d-x.org/docs/manual/framework/native/input/event-dispatcher/zh#_1

  2. Android ViewGroup拦截触摸事件具体解释

    前言 在自己定义ViewGroup中.有时候须要实现触摸事件拦截.比方ListView下拉刷新就是典型的触摸事件拦截的样例. 触摸事件拦截就是在触摸事件被parent view拦截,而不会分发给其ch ...

  3. .NET 开源工作流: Slickflow流程引擎高级开发(九) -- 条件事件模式解释及应用

    前言:在流程流转过程中,有时候需要条件模式的支持,这样可以使得流程流转更加灵活多变.比如在业务变量满足一定的条件时,可以启动特定配置的流程(或者位于主流程内部的子流程).本文主要描述条件启动和条件中间 ...

  4. 关于vtkCommand的各种事件的解释

    superclass for callback/observer methods vtkCommand is an implementation of the observer/command des ...

  5. 读w3c中文教程对键盘事件解释的感想 -遁地龙卷风

    写这篇博文源于w3c中文教程对键盘事件的解释, onkeydown 某个键盘按键被按下 onkeypress 某个键盘按键被按下并松开 onkeyup 某个键盘按键被松开 可在实践中发现 只注册key ...

  6. JS 预解释相关理解

    1.JS中的内存空间分为两种:栈内存.堆内存 栈内存:提供JS代码执行的环境;存储基本数据类型的值; ->全局作用域或者私有的作用域其实都是栈内存 堆内存:存储引用数据类型的值(对象是把属性名和 ...

  7. jquery实现拖拽以及jquery监听事件的写法

    很久之前写了一个jquery3D楼盘在线选择,这么一个插件,插件很简单,因为后期项目中没有实际用到,因此,有些地方不是很完善,后面也懒得再进行修改维护了.最近放到github上面,但是也少有人问津及s ...

  8. Android学习第六弹之Touch事件的处理

    在移动开发过程当中,我们经常会遇到手势处理和事件触摸的情况,如果不了解整个事件的处理机制,对于开发的同学和码农是非常痛苦的,但是事件触摸的处理确实是一个非常复杂的过程,细讲起来,估计我都能讲迷糊,这里 ...

  9. GridView事件DataBinding,DataBound,RowCreated,RowDataBound区别及执行顺序分析

    严格的说,DataBinding,DataBound并不是GridView特有的事件,其他的控件诸如ListBox等也有DataBinding,DataBound事件. DataBinding事件MS ...

随机推荐

  1. Oracle学习笔记十四 内置程序包

    扩展数据库的功能 为 PL/SQL 提供对 SQL 功能的访问 用户 SYS 拥有所有程序包 是公有同义词 可以由任何用户访问 一些内置程序包 程序包名称 说明 STANDARD和DBMS_STAND ...

  2. adb devices 偵測不到 手機

    現象: system 有偵測到 mobile phone, xxx@xxx-ThinkPad-T460p:~/.android$ lsusb Bus Device : ID 1d6b: Linux F ...

  3. vs2017 rc 离线安装包制作

    vs2017 rc 离线安装包制作 1.下载在线安装包:https://aka.ms/vs/15/release/vs_Enterprise.exe 2.制作离线安装包: vs_Enterprise. ...

  4. com.panie 项目开发随笔_前后端框架考虑(2016.12.8)

    (一) 近日和一同学联系,说了我想要做一个网站的打算.她很感兴趣.于是我们协商了下,便觉得一起合作.她写前端,我写后台.因为我对于前端样式设计并不怎么熟悉. (二) 我们决定先做一个 个人博客. 网上 ...

  5. 手机端html5触屏事件(touch事件)

    touchstart:触摸开始的时候触发 touchmove:手指在屏幕上滑动的时候触发 touchend:触摸结束的时候触发 而每个触摸事件都包括了三个触摸列表,每个列表里包含了对应的一系列触摸点( ...

  6. STM32用JLINK 烧写程序时出现NO Cortex-m device found in JTAG chain现象和解决方案

    现象 CPU: STM32107VC 用JLINK 烧写程序时出现NO Cortex-m device found in JTAG chain 如图无法查找到硬件就是CPU 提示1:NO Cortex ...

  7. 仿QQ大战—界面篇

    之前在<仿QQ大战-服务器的搭建(ServerSocket)>中实现了服务器的搭建,以及一个简单地传递数据的实现,现在就是来实现类似与QQ聊天通信的功能.首先是界面的实现: 首先:服务器和 ...

  8. 安装了ruby后怎么安装sass

    在命令行中输入 ruby -v 查看版本号 先移除默认的https://rubygems.org源,命令为gem sources --remove https://rubygems.org/,按回车 ...

  9. Codeforces 刷水记录

    Codeforces-566F 题目大意:给出一个有序数列a,这个数列中每两个数,如果满足一个数能整除另一个数,则这两个数中间是有一条边的,现在有这样的图,求最大联通子图. 题解:并不需要把图搞出来, ...

  10. Javascript JQuery获取当前元素的兄弟元素/上一个/下一个元素(转)

    var chils= s.childNodes; //得到s的全部子节点 var par=s.parentNode; //得到s的父节点 var ns=s.nextSbiling; //获得s的下一个 ...