- Main Page
- Namespaces
- Classes
- Files

- File List
- File Members

MsWrdParser.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 /*
35 * parser for Microsoft Word ( version 3.0-5.1 )
36 */
37 #ifndef MS_WRD_MWAW_PARSER
38 # define MS_WRD_MWAW_PARSER
39
40 #include <list>
41 #include <map>
42 #include <string>
43 #include <vector>
44
45 #include "MWAWDebug.hxx"
46 #include "MWAWEntry.hxx"
47 #include "MWAWInputStream.hxx"
48 #include "MWAWPosition.hxx"
49
50 #include "MWAWParser.hxx"
51
52 namespace MsWrdParserInternal
53 {
54 struct Object;
55 struct State;
56 class SubDocument;
57 }
58
59 class MsWrdText;
60 class MsWrdTextStyles;
61
63 struct MsWrdEntry : public MWAWEntry {
64 MsWrdEntry() : MWAWEntry(), m_pictType(-1)
65 {
66 }
71 int pictType() const
72 {
73 return m_pictType;
74 }
76 void setPictType(int newId)
77 {
78 m_pictType = newId;
79 }
81 friend std::ostream &operator<<(std::ostream &o, MsWrdEntry const &entry);
83 int m_pictType;
84 };
85
91 class MsWrdParser : public MWAWTextParser
92 {
93 friend class MsWrdText;
94 friend class MsWrdTextStyles;
95 friend class MsWrdParserInternal::SubDocument;
96
97 public:
99 MsWrdParser(MWAWInputStreamPtr input, MWAWRSRCParserPtr rsrcParser, MWAWHeader *header);
101 virtual ~MsWrdParser();
102
104 bool checkHeader(MWAWHeader *header, bool strict=false);
105
107 void parse(librevenge::RVNGTextInterface *documentInterface);
108
109 protected:
111 void init();
112
114 void createDocument(librevenge::RVNGTextInterface *documentInterface);
115
117 bool createZones();
118
120 bool readHeaderEndV3();
121
123 bool readZoneList();
124
126 bool readPrintInfo(MsWrdEntry &entry);
127
129 bool readPrinter(MsWrdEntry &entry);
130
132 bool readDocSum(MsWrdEntry &entry);
133
135 bool readStringsZone(MsWrdEntry &entry, std::vector<std::string> &list);
136
138 bool readObjects();
139
141 bool readObjectList(MsWrdEntry &entry);
142
144 bool readObjectFlags(MsWrdEntry &entry);
145
147 bool readObject(MsWrdParserInternal::Object &obj);
148
150 bool readDocumentInfo(MsWrdEntry &entry);
151
153 bool readZone17(MsWrdEntry &entry);
154
156 bool checkPicturePos(long pos, int type);
157
159 bool readPicture(MsWrdEntry &entry);
161 void sendPicture(long fPos, int cPos, MWAWPosition::AnchorTo anchor=MWAWPosition::Char);
162
164 bool getColor(int id, MWAWColor &col) const;
165
167 void newPage(int number);
168
169 /*
170 * interface with subdocument
171 */
173 void sendFootnote(int id);
174
176 void sendFieldComment(int id);
177
179 void send(int id, libmwaw::SubDocumentType type);
181 void send(MWAWEntry const &entry);
182
183 //
184 // low level
185 //
186
188 MsWrdEntry readEntry(std::string type, int id=-1);
189
190 protected:
191 //
192 // data
193 //
195 shared_ptr<MsWrdParserInternal::State> m_state;
196
198 std::multimap<std::string, MsWrdEntry> m_entryMap;
199
201 shared_ptr<MsWrdText> m_textParser;
202 };
203 #endif
204 // vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab:
MsWrdParser::readHeaderEndV3
bool readHeaderEndV3()
finish reading the header (v3)
Definition: MsWrdParser.cxx:824
MsWrdParser::~MsWrdParser
virtual ~MsWrdParser()
destructor
Definition: MsWrdParser.cxx:303
MWAWHeader
a function used by MWAWDocument to store the version of document
Definition: MWAWHeader.hxx:56
MsWrdParser::readPicture
bool readPicture(MsWrdEntry &entry)
read a picture data
Definition: MsWrdParser.cxx:1706
MWAWParser.hxx
MWAWPosition::Char
Definition: MWAWPosition.hxx:51
MWAWEntry.hxx
MsWrdParser::createDocument
void createDocument(librevenge::RVNGTextInterface *documentInterface)
creates the listener which will be associated to the document
Definition: MsWrdParser.cxx:441
MsWrdParser::readZone17
bool readZone17(MsWrdEntry &entry)
read the zone 17( some bdbox + text position ?)
Definition: MsWrdParser.cxx:1078
MsWrdEntry
the entry of MsWrdParser
Definition: MsWrdParser.hxx:63
libmwaw::SubDocumentType
SubDocumentType
Definition: libmwaw_internal.hxx:173
MsWrdEntry::setPictType
void setPictType(int newId)
sets the picture id
Definition: MsWrdParser.hxx:76
MsWrdParser::readDocSum
bool readDocSum(MsWrdEntry &entry)
read the document sumary
Definition: MsWrdParser.cxx:1202
MsWrdParser::sendFootnote
void sendFootnote(int id)
try to send a footnote id
Definition: MsWrdParser.cxx:370
MsWrdParser::parse
void parse(librevenge::RVNGTextInterface *documentInterface)
the main parse function
Definition: MsWrdParser.cxx:406
MsWrdParser::checkHeader
bool checkHeader(MWAWHeader *header, bool strict=false)
checks if the document header is correct (or not)
Definition: MsWrdParser.cxx:683
MWAWColor
the class to store a color
Definition: libmwaw_internal.hxx:177
MsWrdParser::readObjectFlags
bool readObjectFlags(MsWrdEntry &entry)
read the object flags
Definition: MsWrdParser.cxx:1437
MsWrdParser::readZoneList
bool readZoneList()
read the list of zones
Definition: MsWrdParser.cxx:553
MWAWRSRCParserPtr
shared_ptr< MWAWRSRCParser > MWAWRSRCParserPtr
a smart pointer of MWAWRSRCParser
Definition: libmwaw_internal.hxx:449
MWAWPosition::AnchorTo
AnchorTo
a list of enum used to defined the anchor
Definition: MWAWPosition.hxx:51
MsWrdParser::MsWrdParser
MsWrdParser(MWAWInputStreamPtr input, MWAWRSRCParserPtr rsrcParser, MWAWHeader *header)
constructor
Definition: MsWrdParser.cxx:297
MsWrdParser::readEntry
MsWrdEntry readEntry(std::string type, int id=-1)
read a file entry
Definition: MsWrdParser.cxx:966
MWAWTextParser
virtual class which defines the ancestor of all text zone parser
Definition: MWAWParser.hxx:284
MsWrdParser::send
void send(int id, libmwaw::SubDocumentType type)
try to send a footnote, a field to the textParser
Definition: MsWrdParser.cxx:392
MsWrdParser
the main class to read a Microsoft Word file
Definition: MsWrdParser.hxx:91
MWAWInputStreamPtr
shared_ptr< MWAWInputStream > MWAWInputStreamPtr
a smart pointer of MWAWInputStream
Definition: libmwaw_internal.hxx:439
MsWrdParser::readPrinter
bool readPrinter(MsWrdEntry &entry)
read the printer name
Definition: MsWrdParser.cxx:1155
MWAWInputStream.hxx
MWAWDebug.hxx
MsWrdParser::readObjects
bool readObjects()
read the objects
Definition: MsWrdParser.cxx:1314
MsWrdParserInternal::SubDocument
Internal: the subdocument of a MsWrdParser.
Definition: MsWrdParser.cxx:208
MsWrdParserInternal::Object
Internal: the object of MsWrdParser.
Definition: MsWrdParser.cxx:61
MsWrdParser::getColor
bool getColor(int id, MWAWColor &col) const
returns the color corresponding to an id
Definition: MsWrdParser.cxx:336
MsWrdText
the main class to read the text part of Microsoft Word file
Definition: MsWrdText.hxx:64
MsWrdEntry::m_pictType
int m_pictType
the picture identificator
Definition: MsWrdParser.hxx:83
MsWrdParser::checkPicturePos
bool checkPicturePos(long pos, int type)
check if a position corresponds or not to a picture entry
Definition: MsWrdParser.cxx:1671
MsWrdEntry::pictType
int pictType() const
returns the text id
Definition: MsWrdParser.hxx:71
MsWrdParser::m_textParser
shared_ptr< MsWrdText > m_textParser
the text parser
Definition: MsWrdParser.hxx:201
MsWrdTextStyles
the main class to read/store the text font, paragraph, section stylesread
Definition: MsWrdTextStyles.hxx:66
MsWrdParserInternal
Internal: the structures of a MsWrdParser.
Definition: MsWrdParser.cxx:57
MWAWPosition.hxx
MsWrdParser::readPrintInfo
bool readPrintInfo(MsWrdEntry &entry)
read the print info zone
Definition: MsWrdParser.cxx:1847
MsWrdParser::createZones
bool createZones()
finds the different zones
Definition: MsWrdParser.cxx:491
MsWrdParser::m_state
shared_ptr< MsWrdParserInternal::State > m_state
the state
Definition: MsWrdParser.hxx:195
MWAWEntry
basic class to store an entry in a file This contained :
Definition: MWAWEntry.hxx:46
MsWrdParser::readObject
bool readObject(MsWrdParserInternal::Object &obj)
read an object
Definition: MsWrdParser.cxx:1494
MsWrdParser::sendPicture
void sendPicture(long fPos, int cPos, MWAWPosition::AnchorTo anchor=MWAWPosition::Char)
send a picture
Definition: MsWrdParser.cxx:1785
MsWrdParser::init
void init()
inits all internal variables
Definition: MsWrdParser.cxx:307
MsWrdParser::newPage
void newPage(int number)
adds a new page
Definition: MsWrdParser.cxx:323
MsWrdEntry::operator<<
friend std::ostream & operator<<(std::ostream &o, MsWrdEntry const &entry)
operator<<
Definition: MsWrdParser.cxx:284
MsWrdParser::readDocumentInfo
bool readDocumentInfo(MsWrdEntry &entry)
read the page dimensions + ?
Definition: MsWrdParser.cxx:1007
MsWrdParser::readObjectList
bool readObjectList(MsWrdEntry &entry)
read the object list
Definition: MsWrdParser.cxx:1364
MsWrdEntry::MsWrdEntry
MsWrdEntry()
Definition: MsWrdParser.hxx:64
MsWrdParser::sendFieldComment
void sendFieldComment(int id)
try to send a bookmark field id
Definition: MsWrdParser.cxx:379
MsWrdParser::readStringsZone
bool readStringsZone(MsWrdEntry &entry, std::vector< std::string > &list)
read a zone which consists in a list of string
Definition: MsWrdParser.cxx:1257
MsWrdParser::m_entryMap
std::multimap< std::string, MsWrdEntry > m_entryMap
the list of entries
Definition: MsWrdParser.hxx:198