VTK
vtkDendrogramItem.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkDendrogramItem.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
38 #ifndef vtkDendrogramItem_h
39 #define vtkDendrogramItem_h
40 
41 #include "vtkViewsInfovisModule.h" // For export macro
42 #include "vtkContextItem.h"
43 
44 #include "vtkNew.h" // For vtkNew ivars
45 #include "vtkStdString.h" // For SetGet ivars
46 #include "vtkSmartPointer.h" // For vtkSmartPointer ivars
47 #include "vtkVector.h" // For vtkVector2f ivar
48 
49 class vtkColorLegend;
50 class vtkDoubleArray;
51 class vtkGraphLayout;
52 class vtkLookupTable;
53 class vtkPruneTreeFilter;
54 class vtkTree;
55 
57 {
58 public:
61  virtual void PrintSelf(ostream &os, vtkIndent indent);
62 
67  virtual void SetTree(vtkTree *tree);
68 
71 
76  void CollapseToNumberOfLeafNodes(unsigned int n);
77 
80 
84  void SetColorArray(const char *arrayName);
85 
87 
91  vtkSetMacro(ExtendLeafNodes, bool);
92  vtkGetMacro(ExtendLeafNodes, bool);
93  vtkBooleanMacro(ExtendLeafNodes, bool);
95 
99 
102 
107 
112 
114 
116  vtkSetMacro(DrawLabels, bool);
117  vtkGetMacro(DrawLabels, bool);
118  vtkBooleanMacro(DrawLabels, bool);
120 
122 
123  vtkSetVector2Macro(Position, float);
124  void SetPosition(const vtkVector2f &pos);
126 
128 
129  vtkGetVector2Macro(Position, float);
132 
134 
136  vtkGetMacro(LeafSpacing, double);
137  vtkSetMacro(LeafSpacing, double);
139 
143  void PrepareToPaint(vtkContext2D *painter);
144 
148  virtual void GetBounds(double bounds[4]);
149 
152 
154  float GetLabelWidth();
155 
159  bool GetPositionOfVertex(std::string vertexName, double position[2]);
160 
162  virtual bool Paint(vtkContext2D *painter);
163 
165 
167  vtkGetMacro(LineWidth, float);
168  vtkSetMacro(LineWidth, float);
170 
172 
175  vtkSetMacro(DisplayNumberOfCollapsedLeafNodes, bool);
176  vtkGetMacro(DisplayNumberOfCollapsedLeafNodes, bool);
177  vtkBooleanMacro(DisplayNumberOfCollapsedLeafNodes, bool);
179 
181 
186  vtkGetMacro(DistanceArrayName, vtkStdString);
187  vtkSetMacro(DistanceArrayName, vtkStdString);
189 
191 
195  vtkGetMacro(VertexNameArrayName, vtkStdString);
196  vtkSetMacro(VertexNameArrayName, vtkStdString);
198 
199  // this struct & class allow us to generate a priority queue of vertices.
201  {
203  double weight;
204  };
206  {
207  public:
208  // Returns true if v2 is higher priority than v1
210  {
211  if (v1.weight < v2.weight)
212  {
213  return false;
214  }
215  return true;
216  }
217  };
218 
219  //BTX
221 
222  enum
223  {
227  DOWN_TO_UP
228  };
230 
232  virtual bool Hit(const vtkContextMouseEvent &mouse);
233 
235 
238  //ETX
240 
241 protected:
244 
246  float* Position;
247 
250  virtual void RebuildBuffers();
251 
254  virtual void PaintBuffers(vtkContext2D *painter);
255 
258  virtual bool IsDirty();
259 
263 
266 
269 
272 
274  vtkIdType GetClosestVertex(double x, double y);
275 
278 
280  void ExpandSubTree(vtkIdType vertex);
281 
284 
288 
293 
299 
303  bool LineIsVisible(double x0, double y0, double x1, double y1);
304 
307 
308  // Setup the position, size, and orientation of this dendrogram's color
309  // legend based on the dendrogram's current orientation.
311 
314 
315 private:
316  vtkDendrogramItem(const vtkDendrogramItem&); // Not implemented
317  void operator=(const vtkDendrogramItem&); // Not implemented
318 
319  vtkSmartPointer<vtkTree> PrunedTree;
320  unsigned long DendrogramBuildTime;
321  vtkNew<vtkGraphLayout> Layout;
322  vtkNew<vtkPruneTreeFilter> PruneFilter;
323  vtkNew<vtkLookupTable> TriangleLookupTable;
324  vtkNew<vtkLookupTable> TreeLookupTable;
325  vtkNew<vtkColorLegend> ColorLegend;
326  vtkDoubleArray* ColorArray;
327  double MultiplierX;
328  double MultiplierY;
329  int NumberOfLeafNodes;
330  double LeafSpacing;
331 
332  double MinX;
333  double MinY;
334  double MaxX;
335  double MaxY;
336  double SceneBottomLeft[3];
337  double SceneTopRight[3];
338  float LabelWidth;
339  float LineWidth;
340  bool ColorTree;
341  bool ExtendLeafNodes;
342  bool DrawLabels;
343  bool DisplayNumberOfCollapsedLeafNodes;
344  bool LegendPositionSet;
345  vtkStdString DistanceArrayName;
346  vtkStdString VertexNameArrayName;
347 };
348 
349 #endif
vtkStdString.h
vtkDendrogramItem::LEFT_TO_RIGHT
@ LEFT_TO_RIGHT
Definition: vtkDendrogramItem.h:224
vtkContextMouseEvent
data structure to represent mouse events.
Definition: vtkContextMouseEvent.h:40
vtkViewsInfovisModule.h
vtkgl::v2
GLfloat GLfloat GLfloat v2
Definition: vtkgl.h:12015
vtkSetVector2Macro
#define vtkSetVector2Macro(name, type)
Definition: vtkSetGet.h:254
vtkDendrogramItem::PositionColorLegend
void PositionColorLegend()
vtkGetVector2Macro
#define vtkGetVector2Macro(name, type)
Definition: vtkSetGet.h:270
vtkIdType
int vtkIdType
Definition: vtkType.h:275
vtkDendrogramItem::WeightedVertex::weight
double weight
Definition: vtkDendrogramItem.h:203
vtkDendrogramItem::ComputeLabelWidth
void ComputeLabelWidth(vtkContext2D *painter)
vtkDendrogramItem::WeightedVertex
Definition: vtkDendrogramItem.h:201
VTKVIEWSINFOVIS_EXPORT
#define VTKVIEWSINFOVIS_EXPORT
Definition: vtkViewsInfovisModule.h:15
vtkDendrogramItem::ComputeBounds
void ComputeBounds()
vtkDendrogramItem::LineIsVisible
bool LineIsVisible(double x0, double y0, double x1, double y1)
vtkTypeMacro
#define vtkTypeMacro(thisClass, superclass)
Definition: vtkSetGet.h:642
vtkgl::n
GLclampd n
Definition: vtkgl.h:14370
vtkSmartPointer< vtkTree >
vtkVector.h
vtkDendrogramItem::CollapseToNumberOfLeafNodes
void CollapseToNumberOfLeafNodes(unsigned int n)
vtkgl::x
GLint GLint GLint GLint GLint x
Definition: vtkgl.h:11318
vtkDendrogramItem::Position
float * Position
Definition: vtkDendrogramItem.h:246
vtkDendrogramItem::GetTextAngleForOrientation
double GetTextAngleForOrientation(int orientation)
vtkContext2D
Class for drawing 2D primitives to a graphical context.
Definition: vtkContext2D.h:57
vtkContextItem.h
vtkDendrogramItem::PaintBuffers
virtual void PaintBuffers(vtkContext2D *painter)
vtkDendrogramItem::GetClickedCollapsedSubTree
vtkIdType GetClickedCollapsedSubTree(double x, double y)
vtkDendrogramItem::GetLabelWidth
float GetLabelWidth()
vtkgl::event
struct _cl_event * event
Definition: vtkgl.h:14387
vtkDendrogramItem::SetOrientation
void SetOrientation(int orientation)
vtkDendrogramItem::CompareWeightedVertices
Definition: vtkDendrogramItem.h:206
vtkgl::v1
GLfloat GLfloat v1
Definition: vtkgl.h:12014
vtkDendrogramItem::CollapseSubTree
void CollapseSubTree(vtkIdType vertex)
vtkDendrogramItem::UpdateVisibleSceneExtent
void UpdateVisibleSceneExtent(vtkContext2D *painter)
vtkDendrogramItem::PrepareToPaint
void PrepareToPaint(vtkContext2D *painter)
vtkDendrogramItem::Hit
virtual bool Hit(const vtkContextMouseEvent &mouse)
vtkDendrogramItem::RIGHT_TO_LEFT
@ RIGHT_TO_LEFT
Definition: vtkDendrogramItem.h:226
vtkTree
A rooted tree data structure.
Definition: vtkTree.h:60
vtkDendrogramItem::IsDirty
virtual bool IsDirty()
vtkDendrogramItem::GetClosestVertex
vtkIdType GetClosestVertex(double x, double y)
vtkDendrogramItem::GetOriginalId
vtkIdType GetOriginalId(vtkIdType vertex)
vtkDendrogramItem::GetTree
vtkTree * GetTree()
vtkX3D::position
@ position
Definition: vtkX3D.h:261
vtkDendrogramItem::GetBounds
virtual void GetBounds(double bounds[4])
vtkDendrogramItem::Paint
virtual bool Paint(vtkContext2D *painter)
vtkDendrogramItem::SetTree
virtual void SetTree(vtkTree *tree)
vtkDendrogramItem::PositionVector
vtkVector2f PositionVector
Definition: vtkDendrogramItem.h:245
vtkDendrogramItem::New
static vtkDendrogramItem * New()
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkDendrogramItem::WeightedVertex::ID
vtkIdType ID
Definition: vtkDendrogramItem.h:202
vtkDendrogramItem::LayoutTree
vtkSmartPointer< vtkTree > LayoutTree
Definition: vtkDendrogramItem.h:313
vtkSmartPointer.h
vtkDendrogramItem::PrintSelf
virtual void PrintSelf(ostream &os, vtkIndent indent)
vtkNew< vtkGraphLayout >
vtkDendrogramItem::GetOrientation
int GetOrientation()
vtkDendrogramItem::Tree
vtkSmartPointer< vtkTree > Tree
Definition: vtkDendrogramItem.h:312
vtkDendrogramItem::CountLeafNodes
int CountLeafNodes(vtkIdType vertex)
vtkDendrogramItem::GetPrunedIdForOriginalId
vtkIdType GetPrunedIdForOriginalId(vtkIdType originalId)
vtkGetMacro
#define vtkGetMacro(name, type)
Definition: vtkSetGet.h:93
vtkDendrogramItem::GetAngleForOrientation
double GetAngleForOrientation(int orientation)
vtkDendrogramItem::GetPositionVector
vtkVector2f GetPositionVector()
vtkPruneTreeFilter
prune a subtree out of a vtkTree
Definition: vtkPruneTreeFilter.h:41
vtkDendrogramItem::SetPosition
void SetPosition(const vtkVector2f &pos)
vtkBooleanMacro
vtkBooleanMacro(IgnoreDriverBugs, bool)
vtkContextItem
base class for items that are part of a vtkContextScene.
Definition: vtkContextItem.h:34
vtkSetMacro
vtkSetMacro(IgnoreDriverBugs, bool)
vtkLookupTable
map scalar values into colors via a lookup table
Definition: vtkLookupTable.h:74
vtkDendrogramItem::SetOrientation
void SetOrientation(vtkTree *tree, int orientation)
vtkDendrogramItem::vtkDendrogramItem
vtkDendrogramItem()
vtkDendrogramItem::GetPrunedTree
vtkTree * GetPrunedTree()
vtkDendrogramItem::RebuildBuffers
virtual void RebuildBuffers()
vtkColorLegend
Legend item to display vtkScalarsToColors.
Definition: vtkColorLegend.h:38
vtkDendrogramItem::CountLeafNodes
void CountLeafNodes()
vtkX3D::orientation
@ orientation
Definition: vtkX3D.h:262
vtkgl::y
GLint GLint GLint GLint GLint GLint y
Definition: vtkgl.h:11318
vtkNew.h
vtkDendrogramItem
A 2D graphics item for rendering a tree as a dendrogram.
Definition: vtkDendrogramItem.h:57
vtkDendrogramItem::CompareWeightedVertices::operator()
bool operator()(WeightedVertex &v1, WeightedVertex &v2)
Definition: vtkDendrogramItem.h:209
vtkDendrogramItem::MouseDoubleClickEvent
virtual bool MouseDoubleClickEvent(const vtkContextMouseEvent &event)
vtkDoubleArray
dynamic, self-adjusting array of double
Definition: vtkDoubleArray.h:49
vtkDendrogramItem::ComputeMultipliers
void ComputeMultipliers()
vtkDendrogramItem::ExpandSubTree
void ExpandSubTree(vtkIdType vertex)
vtkDendrogramItem::GetPositionOfVertex
bool GetPositionOfVertex(std::string vertexName, double position[2])
vtkStdString
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:48
vtkDendrogramItem::UP_TO_DOWN
@ UP_TO_DOWN
Definition: vtkDendrogramItem.h:225
vtkDendrogramItem::SetColorArray
void SetColorArray(const char *arrayName)
vtkgl::string
GLsizei const GLchar ** string
Definition: vtkgl.h:12011
vtkVector2f
Definition: vtkVector.h:277
vtkDendrogramItem::~vtkDendrogramItem
~vtkDendrogramItem()
vtkGraphLayout
layout a graph in 2 or 3 dimensions
Definition: vtkGraphLayout.h:50