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