TTK
Loading...
Searching...
No Matches
ttkPersistenceDiagram.h
Go to the documentation of this file.
1
176
177#pragma once
178
179// VTK includes
180#include <vtkDataArray.h>
181#include <vtkUnstructuredGrid.h>
182
183// VTK Module
184#include <ttkPersistenceDiagramModule.h>
185
186// ttk code includes
187#include <PersistenceDiagram.h>
188#include <ttkAlgorithm.h>
189#include <ttkMacros.h>
190
191class TTKPERSISTENCEDIAGRAM_EXPORT ttkPersistenceDiagram
192 : public ttkAlgorithm,
193 protected ttk::PersistenceDiagram {
194
195public:
197
199
200 vtkSetMacro(ForceInputOffsetScalarField, bool);
201 vtkGetMacro(ForceInputOffsetScalarField, bool);
202
203 vtkSetMacro(ShowInsideDomain, bool);
204 vtkGetMacro(ShowInsideDomain, bool);
205
207 vtkGetEnumMacro(BackEnd, BACKEND);
208
209 vtkGetMacro(StartingResolutionLevel, int);
210 vtkSetMacro(StartingResolutionLevel, int);
211
212 vtkGetMacro(StoppingResolutionLevel, int);
213 vtkSetMacro(StoppingResolutionLevel, int);
214
215 vtkSetMacro(UseTasks, bool);
216 vtkGetMacro(UseTasks, bool);
217
218 vtkGetMacro(IsResumable, bool);
219 vtkSetMacro(IsResumable, bool);
220
221 vtkGetMacro(TimeLimit, double);
222 vtkSetMacro(TimeLimit, double);
223
224 vtkGetMacro(Epsilon, double);
225 vtkSetMacro(Epsilon, double);
226
227 vtkSetMacro(IgnoreBoundary, bool);
228 vtkGetMacro(IgnoreBoundary, bool);
229
230 inline void SetComputeMinSad(const bool data) {
231 this->setComputeMinSad(data);
232 this->dmsDimsCache[0] = data;
233 this->Modified();
234 }
235 inline void SetComputeSadSad(const bool data) {
236 this->setComputeSadSad(data);
237 this->dmsDimsCache[1] = data;
238 this->Modified();
239 }
240 inline void SetComputeSadMax(const bool data) {
241 this->setComputeSadMax(data);
242 this->dmsDimsCache[2] = data;
243 this->Modified();
244 }
245 inline void SetDMSDimensions(const int data) {
246 this->setComputeMinSad(data == 0 ? true : this->dmsDimsCache[0]);
247 this->setComputeSadSad(data == 0 ? true : this->dmsDimsCache[1]);
248 this->setComputeSadMax(data == 0 ? true : this->dmsDimsCache[2]);
249 this->Modified();
250 }
251
252 vtkSetMacro(ClearDGCache, bool);
253 vtkGetMacro(ClearDGCache, bool);
254
255protected:
257
258 int RequestData(vtkInformation *request,
259 vtkInformationVector **inputVector,
260 vtkInformationVector *outputVector) override;
261
262 int FillInputPortInformation(int port, vtkInformation *info) override;
263 int FillOutputPortInformation(int port, vtkInformation *info) override;
264
265private:
266 template <typename scalarType, typename triangulationType>
267 int dispatch(vtkUnstructuredGrid *outputCTPersistenceDiagram,
268 vtkDataArray *const inputScalarsArray,
269 const scalarType *const inputScalars,
270 scalarType *outputScalars,
271 SimplexId *outputOffsets,
272 int *outputMonotonyOffsets,
273 const SimplexId *const inputOrder,
274 const triangulationType *triangulation);
275
276 bool ForceInputOffsetScalarField{false};
277 bool ShowInsideDomain{false};
278 // stores the values of Compute[Min|Sad][Sad|Max] GUI checkboxes
279 // when "All Dimensions" is selected
280 std::array<bool, 3> dmsDimsCache{true, true, true};
281 // clear DiscreteGradient cache after computation
282 bool ClearDGCache{false};
283};
virtual int RequestData(vtkInformation *ttkNotUsed(request), vtkInformationVector **ttkNotUsed(inputVectors), vtkInformationVector *ttkNotUsed(outputVector))
int FillInputPortInformation(int ttkNotUsed(port), vtkInformation *ttkNotUsed(info)) override
int FillOutputPortInformation(int ttkNotUsed(port), vtkInformation *ttkNotUsed(info)) override
void SetComputeSadSad(const bool data)
void SetComputeMinSad(const bool data)
void SetDMSDimensions(const int data)
static ttkPersistenceDiagram * New()
void SetComputeSadMax(const bool data)
TTK processing package for the computation of persistence diagrams.
void setComputeSadSad(const bool data)
void setComputeMinSad(const bool data)
void setComputeSadMax(const bool data)
int SimplexId
Identifier type for simplices of any dimension.
Definition DataTypes.h:22
#define ttkSetEnumMacro(name, enumType)
Definition ttkMacros.h:38