06 - 从Algorithm 算法派生类中删除ExecuteInformation() 和ExecuteData() VTK 6.0 迁移

在先前的vtk中,如vtkPointSetAlgorithm 等算法派生类中定义了虚方法:ExecuteInformation() 和 ExecuteData()。这些方法的定义是为了平稳的从VTK4到VTK5中。我们从如下的类中删除了ExecuteInformation() 和 ExecuteData():

  • vtkDataObjectAlgorithm
  • vtkGenericDataSetAlgorithm
  • vtkHyperOctreeAlgorithm
  • vtkPiecewiseFunctionAlgorithm
  • vtkPolyDataAlgorithm
  • vtkRectilinearGridAlgorithm
  • vtkSelectionAlgorithm
  • vtkStructuredGridAlgorithm
  • vtkUnstructuredGridAlgorithm

任何上面的派生类都应该改ExecuteInformation() 和 ExecuteData()变成 RequestInformation() 和 RequestData()。应该利用这个机会使用输入输出信息对象访问输入输出数据对象,相对于GetInput() 和 GetOutput()。这儿有一个列外类vtkImageAlgorithm仍然支持 ExecuteData() 和 Execute()。

例子1:


void vtkMyReader::ExecuteInformation()
{
   vtkImageData* output = this->GetOutput();
   output->SetWholeExtent(…);
   output->SetScalarType(VTK_UNSIGNED_CHAR);
}

 

替换成:

int vtkMyReader::RequestInformation(vtkInformation*, vtkInformationVector**, 
       vtkInformationVector* outInfoVec)
{
   vtkInformation* outInfo = outInfoVec->GetInformationObject(0);
   outInfo->Set(vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT(), …);
    vtkDataObject::SetPointDataActiveScalarInfo(
       outInfo, VTK_UNSIGNED_CHAR, 1);
   return 1;
}

 

例子2:


 

 

void vtkMyAlgorithm::Execute()
{
 
   vtkImageData* input= this->GetInput();
   vtkPolyData* output = this->GetOutput();

 

替换成:

int vtkMyReader::RequestData(vtkInformation*, 
      vtkInformationVector**, inInfoVec, 
       vtkInformationVector* outInfoVec)
{
    vtkImageData* input = vtkImageData::GetData(inInfoVec[0]);
    vtkPolyData* output = vtkPolyData::GetData(outInfoVec);

 

 

 

转载于:https://www.cnblogs.com/ankier/p/3168495.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值