VTK
vtkReduceTable.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkReduceTable.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 =========================================================================*/
36 #ifndef vtkReduceTable_h
37 #define vtkReduceTable_h
38 
39 #include "vtkInfovisCoreModule.h" // For export macro
40 #include "vtkTableAlgorithm.h"
41 
42 #include <map> // For ivar
43 #include <set> // For ivar
44 #include <vector> // For ivar
45 
46 class vtkVariant;
47 
48 class VTKINFOVISCORE_EXPORT vtkReduceTable : public vtkTableAlgorithm
49 {
50 public:
51  static vtkReduceTable* New();
53  void PrintSelf(ostream& os, vtkIndent indent) override;
54 
56 
61  vtkGetMacro(IndexColumn, vtkIdType);
62  vtkSetMacro(IndexColumn, vtkIdType);
64 
66 
70  vtkGetMacro(NumericalReductionMethod, int);
71  vtkSetMacro(NumericalReductionMethod, int);
73 
75 
79  vtkGetMacro(NonNumericalReductionMethod, int);
80  vtkSetMacro(NonNumericalReductionMethod, int);
82 
88  int GetReductionMethodForColumn(vtkIdType col);
89 
94  void SetReductionMethodForColumn(vtkIdType col, int method);
95 
99  enum
100  {
103  MODE
104  };
105 
106 protected:
107  vtkReduceTable();
108  ~vtkReduceTable() override;
109 
110  int RequestData(
113  vtkInformationVector*) override;
114 
119  void InitializeOutputTable(vtkTable *input, vtkTable *output);
120 
125  void AccumulateIndexValues(vtkTable *input);
126 
130  void PopulateIndexColumn(vtkTable *output);
131 
137  void PopulateDataColumn(vtkTable *input, vtkTable *output, vtkIdType col);
138 
143  void ReduceValuesToMean(vtkTable *input, vtkTable *output,
144  vtkIdType row, vtkIdType col,
145  std::vector<vtkIdType> oldRows);
146 
151  void ReduceValuesToMedian(vtkTable *input, vtkTable *output,
152  vtkIdType row, vtkIdType col,
153  std::vector<vtkIdType> oldRows);
154 
159  void ReduceValuesToMode(vtkTable *input, vtkTable *output,
160  vtkIdType row, vtkIdType col,
161  std::vector<vtkIdType> oldRows);
162 
164  std::set<vtkVariant> IndexValues;
165  std::map<vtkVariant, std::vector<vtkIdType> > NewRowToOldRowsMap;
166  std::map<vtkIdType, int> ColumnReductionMethods;
167 
170 
171 private:
172  vtkReduceTable(const vtkReduceTable&) = delete;
173  void operator=(const vtkReduceTable&) = delete;
174 };
175 
176 #endif
std::set< vtkVariant > IndexValues
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
static vtkTableAlgorithm * New()
Store vtkAlgorithm input/output information.
int vtkIdType
Definition: vtkType.h:345
A atomic type representing the union of many types.
Definition: vtkVariant.h:65
std::map< vtkVariant, std::vector< vtkIdType > > NewRowToOldRowsMap
std::map< vtkIdType, int > ColumnReductionMethods
a simple class to control print indentation
Definition: vtkIndent.h:33
A table, which contains similar-typed columns of data.
Definition: vtkTable.h:62
virtual int RequestData(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
This is called by the superclass.
Superclass for algorithms that produce only vtkTables as output.
Store zero or more vtkInformation instances.
int NonNumericalReductionMethod
vtkIdType IndexColumn
combine some of the rows of a table
int NumericalReductionMethod