VTK
vtkMergeFields.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkMergeFields.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 =========================================================================*/
48 #ifndef vtkMergeFields_h
49 #define vtkMergeFields_h
50 
51 #include "vtkFiltersCoreModule.h" // For export macro
52 #include "vtkDataSetAlgorithm.h"
53 
54 class vtkDataArray;
55 class vtkFieldData;
56 
57 class VTKFILTERSCORE_EXPORT vtkMergeFields : public vtkDataSetAlgorithm
58 {
59 public:
61  void PrintSelf(ostream& os, vtkIndent indent) VTK_OVERRIDE;
62 
66  static vtkMergeFields *New();
67 
72  void SetOutputField(const char* name, int fieldLoc);
73 
79  void SetOutputField(const char* name, const char* fieldLoc);
80 
84  void Merge(int component, const char* arrayName, int sourceComp);
85 
87 
91  vtkSetMacro(NumberOfComponents, int);
92  vtkGetMacro(NumberOfComponents, int);
94 
96  {
97  DATA_OBJECT=0,
98  POINT_DATA=1,
99  CELL_DATA=2
100  };
101 
102  struct Component
103  {
104  int Index;
106  char* FieldName;
107  Component* Next; // linked list
108  void SetName(const char* name)
109  {
110  delete[] this->FieldName;
111  this->FieldName = 0;
112  if (name)
113  {
114  size_t len = strlen(name)+1;
115  this->FieldName = new char[len];
116  strncpy(this->FieldName, name, len);
117  }
118  }
119  Component() { FieldName = 0; }
120  ~Component() { delete[] FieldName; }
121  };
122 
123 protected:
124 
126  {
128  ATTRIBUTE
129  };
130 
132  ~vtkMergeFields() VTK_OVERRIDE;
133 
134  int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) VTK_OVERRIDE;
135 
136  char* FieldName;
137  int FieldLocation;
138  int NumberOfComponents;
139  int OutputDataType;
140 
141  static char FieldLocationNames[3][12];
142 
143 
144  int MergeArray(vtkDataArray* in, vtkDataArray* out, int inComp, int outComp);
145 
146  // Components are stored as a linked list.
147  Component* Head;
148  Component* Tail;
149 
150  // Methods to browse/modify the linked list.
151  Component* GetNextComponent(Component* op)
152  { return op->Next; }
154  { return this->Head; }
158 
159  void PrintComponent(Component* op, ostream& os, vtkIndent indent);
160  void PrintAllComponents(ostream& os, vtkIndent indent);
161 private:
162  vtkMergeFields(const vtkMergeFields&) VTK_DELETE_FUNCTION;
163  void operator=(const vtkMergeFields&) VTK_DELETE_FUNCTION;
164 };
165 
166 #endif
167 
168 
vtkX3D::component
@ component
Definition: vtkX3D.h:175
vtkInformationVector
Store zero or more vtkInformation instances.
Definition: vtkInformationVector.h:42
vtkMergeFields::Component::~Component
~Component()
Definition: vtkMergeFields.h:120
vtkMergeFields::FindComponent
Component * FindComponent(int index)
vtkMergeFields::Component
Definition: vtkMergeFields.h:103
vtkMergeFields::SetOutputField
void SetOutputField(const char *name, const char *fieldLoc)
Helper method used by the other language bindings.
vtkMergeFields::Component::SetName
void SetName(const char *name)
Definition: vtkMergeFields.h:108
vtkDataArray
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:55
vtkMergeFields::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkMergeFields::AddComponent
void AddComponent(Component *op)
vtkMergeFields::Component::Index
int Index
Definition: vtkMergeFields.h:104
vtkFieldData
represent and manipulate fields of data
Definition: vtkFieldData.h:57
vtkMergeFields::FieldType
FieldType
Definition: vtkMergeFields.h:126
vtkMergeFields::Merge
void Merge(int component, const char *arrayName, int sourceComp)
Add a component (arrayName,sourceComp) to the output field.
vtkMergeFields::DeleteAllComponents
void DeleteAllComponents()
vtkDataSetAlgorithm
Superclass for algorithms that produce output of the same type as input.
Definition: vtkDataSetAlgorithm.h:52
vtkMergeFields::~vtkMergeFields
~vtkMergeFields() override
vtkMergeFields::PrintComponent
void PrintComponent(Component *op, ostream &os, vtkIndent indent)
vtkMergeFields::Component::FieldName
char * FieldName
Definition: vtkMergeFields.h:106
vtkMergeFields::FieldLocations
FieldLocations
Definition: vtkMergeFields.h:96
vtkMergeFields::New
static vtkMergeFields * New()
Create a new vtkMergeFields.
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:40
vtkMergeFields::PrintAllComponents
void PrintAllComponents(ostream &os, vtkIndent indent)
vtkMergeFields::GetFirst
Component * GetFirst()
Definition: vtkMergeFields.h:153
vtkMergeFields
Merge multiple fields into one.
Definition: vtkMergeFields.h:58
vtkX3D::name
@ name
Definition: vtkX3D.h:219
vtkInformation
Store vtkAlgorithm input/output information.
Definition: vtkInformation.h:87
vtkMergeFields::NAME
@ NAME
Definition: vtkMergeFields.h:127
vtkSetMacro
vtkSetMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
vtkMergeFields::Component::SourceIndex
int SourceIndex
Definition: vtkMergeFields.h:105
vtkDataSetAlgorithm.h
vtkMergeFields::Component::Component
Component()
Definition: vtkMergeFields.h:119
vtkX3D::index
@ index
Definition: vtkX3D.h:246
vtkMergeFields::vtkMergeFields
vtkMergeFields()
vtkMergeFields::Component::Next
Component * Next
Definition: vtkMergeFields.h:107
vtkMergeFields::SetOutputField
void SetOutputField(const char *name, int fieldLoc)
The output field will have the given name and it will be in fieldLoc (the input fields also have to b...