VTK  9.3.1
vtkPackLabels.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-License-Identifier: BSD-3-Clause
52 #ifndef vtkPackLabels_h
53 #define vtkPackLabels_h
54 
55 #include "vtkDataArray.h" // For returning list of labels
56 #include "vtkDataSetAlgorithm.h"
57 #include "vtkFiltersCoreModule.h" // For export macro
58 #include "vtkIdTypeArray.h" // For returning count of labels
59 #include "vtkSmartPointer.h" // For returning list of labels
60 
61 VTK_ABI_NAMESPACE_BEGIN
62 struct vtkLabelMap;
63 
64 class VTKFILTERSCORE_EXPORT vtkPackLabels : public vtkDataSetAlgorithm
65 {
66 public:
68 
72  static vtkPackLabels* New();
74  void PrintSelf(ostream& os, vtkIndent indent) override;
76 
78 
86  vtkDataArray* GetLabels() { return this->LabelsArray; }
88  {
89  return (this->LabelsArray ? this->LabelsArray->GetNumberOfTuples() : 0);
90  }
92 
105  vtkIdTypeArray* GetLabelsCount() { return this->LabelsCount; }
106 
110  enum SortBy
111  {
112  SORT_BY_LABEL_VALUE = 0,
113  SORT_BY_LABEL_COUNT
114  };
115 
117 
125  vtkSetClampMacro(SortBy, int, SORT_BY_LABEL_VALUE, SORT_BY_LABEL_COUNT);
126  vtkGetMacro(SortBy, int);
127  void SortByLabelValue() { this->SetSortBy(SORT_BY_LABEL_VALUE); }
128  void SortByLabelCount() { this->SetSortBy(SORT_BY_LABEL_COUNT); }
130 
132 
144  {
145  VTK_DEFAULT_TYPE = -1
146  };
147  vtkSetMacro(OutputScalarType, int);
148  vtkGetMacro(OutputScalarType, int);
149  void SetOutputScalarTypeToDefault() { this->SetOutputScalarType(VTK_DEFAULT_TYPE); }
150  void SetOutputScalarTypeToUnsignedChar() { this->SetOutputScalarType(VTK_UNSIGNED_CHAR); }
151  void SetOutputScalarTypeToUnsignedShort() { this->SetOutputScalarType(VTK_UNSIGNED_SHORT); }
152  void SetOutputScalarTypeToUnsignedInt() { this->SetOutputScalarType(VTK_UNSIGNED_INT); }
153  void SetOutputScalarTypeToUnsignedLong() { this->SetOutputScalarType(VTK_UNSIGNED_LONG); }
155 
157 
164  vtkSetMacro(BackgroundValue, unsigned long);
165  vtkGetMacro(BackgroundValue, unsigned long);
167 
169 
175  vtkSetMacro(PassPointData, bool);
176  vtkGetMacro(PassPointData, bool);
177  vtkBooleanMacro(PassPointData, bool);
178  vtkSetMacro(PassCellData, bool);
179  vtkGetMacro(PassCellData, bool);
180  vtkBooleanMacro(PassCellData, bool);
181  vtkSetMacro(PassFieldData, bool);
182  vtkGetMacro(PassFieldData, bool);
183  vtkBooleanMacro(PassFieldData, bool);
185 
186 protected:
187  vtkPackLabels();
188  ~vtkPackLabels() override = default;
189 
192  int SortBy;
194  unsigned long BackgroundValue;
198 
200 
201 private:
202  vtkPackLabels(const vtkPackLabels&) = delete;
203  void operator=(const vtkPackLabels&) = delete;
204 };
205 
206 VTK_ABI_NAMESPACE_END
207 #endif
void SortByLabelValue()
Indicate whether to sort the output labels by their input scalars label value (SortByLabelValue), or to sort by the frequency of occurence of the label values(SortByLabelCount).
#define VTK_UNSIGNED_INT
Definition: vtkType.h:39
unsigned long BackgroundValue
Store vtkAlgorithm input/output information.
#define VTK_UNSIGNED_SHORT
Definition: vtkType.h:37
vtkSmartPointer< vtkIdTypeArray > LabelsCount
void SortByLabelCount()
Indicate whether to sort the output labels by their input scalars label value (SortByLabelValue), or to sort by the frequency of occurence of the label values(SortByLabelCount).
void SetOutputScalarTypeToDefault()
Specify the data type of the output image.
dynamic, self-adjusting array of vtkIdType
int vtkIdType
Definition: vtkType.h:315
vtkSmartPointer< vtkDataArray > LabelsArray
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetOutputScalarTypeToUnsignedLong()
Specify the data type of the output image.
a simple class to control print indentation
Definition: vtkIndent.h:28
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:44
void SetOutputScalarTypeToUnsignedShort()
Specify the data type of the output image.
vtkDataArray * GetLabels()
Return the number of and list of labels found in the input label map.
Definition: vtkPackLabels.h:86
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called within ProcessRequest when a request asks the algorithm to do its work.
void SetOutputScalarTypeToUnsignedChar()
Specify the data type of the output image.
void SetOutputScalarTypeToUnsignedInt()
Specify the data type of the output image.
SortBy
Flags to control how sorting of the labels is performed.
renumber segmentation labels into contiguous runs of (potentially) smaller type
Definition: vtkPackLabels.h:64
#define VTK_UNSIGNED_CHAR
Definition: vtkType.h:35
vtkIdType GetNumberOfLabels()
Return the number of and list of labels found in the input label map.
Definition: vtkPackLabels.h:87
Store zero or more vtkInformation instances.
vtkIdTypeArray * GetLabelsCount()
Return the frequency of occurence (i.e., the count) of each label returned in the LabelsArray...
#define VTK_UNSIGNED_LONG
Definition: vtkType.h:41
Superclass for algorithms that produce output of the same type as input.
DefaultScalarType
Specify the data type of the output image.
static vtkDataSetAlgorithm * New()