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 =========================================================================*/
39 #ifndef vtkReduceTable_h
40 #define vtkReduceTable_h
41 
42 #include "vtkInfovisCoreModule.h" // For export macro
43 #include "vtkTableAlgorithm.h"
44 
45 #include <map> // For ivar
46 #include <set> // For ivar
47 #include <vector> // For ivar
48 
49 class vtkVariant;
50 
51 class VTKINFOVISCORE_EXPORT vtkReduceTable : public vtkTableAlgorithm
52 {
53 public:
54  static vtkReduceTable* New();
56  void PrintSelf(ostream& os, vtkIndent indent) override;
57 
59 
64  vtkGetMacro(IndexColumn, vtkIdType);
65  vtkSetMacro(IndexColumn, vtkIdType);
67 
69 
73  vtkGetMacro(NumericalReductionMethod, int);
74  vtkSetMacro(NumericalReductionMethod, int);
76 
78 
82  vtkGetMacro(NonNumericalReductionMethod, int);
83  vtkSetMacro(NonNumericalReductionMethod, int);
85 
91  int GetReductionMethodForColumn(vtkIdType col);
92 
97  void SetReductionMethodForColumn(vtkIdType col, int method);
98 
102  enum
103  {
106  MODE
107  };
108 
109 protected:
110  vtkReduceTable();
111  ~vtkReduceTable() override;
112 
113  int RequestData(
116  vtkInformationVector*) override;
117 
122  void InitializeOutputTable(vtkTable *input, vtkTable *output);
123 
128  void AccumulateIndexValues(vtkTable *input);
129 
133  void PopulateIndexColumn(vtkTable *output);
134 
140  void PopulateDataColumn(vtkTable *input, vtkTable *output, vtkIdType col);
141 
146  void ReduceValuesToMean(vtkTable *input, vtkTable *output,
147  vtkIdType row, vtkIdType col,
148  std::vector<vtkIdType> oldRows);
149 
154  void ReduceValuesToMedian(vtkTable *input, vtkTable *output,
155  vtkIdType row, vtkIdType col,
156  std::vector<vtkIdType> oldRows);
157 
162  void ReduceValuesToMode(vtkTable *input, vtkTable *output,
163  vtkIdType row, vtkIdType col,
164  std::vector<vtkIdType> oldRows);
165 
167  std::set<vtkVariant> IndexValues;
168  std::map<vtkVariant, std::vector<vtkIdType> > NewRowToOldRowsMap;
169  std::map<vtkIdType, int> ColumnReductionMethods;
170 
173 
174 private:
175  vtkReduceTable(const vtkReduceTable&) = delete;
176  void operator=(const vtkReduceTable&) = delete;
177 };
178 
179 #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:347
A atomic type representing the union of many types.
Definition: vtkVariant.h:71
std::map< vtkVariant, std::vector< vtkIdType > > NewRowToOldRowsMap
std::map< vtkIdType, int > ColumnReductionMethods
a simple class to control print indentation
Definition: vtkIndent.h:39
A table, which contains similar-typed columns of data.
Definition: vtkTable.h:68
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