LightWayTxtParser.hxx Source File documentation

LightWayTxtParser.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 LIGHT_WAY_TXT_PARSER
35 # define LIGHT_WAY_TXT_PARSER
36
37 #include <string>
38 #include <vector>
39
40 #include <librevenge/librevenge.h>
41
42 #include "MWAWDebug.hxx"
43 #include "MWAWInputStream.hxx"
44
45 #include "MWAWParser.hxx"
46
47 namespace LightWayTxtParserInternal
48 {
49 class SubDocument;
50 struct State;
51 }
52
53 class LightWayTxtGraph;
54 class LightWayTxtText;
55
58 class LightWayTxtParser final : public MWAWTextParser
59 {
60 friend class LightWayTxtParserInternal::SubDocument;
61 friend class LightWayTxtGraph;
62 friend class LightWayTxtText;
63 public:
65 LightWayTxtParser(MWAWInputStreamPtr const &input, MWAWRSRCParserPtr const &rsrcParser, MWAWHeader *header);
67 ~LightWayTxtParser() final;
68
70 bool checkHeader(MWAWHeader *header, bool strict=false) final;
71
72 // the main parse function
73 void parse(librevenge::RVNGTextInterface *documentInterface) final;
74
75 protected:
77 void init();
78
80 void createDocument(librevenge::RVNGTextInterface *documentInterface);
81
83 MWAWVec2f getPageLeftTop() const;
85 bool getColumnInfo(int &numCols, int &colSep) const;
87 void newPage(int number);
89 bool textInDataFork() const;
90
91 // interface with the graph parser
92
94 void sendGraphic(int graphId);
95
96 // interface with the text parser
97
99 bool sendHeaderFooter(bool header);
100
101 protected:
103 bool createZones();
104
106 bool readPrintInfo(MWAWEntry const &entry);
108 bool readDocInfo(MWAWEntry const &entry);
110 bool readDocument(MWAWEntry const &entry);
112 bool readLWSR2(MWAWEntry const &entry);
114 bool readMPSR5(MWAWEntry const &entry);
116 bool readTOCPage(MWAWEntry const &entry);
118 bool readTOC(MWAWEntry const &entry);
119
121 MWAWInputStreamPtr rsrcInput();
122
124 libmwaw::DebugFile &rsrcAscii();
125
126 //
127 // data
128 //
130 std::shared_ptr<LightWayTxtParserInternal::State> m_state;
131
133 bool m_pageSpanSet;
134
136 std::shared_ptr<LightWayTxtGraph> m_graphParser;
137
139 std::shared_ptr<LightWayTxtText> m_textParser;
140 };
141 #endif
142 // vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab:
MWAWTextListenerPtr
std::shared_ptr< MWAWTextListener > MWAWTextListenerPtr
a smart pointer of MWAWTextListener
Definition: libmwaw_internal.hxx:567
MWAWEntry
basic class to store an entry in a file This contained :
Definition: MWAWEntry.hxx:46
LightWayTxtParser::readMPSR5
bool readMPSR5(MWAWEntry const &entry)
read a MPSR block (1005)
Definition: LightWayTxtParser.cxx:723
MWAWInputStreamPtr
std::shared_ptr< MWAWInputStream > MWAWInputStreamPtr
a smart pointer of MWAWInputStream
Definition: libmwaw_internal.hxx:551
MWAWTextParser
virtual class which defines the ancestor of all text zone parser
Definition: MWAWParser.hxx:298
LightWayTxtParser::sendHeaderFooter
bool sendHeaderFooter(bool header)
try to send the header/footer
Definition: LightWayTxtParser.cxx:202
LightWayTxtParserInternal::State::m_numPages
int m_numPages
the number of page of the final document
Definition: LightWayTxtParser.cxx:75
LightWayTxtParser::m_graphParser
std::shared_ptr< LightWayTxtGraph > m_graphParser
the graph parser
Definition: LightWayTxtParser.hxx:136
LightWayTxtParser::checkHeader
bool checkHeader(MWAWHeader *header, bool strict=false) final
checks if the document header is correct (or not)
Definition: LightWayTxtParser.cxx:797
MWAWPageSpan::setPageSpan
void setPageSpan(const int pageSpan)
set the page span ( default 1)
Definition: MWAWPageSpan.hxx:268
MWAWHeaderFooter::HEADER
@ HEADER
Definition: MWAWPageSpan.hxx:48
MWAW_DEBUG_MSG
#define MWAW_DEBUG_MSG(M)
Definition: libmwaw_internal.hxx:129
MWAWVec2f
MWAWVec2< float > MWAWVec2f
MWAWVec2 of float.
Definition: libmwaw_internal.hxx:842
LightWayTxtParser::readTOC
bool readTOC(MWAWEntry const &entry)
read a TOC data block
Definition: LightWayTxtParser.cxx:561
LightWayTxtParser
the main class to read a LightWay Text file
Definition: LightWayTxtParser.hxx:58
MWAWTextListener
This class contents the main functions needed to create a Word processing Document.
Definition: MWAWTextListener.hxx:64
libmwaw::DebugFile::open
bool open(std::string const &filename)
opens/creates a file to store a result
Definition: MWAWDebug.cxx:46
LightWayTxtParser::getPageLeftTop
MWAWVec2f getPageLeftTop() const
returns the page left top point ( in inches)
Definition: LightWayTxtParser.cxx:181
LightWayTxtParser::rsrcAscii
libmwaw::DebugFile & rsrcAscii()
a DebugFile used to write what we recognize when we parse the document in rsrc
Definition: LightWayTxtParser.cxx:168
MWAWEntry::id
int id() const
returns the id
Definition: MWAWEntry.hxx:164
MWAWPageSpan::setMarginBottom
void setMarginBottom(const double marginBottom)
set the page bottom margin
Definition: MWAWPageSpan.hxx:208
MWAWFontConverter.hxx
LightWayTxtParserInternal::State::m_headerHeight
int m_headerHeight
the header height if known
Definition: LightWayTxtParser.cxx:79
LightWayTxtParser::readPrintInfo
bool readPrintInfo(MWAWEntry const &entry)
read a PrintInfo block
Definition: LightWayTxtParser.cxx:456
MWAWPrinter.hxx
LightWayTxtParser::m_textParser
std::shared_ptr< LightWayTxtText > m_textParser
the text parser
Definition: LightWayTxtParser.hxx:139
MWAWPageSpan::setMarginLeft
void setMarginLeft(const double marginLeft)
set the page left margin
Definition: MWAWPageSpan.hxx:193
MWAWHeaderFooter::m_subDocument
MWAWSubDocumentPtr m_subDocument
the document data
Definition: MWAWPageSpan.hxx:92
libmwaw::PrinterInfo
the AppleŠ printer information : TPrint
Definition: MWAWPrinter.hxx:82
MWAWDocument::MWAW_T_LIGHTWAYTEXT
@ MWAW_T_LIGHTWAYTEXT
LightWayText (only v4 Mac format)
Definition: MWAWDocument.hxx:121
MWAWEntry::setParsed
void setParsed(bool ok=true) const
sets the flag m_parsed to true or false
Definition: MWAWEntry.hxx:126
MWAWParser::getTextListener
MWAWTextListenerPtr & getTextListener()
returns the text listener
Definition: MWAWParser.hxx:145
libmwaw::DebugFile::addNote
void addNote(char const *note)
adds a note in the file, in actual position
Definition: MWAWDebug.cxx:59
MWAWSubDocument
abstract class used to store a subdocument (with a comparison function)
Definition: MWAWSubDocument.hxx:41
MWAWParser::ascii
libmwaw::DebugFile & ascii()
a DebugFile used to write what we recognize when we parse the document
Definition: MWAWParser.hxx:195
MWAWHeaderFooter
a class which stores the header/footer data
Definition: MWAWPageSpan.hxx:44
MWAWSubDocument.hxx
MWAWPageSpan::setFormLength
void setFormLength(const double formLength)
set the total page length
Definition: MWAWPageSpan.hxx:178
LightWayTxtParser::sendGraphic
void sendGraphic(int graphId)
ask the graph parser to send a graph
Definition: LightWayTxtParser.cxx:217
LightWayTxtParser::LightWayTxtParser
LightWayTxtParser(MWAWInputStreamPtr const &input, MWAWRSRCParserPtr const &rsrcParser, MWAWHeader *header)
constructor
Definition: LightWayTxtParser.cxx:135
libmwaw::SubDocumentType
SubDocumentType
Definition: libmwaw_internal.hxx:188
libmwaw::DebugFile::reset
void reset()
writes the current file and reset to zero
Definition: MWAWDebug.hxx:93
LightWayTxtParserInternal::SubDocument::m_isHeader
int m_isHeader
true if we need to send the parser
Definition: LightWayTxtParser.cxx:112
LightWayTxtParser::LightWayTxtGraph
friend class LightWayTxtGraph
Definition: LightWayTxtParser.hxx:61
MWAWParser::setTextListener
void setTextListener(MWAWTextListenerPtr &listener)
sets the text listener
Definition: MWAWParser.cxx:158
LightWayTxtParser::readLWSR2
bool readLWSR2(MWAWEntry const &entry)
read a LWSR block (1002)
Definition: LightWayTxtParser.cxx:697
MWAWParser::setAsciiName
void setAsciiName(char const *name)
Debugging: change the default ascii file.
Definition: MWAWParser.hxx:227
LightWayTxtParser::getColumnInfo
bool getColumnInfo(int &numCols, int &colSep) const
returns the number of column and the column separator (in point)
Definition: LightWayTxtParser.cxx:190
MWAWRSRCParser.hxx
LightWayTxtParser::m_pageSpanSet
bool m_pageSpanSet
a flag to know if page span has been set
Definition: LightWayTxtParser.hxx:133
MWAWVec2::y
T y() const
second element
Definition: libmwaw_internal.hxx:673
MWAWParser::getRSRCParser
MWAWRSRCParserPtr & getRSRCParser()
returns the rsrc parser
Definition: MWAWParser.hxx:190
MWAWParser::getPageSpan
const MWAWPageSpan & getPageSpan() const
returns the actual page dimension
Definition: MWAWParser.hxx:160
LightWayTxtText.hxx
MWAWPageSpan::setFormWidth
void setFormWidth(const double formWidth)
set the total page width
Definition: MWAWPageSpan.hxx:183
MWAWPosition.hxx
MWAWVec2::x
T x() const
first element
Definition: libmwaw_internal.hxx:668
LightWayTxtGraph.hxx
LightWayTxtParserInternal::SubDocument::operator!=
bool operator!=(MWAWSubDocument const &doc) const final
operator!=
Definition: LightWayTxtParser.cxx:98
LightWayTxtParserInternal::State::State
State()
constructor
Definition: LightWayTxtParser.cxx:62
MWAWParser::asciiName
const std::string & asciiName() const
return the ascii file name
Definition: MWAWParser.hxx:232
MWAWRSRCParserPtr
std::shared_ptr< MWAWRSRCParser > MWAWRSRCParserPtr
a smart pointer of MWAWRSRCParser
Definition: libmwaw_internal.hxx:561
MWAWEntry::length
long length() const
returns the length of the zone
Definition: MWAWEntry.hxx:93
MWAWListener::PageBreak
@ PageBreak
Definition: MWAWListener.hxx:58
libmwaw::DebugFile::setStream
void setStream(MWAWInputStreamPtr const &ip)
resets the input
Definition: MWAWDebug.hxx:81
MWAWVec2< float >
LightWayTxtParser::m_state
std::shared_ptr< LightWayTxtParserInternal::State > m_state
the state
Definition: LightWayTxtParser.hxx:130
libmwaw::ParseException
Definition: libmwaw_internal.hxx:143
MWAWDebug.hxx
MWAWHeader
a function used by MWAWDocument to store the version of document
Definition: MWAWHeader.hxx:56
MWAWEntry::begin
long begin() const
returns the begin offset
Definition: MWAWEntry.hxx:83
LightWayTxtParser::init
void init()
inits all internal variables
Definition: LightWayTxtParser.cxx:149
LightWayTxtParser::readDocInfo
bool readDocInfo(MWAWEntry const &entry)
read a DocInfo block
Definition: LightWayTxtParser.cxx:385
LightWayTxtParser.hxx
LightWayTxtParser::newPage
void newPage(int number)
adds a new page
Definition: LightWayTxtParser.cxx:231
LightWayTxtParserInternal::State
Internal: the state of a LightWayTxtParser.
Definition: LightWayTxtParser.cxx:60
MWAWPageSpan::setMarginTop
void setMarginTop(const double marginTop)
set the page top margin
Definition: MWAWPageSpan.hxx:203
libmwaw::PrinterInfo::read
bool read(MWAWInputStreamPtr input)
reads the struture in a file
Definition: MWAWPrinter.cxx:235
MWAWHeaderFooter::FOOTER
@ FOOTER
Definition: MWAWPageSpan.hxx:48
LightWayTxtGraph
the main class to read the graphic part of a LightWay Text file
Definition: LightWayTxtGraph.hxx:63
LightWayTxtParserInternal::State::m_actPage
int m_actPage
the actual page
Definition: LightWayTxtParser.cxx:75
LightWayTxtParser::parse
void parse(librevenge::RVNGTextInterface *documentInterface) final
virtual function used to parse the input
Definition: LightWayTxtParser.cxx:247
LightWayTxtParser::readTOCPage
bool readTOCPage(MWAWEntry const &entry)
read a TOC page block
Definition: LightWayTxtParser.cxx:519
MWAWParser::getParserState
MWAWParserStatePtr getParserState()
returns the parser state
Definition: MWAWParser.hxx:113
LightWayTxtParserInternal::State::m_colSep
int m_colSep
the columns separator width in point
Definition: LightWayTxtParser.cxx:78
MWAWHeader.hxx
MWAWEntry::end
long end() const
returns the end offset
Definition: MWAWEntry.hxx:88
MWAWHeaderFooter::ALL
@ ALL
Definition: MWAWPageSpan.hxx:50
LightWayTxtParserInternal::State::m_footerHeight
int m_footerHeight
the footer height if known
Definition: LightWayTxtParser.cxx:80
LightWayTxtParser::createDocument
void createDocument(librevenge::RVNGTextInterface *documentInterface)
creates the listener which will be associated to the document
Definition: LightWayTxtParser.cxx:280
LightWayTxtParser::~LightWayTxtParser
~LightWayTxtParser() final
destructor
Definition: LightWayTxtParser.cxx:145
MWAWParser::getInput
MWAWInputStreamPtr & getInput()
returns the actual input
Definition: MWAWParser.hxx:123
MWAWTextListener.hxx
LightWayTxtParserInternal::SubDocument
Internal: the subdocument of a LightWayTxtParser.
Definition: LightWayTxtParser.cxx:85
MWAWSubDocument::m_parser
MWAWParser * m_parser
the main zone parser
Definition: MWAWSubDocument.hxx:75
LightWayTxtText
the main class to read the text part of LightWay Text file
Definition: LightWayTxtText.hxx:57
libmwaw::DebugFile::addPos
void addPos(long pos)
adds a new position in the file
Definition: MWAWDebug.cxx:53
LightWayTxtParser::LightWayTxtText
friend class LightWayTxtText
Definition: LightWayTxtParser.hxx:62
MWAWPageSpan::setMarginRight
void setMarginRight(const double marginRight)
set the page right margin
Definition: MWAWPageSpan.hxx:198
MWAWEntry::valid
bool valid() const
returns true if the zone length is positive
Definition: MWAWEntry.hxx:99
MWAWPageSpan::setHeaderFooter
void setHeaderFooter(MWAWHeaderFooter const &headerFooter)
add a header/footer on some page
Definition: MWAWPageSpan.cxx:227
LightWayTxtParserInternal::State::m_isApplication
bool m_isApplication
true if we are parsing a application document
Definition: LightWayTxtParser.cxx:74
LightWayTxtParserInternal::SubDocument::~SubDocument
~SubDocument() final
destructor
Definition: LightWayTxtParser.cxx:95
LightWayTxtParser::createZones
bool createZones()
finds the different objects zones
Definition: LightWayTxtParser.cxx:323
libmwaw::DebugFile
an interface used to insert comment in a binary file, written in ascii form (if debug_with_files is n...
Definition: MWAWDebug.hxx:65
LightWayTxtParser::textInDataFork
bool textInDataFork() const
returns true if the main text is in data fork
Definition: LightWayTxtParser.cxx:173
libmwaw
namespace used to regroup all libwpd functions, enumerations which we have redefined for internal usa...
Definition: libmwaw_internal.cxx:50
LightWayTxtParserInternal::State::m_numCol
int m_numCol
the number of columns
Definition: LightWayTxtParser.cxx:77
MWAWInputStream.hxx
MWAWHeader::reset
void reset(MWAWDocument::Type type, int vers, Kind kind=MWAWDocument::MWAW_K_TEXT)
resets the data
Definition: MWAWHeader.hxx:84
MWAWListenerPtr
std::shared_ptr< MWAWListener > MWAWListenerPtr
a smart pointer of MWAWListener
Definition: libmwaw_internal.hxx:553
LightWayTxtParserInternal::SubDocument::parse
void parse(MWAWListenerPtr &listener, libmwaw::SubDocumentType type) final
the parser function
Definition: LightWayTxtParser.cxx:115
librevenge
Definition: MWAWDocument.hxx:56
MWAWPageSpan::setMargins
void setMargins(double margin, int wh=libmwaw::LeftBit|libmwaw::RightBit|libmwaw::TopBit|libmwaw::BottomBit)
set all the margins
Definition: MWAWPageSpan.hxx:213
LightWayTxtParserInternal::SubDocument::SubDocument
SubDocument(LightWayTxtParser &pars, MWAWInputStreamPtr const &input, bool header)
Definition: LightWayTxtParser.cxx:88
LightWayTxtParser::rsrcInput
MWAWInputStreamPtr rsrcInput()
return the input input
Definition: LightWayTxtParser.cxx:163
MWAWVec2i
MWAWVec2< int > MWAWVec2i
MWAWVec2 of int.
Definition: libmwaw_internal.hxx:838
libmwaw::DebugStream
std::stringstream DebugStream
a basic stream (if debug_with_files is not defined, does nothing)
Definition: MWAWDebug.hxx:61
MWAWParser.hxx
LightWayTxtParserInternal
Internal: the structures of a LightWayTxtParser.
Definition: LightWayTxtParser.cxx:56
MWAWPageSpan
A class which defines the page properties.
Definition: MWAWPageSpan.hxx:98
MWAWParser::resetTextListener
void resetTextListener()
resets the listener
Definition: MWAWParser.cxx:163
LightWayTxtParser::readDocument
bool readDocument(MWAWEntry const &entry)
read a Document, Header/Footer block (1000)
Definition: LightWayTxtParser.cxx:629