You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
187 lines
5.9 KiB
C
187 lines
5.9 KiB
C
3 weeks ago
|
/*=========================================================================
|
||
|
|
||
|
Program: Visualization Toolkit
|
||
|
Module: vtkMaskFields.h
|
||
|
|
||
|
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
|
||
|
All rights reserved.
|
||
|
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
|
||
|
|
||
|
This software is distributed WITHOUT ANY WARRANTY; without even
|
||
|
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||
|
PURPOSE. See the above copyright notice for more information.
|
||
|
|
||
|
=========================================================================*/
|
||
|
/**
|
||
|
* @class vtkMaskFields
|
||
|
* @brief Allow control of which fields get passed
|
||
|
* to the output
|
||
|
*
|
||
|
* vtkMaskFields is used to mark which fields in the input dataset
|
||
|
* get copied to the output. The output will contain only those fields
|
||
|
* marked as on by the filter.
|
||
|
*
|
||
|
* @sa
|
||
|
* vtkFieldData vtkDataSet vtkDataObjectToDataSetFilter
|
||
|
* vtkDataSetAttributes vtkDataArray vtkRearrangeFields
|
||
|
* vtkSplitField vtkMergeFields vtkAssignAttribute
|
||
|
*/
|
||
|
|
||
|
#ifndef vtkMaskFields_h
|
||
|
#define vtkMaskFields_h
|
||
|
|
||
|
#include "vtkDataSetAlgorithm.h"
|
||
|
#include "vtkFiltersCoreModule.h" // For export macro
|
||
|
|
||
|
#include "vtkDataSetAttributes.h" // Needed for NUM_ATTRIBUTES
|
||
|
|
||
|
class vtkDataSet;
|
||
|
|
||
|
class VTKFILTERSCORE_EXPORT vtkMaskFields : public vtkDataSetAlgorithm
|
||
|
{
|
||
|
public:
|
||
|
vtkTypeMacro(vtkMaskFields, vtkDataSetAlgorithm);
|
||
|
void PrintSelf(ostream& os, vtkIndent indent) override;
|
||
|
|
||
|
/**
|
||
|
* Create a new vtkMaskFields.
|
||
|
*/
|
||
|
static vtkMaskFields* New();
|
||
|
|
||
|
/**
|
||
|
* Turn on/off the copying of the field or specified by name.
|
||
|
* During the copying/passing, the following rules are followed for each
|
||
|
* array:
|
||
|
* 1. If the copy flag for an array is set (on or off), it is applied
|
||
|
* This overrides rule 2.
|
||
|
* 2. If CopyAllOn is set, copy the array.
|
||
|
* If CopyAllOff is set, do not copy the array
|
||
|
* A field name and a location must be specified. For example:
|
||
|
* @verbatim
|
||
|
* maskFields->CopyFieldOff(vtkMaskFields::CELL_DATA, "foo");
|
||
|
* @endverbatim
|
||
|
* causes the field "foo" on the input cell data to not get copied
|
||
|
* to the output.
|
||
|
*/
|
||
|
void CopyFieldOn(int fieldLocation, const char* name)
|
||
|
{
|
||
|
this->CopyFieldOnOff(fieldLocation, name, 1);
|
||
|
}
|
||
|
void CopyFieldOff(int fieldLocation, const char* name)
|
||
|
{
|
||
|
this->CopyFieldOnOff(fieldLocation, name, 0);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Turn on/off the copying of the attribute or specified by vtkDataSetAttributes:AttributeTypes.
|
||
|
* During the copying/passing, the following rules are followed for each
|
||
|
* array:
|
||
|
* 1. If the copy flag for an array is set (on or off), it is applied
|
||
|
* This overrides rule 2.
|
||
|
* 2. If CopyAllOn is set, copy the array.
|
||
|
* If CopyAllOff is set, do not copy the array
|
||
|
* An attribute type and a location must be specified. For example:
|
||
|
* @verbatim
|
||
|
* maskFields->CopyAttributeOff(vtkMaskFields::POINT_DATA, vtkDataSetAttributes::SCALARS);
|
||
|
* @endverbatim
|
||
|
* causes the scalars on the input point data to not get copied
|
||
|
* to the output.
|
||
|
*/
|
||
|
void CopyAttributeOn(int attributeLocation, int attributeType)
|
||
|
{
|
||
|
this->CopyAttributeOnOff(attributeLocation, attributeType, 1);
|
||
|
}
|
||
|
void CopyAttributeOff(int attributeLocation, int attributeType)
|
||
|
{
|
||
|
this->CopyAttributeOnOff(attributeLocation, attributeType, 0);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Convenience methods which operate on all field data or
|
||
|
* attribute data. More specific than CopyAllOn or CopyAllOff
|
||
|
*/
|
||
|
void CopyFieldsOff() { this->CopyFields = 0; }
|
||
|
void CopyAttributesOff() { this->CopyAttributes = 0; }
|
||
|
|
||
|
void CopyFieldsOn() { this->CopyFields = 1; }
|
||
|
void CopyAttributesOn() { this->CopyAttributes = 1; }
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Helper methods used by other language bindings. Allows the caller to
|
||
|
* specify arguments as strings instead of enums.
|
||
|
*/
|
||
|
void CopyAttributeOn(const char* attributeLoc, const char* attributeType);
|
||
|
void CopyAttributeOff(const char* attributeLoc, const char* attributeType);
|
||
|
void CopyFieldOn(const char* fieldLoc, const char* name);
|
||
|
void CopyFieldOff(const char* fieldLoc, const char* name);
|
||
|
//@}
|
||
|
|
||
|
/**
|
||
|
* Turn on copying of all data.
|
||
|
* During the copying/passing, the following rules are followed for each
|
||
|
* array:
|
||
|
* 1. If the copy flag for an array is set (on or off), it is applied
|
||
|
* This overrides rule 2.
|
||
|
* 2. If CopyAllOn is set, copy the array.
|
||
|
* If CopyAllOff is set, do not copy the array
|
||
|
*/
|
||
|
virtual void CopyAllOn();
|
||
|
|
||
|
/**
|
||
|
* Turn off copying of all data.
|
||
|
* During the copying/passing, the following rules are followed for each
|
||
|
* array:
|
||
|
* 1. If the copy flag for an array is set (on or off), it is applied
|
||
|
* This overrides rule 2.
|
||
|
* 2. If CopyAllOn is set, copy the array.
|
||
|
* If CopyAllOff is set, do not copy the array
|
||
|
*/
|
||
|
virtual void CopyAllOff();
|
||
|
|
||
|
enum FieldLocation
|
||
|
{
|
||
|
OBJECT_DATA = 0,
|
||
|
POINT_DATA = 1,
|
||
|
CELL_DATA = 2
|
||
|
};
|
||
|
|
||
|
protected:
|
||
|
vtkMaskFields();
|
||
|
~vtkMaskFields() override;
|
||
|
|
||
|
int RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
|
||
|
|
||
|
struct CopyFieldFlag
|
||
|
{
|
||
|
char* Name;
|
||
|
int Type;
|
||
|
int Location;
|
||
|
int IsCopied;
|
||
|
};
|
||
|
|
||
|
CopyFieldFlag* CopyFieldFlags; // the names of fields not to be copied
|
||
|
int NumberOfFieldFlags; // the number of fields not to be copied
|
||
|
void CopyFieldOnOff(int fieldLocation, const char* name, int onOff);
|
||
|
void CopyAttributeOnOff(int attributeLocation, int attributeType, int onOff);
|
||
|
void ClearFieldFlags();
|
||
|
int FindFlag(const char* field, int location);
|
||
|
int FindFlag(int arrayType, int location);
|
||
|
int GetFlag(const char* field, int location);
|
||
|
int GetFlag(int arrayType, int location);
|
||
|
int GetAttributeLocation(const char* loc);
|
||
|
int GetAttributeType(const char* type);
|
||
|
|
||
|
int CopyFields;
|
||
|
int CopyAttributes;
|
||
|
|
||
|
static char FieldLocationNames[3][12];
|
||
|
static char AttributeNames[vtkDataSetAttributes::NUM_ATTRIBUTES][10];
|
||
|
|
||
|
private:
|
||
|
vtkMaskFields(const vtkMaskFields&) = delete;
|
||
|
void operator=(const vtkMaskFields&) = delete;
|
||
|
};
|
||
|
|
||
|
#endif
|