paraView关联表达vtkDataRepresentation重要函数

目录

1.GetInputConnection 

3.ApplyViewTheme

4.Select

5.Annotate

 6.ConvertSelection****

7.RequestData

8.UpdateAnnotations

9.UpdateSelection


1.GetInputConnection 

 vtkAlgorithmOutput* GetInputConnection(int port = 0, int index = 0)

获取输入连接的便利覆盖方法,不需要指定端口或索引

 /**
   * The annotation link for this representation.
   * To link annotations, set the same vtkAnnotationLink object in
   * multiple representations.
   */
  vtkAnnotationLink* GetAnnotationLink() { return this->AnnotationLinkInternal; }
  void SetAnnotationLink(vtkAnnotationLink* link);

表达的注释链接。

要链接注释,请在多个表示中设置相同的VTKANNATIONLink对象。

3.ApplyViewTheme

  /**
   * Apply a theme to this representation.
   * Subclasses should override this method.
   */
  virtual void ApplyViewTheme(vtkViewTheme* vtkNotUsed(theme)) {}

运用一个主题给表达

子类需要重写override这个方法

4.Select

 void Select(vtkView* view, vtkSelection* selection) { this->Select(view, selection, false); }
  void Select(vtkView* view, vtkSelection* selection, bool extend);

视图在发生选择时调用此方法。

*表示接受此选择,并通过调用ConvertSelection将选择转换为数据上的选择,然后使用转换后的选择调用UpdateSelection。

*子类不应重写此方法,而应重写ConvertSelection。

*可选的第三个参数指定:是否应将选择添加到此表示的上一个选择中。

5.Annotate

 void Annotate(vtkView* view, vtkAnnotationLayers* annotations)
  {
    this->Annotate(view, annotations, false);
  }
  void Annotate(vtkView* view, vtkAnnotationLayers* annotations, bool extend);

类似于Select()。视图在需要更改基础注释时调用此方法(某些视图可能会执行注释的创建)。

表示接受注释并通过调用ConvertAnnotations将注释转换为数据上的选择,然后使用转换后的选择调用UpdateAnnotations。

子类不应重写此方法,而应重写ConvertSelection。

可选的第三个参数指定:是否应将选择添加到此表示的上一个选择中。

 6.ConvertSelection****

 virtual vtkSelection* ConvertSelection(vtkView* view, vtkSelection* selection);

*通过vtkAnnotationLink(可能使用视图)将所选内容转换为适合与其他表达共享的类型。

*对于超类,我们只返回相同的选择。

*子类可能会做一些更奇特的事情,比如将选择从一个截头体转换为一个谱系ID列表。如果选择不能应用于此表示,请返回nullptr。

7.RequestData

  int RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override
  {
    return 1;
  }

*子类应该重写它,以便在必要时将输入连接到内部管道。

由于大多数表示都是“元过滤器”(即包含其他过滤器的过滤器),因此在连接到内部管道之前,应该创建输入的浅层副本。

方便的方法GetInternalOutputPort将为您创建指定输入的缓存浅拷贝。

相关的辅助函数GetInternalAnnotationOutputPort、GetInternalSelectionOutputPort应用于获取选择或注释端口,该端口的选择是针对特定输入数据对象本地化的。

8.UpdateAnnotations

  void UpdateAnnotations(vtkAnnotationLayers* annotations)
  {
    this->UpdateAnnotations(annotations, false);
  }
  void UpdateAnnotations(vtkAnnotationLayers* annotations, bool extend);

更新选择链接中的选择并触发选择更改事件。

子类不应重写此方法,而应重写ConvertSelection。

*可选的第二个参数指定是否应将所选内容添加到此表示的上一个选择中。

9.UpdateSelection

  void UpdateSelection(vtkSelection* selection) { this->UpdateSelection(selection, false); }
  void UpdateSelection(vtkSelection* selection, bool extend);

*更新选择链接中的选择并触发选择更改事件。

子类不应重写此方法,而应重写ConvertSelection。

*可选的第二个参数指定是否应将所选内容添加到此表示的上一个选择中。 

void vtkDataRepresentation::UpdateSelection(vtkSelection* selection, bool extend)
{
  if (extend)
  {
    selection->Union(this->AnnotationLinkInternal->GetCurrentSelection());
  }
  this->AnnotationLinkInternal->SetCurrentSelection(selection);
  this->InvokeEvent(vtkCommand::SelectionChangedEvent, reinterpret_cast<void*>(selection));
}

InvokeEnvent内部执行原理,或者执行机制。 

 

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片