File: vtkSMBoundsDomain.h

package info (click to toggle)
paraview 5.1.2%2Bdfsg1-2
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 221,108 kB
  • ctags: 236,092
  • sloc: cpp: 2,416,026; ansic: 190,891; python: 99,856; xml: 81,001; tcl: 46,915; yacc: 5,039; java: 4,413; perl: 3,108; sh: 1,974; lex: 1,926; f90: 748; asm: 471; pascal: 228; makefile: 198; objc: 83; fortran: 31
file content (116 lines) | stat: -rw-r--r-- 4,478 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
/*=========================================================================

  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
// li \c DATA_BOUNDS: this mode for a 6 tuple property that takes the data
// bounds. The range will have 6 ranges:
// (xmin,xmax), (xmin,xmax), (ymin,ymax), (ymin,ymax), (zmin,zmax), and (zmin,zmax).
// If default_mode is not specified, then "min,max,min,max,min,max" is assumed.
// li \c EXTENTS: this mode for a property that takes a value between 0 and (max-min) for
// each component.
//
// 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", "data_bounds".
// \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,
    DATA_BOUNDS,
    EXTENTS,
  };

  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