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

/*=========================================================================
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