Quattro9Spreadsheet.h
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
2 /* libwps
3  * Version: MPL 2.0 / LGPLv2.1+
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * Major Contributor(s):
10  * Copyright (C) 2006, 2007 Andrew Ziem
11  * Copyright (C) 2003-2005 William Lachance (william.lachance@sympatico.ca)
12  * Copyright (C) 2003 Marc Maurer (uwog@uwog.net)
13  *
14  * For minor contributions see the git repository.
15  *
16  * Alternatively, the contents of this file may be used under the terms
17  * of the GNU Lesser General Public License Version 2.1 or later
18  * (LGPLv2.1+), in which case the provisions of the LGPLv2.1+ are
19  * applicable instead of those above.
20  */
21 
22 #ifndef QUATTRO9_SPREADSHEET_H
23 #define QUATTRO9_SPREADSHEET_H
24 
25 #include <ostream>
26 #include <map>
27 #include <vector>
28 
29 #include <librevenge-stream/librevenge-stream.h>
30 
31 #include "libwps_internal.h"
32 
33 #include "WPSDebug.h"
34 #include "WKSContentListener.h"
35 
36 #include "QuattroFormula.h"
37 
39 {
40 struct CellData;
41 class SpreadSheet;
42 struct State;
43 }
44 
45 namespace Quattro9ParserInternal
46 {
47 struct TextEntry;
48 }
49 
50 class Quattro9Parser;
51 
57 {
58 public:
59  friend class Quattro9Parser;
60 
62  explicit Quattro9Spreadsheet(Quattro9Parser &parser);
67  {
68  m_listener = listen;
69  }
71  void cleanState();
73  void updateState();
74 
75 protected:
77  int version() const;
79  QuattroFormulaManager::CellReferenceFunction getReadCellReferenceFunction();
80 
82  int getNumSpreadsheets() const;
84  librevenge::RVNGString getSheetName(int id) const;
86  void sendSpreadsheet(int sheetId);
88  Vec2f getPosition(int sheetId, Vec2i const &cell) const;
90  void addDLLIdName(int id, librevenge::RVNGString const &name, bool func1);
92  void addUserFormat(int id, librevenge::RVNGString const &name);
94  void addDocumentStrings(std::shared_ptr<WPSStream> const &stream,
95  std::vector<Quattro9ParserInternal::TextEntry> const &entries);
96 
97  //
98  // low level
99  //
100 
102  void sendCellContent(Quattro9SpreadsheetInternal::CellData const *cell, Vec2i pos, int sheetId, int numRepeated);
103 
105  bool readCellStyles(std::shared_ptr<WPSStream> const &stream);
107  bool readDocumentFormulas(std::shared_ptr<WPSStream> const &stream);
109  bool readBeginSheet(std::shared_ptr<WPSStream> const &stream, int &sheetId);
111  bool readEndSheet(std::shared_ptr<WPSStream> const &stream);
113  bool readPageBreak(std::shared_ptr<WPSStream> const &stream);
115  bool readMergedCells(std::shared_ptr<WPSStream> const &stream);
117  bool readColRowDefault(std::shared_ptr<WPSStream> const &stream);
119  bool readColRowDimension(std::shared_ptr<WPSStream> const &stream);
121  bool readColRowDimensions(std::shared_ptr<WPSStream> const &stream);
123  bool readBeginColumn(std::shared_ptr<WPSStream> const &stream);
125  bool readEndColumn(std::shared_ptr<WPSStream> const &stream);
127  bool readCellList(std::shared_ptr<WPSStream> const &stream);
129  bool readCellResult(std::shared_ptr<WPSStream> const &stream);
130 
131  /* reads a cell */
132  bool readCell(std::shared_ptr<WPSStream> const &stream, Vec2i actPos, WKSContentListener::FormulaInstruction &instr, int sheetId, librevenge::RVNGString const &fName) const;
134  bool readCellReference(std::shared_ptr<WPSStream> const &stream, long endPos,
136  Vec2i const &pos=Vec2i(0,0), int sheetId=0) const;
138 
139 private:
140  Quattro9Spreadsheet(Quattro9Spreadsheet const &orig) = delete;
141  Quattro9Spreadsheet &operator=(Quattro9Spreadsheet const &orig) = delete;
142  std::shared_ptr<WKSContentListener> m_listener;
143  Quattro9Parser &m_mainParser;
146  std::shared_ptr<Quattro9SpreadsheetInternal::State> m_state;
147 };
148 
149 #endif /* WPS4_H */
150 /* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */
std::shared_ptr< WKSContentListener > m_listener
Definition: Quattro9Spreadsheet.h:142
friend class Quattro9Spreadsheet
Definition: Quattro9.h:93
void setListener(WKSContentListenerPtr &listen)
sets the listener
Definition: Quattro9Spreadsheet.h:66
Definition: Quattro9Spreadsheet.cpp:50
std::function< bool(std::shared_ptr< WPSStream > const &stream, long endPos, QuattroFormulaInternal::CellReference &ref, Vec2i const &cPos, int cSheet)> CellReferenceFunction
Definition: QuattroFormula.h:81
a class used to store the cell(s) content of a Quattro Spreadsheet
Definition: Quattro9Spreadsheet.cpp:233
std::string name(long id)
returns the name given Windows© id
Definition: libwps_tools_win.cpp:7332
This class parses Quattro9 Pro spreadsheet file.
Definition: Quattro9Spreadsheet.h:56
Vec2< int > Vec2i
Vec2 of int.
Definition: libwps_internal.h:702
std::shared_ptr< Quattro9SpreadsheetInternal::State > m_state
the internal state
Definition: Quattro9Spreadsheet.h:146
This class parses Quattro Pro WP spreadsheet: .qpw.
Definition: Quattro9.h:89
WKSParser & operator=(const WKSParser &)=delete
std::shared_ptr< WKSContentListener > m_listener
Definition: Quattro9.h:202
std::shared_ptr< WKSContentListener > WKSContentListenerPtr
shared pointer to WKSContentListener
Definition: libwps_internal.h:114
int version() const
return the file version
Definition: Quattro9.cpp:417
Internal: namespace to define internal class of Quattro9Parser.
Definition: Quattro9.cpp:57
small class use to define a formula instruction
Definition: WKSContentListener.h:57
small class use to store Quattro Pro cell reference (.wb1-3 and qpw)
Definition: QuattroFormula.h:42
void addDocumentStrings()
add the document strings to the spreadsheetParser
Definition: Quattro9.cpp:525

Generated on Wed Aug 8 2018 16:52:31 for libwps by doxygen 1.8.13