File indexing completed on 2025-01-19 13:27:35

0001 /*
0002  * This file is part of Office 2007 Filters for Calligra
0003  *
0004  * Copyright (C) 2010 Sebastian Sauer <sebsauer@kdab.com>
0005  * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
0006  *
0007  * Contact: Suresh Chande suresh.chande@nokia.com
0008  *
0009  * This library is free software; you can redistribute it and/or
0010  * modify it under the terms of the GNU Lesser General Public License
0011  * version 2.1 as published by the Free Software Foundation.
0012  *
0013  * This library is distributed in the hope that it will be useful, but
0014  * WITHOUT ANY WARRANTY; without even the implied warranty of
0015  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
0016  * Lesser General Public License for more details.
0017  *
0018  * You should have received a copy of the GNU Lesser General Public
0019  * License along with this library; if not, write to the Free Software
0020  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
0021  * 02110-1301 USA
0022  *
0023  */
0024 
0025 #ifndef XLSXXMLCHARTREADER_H
0026 #define XLSXXMLCHARTREADER_H
0027 
0028 #include <MsooXmlCommonReader.h>
0029 
0030 namespace KoChart {
0031     class Series;
0032     class Chart;
0033     class ShapeProperties;
0034 }
0035 
0036 class XlsxChartOdfWriter;
0037 
0038 class XlsxXmlChartReaderContext : public MSOOXML::MsooXmlReaderContext
0039 {
0040 public:
0041     KoStore* m_storeout;
0042     KoChart::Chart* m_chart;
0043     XlsxChartOdfWriter* m_chartWriter;
0044     explicit XlsxXmlChartReaderContext(KoStore* _storeout, XlsxChartOdfWriter* _chartWriter);
0045     ~XlsxXmlChartReaderContext() override;
0046 };
0047 
0048 class XlsxXmlChartReader : public MSOOXML::MsooXmlCommonReader
0049 {
0050 public:
0051     explicit XlsxXmlChartReader(KoOdfWriters *writers);
0052     ~XlsxXmlChartReader() override;
0053     KoFilter::ConversionStatus read(MSOOXML::MsooXmlReaderContext* context = 0) override;
0054     void WriteIntoInternalTable(QString &range, QVector< QString > &buffer, KoGenStyle::Type formatType, const QString& formatString = QString());
0055     QString AlocateAndWriteIntoInternalTable(QVector< QString > &buffer, KoGenStyle::Type formatType);
0056 protected:
0057     KoFilter::ConversionStatus read_txPr();
0058     KoFilter::ConversionStatus read_plotArea();
0059     KoFilter::ConversionStatus read_valAx();
0060     KoFilter::ConversionStatus read_catAx();
0061     KoFilter::ConversionStatus read_scaling();
0062     KoFilter::ConversionStatus read_title();
0063     KoFilter::ConversionStatus read_legend();
0064     KoFilter::ConversionStatus read_spPr();
0065     KoFilter::ConversionStatus read_dLbl();
0066     KoFilter::ConversionStatus read_dLbls();
0067 
0068     KoFilter::ConversionStatus read_pieChart();
0069     KoFilter::ConversionStatus read_pie3DChart();
0070     KoFilter::ConversionStatus read_ofPieChart();
0071     KoFilter::ConversionStatus read_doughnutChart();
0072     KoFilter::ConversionStatus read_areaChart();
0073     KoFilter::ConversionStatus read_area3DChart();
0074     KoFilter::ConversionStatus read_barChart();
0075     KoFilter::ConversionStatus read_bar3DChart();
0076     KoFilter::ConversionStatus read_lineChart();
0077     KoFilter::ConversionStatus read_line3DChart();
0078     KoFilter::ConversionStatus read_scatterChart();
0079     KoFilter::ConversionStatus read_radarChart();
0080     KoFilter::ConversionStatus read_surfaceChart();
0081     KoFilter::ConversionStatus read_surface3DChart();
0082     KoFilter::ConversionStatus read_bubbleChart();
0083     KoFilter::ConversionStatus read_stockChart();
0084 
0085     KoFilter::ConversionStatus read_pieChart_Ser();
0086     KoFilter::ConversionStatus read_bubbleChart_Ser();
0087     KoFilter::ConversionStatus read_scatterChart_Ser();
0088     KoFilter::ConversionStatus read_barChart_Ser();
0089     KoFilter::ConversionStatus read_areaChart_Ser();
0090     KoFilter::ConversionStatus read_radarChart_Ser();
0091     KoFilter::ConversionStatus read_lineChart_Ser();
0092     KoFilter::ConversionStatus read_surfaceChart_Ser();
0093 
0094     KoFilter::ConversionStatus read_barDir();
0095     KoFilter::ConversionStatus read_grouping();
0096     KoFilter::ConversionStatus read_val();
0097     KoFilter::ConversionStatus read_xVal();
0098     KoFilter::ConversionStatus read_yVal();
0099     KoFilter::ConversionStatus read_cat();
0100     KoFilter::ConversionStatus read_seriesText_Tx();
0101     KoFilter::ConversionStatus read_chartText_Tx();
0102     KoFilter::ConversionStatus read_numCache();
0103     KoFilter::ConversionStatus read_formatCode();
0104     KoFilter::ConversionStatus read_firstSliceAng();
0105     KoFilter::ConversionStatus read_holeSize();
0106     KoFilter::ConversionStatus read_bubbleSize();
0107     KoFilter::ConversionStatus read_bubbleScale();
0108     KoFilter::ConversionStatus read_bubble3D();
0109 
0110     KoFilter::ConversionStatus read_pt();
0111     KoFilter::ConversionStatus read_p();
0112     KoFilter::ConversionStatus read_pPr();
0113     KoFilter::ConversionStatus read_defRPr();
0114     KoFilter::ConversionStatus read_order();
0115     KoFilter::ConversionStatus read_idx();
0116     KoFilter::ConversionStatus read_explosion();
0117     KoFilter::ConversionStatus read_strRef();
0118     KoFilter::ConversionStatus read_multiLvlStrRef();
0119     KoFilter::ConversionStatus read_multiLvlStrCache();
0120     KoFilter::ConversionStatus read_lvl();
0121     KoFilter::ConversionStatus read_numRef();
0122     KoFilter::ConversionStatus read_f();
0123     KoFilter::ConversionStatus read_ptCount();
0124     KoFilter::ConversionStatus read_numLit();
0125     KoFilter::ConversionStatus read_strCache();
0126     KoFilter::ConversionStatus read_marker();
0127     KoFilter::ConversionStatus read_serMarker();
0128 
0129 private:
0130 
0131     void read_showDataLabel();
0132 
0133     enum ReadTxContext{ Title, None };
0134     enum ReadAreaContext{ PlotArea, ChartArea };
0135     XlsxXmlChartReaderContext *m_context;
0136     KoChart::Series *m_currentSeries;
0137     KoChart::ShapeProperties* m_currentShapeProperties;
0138     QString m_cellRangeAddress;
0139     ReadTxContext m_readTxContext;
0140     ReadAreaContext m_areaContext;
0141     bool m_serMarkerDefined;
0142     bool m_autoTitleDeleted;
0143 
0144     class Private;
0145     Private * const d;
0146 };
0147 
0148 #endif