00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00023 
00024 #ifndef _vtkQtChartAxisLayer_h
00025 #define _vtkQtChartAxisLayer_h
00026 
00027 #include "vtkQtChartExport.h"
00028 #include "vtkQtChartLayer.h"
00029 #include "vtkQtChartAxis.h" 
00030 
00031 class vtkQtChartAxisDomain;
00032 class vtkQtChartAxisDomainPriority;
00033 class vtkQtChartAxisLayerItem;
00034 class QFont;
00035 class QGraphicsRectItem;
00036 
00037 
00041 class VTKQTCHART_EXPORT vtkQtChartAxisLayer : public vtkQtChartLayer
00042 {
00043   Q_OBJECT
00044 
00045 public:
00046   enum AxisBehavior
00047     {
00048     ChartSelect = 0, 
00049     BestFit,         
00050     FixedInterval    
00051     };
00052 
00053   enum {Type = vtkQtChart_AxisLayerType};
00054 
00055 public:
00056   vtkQtChartAxisLayer();
00057   virtual ~vtkQtChartAxisLayer();
00058 
00060 
00061 
00062 
00063 
00064 
00065 
00066   vtkQtChartAxis *getAxis(vtkQtChartAxis::AxisLocation location) const;
00067 
00073   vtkQtChartAxis *getHorizontalAxis(vtkQtChartLayer::AxesCorner axes) const;
00074 
00080   vtkQtChartAxis *getVerticalAxis(vtkQtChartLayer::AxesCorner axes) const;
00081 
00087   AxisBehavior getAxisBehavior(vtkQtChartAxis::AxisLocation location) const;
00088 
00093   void setAxisBehavior(vtkQtChartAxis::AxisLocation location,
00094       AxisBehavior behavior);
00095 
00101   const vtkQtChartAxisDomainPriority &getAxisDomainPriority(
00102       vtkQtChartAxis::AxisLocation location) const;
00103 
00108   void setAxisDomainPriority(vtkQtChartAxis::AxisLocation location,
00109       const vtkQtChartAxisDomainPriority &priority);
00111 
00123   virtual void layoutChart(const QRectF &area);
00124 
00132   virtual void setChartArea(vtkQtChartArea *area);
00133 
00138   QRectF getLayerBounds() const {return this->LayerBounds;}
00139 
00140   virtual QRectF boundingRect() const;
00141   virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
00142     QWidget *widget=0);
00143 
00144 public slots:
00146   void handleChartRangeChange();
00147 
00149   void cancelChartRangeChange();
00150 
00151 private:
00153   void setupAxesCorner();
00154 
00160   vtkQtChartAxis::AxisDomain getAxisDomain(
00161       vtkQtChartAxis::AxisLocation location) const;
00162 
00169   vtkQtChartLayer::AxesCorner getCorner(vtkQtChartAxis::AxisLocation first,
00170       vtkQtChartAxis::AxisLocation second) const;
00171 
00179   void findAxisDomain(vtkQtChartAxis::AxisLocation axis,
00180       vtkQtChartAxis::AxisLocation neighbor,
00181       vtkQtChartAxis::AxisDomain neighborDomain,
00182       const vtkQtChartLayerDomain &layerDomain,
00183       vtkQtChartAxisDomain &axisDomain) const;
00184 
00185 private:
00186   QRectF LayerBounds;                 
00187   QGraphicsRectItem *Border;          
00188   vtkQtChartAxis *Axis[4];            
00189   vtkQtChartAxisLayerItem *Option[4]; 
00190   bool RangeChanged;                  
00191 
00192 private:
00193   vtkQtChartAxisLayer(const vtkQtChartAxisLayer &);
00194   vtkQtChartAxisLayer &operator=(const vtkQtChartAxisLayer &);
00195 };
00196 
00197 #endif