forked from Kitware/VTK
-
Notifications
You must be signed in to change notification settings - Fork 0
/
vtkInteractorStyleTreeMapHover.h
150 lines (127 loc) · 4.34 KB
/
vtkInteractorStyleTreeMapHover.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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
/*=========================================================================
Program: Visualization Toolkit
Module: vtkInteractorStyleTreeMapHover.h
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm 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.
=========================================================================*/
/*-------------------------------------------------------------------------
Copyright 2008 Sandia Corporation.
Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
the U.S. Government retains certain rights in this software.
-------------------------------------------------------------------------*/
/**
* @class vtkInteractorStyleTreeMapHover
* @brief An interactor style for a tree map view
*
*
* The vtkInteractorStyleTreeMapHover specifically works with pipelines
* that create a tree map. Such pipelines will have a vtkTreeMapLayout
* filter and a vtkTreeMapToPolyData filter, both of which must be passed
* to this interactor style for it to function correctly.
* This interactor style allows only 2D panning and zooming, and additionally
* provides a balloon containing the name of the vertex hovered over,
* and allows the user to highlight a vertex by clicking on it.
*/
#ifndef vtkInteractorStyleTreeMapHover_h
#define vtkInteractorStyleTreeMapHover_h
#include "vtkInteractorStyleImage.h"
#include "vtkViewsInfovisModule.h" // For export macro
class vtkBalloonRepresentation;
class vtkPoints;
class vtkRenderer;
class vtkTree;
class vtkTreeMapLayout;
class vtkTreeMapToPolyData;
class vtkWorldPointPicker;
class VTKVIEWSINFOVIS_EXPORT vtkInteractorStyleTreeMapHover : public vtkInteractorStyleImage
{
public:
static vtkInteractorStyleTreeMapHover* New();
vtkTypeMacro(vtkInteractorStyleTreeMapHover, vtkInteractorStyleImage);
void PrintSelf(ostream& os, vtkIndent indent) override;
//@{
/**
* Must be set to the vtkTreeMapLayout used to compute the bounds of each vertex
* for the tree map.
*/
void SetLayout(vtkTreeMapLayout* layout);
vtkGetObjectMacro(Layout, vtkTreeMapLayout);
//@}
//@{
/**
* Must be set to the vtkTreeMapToPolyData used to convert the tree map
* into polydata.
*/
void SetTreeMapToPolyData(vtkTreeMapToPolyData* filter);
vtkGetObjectMacro(TreeMapToPolyData, vtkTreeMapToPolyData);
//@}
//@{
/**
* The name of the field to use when displaying text in the hover balloon.
*/
vtkSetStringMacro(LabelField);
vtkGetStringMacro(LabelField);
//@}
//@{
/**
* Overridden from vtkInteractorStyleImage to provide the desired
* interaction behavior.
*/
void OnMouseMove() override;
void OnLeftButtonUp() override;
//@}
//@{
/**
* Highlights a specific vertex.
*/
void HighLightItem(vtkIdType id);
void HighLightCurrentSelectedItem();
//@}
void SetInteractor(vtkRenderWindowInteractor* rwi) override;
/**
* Set the color used to highlight the hovered vertex.
*/
void SetHighLightColor(double r, double g, double b);
/**
* Set the color used to highlight the selected vertex.
*/
void SetSelectionLightColor(double r, double g, double b);
//@{
/**
* The width of the line around the hovered vertex.
*/
void SetHighLightWidth(double lw);
double GetHighLightWidth();
//@}
//@{
/**
* The width of the line around the selected vertex.
*/
void SetSelectionWidth(double lw);
double GetSelectionWidth();
//@}
protected:
vtkInteractorStyleTreeMapHover();
~vtkInteractorStyleTreeMapHover() override;
private:
vtkInteractorStyleTreeMapHover(const vtkInteractorStyleTreeMapHover&) = delete;
void operator=(const vtkInteractorStyleTreeMapHover&) = delete;
// These methods are used internally
vtkIdType GetTreeMapIdAtPos(int x, int y);
void GetBoundingBoxForTreeMapItem(vtkIdType id, float* binfo);
vtkWorldPointPicker* Picker;
vtkBalloonRepresentation* Balloon;
vtkActor* HighlightActor;
vtkActor* SelectionActor;
vtkPoints* HighlightPoints;
vtkPoints* SelectionPoints;
vtkTreeMapLayout* Layout;
vtkTreeMapToPolyData* TreeMapToPolyData;
char* LabelField;
vtkIdType CurrentSelectedId;
};
#endif