GreatWksDocument.hxx
Go to the documentation of this file.
1 /* -*- Mode: C++; c-default-style: "k&r"; indent-tabs-mode: nil; tab-width: 2; c-basic-offset: 2 -*- */
2 
3 /* libmwaw
4 * Version: MPL 2.0 / LGPLv2+
5 *
6 * The contents of this file are subject to the Mozilla Public License Version
7 * 2.0 (the "License"); you may not use this file except in compliance with
8 * the License or as specified alternatively below. You may obtain a copy of
9 * the License at http://www.mozilla.org/MPL/
10 *
11 * Software distributed under the License is distributed on an "AS IS" basis,
12 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13 * for the specific language governing rights and limitations under the
14 * License.
15 *
16 * Major Contributor(s):
17 * Copyright (C) 2002 William Lachance (wrlach@gmail.com)
18 * Copyright (C) 2002,2004 Marc Maurer (uwog@uwog.net)
19 * Copyright (C) 2004-2006 Fridrich Strba (fridrich.strba@bluewin.ch)
20 * Copyright (C) 2006, 2007 Andrew Ziem
21 * Copyright (C) 2011, 2012 Alonso Laurent (alonso@loria.fr)
22 *
23 *
24 * All Rights Reserved.
25 *
26 * For minor contributions see the git repository.
27 *
28 * Alternatively, the contents of this file may be used under the terms of
29 * the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"),
30 * in which case the provisions of the LGPLv2+ are applicable
31 * instead of those above.
32 */
33 
34 #ifndef GREAT_WKS_DOCUMENT
35 # define GREAT_WKS_DOCUMENT
36 
37 #include <string>
38 #include <vector>
39 
40 #include <librevenge/librevenge.h>
41 
42 #include "MWAWCell.hxx"
43 #include "MWAWDebug.hxx"
44 
45 namespace GreatWksDocumentInternal
46 {
47 struct State;
48 }
49 
50 class GreatWksGraph;
51 class GreatWksParser;
52 class GreatWksDBParser;
53 class GreatWksDRParser;
54 class GreatWksSSParser;
55 class GreatWksText;
56 
60 {
61  friend class GreatWksParser;
62  friend class GreatWksDBParser;
63  friend class GreatWksDRParser;
64  friend class GreatWksSSParser;
65 public:
67  explicit GreatWksDocument(MWAWParser &parser);
69  virtual ~GreatWksDocument();
70 
72  bool checkHeader(MWAWHeader *header, bool strict=false);
73 
76  {
77  return *m_parser;
78  }
80  shared_ptr<GreatWksGraph> getGraphParser()
81  {
82  return m_graphParser;
83  }
85  shared_ptr<GreatWksText> getTextParser()
86  {
87  return m_textParser;
88  }
89 
93  void newPage(int page);
95  bool sendPicture(MWAWEntry const &entry, MWAWPosition pos);
96 
97  // interface with the graph parser
98 
100  bool canSendTextboxAsGraphic(MWAWEntry const &entry);
102  bool sendTextbox(MWAWEntry const &entry, MWAWListenerPtr listener);
103 
104 protected:
105 
107  bool readRSRCZones();
108 
109  // formula function
110 
114  bool readString(long endPos, std::string &res);
116  bool readNumber(long endPos, double &res, bool &isNan);
118  bool readFormula(MWAWVec2i const &cPos, long endPos,
119  std::vector<MWAWCellContent::FormulaInstruction> &formula, std::string &error);
120 
121  //
122  // low level
123  //
124 
126  bool readPrintInfo(MWAWEntry const &entry);
127 
129  bool readWPSN(MWAWEntry const &entry);
130 
132  bool readARRs(MWAWEntry const &entry);
134  bool readDaHS(MWAWEntry const &entry);
136  bool readGrDS(MWAWEntry const &entry);
138  bool readNxEd(MWAWEntry const &entry);
139 
142 
145 
146 private:
147  GreatWksDocument(GreatWksDocument const &orig);
149 
150  //
151  // data
152  //
153 
154 protected:
156  shared_ptr<GreatWksDocumentInternal::State> m_state;
157 public:
159  shared_ptr<MWAWParserState> m_parserState;
160 
161 protected:
165  shared_ptr<GreatWksGraph> m_graphParser;
167  shared_ptr<GreatWksText> m_textParser;
168 
170  typedef MWAWSection(MWAWParser::* GetMainSection)() const;
172  typedef void (MWAWParser::* NewPage)(int page);
173 
178 };
179 #endif
180 // vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab:

Generated on Tue Mar 1 2016 23:42:43 for libmwaw by doxygen 1.8.4