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;
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  static 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  static bool readCell(std::shared_ptr<WPSStream> const &stream, Vec2i actPos, WKSContentListener::FormulaInstruction &instr, int sheetId, librevenge::RVNGString const &fName);
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:
142  std::shared_ptr<WKSContentListener> m_listener;
146  std::shared_ptr<Quattro9SpreadsheetInternal::State> m_state;
147 };
148 
149 #endif /* WPS4_H */
150 /* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */
This class parses Quattro Pro WP spreadsheet: .qpw.
Definition: Quattro9.h:90
This class parses Quattro9 Pro spreadsheet file.
Definition: Quattro9Spreadsheet.h:57
void sendCellContent(Quattro9SpreadsheetInternal::CellData const *cell, Vec2i pos, int sheetId, int numRepeated)
send the cell data
Definition: Quattro9Spreadsheet.cpp:2045
Vec2f getPosition(int sheetId, Vec2i const &cell) const
returns the beginning position of a cell
Definition: Quattro9Spreadsheet.cpp:836
Quattro9Spreadsheet & operator=(Quattro9Spreadsheet const &orig)=delete
bool readEndColumn(std::shared_ptr< WPSStream > const &stream)
read the end column zone: zone a02
Definition: Quattro9Spreadsheet.cpp:1581
bool readColRowDimension(std::shared_ptr< WPSStream > const &stream)
read a col/row dimension: zone 633, 634
Definition: Quattro9Spreadsheet.cpp:1392
bool readMergedCells(std::shared_ptr< WPSStream > const &stream)
read the merged cell: zone 61d
Definition: Quattro9Spreadsheet.cpp:1469
bool readCellStyles(std::shared_ptr< WPSStream > const &stream)
reads a cell attribute: zone a
Definition: Quattro9Spreadsheet.cpp:892
static bool readCell(std::shared_ptr< WPSStream > const &stream, Vec2i actPos, WKSContentListener::FormulaInstruction &instr, int sheetId, librevenge::RVNGString const &fName)
Definition: Quattro9Spreadsheet.cpp:1880
void updateState()
update the state (need to be called before sending data)
Definition: Quattro9Spreadsheet.cpp:806
static bool readPageBreak(std::shared_ptr< WPSStream > const &stream)
read the page break zone: zone 617
Definition: Quattro9Spreadsheet.cpp:1508
int getNumSpreadsheets() const
returns the number of spreadsheet
Definition: Quattro9Spreadsheet.cpp:827
std::shared_ptr< Quattro9SpreadsheetInternal::State > m_state
the internal state
Definition: Quattro9Spreadsheet.h:146
bool readDocumentFormulas(std::shared_ptr< WPSStream > const &stream)
reads the document formulas: zone 408
Definition: Quattro9Spreadsheet.cpp:1190
bool readBeginColumn(std::shared_ptr< WPSStream > const &stream)
read the begin column zone: zone a01
Definition: Quattro9Spreadsheet.cpp:1542
void sendSpreadsheet(int sheetId)
send the sheetId'th spreadsheet
Definition: Quattro9Spreadsheet.cpp:2011
void setListener(WKSContentListenerPtr &listen)
sets the listener
Definition: Quattro9Spreadsheet.h:66
bool readEndSheet(std::shared_ptr< WPSStream > const &stream)
read the end sheet zone: zone 602
Definition: Quattro9Spreadsheet.cpp:1339
librevenge::RVNGString getSheetName(int id) const
returns the name of the id's spreadsheet
Definition: Quattro9Spreadsheet.cpp:847
~Quattro9Spreadsheet()
destructor
Definition: Quattro9Spreadsheet.cpp:797
bool readCellList(std::shared_ptr< WPSStream > const &stream)
reads a cell list zone: zone c01
Definition: Quattro9Spreadsheet.cpp:1596
std::shared_ptr< WKSContentListener > m_listener
Definition: Quattro9Spreadsheet.h:142
void addDLLIdName(int id, librevenge::RVNGString const &name, bool func1)
add a dll's correspondance between an id and a name
Definition: Quattro9Spreadsheet.cpp:852
bool readBeginSheet(std::shared_ptr< WPSStream > const &stream, int &sheetId)
read the begin sheet zone: zone 601
Definition: Quattro9Spreadsheet.cpp:1259
bool readColRowDefault(std::shared_ptr< WPSStream > const &stream)
read a col/row default dimension: zone 631, 632
Definition: Quattro9Spreadsheet.cpp:1356
Quattro9Spreadsheet(Quattro9Parser &parser)
constructor
Definition: Quattro9Spreadsheet.cpp:789
bool readColRowDimensions(std::shared_ptr< WPSStream > const &stream)
read a col/row dimensions: zone 635, 636
Definition: Quattro9Spreadsheet.cpp:1430
Quattro9Spreadsheet(Quattro9Spreadsheet const &orig)=delete
bool readCellReference(std::shared_ptr< WPSStream > const &stream, long endPos, QuattroFormulaInternal::CellReference &ref, Vec2i const &pos=Vec2i(0, 0), int sheetId=0) const
try to read a cell reference
Definition: Quattro9Spreadsheet.cpp:1919
void addDocumentStrings(std::shared_ptr< WPSStream > const &stream, std::vector< Quattro9ParserInternal::TextEntry > const &entries)
set the document strings list
Definition: Quattro9Spreadsheet.cpp:872
void addUserFormat(int id, librevenge::RVNGString const &name)
add a user format's correspondance between an id and a name
Definition: Quattro9Spreadsheet.cpp:857
bool readCellResult(std::shared_ptr< WPSStream > const &stream)
reads a cell result zone: zone c02
Definition: Quattro9Spreadsheet.cpp:1830
int version() const
return the file version
Definition: Quattro9Spreadsheet.cpp:810
void cleanState()
clean internal state
Definition: Quattro9Spreadsheet.cpp:801
QuattroFormulaManager::CellReferenceFunction getReadCellReferenceFunction()
returns the function to read a cell's reference
Definition: Quattro9Spreadsheet.cpp:817
Quattro9Parser & m_mainParser
the listener (if set)
Definition: Quattro9Spreadsheet.h:144
small class use to store Quattro Pro cell reference (.wb1-3 and qpw)
Definition: QuattroFormula.h:43
std::function< bool(std::shared_ptr< WPSStream > const &stream, long endPos, QuattroFormulaInternal::CellReference &ref, Vec2i const &cPos, int cSheet)> CellReferenceFunction
Definition: QuattroFormula.h:81
std::shared_ptr< WKSContentListener > WKSContentListenerPtr
shared pointer to WKSContentListener
Definition: libwps_internal.h:114
Vec2< int > Vec2i
Vec2 of int.
Definition: libwps_internal.h:702
Internal: namespace to define internal class of Quattro9Parser.
Definition: Quattro9.cpp:58
Definition: Quattro9Spreadsheet.cpp:51
std::string name(long id)
returns the name given Windows© id
Definition: libwps_tools_win.cpp:7332
a class used to store the cell(s) content of a Quattro Spreadsheet
Definition: Quattro9Spreadsheet.cpp:234
small class use to define a formula instruction
Definition: WKSContentListener.h:58

Generated on Wed Nov 30 2022 17:20:09 for libwps by doxygen 1.9.1