You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
151 lines
4.3 KiB
C
151 lines
4.3 KiB
C
3 weeks ago
|
/*=========================================================================
|
||
|
|
||
|
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
|