MsWks4Zone.hxx Source File documentation

MsWks4Zone.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 MS_WKS4_ZONE
35 # define MS_WKS4_ZONE
36
37 #include <map>
38 #include <string>
39
40 #include "MWAWDebug.hxx"
41 #include "MWAWEntry.hxx"
42 #include "MWAWInputStream.hxx"
43
44 #include "MWAWParser.hxx"
45
46 #include "MsWksDocument.hxx"
47
48 class MsWksParser;
49 class MsWksDRParser;
50
51 namespace MsWks4ZoneInternal
52 {
53 struct State;
54 }
55
73 class MsWks4Zone
74 {
75 friend class MsWksDocument;
76 friend class MsWksDRParser;
77 friend class MsWksParser;
78 friend class MsWks4Text;
79
80 public:
82 MsWks4Zone(MWAWInputStreamPtr const &input, MWAWParserStatePtr const &parserState,
83 MWAWParser &parser, std::string const &oleName);
85 ~MsWks4Zone();
86
87 protected:
89 void init();
91 MWAWInputStreamPtr getInput();
92
97 bool parseHeaderIndex(MWAWInputStreamPtr &input);
98
100 bool parseHeaderIndexEntry(MWAWInputStreamPtr &input);
101
103 bool createZones(bool mainOle);
104
108 void readContentZones(MWAWEntry const &entry, bool mainOle);
109
111 MWAWTextListenerPtr createListener(librevenge::RVNGTextInterface *interface);
112
114 double getTextHeight() const;
115
117 void newPage(int number, bool soft=false);
118
120 void readFootNote(int id);
121
123 MWAWEntry getTextPosition() const;
124
125 //
126 // low level
127 //
128
130 bool readPRNT(MWAWInputStreamPtr input, MWAWEntry const &entry, MWAWPageSpan &page);
131
135 bool readDOP(MWAWInputStreamPtr input, MWAWEntry const &entry, MWAWPageSpan &page);
136
140 bool readFRAM(MWAWInputStreamPtr input, MWAWEntry const &entry);
141
145 bool readRLRB(MWAWInputStreamPtr input, MWAWEntry const &entry);
146
150 bool readSELN(MWAWInputStreamPtr input, MWAWEntry const &entry);
151
153 void setAscii(std::string const &oleName);
155 libmwaw::DebugFile &ascii();
156
157 private:
158 MsWks4Zone(MsWks4Zone const &orig) = delete;
159 MsWks4Zone &operator=(MsWks4Zone const &orig) = delete;
160 protected:
161 //
162 // data
163 //
164
166 MWAWParser *m_mainParser;
167
169 std::shared_ptr<MWAWParserState> m_parserState;
170
172 std::shared_ptr<MsWks4ZoneInternal::State> m_state;
173
175 std::shared_ptr<MsWksDocument> m_document;
176 };
177 #endif
178 // 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
libmwaw::PrinterRect::size
MWAWVec2i size() const
returns the size
Definition: MWAWPrinter.hxx:56
MsWks4ZoneInternal::Frame
Internal: a frame ( position, type, ...)
Definition: MsWks4Zone.cxx:66
MsWks4ZoneInternal::Frame::Table
@ Table
Definition: MsWks4Zone.cxx:68
MWAWInputStreamPtr
std::shared_ptr< MWAWInputStream > MWAWInputStreamPtr
a smart pointer of MWAWInputStream
Definition: libmwaw_internal.hxx:551
MsWks4Zone::readContentZones
void readContentZones(MWAWEntry const &entry, bool mainOle)
final reading of a text zone
Definition: MsWks4Zone.cxx:566
MWAWPageSpan::PORTRAIT
@ PORTRAIT
Definition: MWAWPageSpan.hxx:102
MsWksDocument
the main class to read/store generic data of a MsWorks document v1-v3
Definition: MsWksDocument.hxx:69
MWAWEntry::setName
void setName(std::string const &nam)
sets the name of the entry
Definition: MWAWEntry.hxx:148
MsWks4ZoneInternal::Frame::Object
@ Object
Definition: MsWks4Zone.cxx:68
MsWks4Text
The class which parses text zones in a mac MS Works document v4.
Definition: MsWks4Text.hxx:65
MWAWVec2::setY
void setY(T yy)
resets the second element
Definition: libmwaw_internal.hxx:702
MsWks4Zone::parseHeaderIndexEntry
bool parseHeaderIndexEntry(MWAWInputStreamPtr &input)
parses an index entry
Definition: MsWks4Zone.cxx:292
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
MsWks4ZoneInternal::State::m_numColumns
int m_numColumns
the number of column
Definition: MsWks4Zone.cxx:160
MsWksDRParser
the main class to read a Microsoft Works graphic file
Definition: MsWksDRParser.hxx:60
MsWksGraph::SendData::m_page
int m_page
the page ( used if anchor==page)
Definition: MsWksGraph.hxx:126
MsWks4Zone::m_document
std::shared_ptr< MsWksDocument > m_document
the zone data
Definition: MsWks4Zone.hxx:175
MsWks4ZoneInternal::Frame::m_pictId
MWAWEntry m_pictId
some frames are associated with a picture stored in this entry ( name + id)
Definition: MsWks4Zone.cxx:88
MsWks4ZoneInternal::Frame::Frame
Frame()
constructor
Definition: MsWks4Zone.cxx:71
MWAWEntry::isParsed
bool isParsed() const
a flag to know if the entry was parsed or not
Definition: MWAWEntry.hxx:121
MsWksGraph.hxx
MWAWPosition::setPage
void setPage(int pg) const
sets the page
Definition: MWAWPosition.hxx:205
MWAWTextListener
This class contents the main functions needed to create a Word processing Document.
Definition: MWAWTextListener.hxx:65
MsWks4Zone::getTextPosition
MWAWEntry getTextPosition() const
return the text positions ( used for frame text)
Definition: MsWks4Zone.cxx:261
libmwaw::PrinterInfo::paper
PrinterRect paper() const
returns the paper rectangle
Definition: MWAWPrinter.cxx:222
MWAWSection::m_columnSeparator
MWAWBorder m_columnSeparator
the vertical separator between columns
Definition: MWAWSection.hxx:112
MsWks4ZoneInternal::Frame::m_error
std::string m_error
a string to store unparsed data
Definition: MsWks4Zone.cxx:90
MsWks4Zone::readFRAM
bool readFRAM(MWAWInputStreamPtr input, MWAWEntry const &entry)
parses the FRAM zone which contains some information about frames (header, footer,...
Definition: MsWks4Zone.cxx:930
MWAWEntry::id
int id() const
returns the id
Definition: MWAWEntry.hxx:164
MWAWEntry.hxx
MWAWPageSpan::setMarginBottom
void setMarginBottom(const double marginBottom)
set the page bottom margin
Definition: MWAWPageSpan.hxx:208
MWAWFontConverter.hxx
MWAWSection::setColumns
void setColumns(int num, double width, librevenge::RVNGUnit widthUnit, double colSep=0)
a function which sets n uniform columns
Definition: MWAWSection.cxx:109
MsWksGraph::SendData::m_anchor
MWAWPosition::AnchorTo m_anchor
the anchor
Definition: MsWksGraph.hxx:124
MWAWEntry::type
std::string const & type() const
returns the type of the entry
Definition: MWAWEntry.hxx:137
MsWksParser
the main class to read a Microsoft Works file: v1-v4
Definition: MsWksParser.hxx:60
MsWks4ZoneInternal::State::m_parsed
bool m_parsed
a flag to known if the ole is already parsed
Definition: MsWks4Zone.cxx:164
MWAWPrinter.hxx
MWAWPageSpan::setFormOrientation
void setFormOrientation(const FormOrientation formOrientation)
set the form orientation
Definition: MWAWPageSpan.hxx:188
MWAWPageSpan::setMarginLeft
void setMarginLeft(const double marginLeft)
set the page left margin
Definition: MWAWPageSpan.hxx:193
MsWks4ZoneInternal::State::State
State()
constructor
Definition: MsWks4Zone.cxx:144
libmwaw::PrinterInfo
the AppleŠ printer information : TPrint
Definition: MWAWPrinter.hxx:82
MsWks4Zone::getInput
MWAWInputStreamPtr getInput()
returns the actual input
Definition: MsWks4Zone.cxx:206
MWAWEntry::setParsed
void setParsed(bool ok=true) const
sets the flag m_parsed to true or false
Definition: MWAWEntry.hxx:126
MsWks4ZoneInternal::Frame::Header
@ Header
Definition: MsWks4Zone.cxx:68
MsWks4ZoneInternal
Internal: the structures of a MsWks4Zone.
Definition: MsWks4Zone.cxx:58
MWAWEntry::hasType
bool hasType(std::string const &typ) const
returns true if the type entry == type
Definition: MWAWEntry.hxx:142
MsWks4Zone::getTextHeight
double getTextHeight() const
returns the page height, ie. paper size less margin (in inches) less header/footer size
Definition: MsWks4Zone.cxx:230
MsWks4ZoneInternal::Frame::Unknown
@ Unknown
Definition: MsWks4Zone.cxx:68
MWAWSubDocument.hxx
MWAWPageSpan::setFormLength
void setFormLength(const double formLength)
set the total page length
Definition: MWAWPageSpan.hxx:178
MWAWParser::getPageWidth
double getPageWidth() const
returns the page width (form width without margin )
Definition: MWAWParser.hxx:185
MsWks4ZoneInternal::State::m_defFont
MWAWFont m_defFont
the default font
Definition: MsWks4Zone.cxx:169
MsWks4ZoneInternal::Frame::operator<<
friend std::ostream & operator<<(std::ostream &o, Frame const &ft)
operator<<
Definition: MsWks4Zone.cxx:93
MsWks4Zone::readSELN
bool readSELN(MWAWInputStreamPtr input, MWAWEntry const &entry)
parses the SELN zone which seems to contain some information about the actual
Definition: MsWks4Zone.cxx:1098
MsWks4Zone::readFootNote
void readFootNote(int id)
sends text corresponding to the footnote id to the listener (via MsWks4Text)
Definition: MsWks4Zone.cxx:222
MsWks4ZoneInternal::Frame::m_type
Type m_type
the frame type
Definition: MsWks4Zone.cxx:83
MsWks4Zone::setAscii
void setAscii(std::string const &oleName)
inits the ascii file
Definition: MsWks4Zone.cxx:211
MsWksGraph::SendData::ALL
@ ALL
Definition: MsWksGraph.hxx:120
MWAWEntry::setType
void setType(std::string const &newType)
sets the type of the entry: BTEP,FDPP, BTEC, FDPC, PLC , TEXT, ...
Definition: MWAWEntry.hxx:132
MsWks4Zone::createListener
MWAWTextListenerPtr createListener(librevenge::RVNGTextInterface *interface)
creates the main listener
Definition: MsWks4Zone.cxx:269
MsWks4Zone::m_parserState
std::shared_ptr< MWAWParserState > m_parserState
the parser state
Definition: MsWks4Zone.hxx:169
MWAWVec2::y
T y() const
second element
Definition: libmwaw_internal.hxx:673
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
MsWks4Zone.hxx
MsWks4Zone::operator=
MsWks4Zone & operator=(MsWks4Zone const &orig)=delete
MWAWPosition
Class to define the position of an object (textbox, picture, ..) in the document.
Definition: MWAWPosition.hxx:48
MWAWEntry::name
std::string const & name() const
name of the entry
Definition: MWAWEntry.hxx:153
MsWks4Zone::createZones
bool createZones(bool mainOle)
finds and parses all the zones to prepare the data
Definition: MsWks4Zone.cxx:471
MWAWBorder
a border
Definition: libmwaw_internal.hxx:333
MWAWEntry::setBegin
void setBegin(long off)
sets the begin offset
Definition: MWAWEntry.hxx:67
MsWks4ZoneInternal::State::m_framesList
std::vector< Frame > m_framesList
the list of frames
Definition: MsWks4Zone.cxx:172
MWAWEntry::length
long length() const
returns the length of the zone
Definition: MWAWEntry.hxx:93
MsWks4ZoneInternal::IgnoreFrame
@ IgnoreFrame
Definition: MsWks4Zone.cxx:63
MWAWListener::PageBreak
@ PageBreak
Definition: MWAWListener.hxx:58
MsWks4Zone::init
void init()
inits all internal variables
Definition: MsWks4Zone.cxx:200
MWAWVec2< int >
MsWks4Zone
The class which parses the main zones of a mac MS Works document v4.
Definition: MsWks4Zone.hxx:74
MWAWSection
a class which stores section properties
Definition: MWAWSection.hxx:46
libmwaw::ParseException
Definition: libmwaw_internal.hxx:144
MWAWDebug.hxx
MsWksGraph::SendData::RBDR
@ RBDR
Definition: MsWksGraph.hxx:120
MWAWEntry::begin
long begin() const
returns the begin offset
Definition: MWAWEntry.hxx:83
MWAWEntry::setLength
void setLength(long l)
sets the zone size
Definition: MWAWEntry.hxx:72
MWAWPosition::page
int page() const
returns the frame page
Definition: MWAWPosition.hxx:125
MsWks4Zone::m_state
std::shared_ptr< MsWks4ZoneInternal::State > m_state
the internal state
Definition: MsWks4Zone.hxx:172
MsWks4Zone::readPRNT
bool readPRNT(MWAWInputStreamPtr input, MWAWEntry const &entry, MWAWPageSpan &page)
reads the PRNT zone which contains the printer properties ( page dimension, margins,...
Definition: MsWks4Zone.cxx:633
MWAWEntry::setId
void setId(int newId)
sets the id
Definition: MWAWEntry.hxx:169
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
libmwaw::Debug::flattenFileName
std::string flattenFileName(std::string const &name)
returns a file name from an ole/... name
Definition: MWAWDebug.cxx:208
MWAWPosition::Char
@ Char
Definition: MWAWPosition.hxx:51
MsWks4ZoneInternal::State
Internal: the state of a MsWks4Zone.
Definition: MsWks4Zone.cxx:142
MWAWEntry::end
long end() const
returns the end offset
Definition: MWAWEntry.hxx:88
MsWks4ZoneInternal::Frame::Footer
@ Footer
Definition: MsWks4Zone.cxx:68
MsWks4ZoneInternal::Frame::Textbox
@ Textbox
Definition: MsWks4Zone.cxx:68
MsWksGraph::SendData
small struct used which picture need to be send
Definition: MsWksGraph.hxx:109
MWAWParser
virtual class which defines the ancestor of all main zone parser
Definition: MWAWParser.hxx:100
MsWks4ZoneInternal::Frame::m_position
MWAWPosition m_position
the position of the frame in the document
Definition: MsWks4Zone.cxx:86
MsWksDocument.hxx
MWAWTextListener.hxx
Defines MWAWTextListener: the libmwaw word processor listener.
MsWks4ZoneInternal::State::m_hasColumnSep
bool m_hasColumnSep
true if a line is added to separated the column
Definition: MsWks4Zone.cxx:162
MWAWPosition::Page
@ Page
Definition: MWAWPosition.hxx:51
MWAWSection.hxx
MWAWParserStatePtr
std::shared_ptr< MWAWParserState > MWAWParserStatePtr
a smart pointer of MWAWParserState
Definition: libmwaw_internal.hxx:557
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
MsWks4Text.hxx
libmwaw::PrinterInfo::page
PrinterRect page() const
returns the page rectangle
Definition: MWAWPrinter.cxx:218
MsWks4Zone::MsWksDocument
friend class MsWksDocument
Definition: MsWks4Zone.hxx:75
MsWks4ZoneInternal::State::m_numPages
int m_numPages
Definition: MsWks4Zone.cxx:166
MsWks4Zone::newPage
void newPage(int number, bool soft=false)
adds a new page
Definition: MsWks4Zone.cxx:238
MsWks4Zone::m_mainParser
MWAWParser * m_mainParser
the main parser
Definition: MsWks4Zone.hxx:166
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
MsWks4Zone::readDOP
bool readDOP(MWAWInputStreamPtr input, MWAWEntry const &entry, MWAWPageSpan &page)
parses the DIO zone which contains the document properties (dimension, ...)
Definition: MsWks4Zone.cxx:678
MWAWVec2::setX
void setX(T xx)
resets the first element
Definition: libmwaw_internal.hxx:697
MsWks4Zone::parseHeaderIndex
bool parseHeaderIndex(MWAWInputStreamPtr &input)
tries to find the beginning of the list of indices, then try to find all entries in this list.
Definition: MsWks4Zone.cxx:392
MWAWVec2::set
void set(T xx, T yy)
resets the two elements
Definition: libmwaw_internal.hxx:691
MsWks4ZoneInternal::State::m_mainOle
bool m_mainOle
true if we parse the main MN0
Definition: MsWks4Zone.cxx:157
MWAWPosition::Paragraph
@ Paragraph
Definition: MWAWPosition.hxx:51
MWAWInputStream.hxx
MsWks4Zone::MsWks4Zone
MsWks4Zone(MsWks4Zone const &orig)=delete
MWAWFont.hxx
MsWks4Zone::~MsWks4Zone
~MsWks4Zone()
destructor
Definition: MsWks4Zone.cxx:193
MsWks4ZoneInternal::Frame::Type
Type
the type of the frame which can represent header, footer, textbox, ...
Definition: MsWks4Zone.cxx:68
MsWks4ZoneInternal::operator<<
std::ostream & operator<<(std::ostream &o, Frame const &ft)
friend operator<< for frame
Definition: MsWks4Zone.cxx:93
MWAWFont
Class to store font.
Definition: MWAWFont.hxx:44
MsWks4ZoneInternal::State::m_actPage
int m_actPage
the actual page
Definition: MsWks4Zone.cxx:166
MsWks4Zone::readRLRB
bool readRLRB(MWAWInputStreamPtr input, MWAWEntry const &entry)
parses the RLRB zone which seems to contain some position in the page ?
Definition: MsWks4Zone.cxx:876
MWAWPageSpan::LANDSCAPE
@ LANDSCAPE
Definition: MWAWPageSpan.hxx:102
MWAWEntry::hasName
bool hasName(std::string const &nam) const
checks if the entry name is equal to name
Definition: MWAWEntry.hxx:158
MsWksGraph::SendData::m_type
enum MsWksGraph::SendData::Type m_type
libmwaw::DebugStream
std::stringstream DebugStream
a basic stream (if debug_with_files is not defined, does nothing)
Definition: MWAWDebug.hxx:61
MWAWParser.hxx
MWAWPageSpan
A class which defines the page properties.
Definition: MWAWPageSpan.hxx:99
MsWks4Zone::ascii
libmwaw::DebugFile & ascii()
a DebugFile used to write what we recognize when we parse the document
Definition: MsWks4Zone.cxx:217
MsWks4Zone::MsWks4Zone
MsWks4Zone(MWAWInputStreamPtr const &input, MWAWParserStatePtr const &parserState, MWAWParser &parser, std::string const &oleName)
constructor
Definition: MsWks4Zone.cxx:180