WNParser.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 /* libmwaw
3 * Version: MPL 2.0 / LGPLv2+
4 *
5 * The contents of this file are subject to the Mozilla Public License Version
6 * 2.0 (the "License"); you may not use this file except in compliance with
7 * the License or as specified alternatively below. You may obtain a copy of
8 * the License at http://www.mozilla.org/MPL/
9 *
10 * Software distributed under the License is distributed on an "AS IS" basis,
11 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12 * for the specific language governing rights and limitations under the
13 * License.
14 *
15 * Major Contributor(s):
16 * Copyright (C) 2002 William Lachance (wrlach@gmail.com)
17 * Copyright (C) 2002,2004 Marc Maurer (uwog@uwog.net)
18 * Copyright (C) 2004-2006 Fridrich Strba (fridrich.strba@bluewin.ch)
19 * Copyright (C) 2006, 2007 Andrew Ziem
20 * Copyright (C) 2011, 2012 Alonso Laurent (alonso@loria.fr)
21 *
22 *
23 * All Rights Reserved.
24 *
25 * For minor contributions see the git repository.
26 *
27 * Alternatively, the contents of this file may be used under the terms of
28 * the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"),
29 * in which case the provisions of the LGPLv2+ are applicable
30 * instead of those above.
31 */
32 
33 /*
34  * parser for WriteNow 3.0 and 4.0
35  *
36  * Note: WriteNow 2.0 seems very different
37  */
38 #ifndef WN_PARSER
39 # define WN_PARSER
40 
41 #include <list>
42 #include <string>
43 #include <vector>
44 
45 #include "MWAWPageSpan.hxx"
46 
47 #include "MWAWPosition.hxx"
48 
49 #include "MWAWEntry.hxx"
50 #include "MWAWSubDocument.hxx"
51 
52 #include "MWAWDebug.hxx"
53 #include "MWAWInputStream.hxx"
54 
55 #include "MWAWParser.hxx"
56 
57 namespace WNParserInternal
58 {
59 struct State;
60 class SubDocument;
61 }
62 
63 struct WNEntry;
64 struct WNEntryManager;
65 
66 class WNText;
67 
73 class WNParser : public MWAWParser
74 {
75  friend class WNText;
77 
78 public:
80  WNParser(MWAWInputStreamPtr input, MWAWRSRCParserPtr rsrcParser, MWAWHeader *header);
82  virtual ~WNParser();
83 
85  bool checkHeader(MWAWHeader *header, bool strict=false);
86 
87  // the main parse function
88  void parse(WPXDocumentInterface *documentInterface);
89 
90 protected:
92  void init();
93 
95  void createDocument(WPXDocumentInterface *documentInterface);
96 
98  bool createZones();
99 
101  float pageHeight() const;
103  float pageWidth() const;
104 
106  void getColumnInfo(int &numColumns, int &width) const;
107 
109  void newPage(int number);
110 
111  /*
112  * interface with WNText
113  */
115  bool getColor(int colId, MWAWColor &col) const;
116 
118  void sendFootnote(WNEntry const &entry);
119 
121  bool sendGraphic(int gId, Box2i const &bdbox);
122 
123  /*
124  * interface with subdocument
125  */
126 
128  void send(WNEntry const &entry);
129 
130  //
131  // low level
132  //
133 
135  bool readDocEntries();
136 
138  bool readDocEntriesV2();
139 
143  bool parseGraphicZone(WNEntry const &entry);
144 
146  bool readColorMap(WNEntry const &entry);
147 
149  bool readPrintInfo(WNEntry const &entry);
150 
152  bool readGenericUnkn(WNEntry const &entry);
153 
155  bool sendPicture(WNEntry const &entry, Box2i const &bdbox);
156 
158  WNEntry readEntry();
159 
161  bool checkIfPositionValid(long pos);
162 
163 protected:
164  //
165  // data
166  //
168  shared_ptr<WNParserInternal::State> m_state;
169 
171  shared_ptr<WNEntryManager> m_entryManager;
172 
175 
177  shared_ptr<WNText> m_textParser;
178 };
179 #endif
180 // vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab:

Generated on Sat May 4 2013 11:47:12 for libmwaw by doxygen 1.8.3.1