ZWrtText.hxx Source File documentation

ZWrtText.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 to ZWrite document
36 *
37 */
38 #ifndef Z_WRT_TEXT
39 # define Z_WRT_TEXT
40
41 #include "libmwaw_internal.hxx"
42 #include "MWAWDebug.hxx"
43
44 namespace ZWrtTextInternal
45 {
46 struct Section;
47 struct State;
48 class SubDocument;
49 }
50
51 class ZWrtParser;
52
58 class ZWrtText
59 {
60 friend class ZWrtParser;
61 friend class ZWrtTextInternal::SubDocument;
62 public:
64 explicit ZWrtText(ZWrtParser &parser);
66 virtual ~ZWrtText();
67
69 int version() const;
70
72 int numPages() const;
73
74 protected:
76 enum TextCode { None, Center, BookMark, NewPage, Tag, Link };
77
79 bool createZones();
80
82 bool sendMainText();
83
85 void flushExtra();
86
87 //
88 // intermediate level
89 //
90
92 void computePositions();
93
95 bool sendText(ZWrtTextInternal::Section const &zone, MWAWEntry const &entry);
97 bool sendText(int sectionId, MWAWEntry const &entry);
99 TextCode isTextCode(MWAWInputStreamPtr &input, long endPos, MWAWEntry &dPos) const;
100
102 bool readHFZone(MWAWEntry const &entry);
104 bool hasHeaderFooter(bool header) const;
106 bool sendHeaderFooter(bool header);
107
109 bool readStyles(MWAWEntry const &entry);
110
112 bool readSectionFonts(MWAWEntry const &entry);
113
114 private:
115 ZWrtText(ZWrtText const &orig) = delete;
116 ZWrtText &operator=(ZWrtText const &orig) = delete;
117
118 protected:
119 //
120 // data
121 //
123 MWAWParserStatePtr m_parserState;
124
126 std::shared_ptr<ZWrtTextInternal::State> m_state;
127
129 ZWrtParser *m_mainParser;
130 };
131 #endif
132 // 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:47
MWAWField::Time
@ Time
Definition: libmwaw_internal.hxx:401
MWAWParagraph::m_justify
MWAWVariable< Justification > m_justify
the justification
Definition: MWAWParagraph.hxx:167
MWAWInputStreamPtr
std::shared_ptr< MWAWInputStream > MWAWInputStreamPtr
a smart pointer of MWAWInputStream
Definition: libmwaw_internal.hxx:551
ZWrtText::BookMark
@ BookMark
Definition: ZWrtText.hxx:76
MWAWFontConverterPtr
std::shared_ptr< MWAWFontConverter > MWAWFontConverterPtr
a smart pointer of MWAWFontConverter
Definition: libmwaw_internal.hxx:543
ZWrtTextInternal
Internal: the structures of a ZWrtText.
Definition: ZWrtText.cxx:59
MWAW_DEBUG_MSG
#define MWAW_DEBUG_MSG(M)
Definition: libmwaw_internal.hxx:129
ZWField
a structure to store a field of a ZWrite file
Definition: ZWrtParser.hxx:56
ZWrtText::createZones
bool createZones()
finds the different text zones
Definition: ZWrtText.cxx:324
ZWField::getBool
bool getBool(MWAWInputStreamPtr &input, bool &val) const
returns the boolean corresponding to a field ( T or F )
Definition: ZWrtParser.cxx:968
ZWrtTextInternal::State::m_numPages
int m_numPages
Definition: ZWrtText.cxx:176
ZWField::m_pos
MWAWEntry m_pos
the field position in the rsrc data file
Definition: ZWrtParser.hxx:77
ZWrtTextInternal::SubDocument::SubDocument
SubDocument(ZWrtText &pars, MWAWInputStreamPtr const &input, int id, MWAWEntry const &entry, ZWrtText::TextCode type)
Definition: ZWrtText.cxx:191
MWAWFont::boldBit
@ boldBit
Definition: MWAWFont.hxx:190
ZWrtText::sendText
bool sendText(ZWrtTextInternal::Section const &zone, MWAWEntry const &entry)
try to send a section
Definition: ZWrtText.cxx:443
ZWrtTextInternal::HFZone::m_font
Font m_font
the font
Definition: ZWrtText.cxx:120
ZWrtTextInternal::SubDocument::m_type
ZWrtText::TextCode m_type
the type of document
Definition: ZWrtText.cxx:215
ZWrtTextInternal::State::m_header
HFZone m_header
the header zone
Definition: ZWrtText.cxx:181
MWAWFont::setColor
void setColor(MWAWColor color)
sets the font color
Definition: MWAWFont.hxx:341
ZWrtTextInternal::SubDocument::~SubDocument
~SubDocument() final
destructor
Definition: ZWrtText.cxx:201
MWAWEntry::id
int id() const
returns the id
Definition: MWAWEntry.hxx:164
MWAWFontConverter.hxx
ZWField::getString
bool getString(MWAWInputStreamPtr &input, std::string &str) const
returns the string corresponding to a field
Definition: ZWrtParser.cxx:932
MWAWColor
the class to store a color
Definition: libmwaw_internal.hxx:192
ZWrtText::flushExtra
void flushExtra()
sends the data which have not yet been sent to the listener
Definition: ZWrtText.cxx:943
ZWrtTextInternal::SubDocument::operator!=
bool operator!=(MWAWSubDocument const &doc) const final
operator!=
Definition: ZWrtText.cxx:223
ZWrtTextInternal::Font
Internal: struct used to store the font of a ZWrtText.
Definition: ZWrtText.cxx:62
ZWrtText::readStyles
bool readStyles(MWAWEntry const &entry)
read the styles
Definition: ZWrtText.cxx:653
MWAWSubDocumentPtr
std::shared_ptr< MWAWSubDocument > MWAWSubDocumentPtr
a smart pointer of MWAWSubDocument
Definition: libmwaw_internal.hxx:565
ZWrtText::m_parserState
MWAWParserStatePtr m_parserState
the parser state
Definition: ZWrtText.hxx:123
MWAWEntry::type
std::string const & type() const
returns the type of the entry
Definition: MWAWEntry.hxx:137
ZWrtText::~ZWrtText
virtual ~ZWrtText()
destructor
Definition: ZWrtText.cxx:266
ZWrtText::m_state
std::shared_ptr< ZWrtTextInternal::State > m_state
the state
Definition: ZWrtText.hxx:126
ZWrtTextInternal::Font::Font
Font()
constructor
Definition: ZWrtText.cxx:64
MWAWParagraph
class to store the paragraph properties
Definition: MWAWParagraph.hxx:85
ZWrtTextInternal::Section::m_id
int m_id
the section id
Definition: ZWrtText.cxx:138
ZWrtTextInternal::SubDocument::m_textParser
ZWrtText * m_textParser
the text parser
Definition: ZWrtText.cxx:211
ZWrtTextInternal::Section::m_idFontMap
std::map< long, Font > m_idFontMap
a map pos -> font
Definition: ZWrtText.cxx:144
MWAWFont::Line::Simple
@ Simple
Definition: MWAWFont.hxx:49
MWAW_FALLTHROUGH
#define MWAW_FALLTHROUGH
Definition: libmwaw_internal.hxx:118
ZWrtTextInternal::Section::Section
Section()
constructor
Definition: ZWrtText.cxx:129
ZWrtTextInternal::HFZone::getDebugString
std::string getDebugString(MWAWFontConverterPtr &convert) const
operator<<
Definition: ZWrtText.cxx:106
ZWrtParser
the main class to read a ZWrite file
Definition: ZWrtParser.hxx:83
MWAWEntry::setParsed
void setParsed(bool ok=true) const
sets the flag m_parsed to true or false
Definition: MWAWEntry.hxx:126
ZWrtTextInternal::State::m_version
int m_version
the file version
Definition: ZWrtText.cxx:175
ZWrtText::operator=
ZWrtText & operator=(ZWrtText const &orig)=delete
ZWrtTextInternal::SubDocument::operator=
SubDocument & operator=(SubDocument const &orig)=delete
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:42
ZWrtTextInternal::Section::m_parsed
bool m_parsed
true if the section is parsed
Definition: ZWrtText.cxx:146
ZWrtTextInternal::Section::m_name
std::string m_name
the section name
Definition: ZWrtText.cxx:142
MWAWField::PageCount
@ PageCount
Definition: libmwaw_internal.hxx:401
ZWrtText::Link
@ Link
Definition: ZWrtText.hxx:76
ZWrtText::numPages
int numPages() const
returns the number of pages
Definition: ZWrtText.cxx:277
MWAWField::Date
@ Date
Definition: libmwaw_internal.hxx:401
ZWrtText::TextCode
TextCode
the list of code in the text
Definition: ZWrtText.hxx:76
MWAWSubDocument.hxx
ZWrtText::sendMainText
bool sendMainText()
send a main zone
Definition: ZWrtText.cxx:567
ZWrtTextInternal::State::State
State()
constructor
Definition: ZWrtText.cxx:153
libmwaw::SubDocumentType
SubDocumentType
Definition: libmwaw_internal.hxx:188
MWAWSubDocument::m_input
std::shared_ptr< MWAWInputStream > m_input
the input
Definition: MWAWSubDocument.hxx:77
MWAWParagraph::JustificationCenter
@ JustificationCenter
Definition: MWAWParagraph.hxx:90
ZWField::getIntList
bool getIntList(MWAWInputStreamPtr &input, std::vector< int > &val) const
returns a list of int corresponding to a field
Definition: ZWrtParser.cxx:1032
MWAWParagraph.hxx
MWAWRSRCParser.hxx
MWAWParser::getRSRCParser
MWAWRSRCParserPtr & getRSRCParser()
returns the rsrc parser
Definition: MWAWParser.hxx:190
ZWrtTextInternal::Font::m_font
MWAWFont m_font
the font
Definition: ZWrtText.cxx:74
libmwaw_internal.hxx
MWAWPosition.hxx
MWAWEntry::setEnd
void setEnd(long off)
sets the end offset
Definition: MWAWEntry.hxx:77
ZWrtText::version
int version() const
returns the file version
Definition: ZWrtText.cxx:270
ZWField::getInt
bool getInt(MWAWInputStreamPtr &input, int &val) const
returns the int corresponding to a field
Definition: ZWrtParser.cxx:989
MWAWEntry::name
std::string const & name() const
name of the entry
Definition: MWAWEntry.hxx:153
MWAWEntry::setBegin
void setBegin(long off)
sets the begin offset
Definition: MWAWEntry.hxx:67
ZWrtParser::rsrcInput
MWAWInputStreamPtr rsrcInput()
return the input input
Definition: ZWrtParser.cxx:158
ZWField::getDebugString
bool getDebugString(MWAWInputStreamPtr &input, std::string &str) const
returns a debug string corresponding to a field ( replacing \n by ##[0d], ...)
Definition: ZWrtParser.cxx:950
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
ZWrtText
the main class to read the text part of ZWrite Text file
Definition: ZWrtText.hxx:59
ZWrtTextInternal::Section
Internal: struct used to store a section of a ZWrtText.
Definition: ZWrtText.cxx:127
ZWrtTextInternal::SubDocument::m_pos
MWAWEntry m_pos
the file pos
Definition: ZWrtText.cxx:217
ZWrtParser::newPage
void newPage(int number)
adds a new page
Definition: ZWrtParser.cxx:192
MWAWFont::size
float size() const
returns the font size
Definition: MWAWFont.hxx:270
MWAWDebug.hxx
MWAWFont::getDebugString
std::string getDebugString(std::shared_ptr< MWAWFontConverter > &converter) const
returns a string which can be used for debugging
Definition: MWAWFont.cxx:181
ZWrtParser.hxx
ZWrtTextInternal::SubDocument
Internal: the subdocument of a ZWrtText.
Definition: ZWrtText.cxx:189
MWAWEntry::begin
long begin() const
returns the begin offset
Definition: MWAWEntry.hxx:83
ZWrtText::ZWrtText
ZWrtText(ZWrtParser &parser)
constructor
Definition: ZWrtText.cxx:259
ZWrtTextInternal::SubDocument::m_id
int m_id
the section id
Definition: ZWrtText.cxx:213
ZWrtText::hasHeaderFooter
bool hasHeaderFooter(bool header) const
returns true if there is a header/footer
Definition: ZWrtText.cxx:285
ZWrtText::None
@ None
Definition: ZWrtText.hxx:76
MWAWFont::setId
void setId(int newId)
sets the font id
Definition: MWAWFont.hxx:264
ZWrtTextInternal::State::m_idSectionMap
std::map< int, Section > m_idSectionMap
a map id -> section
Definition: ZWrtText.cxx:179
MWAWField
a field
Definition: libmwaw_internal.hxx:399
MWAWField::PageNumber
@ PageNumber
Definition: libmwaw_internal.hxx:401
MWAWParagraph::JustificationLeft
@ JustificationLeft
Definition: MWAWParagraph.hxx:90
ZWrtText::ZWrtText
ZWrtText(ZWrtText const &orig)=delete
ZWrtText::isTextCode
TextCode isTextCode(MWAWInputStreamPtr &input, long endPos, MWAWEntry &dPos) const
check if a character after '<' corresponds to a text code
Definition: ZWrtText.cxx:383
MWAWEntry::end
long end() const
returns the end offset
Definition: MWAWEntry.hxx:88
MWAWFont::setSize
void setSize(float sz, bool isRelative=false)
sets the font size
Definition: MWAWFont.hxx:275
ZWrtText::Center
@ Center
Definition: ZWrtText.hxx:76
ZWrtParser::getFieldList
bool getFieldList(MWAWEntry const &entry, std::vector< ZWField > &list)
returns a list of field
Definition: ZWrtParser.cxx:905
ZWrtText::computePositions
void computePositions()
compute the positions
Definition: ZWrtText.cxx:291
ZWrtText::readSectionFonts
bool readSectionFonts(MWAWEntry const &entry)
read a section fonts
Definition: ZWrtText.cxx:583
ZWrtTextInternal::HFZone::ok
bool ok() const
returns true if the zone is not empty
Definition: ZWrtText.cxx:101
MWAWFont::italicBit
@ italicBit
Definition: MWAWFont.hxx:190
MWAWPageSpan.hxx
MWAWTextListener.hxx
Defines MWAWTextListener: the libmwaw word processor listener.
ZWrtTextInternal::Section::m_pos
MWAWEntry m_pos
the text position
Definition: ZWrtText.cxx:140
ZWrtTextInternal::HFZone::m_extra
std::string m_extra
extra data
Definition: ZWrtText.cxx:122
ZWrtText::NewPage
@ NewPage
Definition: ZWrtText.hxx:76
MWAWParserStatePtr
std::shared_ptr< MWAWParserState > MWAWParserStatePtr
a smart pointer of MWAWParserState
Definition: libmwaw_internal.hxx:557
libmwaw::DebugFile::addPos
void addPos(long pos)
adds a new position in the file
Definition: MWAWDebug.cxx:53
MWAWEntry::valid
bool valid() const
returns true if the zone length is positive
Definition: MWAWEntry.hxx:99
ZWrtTextInternal::SubDocument::parse
void parse(MWAWListenerPtr &listener, libmwaw::SubDocumentType type) final
the parser function
Definition: ZWrtText.cxx:235
ZWrtTextInternal::Font::m_extra
std::string m_extra
extra data
Definition: ZWrtText.cxx:78
ZWrtTextInternal::State::m_actualPage
int m_actualPage
Definition: ZWrtText.cxx:176
ZWrtTextInternal::operator<<
std::ostream & operator<<(std::ostream &o, Font const &font)
Definition: ZWrtText.cxx:81
ZWrtText::sendHeaderFooter
bool sendHeaderFooter(bool header)
try to send the header/footer
Definition: ZWrtText.cxx:750
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:66
ZWrtTextInternal::State::m_footer
HFZone m_footer
the footer zone
Definition: ZWrtText.cxx:183
ZWrtText.hxx
ZWrtTextInternal::Font::m_height
int m_height
the line height
Definition: ZWrtText.cxx:76
MWAWListenerPtr
std::shared_ptr< MWAWListener > MWAWListenerPtr
a smart pointer of MWAWListener
Definition: libmwaw_internal.hxx:553
ZWrtTextInternal::SubDocument::SubDocument
SubDocument(SubDocument const &orig)=delete
MWAWFont.hxx
ZWrtText::m_mainParser
ZWrtParser * m_mainParser
the main parser;
Definition: ZWrtText.hxx:129
ZWrtText::Tag
@ Tag
Definition: ZWrtText.hxx:76
ZWrtTextInternal::HFZone::HFZone
HFZone()
constructor
Definition: ZWrtText.cxx:93
ZWrtTextInternal::Font::operator<<
friend std::ostream & operator<<(std::ostream &o, Font const &font)
operator<<
Definition: ZWrtText.cxx:81
MWAWFont
Class to store font.
Definition: MWAWFont.hxx:44
libmwaw::DebugStream
std::stringstream DebugStream
a basic stream (if debug_with_files is not defined, does nothing)
Definition: MWAWDebug.hxx:61
MWAWFont::setUnderlineStyle
void setUnderlineStyle(Line::Style style=Line::None, bool doReset=true)
sets the underline style ( by default, we also reset the style)
Definition: MWAWFont.hxx:466
ZWrtTextInternal::State::getSection
Section & getSection(int id)
return a section for an id ( if it does not exists, create id )
Definition: ZWrtText.cxx:163
ZWrtTextInternal::HFZone::m_pos
MWAWEntry m_pos
the text position
Definition: ZWrtText.cxx:118
ZWrtTextInternal::State
Internal: the state of a ZWrtText.
Definition: ZWrtText.cxx:151
MWAWFont::setFlags
void setFlags(uint32_t fl)
sets the font attributes bold, ...
Definition: MWAWFont.hxx:325
ZWrtTextInternal::HFZone
Internal: struct used to store a header/footer of a ZWrtText.
Definition: ZWrtText.cxx:91
ZWrtParser::rsrcAscii
libmwaw::DebugFile & rsrcAscii()
a DebugFile used to write what we recognize when we parse the document in rsrc
Definition: ZWrtParser.cxx:163
ZWrtText::readHFZone
bool readHFZone(MWAWEntry const &entry)
read the header/footer zone
Definition: ZWrtText.cxx:815