MsWks3Text.hxx Source File documentation

MsWks3Text.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 Microsoft Works text document
36 *
37 */
38 #ifndef MS_WKS3_TEXT
39 # define MS_WKS3_TEXT
40
41 #include <list>
42 #include <string>
43 #include <vector>
44
45 #include "libmwaw_internal.hxx"
46
47 #include "MWAWEntry.hxx"
48
49 namespace MsWks3TextInternal
50 {
51 struct Font;
52 struct LineZone;
53 struct TextZone;
54 struct State;
55
56 class SubDocument;
57 }
58
59 class MsWksDocument;
60 class MsWksParser;
61 class MsWksDRParser;
62 class MsWksSSParser;
63
69 class MsWks3Text
70 {
71 friend class MsWksDocument;
72 friend class MsWksParser;
73 friend class MsWksDRParser;
74 friend class MsWksSSParser;
75
76 friend class MsWks3TextInternal::SubDocument;
77 public:
79 explicit MsWks3Text(MsWksDocument &zone);
81 virtual ~MsWks3Text();
82
84 int version() const;
85
87 int numPages(int zoneId) const;
88
89 protected:
91 int createZones(int numLines=-1, bool mainZone=false);
92
94 std::string readHeaderFooterString(bool header);
95
97 void flushExtra();
98
100 void sendZone(int zoneId);
101
103 void sendNote(int zoneId, int noteId);
104
106 int getHeader() const;
107
109 int getFooter() const;
110
112 bool getLinesPagesHeight(int zoneId,
113 std::vector<int> &lines,
114 std::vector<int> &pages);
115
116 //
117 // low level
118 //
119
121 bool readZoneHeader(MsWks3TextInternal::LineZone &zone) const;
122
124 void update(MsWks3TextInternal::TextZone &zone);
125
127 void updateNotes(MsWks3TextInternal::TextZone &zone, int firstNote);
128
131 void send(MsWks3TextInternal::TextZone &zone, MWAWVec2i limit=MWAWVec2i(-1,-1));
132
134 bool readFont(MsWks3TextInternal::Font &font, long endPos);
135
137 bool readParagraph(MsWks3TextInternal::LineZone &zone, MWAWParagraph &parag);
138
140 bool sendText(MsWks3TextInternal::LineZone &zone, int zoneId);
141
143 bool sendString(std::string &str);
144
145 private:
146 MsWks3Text(MsWks3Text const &orig) = delete;
147 MsWks3Text &operator=(MsWks3Text const &orig) = delete;
148
149 protected:
150 //
151 // data
152 //
154 MWAWParserStatePtr m_parserState;
155
157 std::shared_ptr<MsWks3TextInternal::State> m_state;
158
160 MWAWParser *m_mainParser;
162 MsWksDocument &m_document;
163 };
164 #endif
165 // vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab:
MsWks3TextInternal::Font::Font
Font()
the constructor
Definition: MsWks3Text.cxx:124
MWAWEntry
basic class to store an entry in a file This contained :
Definition: MWAWEntry.hxx:46
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
MWAWTabStop::LEFT
@ LEFT
Definition: MWAWParagraph.hxx:48
MsWksDocument::getInput
MWAWInputStreamPtr & getInput()
returns the actual input
Definition: MsWksDocument.hxx:113
MWAWFont::set
void set(Script const &newscript)
sets the script position
Definition: MWAWFont.hxx:314
MsWks3TextInternal::State::m_numPages
int m_numPages
Definition: MsWks3Text.cxx:210
MsWks3TextInternal::TextZone::m_linesHeight
std::vector< int > m_linesHeight
the line height
Definition: MsWks3Text.cxx:181
MsWksDocument
the main class to read/store generic data of a MsWorks document v1-v3
Definition: MsWksDocument.hxx:68
MsWks3TextInternal::TextZone::Main
@ Main
Definition: MsWks3Text.cxx:154
MWAWNote
a note
Definition: libmwaw_internal.hxx:445
MWAW_DEBUG_MSG
#define MWAW_DEBUG_MSG(M)
Definition: libmwaw_internal.hxx:129
MsWks3Text::numPages
int numPages(int zoneId) const
returns the number of pages
Definition: MsWks3Text.cxx:300
MsWks3TextInternal::SubDocument::Type
Type
Definition: MsWks3Text.cxx:218
libmwaw::DebugFile::addDelimiter
void addDelimiter(long pos, char c)
adds a not breaking delimiter in position pos
Definition: MWAWDebug.cxx:73
MsWksDRParser
the main class to read a Microsoft Works graphic file
Definition: MsWksDRParser.hxx:59
MWAWTabStop::Alignment
Alignment
the tab alignment
Definition: MWAWParagraph.hxx:48
MsWks3TextInternal::LineZone::m_pos
MWAWEntry m_pos
the file position
Definition: MsWks3Text.cxx:111
MWAWParagraph::m_tabs
MWAWVariable< std::vector< MWAWTabStop > > m_tabs
the tabulations
Definition: MWAWParagraph.hxx:162
MsWks3Text::getHeader
int getHeader() const
returns a header zone id ( or -1 )
Definition: MsWks3Text.cxx:335
MWAWFont::Script::sub100
static Script sub100()
return a yposition which correspond to a basic subscript100
Definition: MWAWFont.hxx:125
MWAWFont::boldBit
@ boldBit
Definition: MWAWFont.hxx:190
MWAWFont::setColor
void setColor(MWAWColor color)
sets the font color
Definition: MWAWFont.hxx:341
MsWks3TextInternal::LineZone::m_type
int m_type
the type
Definition: MsWks3Text.cxx:109
MWAWTabStop::CENTER
@ CENTER
Definition: MWAWParagraph.hxx:48
MsWks3TextInternal::SubDocument
Internal: the subdocument of a MsWks3Text.
Definition: MsWks3Text.cxx:215
MWAWParagraph::setInterline
void setInterline(double value, librevenge::RVNGUnit unit, LineSpacingType type=Fixed)
set the interline
Definition: MWAWParagraph.hxx:129
MsWks3Text::getLinesPagesHeight
bool getLinesPagesHeight(int zoneId, std::vector< int > &lines, std::vector< int > &pages)
return the lines and pages height ( for v1, ...)
Definition: MsWks3Text.cxx:319
MWAWEntry.hxx
MWAWFontConverter.hxx
MWAWColor
the class to store a color
Definition: libmwaw_internal.hxx:192
MWAWSubDocumentPtr
std::shared_ptr< MWAWSubDocument > MWAWSubDocumentPtr
a smart pointer of MWAWSubDocument
Definition: libmwaw_internal.hxx:565
MsWks3Text::createZones
int createZones(int numLines=-1, bool mainZone=false)
finds the different text zones. Returns the zoneId or -1.
Definition: MsWks3Text.cxx:354
MsWksDocument::getColor
bool getColor(int id, MWAWColor &col, int vers)
returns the color which correspond to an index
Definition: MsWksDocument.cxx:583
MsWksParser
the main class to read a Microsoft Works file: v1-v4
Definition: MsWksParser.hxx:59
MsWks3Text::version
int version() const
returns the file version
Definition: MsWks3Text.cxx:293
MsWks3Text::m_document
MsWksDocument & m_document
the input zone
Definition: MsWks3Text.hxx:162
MWAWParagraph
class to store the paragraph properties
Definition: MWAWParagraph.hxx:84
MsWks3TextInternal::SubDocument::m_textParser
MsWks3Text * m_textParser
the text parser
Definition: MsWks3Text.cxx:238
MWAWFont::Line::Simple
@ Simple
Definition: MWAWFont.hxx:49
libmwaw::DebugFile::addNote
void addNote(char const *note)
adds a note in the file, in actual position
Definition: MWAWDebug.cxx:59
MsWks3TextInternal::TextZone::m_type
int m_type
the zone type;
Definition: MsWks3Text.cxx:175
MWAWSubDocument
abstract class used to store a subdocument (with a comparison function)
Definition: MWAWSubDocument.hxx:41
MWAWParagraph::m_margins
MWAWVariable< double > m_margins[3]
the margins
Definition: MWAWParagraph.hxx:148
MsWks3TextInternal::SubDocument::Text
@ Text
Definition: MsWks3Text.cxx:218
MWAWTabStop::DECIMAL
@ DECIMAL
Definition: MWAWParagraph.hxx:48
MsWks3TextInternal::SubDocument::m_id
int m_id
the subdocument id
Definition: MsWks3Text.cxx:240
MWAWFont::Script::super100
static Script super100()
return a yposition which correspond to a basic superscript100
Definition: MWAWFont.hxx:135
MWAWFont::embossBit
@ embossBit
Definition: MWAWFont.hxx:190
MsWks3TextInternal::SubDocument::operator=
SubDocument operator=(SubDocument const &orig)=delete
MWAWField::Date
@ Date
Definition: libmwaw_internal.hxx:401
MsWks3TextInternal::TextZone::m_footnoteMap
std::map< int, MWAWVec2i > m_footnoteMap
the note id -> zone limit
Definition: MsWks3Text.cxx:187
MsWks3TextInternal::LineZone::m_id
int m_id
the id
Definition: MsWks3Text.cxx:113
MWAWSubDocument.hxx
MsWks3Text::sendNote
void sendNote(int zoneId, int noteId)
send a note
Definition: MsWks3Text.cxx:931
MWAWParser::getPageWidth
double getPageWidth() const
returns the page width (form width without margin )
Definition: MWAWParser.hxx:185
MsWks3TextInternal::Font::m_extra
std::string m_extra
extra data
Definition: MsWks3Text.cxx:148
libmwaw::SubDocumentType
SubDocumentType
Definition: libmwaw_internal.hxx:188
MWAWSubDocument::m_input
std::shared_ptr< MWAWInputStream > m_input
the input
Definition: MWAWSubDocument.hxx:77
MsWks3Text::sendZone
void sendZone(int zoneId)
send a zone
Definition: MsWks3Text.cxx:949
MWAWParagraph::JustificationCenter
@ JustificationCenter
Definition: MWAWParagraph.hxx:90
MsWks3TextInternal::TextZone::Unknown
@ Unknown
Definition: MsWks3Text.cxx:154
MWAWFont::shadowBit
@ shadowBit
Definition: MWAWFont.hxx:191
MWAWParagraph.hxx
MsWks3TextInternal::LineZone::m_height
int m_height
the height
Definition: MsWks3Text.cxx:117
MsWks3TextInternal::State::m_version
int m_version
the file version
Definition: MsWks3Text.cxx:206
MWAWParser::getPageSpan
const MWAWPageSpan & getPageSpan() const
returns the actual page dimension
Definition: MWAWParser.hxx:160
MsWks3TextInternal::LineZone
Internal: header zone.
Definition: MsWks3Text.cxx:59
libmwaw_internal.hxx
MsWks3Text::m_state
std::shared_ptr< MsWks3TextInternal::State > m_state
the state
Definition: MsWks3Text.hxx:157
MsWks3TextInternal::TextZone::m_text
std::string m_text
a string used to store v1-2 files header/footer
Definition: MsWks3Text.cxx:189
MsWksDocument::ascii
libmwaw::DebugFile & ascii()
a DebugFile used to write what we recognize when we parse the document
Definition: MsWksDocument.hxx:132
MsWks3Text
the main class to read the text part of Microsoft Works file
Definition: MsWks3Text.hxx:69
MsWks3Text::send
void send(MsWks3TextInternal::TextZone &zone, MWAWVec2i limit=MWAWVec2i(-1,-1))
sends the zone data to the listener.
Definition: MsWks3Text.cxx:881
MsWks3TextInternal::Font::m_flags
int m_flags[3]
some unknown flag
Definition: MsWks3Text.cxx:146
MWAWEntry::setBegin
void setBegin(long off)
sets the begin offset
Definition: MWAWEntry.hxx:67
MsWks3Text::readHeaderFooterString
std::string readHeaderFooterString(bool header)
reads the header/footer string : version v1-2
Definition: MsWks3Text.cxx:829
MWAWPageSpan::getPageLength
double getPageLength() const
returns the page length (form width without margin )
Definition: MWAWPageSpan.hxx:152
MWAWEntry::length
long length() const
returns the length of the zone
Definition: MWAWEntry.hxx:93
MsWks3TextInternal::TextZone::m_pagesHeight
std::vector< int > m_pagesHeight
the pages height
Definition: MsWks3Text.cxx:183
MsWks3TextInternal::TextZone::TextZone
TextZone()
constructor
Definition: MsWks3Text.cxx:156
MWAWVec2< int >
MsWks3TextInternal
Internal: the structures of a MsWks3Text.
Definition: MsWks3Text.cxx:55
MsWks3TextInternal::State
Internal: the state of a MsWks3Text.
Definition: MsWks3Text.cxx:196
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
MWAWEntry::begin
long begin() const
returns the begin offset
Definition: MWAWEntry.hxx:83
MsWks3TextInternal::State::m_actualPage
int m_actualPage
Definition: MsWks3Text.cxx:210
MWAWEntry::setLength
void setLength(long l)
sets the zone size
Definition: MWAWEntry.hxx:72
MsWks3TextInternal::TextZone
Internal: the text zone.
Definition: MsWks3Text.cxx:153
MWAWVariable::get
const T & get() const
return the current value
Definition: libmwaw_internal.hxx:630
MsWks3TextInternal::SubDocument::SubDocument
SubDocument(MsWks3Text &pars, MWAWInputStreamPtr const &input, int zoneId, int noteId)
Definition: MsWks3Text.cxx:219
MsWks3TextInternal::LineZone::isRuler
bool isRuler() const
return true if this is a tabs
Definition: MsWks3Text.cxx:104
MWAWFont::setId
void setId(int newId)
sets the font id
Definition: MWAWFont.hxx:264
MsWks3TextInternal::LineZone::m_flags
int m_flags
the zone flags
Definition: MsWks3Text.cxx:115
MsWks3TextInternal::SubDocument::~SubDocument
~SubDocument() final
destructor
Definition: MsWks3Text.cxx:228
MWAWField
a field
Definition: libmwaw_internal.hxx:399
MWAWField::PageNumber
@ PageNumber
Definition: libmwaw_internal.hxx:401
MsWksSSParser
the main class to read a Microsoft Works spreadsheet file
Definition: MsWksSSParser.hxx:65
MsWks3Text::readZoneHeader
bool readZoneHeader(MsWks3TextInternal::LineZone &zone) const
try to read a zone header
Definition: MsWks3Text.cxx:480
MWAWParser::getParserState
MWAWParserStatePtr getParserState()
returns the parser state
Definition: MWAWParser.hxx:113
MsWks3Text::getFooter
int getFooter() const
returns a footer zone id ( or -1 )
Definition: MsWks3Text.cxx:343
MsWks3TextInternal::TextZone::m_id
int m_id
the zone id
Definition: MsWks3Text.cxx:177
MsWks3TextInternal::SubDocument::m_noteId
int m_noteId
the note id
Definition: MsWks3Text.cxx:242
MsWks3Text::update
void update(MsWks3TextInternal::TextZone &zone)
prepare a zone
Definition: MsWks3Text.cxx:393
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
MsWks3Text::readFont
bool readFont(MsWks3TextInternal::Font &font, long endPos)
tries to read a font
Definition: MsWks3Text.cxx:637
MsWks3Text::operator=
MsWks3Text & operator=(MsWks3Text const &orig)=delete
MsWks3Text::sendText
bool sendText(MsWks3TextInternal::LineZone &zone, int zoneId)
tries to send a text zone
Definition: MsWks3Text.cxx:500
MsWks3Text::updateNotes
void updateNotes(MsWks3TextInternal::TextZone &zone, int firstNote)
prepare the note zones given a zone and the position of the first note
Definition: MsWks3Text.cxx:417
MWAWParser
virtual class which defines the ancestor of all main zone parser
Definition: MWAWParser.hxx:99
MsWks3TextInternal::TextZone::isMain
bool isMain() const
return true if this is the main zone
Definition: MsWks3Text.cxx:170
MsWks3TextInternal::SubDocument::operator!=
bool operator!=(MWAWSubDocument const &doc) const final
operator!=
Definition: MsWks3Text.cxx:264
MWAWFont::italicBit
@ italicBit
Definition: MWAWFont.hxx:190
MsWksDocument.hxx
MsWks3Text::MsWks3Text
MsWks3Text(MsWksDocument &zone)
constructor
Definition: MsWks3Text.cxx:280
MsWks3TextInternal::State::State
State()
constructor
Definition: MsWks3Text.cxx:198
MsWks3TextInternal::LineZone::operator<<
friend std::ostream & operator<<(std::ostream &o, LineZone const &z)
operator<<
Definition: MsWks3Text.cxx:70
MsWks3TextInternal::SubDocument::parse
void parse(MWAWListenerPtr &listener, libmwaw::SubDocumentType type) final
the parser function
Definition: MsWks3Text.cxx:248
MWAWParagraph::JustificationFull
@ JustificationFull
Definition: MWAWParagraph.hxx:90
MWAWParagraph::JustificationRight
@ JustificationRight
Definition: MWAWParagraph.hxx:91
MWAWParserStatePtr
std::shared_ptr< MWAWParserState > MWAWParserStatePtr
a smart pointer of MWAWParserState
Definition: libmwaw_internal.hxx:557
MsWks3TextInternal::TextZone::m_pagesPosition
std::map< int, bool > m_pagesPosition
the zone id -> hard break
Definition: MsWks3Text.cxx:185
MsWks3Text.hxx
MsWks3Text::readParagraph
bool readParagraph(MsWks3TextInternal::LineZone &zone, MWAWParagraph &parag)
tries to read a paragraph
Definition: MsWks3Text.cxx:700
libmwaw::DebugFile::addPos
void addPos(long pos)
adds a new position in the file
Definition: MWAWDebug.cxx:53
MsWks3Text::m_parserState
MWAWParserStatePtr m_parserState
the parser state
Definition: MsWks3Text.hxx:154
MWAWListener.hxx
MsWks3TextInternal::TextZone::Header
@ Header
Definition: MsWks3Text.cxx:154
MsWks3Text::sendString
bool sendString(std::string &str)
tries to send a string (for v1-2, header/footer zone)
Definition: MsWks3Text.cxx:591
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
MWAWNote::FootNote
@ FootNote
Definition: libmwaw_internal.hxx:447
MWAWFont::Script
a small struct to define the script position in MWAWFont
Definition: MWAWFont.hxx:106
MWAWListenerPtr
std::shared_ptr< MWAWListener > MWAWListenerPtr
a smart pointer of MWAWListener
Definition: libmwaw_internal.hxx:553
MWAWFont.hxx
MWAWTabStop::RIGHT
@ RIGHT
Definition: MWAWParagraph.hxx:48
MWAWFont
Class to store font.
Definition: MWAWFont.hxx:43
MsWksDocument::newPage
void newPage(int page, bool softBreak=false)
tries to create a new page
Definition: MsWksDocument.cxx:492
MWAWParagraph::m_extra
std::string m_extra
a string to store some errors
Definition: MWAWParagraph.hxx:190
MsWks3TextInternal::TextZone::Type
Type
Definition: MsWks3Text.cxx:154
MWAWField::Title
@ Title
Definition: libmwaw_internal.hxx:401
MsWks3TextInternal::Font::operator<<
friend std::ostream & operator<<(std::ostream &o, Font const &font)
operator<<
Definition: MsWks3Text.cxx:130
MsWks3TextInternal::State::m_zones
std::vector< TextZone > m_zones
the main zone
Definition: MsWks3Text.cxx:208
MsWks3TextInternal::LineZone::isNote
bool isNote() const
return true if this is a note
Definition: MsWks3Text.cxx:99
MsWks3Text::~MsWks3Text
virtual ~MsWks3Text()
destructor
Definition: MsWks3Text.cxx:289
MsWks3Text::m_mainParser
MWAWParser * m_mainParser
the main parser;
Definition: MsWks3Text.hxx:160
MWAWVec2i
MWAWVec2< int > MWAWVec2i
MWAWVec2 of int.
Definition: libmwaw_internal.hxx:838
MsWks3TextInternal::SubDocument::Zone
@ Zone
Definition: MsWks3Text.cxx:218
libmwaw::DebugStream
std::stringstream DebugStream
a basic stream (if debug_with_files is not defined, does nothing)
Definition: MWAWDebug.hxx:61
MWAWParser.hxx
MsWks3TextInternal::Font::m_font
MWAWFont m_font
the font
Definition: MsWks3Text.cxx:144
MsWks3TextInternal::TextZone::Footer
@ Footer
Definition: MsWks3Text.cxx:154
MsWks3Text::flushExtra
void flushExtra()
sends the data which have not yet been sent to the listener
Definition: MsWks3Text.cxx:959
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
MsWks3TextInternal::LineZone::LineZone
LineZone()
the constructor
Definition: MsWks3Text.cxx:61
MWAWFont::setFlags
void setFlags(uint32_t fl)
sets the font attributes bold, ...
Definition: MWAWFont.hxx:325
MsWks3TextInternal::TextZone::m_isSent
bool m_isSent
flag to know if the zone is send or not
Definition: MsWks3Text.cxx:191
MsWks3TextInternal::Font
Internal: the fonts.
Definition: MsWks3Text.cxx:122
MsWks3TextInternal::TextZone::m_zonesList
std::vector< LineZone > m_zonesList
the list of zones
Definition: MsWks3Text.cxx:179