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.

131 lines
3.7 KiB
C++

/*=========================================================================
Program: Visualization Toolkit
Module: vtkThresholdTable.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.
=========================================================================*/
/*-------------------------------------------------------------------------
Copyright 2008 Sandia Corporation.
Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
the U.S. Government retains certain rights in this software.
-------------------------------------------------------------------------*/
/**
* @class vtkThresholdTable
* @brief Thresholds table rows.
*
*
* vtkThresholdTable uses minimum and/or maximum values to threshold
* table rows based on the values in a particular column.
* The column to threshold is specified using SetInputArrayToProcess(0, ...).
*/
#ifndef vtkThresholdTable_h
#define vtkThresholdTable_h
#include "vtkInfovisCoreModule.h" // For export macro
#include "vtkTableAlgorithm.h"
#include "vtkVariant.h" // For vtkVariant arguments
class VTKINFOVISCORE_EXPORT vtkThresholdTable : public vtkTableAlgorithm
{
public:
static vtkThresholdTable* New();
vtkTypeMacro(vtkThresholdTable, vtkTableAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent) override;
enum
{
ACCEPT_LESS_THAN = 0,
ACCEPT_GREATER_THAN = 1,
ACCEPT_BETWEEN = 2,
ACCEPT_OUTSIDE = 3
};
//@{
/**
* The mode of the threshold filter. Options are:
* ACCEPT_LESS_THAN (0) accepts rows with values < MaxValue;
* ACCEPT_GREATER_THAN (1) accepts rows with values > MinValue;
* ACCEPT_BETWEEN (2) accepts rows with values > MinValue and < MaxValue;
* ACCEPT_OUTSIDE (3) accepts rows with values < MinValue or > MaxValue.
*/
vtkSetClampMacro(Mode, int, 0, 3);
vtkGetMacro(Mode, int);
//@}
//@{
/**
* The minimum value for the threshold.
* This may be any data type stored in a vtkVariant.
*/
virtual void SetMinValue(vtkVariant v)
{
this->MinValue = v;
this->Modified();
}
virtual vtkVariant GetMinValue() { return this->MinValue; }
//@}
//@{
/**
* The maximum value for the threshold.
* This may be any data type stored in a vtkVariant.
*/
virtual void SetMaxValue(vtkVariant v)
{
this->MaxValue = v;
this->Modified();
}
virtual vtkVariant GetMaxValue() { return this->MaxValue; }
//@}
/**
* Criterion is rows whose scalars are between lower and upper thresholds
* (inclusive of the end values).
*/
void ThresholdBetween(vtkVariant lower, vtkVariant upper);
/**
* The minimum value for the threshold as a double.
*/
void SetMinValue(double v) { this->SetMinValue(vtkVariant(v)); }
/**
* The maximum value for the threshold as a double.
*/
void SetMaxValue(double v) { this->SetMaxValue(vtkVariant(v)); }
/**
* Criterion is rows whose scalars are between lower and upper thresholds
* (inclusive of the end values).
*/
void ThresholdBetween(double lower, double upper)
{
this->ThresholdBetween(vtkVariant(lower), vtkVariant(upper));
}
protected:
vtkThresholdTable();
~vtkThresholdTable() override;
int RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
vtkVariant MinValue;
vtkVariant MaxValue;
int Mode;
private:
vtkThresholdTable(const vtkThresholdTable&) = delete;
void operator=(const vtkThresholdTable&) = delete;
};
#endif