Difference between revisions of "VTK/Examples/Cxx/Developers/FilterSelfProgress"

From KitwarePublic
< VTK‎ | Examples‎ | Cxx
Jump to: navigation, search
(Replaced content with "= '''See [https://lorensen.github.io/VTKExamples/site/Cxx/Developers/FilterSelfProgress FilterSelfProgress] on the new [https://lorensen.github.io/VTKExamples/site/ VTKExa...")
 
Line 1: Line 1:
While you can let the user get the filter progresses like this: http://www.vtk.org/Wiki/VTK/Examples/Developers/ProgressReport
+
= '''See [https://lorensen.github.io/VTKExamples/site/Cxx/Developers/FilterSelfProgress FilterSelfProgress] on the new [https://lorensen.github.io/VTKExamples/site/ VTKExamples website].''' =
 
 
, it is often nice to have a filter report its progress itself.
 
 
 
==vtkTestFilterSelfProgressFilter.h==
 
<source lang="cpp">
 
#ifndef __vtkTestFilterSelfProgressFilter_h
 
#define __vtkTestFilterSelfProgressFilter_h
 
 
#include "vtkPolyDataAlgorithm.h"
 
 
class vtkTestFilterSelfProgressFilter : public vtkPolyDataAlgorithm
 
{
 
public:
 
  vtkTypeMacro(vtkTestFilterSelfProgressFilter,vtkAlgorithm);
 
 
 
  static vtkTestFilterSelfProgressFilter *New();
 
 
protected:
 
  vtkTestFilterSelfProgressFilter();
 
  ~vtkTestFilterSelfProgressFilter(){}
 
 
  int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) VTK_OVERRIDE;
 
 
  static void ProgressFunction(vtkObject* caller, long unsigned int eventId, void* clientData, void* callData);
 
 
 
private:
 
  vtkTestFilterSelfProgressFilter(const vtkTestFilterSelfProgressFilter&);  // Not implemented.
 
  void operator=(const vtkTestFilterSelfProgressFilter&);  // Not implemented.
 
 
};
 
 
#endif
 
</source>
 
 
 
==vtkTestFilterSelfProgressFilter.cxx==
 
<source lang="cpp">
 
#include "vtkSmartPointer.h"
 
 
#include "vtkObjectFactory.h"
 
#include "vtkStreamingDemandDrivenPipeline.h"
 
#include "vtkInformationVector.h"
 
#include "vtkInformation.h"
 
#include "vtkDataObject.h"
 
#include "vtkCallbackCommand.h"
 
 
 
#include "vtkTestFilterSelfProgressFilter.h"
 
 
vtkStandardNewMacro(vtkTestFilterSelfProgressFilter);
 
 
 
vtkTestFilterSelfProgressFilter::vtkTestFilterSelfProgressFilter()
 
{
 
  vtkSmartPointer<vtkCallbackCommand> progressCallback =
 
      vtkSmartPointer<vtkCallbackCommand>::New();
 
  progressCallback->SetCallback(this->ProgressFunction);
 
 
 
  this->AddObserver(vtkCommand::ProgressEvent, progressCallback);
 
}
 
 
void vtkTestFilterSelfProgressFilter::ProgressFunction(vtkObject* caller, long unsigned int eventId, void* clientData, void* callData)
 
{
 
  vtkTestFilterSelfProgressFilter* testFilter = static_cast<vtkTestFilterSelfProgressFilter*>(caller);
 
  cout << "Progress: " << testFilter->GetProgress() << endl;
 
}
 
 
 
int vtkTestFilterSelfProgressFilter::RequestData(vtkInformation *vtkNotUsed(request),
 
                                            vtkInformationVector **inputVector,
 
                                            vtkInformationVector *outputVector)
 
{
 
 
  // get the info objects
 
  vtkInformation *inInfo = inputVector[0]->GetInformationObject(0);
 
  vtkInformation *outInfo = outputVector->GetInformationObject(0);
 
 
 
  // get the input and ouptut
 
  vtkPolyData *input = vtkPolyData::SafeDownCast(
 
      inInfo->Get(vtkDataObject::DATA_OBJECT()));
 
 
  vtkPolyData *output = vtkPolyData::SafeDownCast(
 
      outInfo->Get(vtkDataObject::DATA_OBJECT()));
 
 
  for(vtkIdType i = 0; i < input->GetNumberOfPoints(); i++)
 
    {
 
    this->UpdateProgress(static_cast<double>(i)/input->GetNumberOfPoints());
 
    }
 
   
 
  output->ShallowCopy(input);
 
 
  return 1;
 
}
 
</source>
 
 
 
==FilterSelfProgress.cxx==
 
<source lang="cpp">
 
#include <vtkSmartPointer.h>
 
#include <vtkPoints.h>
 
#include <vtkPolyData.h>
 
#include <vtkSphereSource.h>
 
#include <vtkCallbackCommand.h>
 
#include <vtkCommand.h>
 
 
 
#include "vtkTestFilterSelfProgressFilter.h"
 
 
 
void ProgressFunction(vtkObject* caller, long unsigned int eventId, void* clientData, void* callData);
 
 
 
int main(int argc, char **argv)
 
{
 
  vtkSmartPointer<vtkSphereSource> sphereSource =
 
      vtkSmartPointer<vtkSphereSource>::New();
 
  sphereSource->Update();
 
 
 
  vtkSmartPointer<vtkTestFilterSelfProgressFilter> testFilter =
 
      vtkSmartPointer<vtkTestFilterSelfProgressFilter>::New();
 
  testFilter->SetInputConnection(sphereSource->GetOutputPort());
 
  testFilter->Update();
 
 
 
  return EXIT_SUCCESS;
 
}
 
</source>
 
 
 
{{VTKCMakeListsMultiple|{{SUBPAGENAME}}|vtkTestFilterSelfProgress.cxx}}
 

Latest revision as of 16:58, 12 April 2019

See FilterSelfProgress on the new VTKExamples website.