VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkQtLineChart.h,v $ 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 /*------------------------------------------------------------------------- 00016 Copyright 2008 Sandia Corporation. 00017 Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, 00018 the U.S. Government retains certain rights in this software. 00019 -------------------------------------------------------------------------*/ 00020 00023 00024 #ifndef _vtkQtChartLineLayer_h 00025 #define _vtkQtChartLineLayer_h 00026 00027 #include "vtkQtChartExport.h" 00028 #include "vtkQtChartSeriesLayer.h" 00029 00030 class vtkQtLineChartInternal; 00031 class vtkQtLineChartOptions; 00032 class vtkQtLineChartSeriesOptions; 00033 00034 00038 class VTKQTCHART_EXPORT vtkQtLineChart : public vtkQtChartSeriesLayer 00039 { 00040 Q_OBJECT 00041 00042 public: 00043 enum {Type = vtkQtChart_LineChartType}; 00044 00045 public: 00046 vtkQtLineChart(); 00047 virtual ~vtkQtLineChart(); 00048 00050 00051 virtual void setChartArea(vtkQtChartArea *area); 00052 00053 virtual void setModel(vtkQtChartSeriesModel *model); 00055 00057 00058 00059 00060 00061 00062 vtkQtLineChartOptions *getOptions() const {return this->Options;} 00063 00071 void setOptions(const vtkQtLineChartOptions &options); 00072 00078 vtkQtLineChartSeriesOptions *getLineSeriesOptions(int series) const; 00079 00080 virtual QPixmap getSeriesIcon(int series) const; 00082 00084 00085 virtual void getLayerDomain(vtkQtChartLayerDomain &domain) const; 00086 00087 virtual void layoutChart(const QRectF &area); 00088 00089 virtual bool getHelpText(const QPointF &point, QString &text); 00090 00096 virtual void finishInteractiveResize(); 00098 00100 00101 virtual void getSeriesAt(const QPointF &point, 00102 vtkQtChartSeriesSelection &selection) const; 00103 00104 virtual void getPointsAt(const QPointF &point, 00105 vtkQtChartSeriesSelection &selection) const; 00106 00107 virtual void getSeriesIn(const QRectF &area, 00108 vtkQtChartSeriesSelection &selection) const; 00109 00110 virtual void getPointsIn(const QRectF &area, 00111 vtkQtChartSeriesSelection &selection) const; 00113 00115 00116 virtual QRectF boundingRect() const; 00117 virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, 00118 QWidget *widget); 00120 00121 public slots: 00127 void reset(); 00128 00129 protected: 00135 virtual vtkQtChartSeriesOptions *createOptions(QObject *parent); 00136 00140 virtual void setupOptions(vtkQtChartSeriesOptions *options); 00141 00142 private slots: 00147 void prepareSeriesInsert(int first, int last); 00148 00153 void insertSeries(int first, int last); 00154 00159 void startSeriesRemoval(int first, int last); 00160 00165 void finishSeriesRemoval(int first, int last); 00166 00173 void handleSeriesVisibilityChange(bool visible); 00174 00182 void handleSeriesAxesCornerChange(int corner, int previous); 00183 00187 void handleSeriesPointVisibilityChange(bool visible); 00188 00190 void handleSeriesPointMarkerChange(); 00191 00195 void handleSeriesPenChange(const QPen &pen); 00196 00200 void handleSeriesBrushChange(const QBrush &brush); 00201 00206 void updateHighlights(); 00207 00208 private: 00216 bool addSeriesDomain(int series, vtkQtChartLayer::AxesCorner corner, 00217 int *seriesGroup); 00218 00223 void calculateDomain(int seriesGroup, vtkQtChartLayer::AxesCorner corner); 00224 00226 void buildTree(); 00227 00228 private: 00229 vtkQtLineChartInternal *Internal; 00230 vtkQtLineChartOptions *Options; 00231 bool InModelChange; 00232 bool BuildNeeded; 00233 }; 00234 00235 #endif