1 // This may look like C code, but it's really -*- C++ -*- 2 /* 3 * Copyright (C) 2013 Emweb bv, Herent, Belgium. 4 * 5 * See the LICENSE file for terms of use. 6 */ 7 8 #ifndef CHART_WGRIDDATA_H 9 #define CHART_WGRIDDATA_H 10 11 #include <Wt/Chart/WAbstractGridData.h> 12 #include <Wt/Chart/WCartesian3DChart.h> 13 #include <Wt/WPen.h> 14 15 namespace Wt { 16 class WAbstractItemModel; 17 class WMemoryResource; 18 19 namespace Chart { 20 class WCartesian3DChart; 21 22 /*! \class WGridData 23 * \brief Class representing grid-based data for a 3D chart. 24 * 25 * General information can be found at WAbstractDataSeries3D. The model for 26 * this dataseries is structured as a table. One of the columns (by default 27 * index 0) contains the x-axis values, one of the rows (by default index 0) 28 * contains the y-axis values. All other values in the table contain the 29 * z-value corresponding to the x- and y-values with the same column- and 30 * row-index. 31 * 32 * \ingroup charts 33 */ 34 class WT_API WGridData : public WAbstractGridData { 35 public: 36 /*! \brief Constructor 37 */ 38 WGridData(std::shared_ptr<WAbstractItemModel> model); 39 40 virtual ~WGridData(); 41 42 virtual double minimum(Axis axis) const override; 43 44 virtual double maximum(Axis axis) const override; 45 46 /*! \brief Set which column in the model is used as x-axis. 47 * 48 * The default column that is used has index 0. 49 */ 50 void setXSeriesColumn(int modelColumn); 51 52 /*! \brief Returns which column in the model is used as x-axis. 53 * 54 * \sa setXSeriesColumn() 55 */ XSeriesColumn()56 int XSeriesColumn() const { return XAbscisColumn_; } 57 58 /*! \brief Set which row in the model is used as y-axis. 59 * 60 * The default row that is used has index 0. 61 */ 62 void setYSeriesRow(int modelRow); 63 64 /*! \brief Returns which row in the model is used as y-axis. 65 * 66 * \sa setYSeriesRow() 67 */ YSeriesRow()68 int YSeriesRow() const { return YAbscisRow_; } 69 70 // below = internal API 71 virtual int nbXPoints() const override; 72 virtual int nbYPoints() const override; 73 virtual WString axisLabel(int u, Axis axis) const override; 74 virtual cpp17::any data(int i, int j) const override; 75 76 protected: 77 virtual int countSimpleData() const override; 78 virtual void pointDataFromModel(FloatBuffer& simplePtsArray, 79 FloatBuffer& simplePtsSize, 80 FloatBuffer& coloredPtsArray, 81 FloatBuffer& coloredPtsSize, 82 FloatBuffer& coloredPtsColor) const override; 83 virtual void surfaceDataFromModel(std::vector<FloatBuffer>& simplePtsArrays) const override; 84 virtual void barDataFromModel(std::vector<FloatBuffer>& simplePtsArrays) const override; 85 virtual void barDataFromModel(std::vector<FloatBuffer>& simplePtsArrays, 86 std::vector<FloatBuffer>& coloredPtsArrays, 87 std::vector<FloatBuffer>& coloredPtsColors) const override; 88 89 private: 90 void findRange() const; 91 92 int XAbscisColumn_; 93 int YAbscisRow_; 94 }; 95 96 } 97 } 98 99 #endif 100