VTK  9.1.0
vtkSplitField.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkSplitField.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=========================================================================*/
46#ifndef vtkSplitField_h
47#define vtkSplitField_h
48
49#include "vtkDataSetAlgorithm.h"
50#include "vtkFiltersGeneralModule.h" // For export macro
51
52#include "vtkDataSetAttributes.h" // Needed for NUM_ATTRIBUTES
53
54class vtkFieldData;
55
56class VTKFILTERSGENERAL_EXPORT vtkSplitField : public vtkDataSetAlgorithm
57{
58public:
60 void PrintSelf(ostream& os, vtkIndent indent) override;
61
65 static vtkSplitField* New();
66
71 void SetInputField(int attributeType, int fieldLoc);
72
77 void SetInputField(const char* name, int fieldLoc);
78
83 void SetInputField(const char* name, const char* fieldLoc);
84
88 void Split(int component, const char* arrayName);
89
91 {
92 DATA_OBJECT = 0,
93 POINT_DATA = 1,
94 CELL_DATA = 2
95 };
96
97 struct Component
98 {
99 int Index;
101 Component* Next; // linked list
102 void SetName(const char* name)
103 {
104 delete[] this->FieldName;
105 this->FieldName = nullptr;
106 if (name)
107 {
108 size_t len = strlen(name) + 1;
109 this->FieldName = new char[len];
110#ifdef _MSC_VER
111 strncpy_s(this->FieldName, len, name, len - 1);
112#else
113 strncpy(this->FieldName, name, len);
114#endif
115 }
116 }
117 Component() { FieldName = nullptr; }
118 ~Component() { delete[] FieldName; }
119 };
120
121protected:
123 {
125 ATTRIBUTE
126 };
127
129 ~vtkSplitField() override;
130
132
137
138 static char FieldLocationNames[3][12];
139 static char AttributeNames[vtkDataSetAttributes::NUM_ATTRIBUTES][10];
140
142
143 // Components are stored as a linked list.
146
147 // Methods to browse/modify the linked list.
149 Component* GetFirst() { return this->Head; }
153
154 void PrintComponent(Component* op, ostream& os, vtkIndent indent);
155 void PrintAllComponents(ostream& os, vtkIndent indent);
156
157private:
158 vtkSplitField(const vtkSplitField&) = delete;
159 void operator=(const vtkSplitField&) = delete;
160};
161
162#endif
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:159
Superclass for algorithms that produce output of the same type as input.
represent and manipulate fields of data
Definition: vtkFieldData.h:164
a simple class to control print indentation
Definition: vtkIndent.h:113
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
Split a field into single component fields.
Definition: vtkSplitField.h:57
void DeleteAllComponents()
void SetInputField(int attributeType, int fieldLoc)
Use the given attribute in the field data given by fieldLoc as input.
void SetInputField(const char *name, const char *fieldLoc)
Helper method used by other language bindings.
Component * FindComponent(int index)
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called within ProcessRequest when a request asks the algorithm to do its work.
void Split(int component, const char *arrayName)
Create a new array with the given component.
void PrintComponent(Component *op, ostream &os, vtkIndent indent)
Component * GetFirst()
void PrintAllComponents(ostream &os, vtkIndent indent)
Component * Head
vtkDataArray * SplitArray(vtkDataArray *da, int component)
void SetInputField(const char *name, int fieldLoc)
Use the array with given name in the field data given by fieldLoc as input.
Component * GetNextComponent(Component *op)
Component * Tail
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void AddComponent(Component *op)
~vtkSplitField() override
static vtkSplitField * New()
Create a new vtkSplitField.
void SetName(const char *name)