-
Notifications
You must be signed in to change notification settings - Fork 0
/
FieldTraceData.h
111 lines (93 loc) · 2.67 KB
/
FieldTraceData.h
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
/*
____ _ __ ____ __ ____
/ __/___(_) / ___ ____/ __ \__ _____ ___ / /_ / _/__ ____
_\ \/ __/ / _ \/ -_) __/ /_/ / // / -_|_-</ __/ _/ // _ \/ __/
/___/\__/_/_.__/\__/_/ \___\_\_,_/\__/___/\__/ /___/_//_/\__(_)
Copyright 2012 SciberQuest Inc.
*/
#ifndef FieldTracerData_h
#define FieldTracerData_h
#include "FieldLine.h"
#include "vtkIntArray.h"
#include <vector>
using std::vector;
class IdBlock;
class FieldLine;
class vtkDataSet;
class vtkIntArray;
class TerminationCondition;
class vtkSQCellGenerator;
/// Interface to the topology map.
/**
Abstract collection of datastructures needed to build the topology map.
The details of building the map change drastically depending on the input
data type. Concrete classes deal with these specifics.
*/
class FieldTraceData
{
public:
FieldTraceData();
virtual ~FieldTraceData();
/**
Set the dataset to be used as the seed source. Use either
a dataset or a cell generator. The dataset explicitly contains
all geometry that will be accessed.
*/
virtual void SetSource(vtkDataSet *s)=0;
/**
Set the cell generator to be used as the seed source. Use either
a dataset or a cell generator. The cell generator implicitly contains
all geometry that will be accessed, generating only what is needed
on demand.
*/
virtual void SetSource(vtkSQCellGenerator *s)=0;
/**
Copy the IntersectColor and SourceId array into the output.
*/
virtual void SetOutput(vtkDataSet *o)=0;
/**
compute seed points (centred on cells of input). Copy the cells
on which we operate into the output.
*/
virtual int InsertCells(IdBlock *SourceIds)=0;
/**
Get a specific field line.
*/
FieldLine *GetFieldLine(unsigned long long i){ return this->Lines[i]; }
/**
Free resources holding the trace geometry. This can be quite large.
Other data is retained.
*/
void ClearTrace(unsigned long long i)
{
this->Lines[i]->DeleteTrace();
}
/**
Free internal resources.
*/
void ClearFieldLines();
/**
Move scalar data (IntersectColor, SourceId) from the internal
structure into the vtk output data.
*/
virtual int SyncScalars()=0;
/**
Move field line geometry (trace) from the internal structure
into the vtk output data.
*/
virtual int SyncGeometry()=0;
/**
Access to the termination object.
*/
TerminationCondition *GetTerminationCondition(){ return this->Tcon; }
/**
Print a legend, can be reduced to the minimal number of colors needed
or all posibilities may be included. The latter is better for temporal
animations.
*/
virtual void PrintLegend(int reduce){}
protected:
vector<FieldLine *> Lines;
TerminationCondition *Tcon;
};
#endif