You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
172 lines
6.0 KiB
172 lines
6.0 KiB
/*=========================================================================
|
|
|
|
Program: Visualization Toolkit
|
|
Module: $RCSfile: vtkMaskFields.h,v $
|
|
|
|
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.
|
|
|
|
=========================================================================*/
|
|
// .NAME vtkMaskFields - Allow control of which fields get passed
|
|
// to the output
|
|
// .SECTION Description
|
|
// 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.
|
|
|
|
// .SECTION See Also
|
|
// vtkFieldData vtkDataSet vtkDataObjectToDataSetFilter
|
|
// vtkDataSetAttributes vtkDataArray vtkRearrangeFields
|
|
// vtkSplitField vtkMergeFields vtkAssignAttribute
|
|
|
|
#ifndef __vtkMaskFields_h
|
|
#define __vtkMaskFields_h
|
|
|
|
#include "vtkDataSetAlgorithm.h"
|
|
|
|
#include "vtkDataSetAttributes.h" // Needed for NUM_ATTRIBUTES
|
|
|
|
class vtkDataSet;
|
|
|
|
class VTK_GRAPHICS_EXPORT vtkMaskFields : public vtkDataSetAlgorithm
|
|
{
|
|
public:
|
|
vtkTypeRevisionMacro(vtkMaskFields,vtkDataSetAlgorithm);
|
|
void PrintSelf(ostream& os, vtkIndent indent);
|
|
|
|
// Description:
|
|
// Create a new vtkMaskFields.
|
|
static vtkMaskFields *New();
|
|
|
|
// Description:
|
|
// 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); }
|
|
|
|
|
|
// Description:
|
|
// 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); }
|
|
|
|
// Description:
|
|
// 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; }
|
|
|
|
// Description:
|
|
// 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);
|
|
|
|
// Description:
|
|
// 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();
|
|
|
|
// Description:
|
|
// 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();
|
|
|
|
//BTX
|
|
enum FieldLocation
|
|
{
|
|
OBJECT_DATA=0,
|
|
POINT_DATA=1,
|
|
CELL_DATA=2
|
|
};
|
|
//ETX
|
|
|
|
protected:
|
|
vtkMaskFields();
|
|
virtual ~vtkMaskFields();
|
|
|
|
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
|
|
|
|
//BTX
|
|
struct CopyFieldFlag
|
|
{
|
|
char* Name;
|
|
int Type;
|
|
int Location;
|
|
int IsCopied;
|
|
};
|
|
//ETX
|
|
|
|
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&); // Not implemented.
|
|
void operator=(const vtkMaskFields&); // Not implemented.
|
|
};
|
|
|
|
#endif
|
|
|
|
|
|
|