1 // xlsxchart.h 2 3 #ifndef QXLSX_CHART_H 4 #define QXLSX_CHART_H 5 6 #include <QtGlobal> 7 #include <QSharedPointer> 8 #include <QXmlStreamReader> 9 #include <QXmlStreamWriter> 10 11 #include "xlsxabstractooxmlfile.h" 12 13 QT_BEGIN_NAMESPACE_XLSX 14 15 class AbstractSheet; 16 class Worksheet; 17 class ChartPrivate; 18 class CellRange; 19 class DrawingAnchor; 20 21 class Chart : public AbstractOOXmlFile 22 { 23 Q_DECLARE_PRIVATE(Chart) 24 public: 25 enum ChartType { // 16 type of chart (ECMA 376) 26 CT_NoStatementChart = 0, // Zero is internally used for unknown types 27 CT_AreaChart, CT_Area3DChart, CT_LineChart, 28 CT_Line3DChart, CT_StockChart, CT_RadarChart, 29 CT_ScatterChart, CT_PieChart, CT_Pie3DChart, 30 CT_DoughnutChart, CT_BarChart, CT_Bar3DChart, 31 CT_OfPieChart, CT_SurfaceChart, CT_Surface3DChart, 32 CT_BubbleChart, 33 }; 34 enum ChartAxisPos { None = (-1), Left = 0, Right, Top, Bottom }; 35 private: 36 friend class AbstractSheet; 37 friend class Worksheet; 38 friend class Chartsheet; 39 friend class DrawingAnchor; 40 private: 41 Chart(AbstractSheet *parent, CreateFlag flag); 42 public: 43 ~Chart(); 44 public: 45 void addSeries(const CellRange &range, AbstractSheet *sheet = NULL, bool headerH = false, bool headerV = false, bool swapHeaders = false); 46 void setChartType(ChartType type); 47 void setChartStyle(int id); 48 void setAxisTitle(Chart::ChartAxisPos pos, QString axisTitle); 49 void setChartTitle(QString strchartTitle); 50 void setChartLegend(Chart::ChartAxisPos legendPos, bool overlap = false); 51 void setGridlinesEnable(bool majorGridlinesEnable = false, bool minorGridlinesEnable = false); 52 public: 53 bool loadFromXmlFile(QIODevice *device); 54 void saveToXmlFile(QIODevice *device) const; 55 }; 56 57 QT_END_NAMESPACE_XLSX 58 59 #endif // QXLSX_CHART_H 60