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
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:47
abstract base class for most VTK objects
Definition: vtkObject.h:59
container for a matrix of charts.
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...
virtual void Update()
Perform any updates to the item that may be necessary before rendering.
a vtkAbstractArray subclass for strings
vtkSmartPointer< vtkTextProperty > TitleProperties
int vtkIdType
Definition: vtkType.h:287
vtkTypeUInt64 vtkMTimeType
Definition: vtkType.h:248
platform-independent render window interaction including picking and frame rate control.
Class for drawing 2D primitives to a graphical context.
Definition: vtkContext2D.h:57
Factory class for drawing 2D charts.
Definition: vtkChart.h:50
virtual void SetScene(vtkContextScene *scene)
Set the vtkContextScene for the item, always set for an item in a scene.
takes care of drawing 2D axes
Definition: vtkAxis.h:71
Provides a 2D scene for vtkContextItem objects.
data structure to represent mouse events.
a simple class to control print indentation
Definition: vtkIndent.h:39
a weak reference to a vtkObject.
Some derived classes for the different vectors commonly used.
Definition: vtkVector.h:327
virtual bool MouseButtonReleaseEvent(const vtkContextMouseEvent &mouse)
Mouse button release event.
represent text properties.
virtual bool Paint(vtkContext2D *painter)
Paint event for the chart matrix.
container for a matrix of charts.
A table, which contains similar-typed columns of data.
Definition: vtkTable.h:68
static vtkChartMatrix * New()
Creates a new object.
virtual bool MouseMoveEvent(const vtkContextMouseEvent &mouse)
Mouse move event.
vtkSmartPointer< vtkTable > Input
virtual bool Hit(const vtkContextMouseEvent &mouse)
Return true if the supplied x, y coordinate is inside the item.
vtkNew< vtkStringArray > VisibleColumns
takes care of drawing 2D axes
virtual void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
virtual int GetNumberOfBins() const
Get the number of bins the histograms along the central diagonal scatter plot matrix.