VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkChartXY.h 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 00013 00014 =========================================================================*/ 00015 00026 #ifndef __vtkChartXY_h 00027 #define __vtkChartXY_h 00028 00029 #include "vtkChart.h" 00030 00031 class vtkPlot; 00032 class vtkAxis; 00033 class vtkPlotGrid; 00034 class vtkTable; 00035 class vtkChartLegend; 00036 class vtkTooltipItem; 00037 class vtkContextMouseEvent; 00038 class vtkChartXYPrivate; // Private class to keep my STL vector in... 00039 00040 class VTK_CHARTS_EXPORT vtkChartXY : public vtkChart 00041 { 00042 public: 00043 vtkTypeMacro(vtkChartXY, vtkChart); 00044 virtual void PrintSelf(ostream &os, vtkIndent indent); 00045 00047 static vtkChartXY *New(); 00048 00052 virtual void Update(); 00053 00056 virtual bool Paint(vtkContext2D *painter); 00057 00059 virtual vtkPlot * AddPlot(int type); 00060 00063 virtual bool RemovePlot(vtkIdType index); 00064 00066 virtual void ClearPlots(); 00067 00070 virtual vtkPlot* GetPlot(vtkIdType index); 00071 00073 virtual vtkIdType GetNumberOfPlots(); 00074 00076 int GetPlotCorner(vtkPlot *plot); 00077 00079 void SetPlotCorner(vtkPlot *plot, int corner); 00080 00084 virtual vtkAxis* GetAxis(int axisIndex); 00085 00087 virtual vtkIdType GetNumberOfAxes(); 00088 00092 virtual void RecalculateBounds(); 00093 00095 00096 vtkSetMacro(DrawAxesAtOrigin, bool); 00097 vtkGetMacro(DrawAxesAtOrigin, bool); 00099 00101 00103 vtkSetMacro(AutoAxes, bool); 00104 vtkGetMacro(AutoAxes, bool); 00106 00107 00109 00115 vtkSetMacro(BarWidthFraction, float); 00116 vtkGetMacro(BarWidthFraction, float); 00118 00119 //BTX 00121 virtual bool Hit(const vtkContextMouseEvent &mouse); 00122 00124 virtual bool MouseEnterEvent(const vtkContextMouseEvent &mouse); 00125 00127 virtual bool MouseMoveEvent(const vtkContextMouseEvent &mouse); 00128 00130 virtual bool MouseLeaveEvent(const vtkContextMouseEvent &mouse); 00131 00133 virtual bool MouseButtonPressEvent(const vtkContextMouseEvent &mouse); 00134 00136 virtual bool MouseButtonReleaseEvent(const vtkContextMouseEvent &mouse); 00137 00140 virtual bool MouseWheelEvent(const vtkContextMouseEvent &mouse, int delta); 00141 //ETX 00142 00145 virtual void SetScene(vtkContextScene *scene); 00146 00147 //BTX 00148 protected: 00149 vtkChartXY(); 00150 ~vtkChartXY(); 00151 00153 void RecalculatePlotTransforms(); 00154 00156 00157 void RecalculatePlotTransform(vtkAxis *x, vtkAxis *y, 00158 vtkTransform2D *transform); 00160 00163 void RecalculatePlotBounds(); 00164 00166 virtual void ProcessSelectionEvent(vtkObject* caller, void* callData); 00167 00169 00170 vtkPlotGrid *Grid; 00171 vtkPlotGrid *Grid2; 00173 00175 vtkChartLegend *Legend; 00176 00179 vtkTooltipItem *Tooltip; 00180 00182 bool PlotTransformValid; 00183 00185 float BoxOrigin[2]; 00186 00188 float BoxGeometry[2]; 00189 00191 bool DrawBox; 00192 00194 bool DrawNearestPoint; 00195 00199 bool DrawAxesAtOrigin; 00200 00202 bool AutoAxes; 00203 00206 float BarWidthFraction; 00207 00210 bool LayoutChanged; 00211 00212 private: 00213 vtkChartXY(const vtkChartXY &); // Not implemented. 00214 void operator=(const vtkChartXY &); // Not implemented. 00215 00216 vtkChartXYPrivate *ChartPrivate; // Private class where I hide my STL containers 00217 00219 void RenderPlots(vtkContext2D *painter); 00220 00223 void CalculateBarPlots(); 00224 00226 bool LocatePointInPlots(const vtkContextMouseEvent &mouse); 00227 00229 bool RemovePlotFromCorners(vtkPlot *plot); 00230 00231 void ZoomInAxes(vtkAxis *x, vtkAxis *y, float *orign, float *max); 00232 00233 //ETX 00234 }; 00235 00236 #endif //__vtkChartXY_h