VTK
vtkScatterPlotMatrix.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkScatterPlotMatrix.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 =========================================================================*/
15 
29 #ifndef vtkScatterPlotMatrix_h
30 #define vtkScatterPlotMatrix_h
31 
32 #include "vtkChartsCoreModule.h" // For export macro
33 #include "vtkChartMatrix.h"
34 #include "vtkSmartPointer.h" // For ivars
35 #include "vtkNew.h" // For ivars
36 #include "vtkColor.h" // For member function return
37 #include "vtkStdString.h" // For ivars
38 #include "vtkWeakPointer.h" // For currentPainter
39 
40 class vtkStringArray;
41 class vtkTable;
42 class vtkAxis;
43 class vtkAnnotationLink;
44 class vtkTextProperty;
45 class vtkTooltipItem;
47 
48 class VTKCHARTSCORE_EXPORT vtkScatterPlotMatrix : public vtkChartMatrix
49 {
50 public:
51  enum {
55  NOPLOT
56  };
57 
59  virtual void PrintSelf(ostream &os, vtkIndent indent);
60 
64  static vtkScatterPlotMatrix *New();
65 
69  virtual void Update();
70 
74  virtual bool Paint(vtkContext2D *painter);
75 
76  virtual void SetScene(vtkContextScene *scene);
77 
83  virtual bool SetActivePlot(const vtkVector2i& position);
84 
88  virtual vtkVector2i GetActivePlot();
89 
94  vtkAnnotationLink* GetAnnotationLink();
95 
100  virtual void SetInput(vtkTable *table);
101 
105  void SetColumnVisibility(const vtkStdString& name, bool visible);
106 
111  void InsertVisibleColumn(const vtkStdString& name, int index);
112 
116  bool GetColumnVisibility(const vtkStdString& name);
117 
122  void SetColumnVisibilityAll(bool visible);
123 
127  virtual vtkStringArray* GetVisibleColumns();
128 
132  virtual void SetVisibleColumns(vtkStringArray* visColumns);
133 
138  virtual void SetNumberOfBins(int numberOfBins);
139 
144  virtual int GetNumberOfBins() const { return this->NumberOfBins; }
145 
149  void SetPlotColor(int plotType, const vtkColor4ub& color);
150 
154  void SetPlotMarkerStyle(int plotType, int style);
155 
159  void SetPlotMarkerSize(int plotType, float size);
160 
164  bool Hit(const vtkContextMouseEvent &mouse);
165 
169  bool MouseMoveEvent(const vtkContextMouseEvent &mouse);
170 
174  bool MouseButtonPressEvent(const vtkContextMouseEvent &mouse);
175 
180 
182 
186  int GetPlotType(const vtkVector2i &pos);
187  int GetPlotType(int row, int column);
189 
191 
194  void SetTitle(const vtkStdString& title);
195  vtkStdString GetTitle();
197 
199 
202  void SetTitleProperties(vtkTextProperty *prop);
203  vtkTextProperty* GetTitleProperties();
205 
207 
212  void SetGridVisibility(int plotType, bool visible);
213  bool GetGridVisibility(int plotType);
215 
217 
221  void SetBackgroundColor(int plotType, const vtkColor4ub& color);
222  vtkColor4ub GetBackgroundColor(int plotType);
224 
226 
230  void SetAxisColor(int plotType, const vtkColor4ub& color);
231  vtkColor4ub GetAxisColor(int plotType);
233 
235 
239  void SetGridColor(int plotType, const vtkColor4ub& color);
240  vtkColor4ub GetGridColor(int plotType);
242 
244 
249  void SetAxisLabelVisibility(int plotType, bool visible);
250  bool GetAxisLabelVisibility(int plotType);
252 
254 
258  void SetAxisLabelProperties(int plotType, vtkTextProperty *prop);
259  vtkTextProperty* GetAxisLabelProperties(int plotType);
261 
263 
267  void SetAxisLabelNotation(int plotType, int notation);
268  int GetAxisLabelNotation(int plotType);
270 
272 
276  void SetAxisLabelPrecision(int plotType, int precision);
277  int GetAxisLabelPrecision(int plotType);
279 
281 
285  void SetTooltipNotation(int plotType, int notation);
286  void SetTooltipPrecision(int plotType, int precision);
287  int GetTooltipNotation(int plotType);
288  int GetTooltipPrecision(int plotType);
290 
294  void SetTooltip(vtkTooltipItem *tooltip);
295 
299  vtkTooltipItem* GetTooltip() const;
300 
304  void SetIndexedLabels(vtkStringArray *labels);
305 
309  vtkStringArray* GetIndexedLabels() const;
310 
312 
315  void SetScatterPlotSelectedRowColumnColor(const vtkColor4ub& color);
316  vtkColor4ub GetScatterPlotSelectedRowColumnColor();
318 
320 
323  void SetScatterPlotSelectedActiveColor(const vtkColor4ub& color);
324  vtkColor4ub GetScatterPlotSelectedActiveColor();
326 
330  void UpdateSettings();
331 
335  void UpdateChartSettings(int plotType);
336 
338 
343  virtual void SetSelectionMode(int);
344  vtkGetMacro(SelectionMode, int);
346 
350  vtkStdString GetColumnName(int column);
351 
355  vtkStdString GetRowName(int row);
356 
361  void SetNumberOfFrames(int frames);
362 
367  int GetNumberOfFrames();
368 
372  void ClearAnimationPath();
373 
379  bool AddAnimationPath(const vtkVector2i &move);
380 
384  vtkIdType GetNumberOfAnimationPathElements();
385 
389  vtkVector2i GetAnimationPathElement(vtkIdType i);
390 
394  bool BeginAnimationPath(vtkRenderWindowInteractor* interactor);
395 
400  virtual void AdvanceAnimation();
401 
405  virtual vtkChart * GetMainChart();
406 
407 protected:
410 
414  void UpdateLayout();
415 
419  void ResizeBigChart();
420 
422 
425  void AttachAxisRangeListener(vtkAxis*);
426  void AxisRangeForwarderCallback(vtkObject*, unsigned long, void*);
428 
433  void BigChartSelectionCallback(vtkObject*, unsigned long, void*);
434 
440  virtual void UpdateAnimationPath(const vtkVector2i& newActivePos);
441 
446  virtual void StartAnimation(vtkRenderWindowInteractor* interactor);
447 
451  static void ProcessEvents(vtkObject *caller, unsigned long event,
452  void *clientData, void *callerData);
453 
454  // The position of the active plot (defaults to 0, 1).
456 
457  // Weakly owned input data for the scatter plot matrix.
459 
460  // Strongly owned internal data for the column visibility.
462 
463  // The number of bins in the histograms.
465 
466  // The title of the scatter plot matrix.
469 
470  // The mode when the chart is doing selection.
472 
473  // How many frames should animations consist of, 0 means no transitions.
475 
476 private:
477  vtkScatterPlotMatrix(const vtkScatterPlotMatrix &) VTK_DELETE_FUNCTION;
478  void operator=(const vtkScatterPlotMatrix &) VTK_DELETE_FUNCTION;
479 
480  class PIMPL;
481  PIMPL *Private;
482  friend class PIMPL;
483 
484  vtkWeakPointer<vtkContext2D> CurrentPainter;
485  vtkMTimeType LayoutUpdatedTime;
486 
487  // Go through the process of calculating axis ranges, etc...
488  void UpdateAxes();
489  void ApplyAxisSetting(vtkChart *chart, const vtkStdString &x,
490  const vtkStdString &y);
491 };
492 
493 #endif //vtkScatterPlotMatrix_h
vtkChart
Factory class for drawing 2D charts.
Definition: vtkChart.h:50
vtkStdString.h
vtkContextMouseEvent
data structure to represent mouse events.
Definition: vtkContextMouseEvent.h:40
vtkScatterPlotMatrix::SCATTERPLOT
Definition: vtkScatterPlotMatrix.h:52
vtkIdType
int vtkIdType
Definition: vtkType.h:287
vtkScatterPlotMatrix::Title
vtkStdString Title
Definition: vtkScatterPlotMatrix.h:467
vtkTable
A table, which contains similar-typed columns of data.
Definition: vtkTable.h:68
vtkChartMatrix::Paint
virtual bool Paint(vtkContext2D *painter)
Paint event for the chart matrix.
vtkX3D::style
Definition: vtkX3D.h:492
vtkChartMatrix
container for a matrix of charts.
Definition: vtkChartMatrix.h:41
vtkSmartPointer< vtkTable >
vtkObject
abstract base class for most VTK objects
Definition: vtkObject.h:59
vtkChartMatrix.h
vtkTooltipItem
takes care of drawing 2D axes
Definition: vtkTooltipItem.h:39
vtkScatterPlotMatrix::SelectionMode
int SelectionMode
Definition: vtkScatterPlotMatrix.h:471
vtkScatterPlotMatrix::VisibleColumns
vtkNew< vtkStringArray > VisibleColumns
Definition: vtkScatterPlotMatrix.h:461
vtkContext2D
Class for drawing 2D primitives to a graphical context.
Definition: vtkContext2D.h:57
vtkChartMatrix::PrintSelf
virtual void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
vtkScatterPlotMatrix::ACTIVEPLOT
Definition: vtkScatterPlotMatrix.h:54
vtkChartMatrix::Private
PIMPL * Private
Definition: vtkChartMatrix.h:157
vtkMTimeType
vtkTypeUInt64 vtkMTimeType
Definition: vtkType.h:248
vtkScatterPlotMatrix::TitleProperties
vtkSmartPointer< vtkTextProperty > TitleProperties
Definition: vtkScatterPlotMatrix.h:468
vtkX3D::position
Definition: vtkX3D.h:261
vtkX3D::color
Definition: vtkX3D.h:221
vtkX3D::title
Definition: vtkX3D.h:500
vtkContextScene
Provides a 2D scene for vtkContextItem objects.
Definition: vtkContextScene.h:50
vtkScatterPlotMatrix::NumberOfFrames
int NumberOfFrames
Definition: vtkScatterPlotMatrix.h:474
vtkColor.h
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkAbstractContextItem::Hit
virtual bool Hit(const vtkContextMouseEvent &mouse)
Return true if the supplied x, y coordinate is inside the item.
vtkSmartPointer.h
vtkScatterPlotMatrix::HISTOGRAM
Definition: vtkScatterPlotMatrix.h:53
vtkX3D::size
Definition: vtkX3D.h:253
vtkNew< vtkStringArray >
vtkWeakPointer.h
vtkScatterPlotMatrix
container for a matrix of charts.
Definition: vtkScatterPlotMatrix.h:48
vtkChartMatrix::New
static vtkChartMatrix * New()
Creates a new object.
vtkScatterPlotMatrix::NumberOfBins
int NumberOfBins
Definition: vtkScatterPlotMatrix.h:464
vtkRenderWindowInteractor
platform-independent render window interaction including picking and frame rate control.
Definition: vtkRenderWindowInteractor.h:78
vtkAbstractContextItem::MouseMoveEvent
virtual bool MouseMoveEvent(const vtkContextMouseEvent &mouse)
Mouse move event.
vtkX3D::name
Definition: vtkX3D.h:219
vtkAbstractContextItem::MouseButtonReleaseEvent
virtual bool MouseButtonReleaseEvent(const vtkContextMouseEvent &mouse)
Mouse button release event.
vtkScatterPlotMatrix::Input
vtkSmartPointer< vtkTable > Input
Definition: vtkScatterPlotMatrix.h:458
vtkTextProperty
represent text properties.
Definition: vtkTextProperty.h:39
vtkNew.h
vtkAbstractContextItem::SetScene
virtual void SetScene(vtkContextScene *scene)
Set the vtkContextScene for the item, always set for an item in a scene.
vtkAxis
takes care of drawing 2D axes
Definition: vtkAxis.h:71
vtkColor4ub
Definition: vtkColor.h:240
vtkScatterPlotMatrix::GetNumberOfBins
virtual int GetNumberOfBins() const
Get the number of bins the histograms along the central diagonal scatter plot matrix.
Definition: vtkScatterPlotMatrix.h:144
vtkChartMatrix::Update
virtual void Update()
Perform any updates to the item that may be necessary before rendering.
vtkStringArray
a vtkAbstractArray subclass for strings
Definition: vtkStringArray.h:42
vtkAbstractContextItem::MouseButtonPressEvent
virtual bool MouseButtonPressEvent(const vtkContextMouseEvent &mouse)
Mouse button down event Return true if the item holds the event, false if the event can be propagated...
vtkVector2i
Some derived classes for the different vectors commonly used.
Definition: vtkVector.h:327
vtkStdString
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:47
vtkX3D::index
Definition: vtkX3D.h:246
vtkWeakPointer< vtkContext2D >
vtkScatterPlotMatrix::ActivePlot
vtkVector2i ActivePlot
Definition: vtkScatterPlotMatrix.h:455