VTK  9.0.1
vtkExtractTimeSteps.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkExtractTimeSteps.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
35 #ifndef vtkExtractTimeSteps_h
36 #define vtkExtractTimeSteps_h
37 
38 #include "vtkFiltersExtractionModule.h" // for export macro
40 
41 #include <set> // for time step indices
42 
43 class VTKFILTERSEXTRACTION_EXPORT vtkExtractTimeSteps : public vtkPassInputTypeAlgorithm
44 {
45 public:
47  void PrintSelf(ostream& os, vtkIndent indent) override;
48 
50 
54  int GetNumberOfTimeSteps() const { return static_cast<int>(this->TimeStepIndices.size()); }
55 
59  void AddTimeStepIndex(int timeStepIndex);
60 
62 
66  void SetTimeStepIndices(int count, const int* timeStepIndices);
67  void GetTimeStepIndices(int* timeStepIndices) const;
69 
73  void GenerateTimeStepIndices(int begin, int end, int step);
74 
76 
80  {
81  this->TimeStepIndices.clear();
82  this->Modified();
83  }
85 
87 
91  vtkGetMacro(UseRange, bool);
92  vtkSetMacro(UseRange, bool);
93  vtkBooleanMacro(UseRange, bool);
95 
97 
100  vtkGetVector2Macro(Range, int);
101  vtkSetVector2Macro(Range, int);
103 
105 
109  vtkGetMacro(TimeStepInterval, int);
110  vtkSetClampMacro(TimeStepInterval, int, 1, VTK_INT_MAX);
112 
113  // What timestep to provide when the requested time is between the timesteps
114  // the filter is set to extract
115  enum
116  {
117  PREVIOUS_TIMESTEP, // floor the time to the previous timestep
118  NEXT_TIMESTEP, // ceiling the time to the next timestep
119  NEAREST_TIMESTEP // take the timestep whose absolute difference from the requested time is
120  // smallest
121  } EstimationMode;
123 
128  vtkGetMacro(TimeEstimationMode, int);
129  vtkSetMacro(TimeEstimationMode, int);
130  void SetTimeEstimationModeToPrevious() { this->SetTimeEstimationMode(PREVIOUS_TIMESTEP); }
131  void SetTimeEstimationModeToNext() { this->SetTimeEstimationMode(NEXT_TIMESTEP); }
132  void SetTimeEstimationModeToNearest() { this->SetTimeEstimationMode(NEAREST_TIMESTEP); }
134 
135 protected:
137  ~vtkExtractTimeSteps() override {}
138 
142 
143  std::set<int> TimeStepIndices;
144  bool UseRange;
145  int Range[2];
148 
149 private:
150  vtkExtractTimeSteps(const vtkExtractTimeSteps&) = delete;
151  void operator=(const vtkExtractTimeSteps&) = delete;
152 };
153 
154 #endif // vtkExtractTimeSteps_h
extract specific time-steps from dataset
void GenerateTimeStepIndices(int begin, int end, int step)
Generate a range of indices in [begin, end) with a step size of 'step'.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void ClearTimeStepIndices()
Clear the time step indices.
int RequestUpdateExtent(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called within ProcessRequest when each filter in the pipeline decides what portion of its inp...
int GetNumberOfTimeSteps() const
Get the number of time steps that will be extracted.
std::set< int > TimeStepIndices
void AddTimeStepIndex(int timeStepIndex)
Add a time step index.
int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called within ProcessRequest when a request asks for Information.
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called within ProcessRequest when a request asks the algorithm to do its work.
static vtkExtractTimeSteps * New()
void SetTimeStepIndices(int count, const int *timeStepIndices)
Get/Set an array of time step indices.
void GetTimeStepIndices(int *timeStepIndices) const
a simple class to control print indentation
Definition: vtkIndent.h:34
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
virtual void Modified()
Update the modification time for this object.
Superclass for algorithms that produce output of the same type as input.
auto Range(IterablePtr iterable, Options &&... opts) -> typename detail::IterableTraits< typename detail::StripPointers< IterablePtr >::type >::RangeType
Generate an iterable STL proxy object for a VTK container.
Definition: vtkRange.h:85
#define VTK_INT_MAX
Definition: vtkType.h:155