File: vtkExtractBlockUsingDataAssembly.h

package info (click to toggle)
vtk9 9.5.2%2Bdfsg3-4
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 205,916 kB
  • sloc: cpp: 2,336,565; ansic: 327,116; python: 111,200; yacc: 4,104; java: 3,977; sh: 3,032; xml: 2,771; perl: 2,189; lex: 1,787; makefile: 178; javascript: 165; objc: 153; tcl: 59
file content (130 lines) | stat: -rw-r--r-- 4,198 bytes parent folder | download | duplicates (7)
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
// SPDX-License-Identifier: BSD-3-Clause
/**
 * @class vtkExtractBlockUsingDataAssembly
 * @brief extract blocks from certain composite datasets
 *
 * vtkExtractBlockUsingDataAssembly is intended to extract selected blocks
 * from certain composite datasets. Blocks to extract are selected using
 * selectors. For supported selectors see `vtkDataAssembly::SelectNodes`.
 *
 * The specific data-assembly to use to apply the selectors to determine the
 * blocks to extract is chosen using `vtkExtractBlockUsingDataAssembly::SetAssemblyName`.
 *
 * @section vtkExtractBlockUsingDataAssembly-SupportedDataTypes Supported Data Types
 *
 * This filter accepts `vtkUniformGridAMR`,
 * `vtkMultiBlockDataSet`, and `vtkPartitionedDataSetCollection` (and
 * subclasses). vtkMultiPieceDataSet and vtkPartitionedDataSet are not accepted
 * as inputs since those composite datasets are not comprised of "blocks".
 *
 * For vtkOverlappingAMR, since extracting blocks cannot always guarantee a valid
 * overlapping AMR, this filter generates a `vtkPartitionedDataSetCollection`
 * instead. Any blanking information present in the input vtkOverlappingAMR is
 * also discarded for the same reason.
 *
 * For all other supported input data types, the type is preserved.
 */

#ifndef vtkExtractBlockUsingDataAssembly_h
#define vtkExtractBlockUsingDataAssembly_h

#include "vtkCompositeDataSetAlgorithm.h"
#include "vtkFiltersExtractionModule.h" // For export macro

VTK_ABI_NAMESPACE_BEGIN
class vtkDataAssembly;
class vtkPartitionedDataSetCollection;

class VTKFILTERSEXTRACTION_EXPORT vtkExtractBlockUsingDataAssembly
  : public vtkCompositeDataSetAlgorithm
{
public:
  static vtkExtractBlockUsingDataAssembly* New();
  vtkTypeMacro(vtkExtractBlockUsingDataAssembly, vtkCompositeDataSetAlgorithm);
  void PrintSelf(ostream& os, vtkIndent indent) override;

  ///@{
  /**
   * API to set selectors. Multiple selectors can be added using `AddSelector`.
   * The order in which selectors are specified is not preserved and has no
   * impact on the result.
   *
   * `AddSelector` returns true if the selector was added, false if the selector
   * was already specified and hence not added.
   *
   * @sa vtkDataAssembly::SelectNodes
   */
  bool AddSelector(const char* selector);
  void ClearSelectors();
  ///@}

  /**
   * Convenience method to set a single selector.
   * This clears any other existing selectors.
   */
  void SetSelector(const char* selector);

  ///@{
  /**
   * API to access selectors.
   */
  int GetNumberOfSelectors() const;
  const char* GetSelector(int index) const;
  ///@}

  ///@{
  /**
   * Get/Set the active assembly to use. The chosen assembly is used
   * in combination with the selectors specified to determine which blocks
   * are to be extracted.
   *
   * By default, this is set to
   * vtkDataAssemblyUtilities::HierarchyName().
   */
  vtkSetStringMacro(AssemblyName);
  vtkGetStringMacro(AssemblyName);
  ///@}

  ///@{
  /**
   * When set to true (default) subtrees for chosen paths are treated as
   * selected.
   */
  vtkSetMacro(SelectSubtrees, bool);
  vtkGetMacro(SelectSubtrees, bool);
  vtkBooleanMacro(SelectSubtrees, bool);
  ///@}

  ///@{
  /**
   * When set to true (default), the data assembly is pruned to remove
   * branches that were not selected.
   */
  vtkSetMacro(PruneDataAssembly, bool);
  vtkGetMacro(PruneDataAssembly, bool);
  vtkBooleanMacro(PruneDataAssembly, bool);
  ///@}

protected:
  vtkExtractBlockUsingDataAssembly();
  ~vtkExtractBlockUsingDataAssembly() override;

  int FillInputPortInformation(int port, vtkInformation* info) override;
  int RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
  int RequestDataObject(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;

private:
  vtkExtractBlockUsingDataAssembly(const vtkExtractBlockUsingDataAssembly&) = delete;
  void operator=(const vtkExtractBlockUsingDataAssembly&) = delete;

  class vtkInternals;
  vtkInternals* Internals;

  bool SelectSubtrees;
  bool PruneDataAssembly;
  char* AssemblyName;
};

VTK_ABI_NAMESPACE_END
#endif