mirror of
https://github.com/OpenFOAM/ThirdParty-6.git
synced 2025-12-08 06:57:43 +00:00
110 lines
4.0 KiB
C++
110 lines
4.0 KiB
C++
/*=========================================================================
|
|
|
|
Program: ParaView
|
|
Module: vtkSMBoundsDomain.h
|
|
|
|
Copyright (c) Kitware, Inc.
|
|
All rights reserved.
|
|
See Copyright.txt or http://www.paraview.org/HTML/Copyright.html 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 vtkSMBoundsDomain - double range domain based on data set bounds
|
|
// .SECTION Description
|
|
// vtkSMBoundsDomain extends vtkSMDoubleRangeDomain to add support to determine
|
|
// the valid range for the values based on the dataset bounds. There are several
|
|
// \c Modes which can be used to control how the range is computed based on the
|
|
// data bounds (defined by the vtkSMBoundsDomain::Modes enum).
|
|
// \li \c NORMAL : this is the basic mode where the domain will have 3 ranges which
|
|
// are the min and max for the bounds along each of the coordinate axis.
|
|
// \li \c MAGNITUDE: the domain has a single range set to (-magn/2.0, +magn/2.0)
|
|
// where magn is the magnitude of the diagonal.
|
|
// \li \c ORIENTED_MAGNITUDE: same as MAGNITUDE, but instead of the dialog, a
|
|
// vector determined using two additional required properties with functions
|
|
// Normal, and Origin is used.
|
|
// li \c SCALED_EXTENT: the range is set to (0, maxbounds * this->ScaleFactor)
|
|
// where maxbounds is the length of the longest axis for the bounding box.
|
|
// li \c APPROXIMATE_CELL_LENGTH: approximation for cell length computed using the
|
|
// expression (diameter/ (cube_root(numCells)) * this->ScaleFactor.
|
|
//
|
|
// To determine the input data bounds, this domain depends on a required
|
|
// property with function \c Input. The data-information from the source-proxy
|
|
// set as the value for that property is used to determine the bounds.
|
|
//
|
|
// Supported XML attributes:
|
|
// \li \c mode : used to specify the Mode. Value can be "normal", "magnitude",
|
|
// "oriented_magnitude", "scaled_extent", or "approximate_cell_length".
|
|
// \li \c scale_factor : used in SCALED_EXTENT and APPROXIMATE_CELL_LENGTH mode.
|
|
// Value is a floating point number that is used as the scale factor.
|
|
|
|
#ifndef vtkSMBoundsDomain_h
|
|
#define vtkSMBoundsDomain_h
|
|
|
|
#include "vtkPVServerManagerCoreModule.h" //needed for exports
|
|
#include "vtkSMDoubleRangeDomain.h"
|
|
|
|
class vtkPVDataInformation;
|
|
class vtkSMProxyProperty;
|
|
|
|
class VTKPVSERVERMANAGERCORE_EXPORT vtkSMBoundsDomain : public vtkSMDoubleRangeDomain
|
|
{
|
|
public:
|
|
static vtkSMBoundsDomain* New();
|
|
vtkTypeMacro(vtkSMBoundsDomain, vtkSMDoubleRangeDomain);
|
|
void PrintSelf(ostream& os, vtkIndent indent);
|
|
|
|
// Description:
|
|
// Update self checking the "unchecked" values of all required
|
|
// properties. Overwritten by sub-classes.
|
|
virtual void Update(vtkSMProperty*);
|
|
|
|
// Description:
|
|
vtkSetClampMacro(Mode, int, 0, 3);
|
|
vtkGetMacro(Mode, int);
|
|
|
|
// Description:
|
|
// SCALED_EXTENT: is used for vtkPVScaleFactorEntry.
|
|
enum Modes
|
|
{
|
|
NORMAL,
|
|
MAGNITUDE,
|
|
ORIENTED_MAGNITUDE,
|
|
SCALED_EXTENT,
|
|
APPROXIMATE_CELL_LENGTH
|
|
};
|
|
|
|
vtkGetMacro(ScaleFactor, double);
|
|
|
|
// Description:
|
|
// Overridden to handle APPROXIMATE_CELL_LENGTH.
|
|
virtual int SetDefaultValues(vtkSMProperty* property, bool use_unchecked_values);
|
|
|
|
protected:
|
|
vtkSMBoundsDomain();
|
|
~vtkSMBoundsDomain();
|
|
|
|
// Description:
|
|
// Set the appropriate ivars from the xml element. Should
|
|
// be overwritten by subclass if adding ivars.
|
|
virtual int ReadXMLAttributes(vtkSMProperty* prop, vtkPVXMLElement* element);
|
|
|
|
// Obtain the data information from the requried property with
|
|
// function "Input", if any.
|
|
vtkPVDataInformation* GetInputInformation();
|
|
|
|
void SetDomainValues(double bounds[6]);
|
|
|
|
void UpdateOriented();
|
|
|
|
int Mode;
|
|
double ScaleFactor; // Used only in SCALED_EXTENT and APPROXIMATE_CELL_LENGTH mode.
|
|
private:
|
|
vtkSMBoundsDomain(const vtkSMBoundsDomain&); // Not implemented
|
|
void operator=(const vtkSMBoundsDomain&); // Not implemented
|
|
};
|
|
|
|
#endif
|