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 #include "MWAWParser.hxx"
45 
47 {
48 struct State;
49 }
50 
51 class GreatWksGraph;
52 class GreatWksParser;
53 class GreatWksDBParser;
54 class GreatWksDRParser;
55 class GreatWksSSParser;
56 class GreatWksText;
57 
61 {
62  friend class GreatWksParser;
63  friend class GreatWksDBParser;
64  friend class GreatWksDRParser;
65  friend class GreatWksSSParser;
66 public:
68  explicit GreatWksDocument(MWAWParser &parser);
70  virtual ~GreatWksDocument();
71 
73  bool checkHeader(MWAWHeader *header, bool strict=false);
74 
77  {
78  return *m_parser;
79  }
81  shared_ptr<GreatWksGraph> getGraphParser()
82  {
83  return m_graphParser;
84  }
86  shared_ptr<GreatWksText> getTextParser()
87  {
88  return m_textParser;
89  }
90 
92  MWAWSection getMainSection() const;
94  void newPage(int page);
96  bool sendPicture(MWAWEntry const &entry, MWAWPosition pos);
97 
98  // interface with the graph parser
99 
101  bool canSendTextboxAsGraphic(MWAWEntry const &entry);
103  bool sendTextbox(MWAWEntry const &entry, MWAWListenerPtr listener);
104 
105 protected:
106 
108  bool readRSRCZones();
109 
110  // formula function
111 
113  bool readCellInFormula(MWAWVec2i const &pos, MWAWCellContent::FormulaInstruction &instr);
115  bool readString(long endPos, std::string &res);
117  bool readNumber(long endPos, double &res, bool &isNan);
119  bool readFormula(MWAWVec2i const &cPos, long endPos,
120  std::vector<MWAWCellContent::FormulaInstruction> &formula, std::string &error);
121 
122  //
123  // low level
124  //
125 
127  bool readPrintInfo(MWAWEntry const &entry);
128 
130  bool readWPSN(MWAWEntry const &entry);
131 
133  bool readARRs(MWAWEntry const &entry);
135  bool readDaHS(MWAWEntry const &entry);
137  bool readGrDS(MWAWEntry const &entry);
139  bool readNxEd(MWAWEntry const &entry);
140 
142  MWAWInputStreamPtr rsrcInput();
143 
145  libmwaw::DebugFile &rsrcAscii();
146 
147 private:
148  GreatWksDocument(GreatWksDocument const &orig);
150 
151  //
152  // data
153  //
154 
155 protected:
157  shared_ptr<GreatWksDocumentInternal::State> m_state;
158 public:
160  shared_ptr<MWAWParserState> m_parserState;
161 
162 protected:
166  shared_ptr<GreatWksGraph> m_graphParser;
168  shared_ptr<GreatWksText> m_textParser;
169 
171  typedef MWAWSection(MWAWParser::* GetMainSection)() const;
173  typedef void (MWAWParser::* NewPage)(int page);
174 
176  GetMainSection m_getMainSection;
178  NewPage m_newPage;
179 };
180 #endif
181 // vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab:
shared_ptr< MWAWListener > MWAWListenerPtr
a smart pointer of MWAWListener
Definition: libmwaw_internal.hxx:519
small class use to define a formula instruction
Definition: MWAWCell.hxx:359
a function used by MWAWDocument to store the version of document
Definition: MWAWHeader.hxx:56
the main class to read a GreatWorks database file
Definition: GreatWksDBParser.hxx:61
shared_ptr< MWAWParserState > m_parserState
the parser state
Definition: GreatWksDocument.hxx:160
an interface used to insert comment in a binary file, written in ascii form (if debug_with_files is n...
Definition: MWAWDebug.hxx:65
the main class to read/store generic data of a GreatWorks document
Definition: GreatWksDocument.hxx:60
MWAWParser * m_parser
the main parser
Definition: GreatWksDocument.hxx:164
bool checkHeader(MWAWHeader *header, bool strict=false)
checks if the document header is correct (or not)
Definition: GreatWksSSParser.cxx:1271
MWAWParser & operator=(const MWAWParser &)
private operator=: forbidden
NewPage m_newPage
the new page callback
Definition: GreatWksDocument.hxx:178
shared_ptr< GreatWksGraph > m_graphParser
the graph document
Definition: GreatWksDocument.hxx:166
GetMainSection m_getMainSection
the getMainSection callback
Definition: GreatWksDocument.hxx:176
the main class to read the text part of GreatWorks Text file
Definition: GreatWksText.hxx:62
shared_ptr< GreatWksText > m_textParser
the text document
Definition: GreatWksDocument.hxx:168
shared_ptr< GreatWksGraph > getGraphParser()
returns the graph parser
Definition: GreatWksDocument.hxx:81
the main class to read a GreatWorks graphic file
Definition: GreatWksDRParser.hxx:55
the main class to read a GreatWorks text file
Definition: GreatWksParser.hxx:56
a class which stores section properties
Definition: MWAWSection.hxx:45
shared_ptr< MWAWInputStream > MWAWInputStreamPtr
a smart pointer of MWAWInputStream
Definition: libmwaw_internal.hxx:517
shared_ptr< GreatWksDocumentInternal::State > m_state
the state
Definition: GreatWksDocument.hxx:157
the main class to read the graphic part of a HanMac Word-J file
Definition: GreatWksGraph.hxx:75
shared_ptr< GreatWksText > getTextParser()
returns the text parser
Definition: GreatWksDocument.hxx:86
Defines MWAWCell (cell content and format)
virtual class which defines the ancestor of all main zone parser
Definition: MWAWParser.hxx:99
MWAWParser & getMainParser()
returns the main parser
Definition: GreatWksDocument.hxx:76
Class to define the position of an object (textbox, picture, ..) in the document. ...
Definition: MWAWPosition.hxx:47
the main class to read a GreatWorks spreadsheet file
Definition: GreatWksSSParser.hxx:58
basic class to store an entry in a file This contained :
Definition: MWAWEntry.hxx:46
Internal: the structures of a GreatWksDocument.
Definition: GreatWksDocument.cxx:57

Generated on Sat Jul 29 2017 11:22:54 for libmwaw by doxygen 1.8.13