WPS8Text.h Source File documentation

WPS8Text.h
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
2/* libwps
3 * Version: MPL 2.0 / LGPLv2.1+
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 *
9 * Major Contributor(s):
10 * Copyright (C) 2006, 2007 Andrew Ziem
11 * Copyright (C) 2003-2005 William Lachance (william.lachance@sympatico.ca)
12 * Copyright (C) 2003 Marc Maurer (uwog@uwog.net)
13 *
14 * For minor contributions see the git repository.
15 *
16 * Alternatively, the contents of this file may be used under the terms
17 * of the GNU Lesser General Public License Version 2.1 or later
18 * (LGPLv2.1+), in which case the provisions of the LGPLv2.1+ are
19 * applicable instead of those above.
20 */
21
22#ifndef WPS8_TEXT_H
23#define WPS8_TEXT_H
24
25#include <vector>
26
27#include "libwps_internal.h"
28
29#include "WPSDebug.h"
30
31#include "WPSTextParser.h"
32
33namespace WPS8Struct
34{
35struct FileData;
36}
37
38namespace WPS8TextInternal
39{
40struct State;
41class SubDocument;
42}
43
44class WPS8Parser;
45class WPS8TextStyle;
46
47 class WPS8Text : public WPSTextParser
48{
49 friend class WPS8TextInternal::SubDocument;
50 friend class WPS8Parser;
51 friend class WPS8TextStyle;
52public:
53 explicit WPS8Text(WPS8Parser &parser);
54 ~WPS8Text() override;
55
57 void setListener(WPSContentListenerPtr &listen);
58
60 int numPages() const;
61
63 void flushExtra();
64
66 bool readStructures();
67
69 int getNumTextZones() const;
70
76 int getTextZoneType(int typeId) const;
77
79 WPSEntry getHeaderEntry() const;
80
82 WPSEntry getFooterEntry() const;
83
85 WPSEntry getTextEntry() const;
86
88 WPSEntry getEntry(int strsId) const;
89
91 void readText(WPSEntry const &entry);
92
94 void readTextInCell(int strsId, int cellId);
95
96protected:
98 WPS8Parser &mainParser()
99 {
100 return reinterpret_cast<WPS8Parser &>(m_mainParser);
101 }
103 WPS8Parser const &mainParser() const
104 {
105 return reinterpret_cast<WPS8Parser const &>(m_mainParser);
106 }
107
108 //
109 // interface with WPS8TextStyle
110 //
112 bool readFont(long endPos, int &id, std::string &mess);
113
115 bool readParagraph(long endPos, int &id, std::string &mess);
116
117 //
118 // String+text functions
119 //
121 static bool readString(RVNGInputStreamPtr input, long page_size,
122 librevenge::RVNGString &res);
124 static long readUTF16LE(RVNGInputStreamPtr input, long endPos, uint16_t firstC);
125
129 bool readNotes(WPSEntry const &entry);
130
134 void createNotesCorrespondance();
135
136 //----------------------------------------
137 // PLC parsing, setting
138 //----------------------------------------
139
147 typedef bool (WPS8Text::* DataParser)
148 (long bot, long eot, int id, WPS8Struct::FileData const &data,
149 std::string &mess);
154 typedef bool (WPS8Text::* EndDataParser)
155 (long endPos, std::vector<long> const &textPtrs);
163 bool readPLC(WPSEntry const &entry,
164 std::vector<long> &textPtrs, std::vector<long> &listValues,
165 DataParser parser = &WPS8Text::defDataParser,
166 EndDataParser endParser = nullptr);
168 bool defDataParser
169 (long, long, int, WPS8Struct::FileData const &data, std::string &mess);
171 bool textZonesDataParser(long bot, long eot, int nId,
172 WPS8Struct::FileData const &data,
173 std::string &mess);
174 // object
176 bool objectDataParser(long bot, long eot, int id,
177 WPS8Struct::FileData const &data, std::string &mess);
178 // field type
180 bool tokenEndDataParser(long endPage, std::vector<long> const &textPtrs);
183 bool bmktEndDataParser(long endPage, std::vector<long> const &textPtrs);
184
185protected:
187 WPSContentListenerPtr m_listener;
189 std::shared_ptr<WPS8TextStyle> m_styleParser;
191 mutable std::shared_ptr<WPS8TextInternal::State> m_state;
192protected:
193};
194
195
196#endif /* WPS8_TEXT_H */
197/* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */
WPSDebug.h
WPSTextParser.h
WPS8Parser
This class parses Works version 2000 through 8.
Definition: WPS8.h:50
WPS8TextInternal::SubDocument
Internal: the subdocument of a WPS8Text.
Definition: WPS8Text.cpp:453
WPS8TextStyle
Definition: WPS8TextStyle.h:41
WPS8Text
Definition: WPS8Text.h:48
WPS8Text::readUTF16LE
static long readUTF16LE(RVNGInputStreamPtr input, long endPos, uint16_t firstC)
reads a utf16 character,
Definition: WPS8Text.cpp:1094
WPS8Text::EndDataParser
bool(WPS8Text::* EndDataParser)(long endPos, std::vector< long > const &textPtrs)
definition of the last part of plc data parser (low level)
Definition: WPS8Text.h:155
WPS8Text::getTextEntry
WPSEntry getTextEntry() const
returns the main zone entry (if such entry exists, if not returns an invalid entry)
Definition: WPS8Text.cpp:635
WPS8Text::readFont
bool readFont(long endPos, int &id, std::string &mess)
reads a font properties
Definition: WPS8Text.cpp:580
WPS8Text::getHeaderEntry
WPSEntry getHeaderEntry() const
returns the header entry (if such entry exists, if not returns an invalid entry)
Definition: WPS8Text.cpp:599
WPS8Text::setListener
void setListener(WPSContentListenerPtr &listen)
sets the listener
Definition: WPS8Text.cpp:557
WPS8Text::readPLC
bool readPLC(WPSEntry const &entry, std::vector< long > &textPtrs, std::vector< long > &listValues, DataParser parser=&WPS8Text::defDataParser, EndDataParser endParser=nullptr)
reads a PLC (Pointer List Composant ?) in zone entry
Definition: WPS8Text.cpp:1991
WPS8Text::defDataParser
bool defDataParser(long, long, int, WPS8Struct::FileData const &data, std::string &mess)
default parser
Definition: WPS8Text.cpp:1360
WPS8Text::readNotes
bool readNotes(WPSEntry const &entry)
the footnote ( FTN or EDN )
Definition: WPS8Text.cpp:1148
WPS8Text::readString
static bool readString(RVNGInputStreamPtr input, long page_size, librevenge::RVNGString &res)
reads a string
Definition: WPS8Text.cpp:1127
WPS8Text::~WPS8Text
~WPS8Text() override
Definition: WPS8Text.cpp:552
WPS8Text::objectDataParser
bool objectDataParser(long bot, long eot, int id, WPS8Struct::FileData const &data, std::string &mess)
reads a EOBJ properties: an object id and its size, ...
Definition: WPS8Text.cpp:1597
WPS8Text::readParagraph
bool readParagraph(long endPos, int &id, std::string &mess)
the paragraph
Definition: WPS8Text.cpp:585
WPS8Text::readStructures
bool readStructures()
finds all entries which correspond to the text data, parses them and stores data
Definition: WPS8Text.cpp:952
WPS8Text::m_listener
WPSContentListenerPtr m_listener
the listener
Definition: WPS8Text.h:187
WPS8Text::numPages
int numPages() const
returns the number of pages
Definition: WPS8Text.cpp:565
WPS8Text::textZonesDataParser
bool textZonesDataParser(long bot, long eot, int nId, WPS8Struct::FileData const &data, std::string &mess)
the text zones parser: STRS
Definition: WPS8Text.cpp:1387
WPS8Text::createNotesCorrespondance
void createNotesCorrespondance()
creates the notes association : text and notes positions
Definition: WPS8Text.cpp:1280
WPS8Text::flushExtra
void flushExtra()
sends the data which have not yet been sent to the listener
Definition: WPS8Text.cpp:937
WPS8Text::mainParser
WPS8Parser & mainParser()
return the main parser
Definition: WPS8Text.h:98
WPS8Text::getEntry
WPSEntry getEntry(int strsId) const
returns ith zone entry (if such entry exists, if not returns an invalid entry)
Definition: WPS8Text.cpp:593
WPS8Text::readText
void readText(WPSEntry const &entry)
reads a text section and sends it to a listener
Definition: WPS8Text.cpp:671
WPS8Text::getTextZoneType
int getTextZoneType(int typeId) const
returns the type of a text zone
Definition: WPS8Text.cpp:644
WPS8Text::mainParser
WPS8Parser const & mainParser() const
return the main parser
Definition: WPS8Text.h:103
WPS8Text::readTextInCell
void readTextInCell(int strsId, int cellId)
reads a cell section and sends it to a listener
Definition: WPS8Text.cpp:654
WPS8Text::m_state
std::shared_ptr< WPS8TextInternal::State > m_state
the internal state
Definition: WPS8Text.h:191
WPS8Text::getFooterEntry
WPSEntry getFooterEntry() const
returns the footer entry (if such entry exists, if not returns an invalid entry)
Definition: WPS8Text.cpp:617
WPS8Text::DataParser
bool(WPS8Text::* DataParser)(long bot, long eot, int id, WPS8Struct::FileData const &data, std::string &mess)
definition of the plc data parser (low level)
Definition: WPS8Text.h:148
WPS8Text::getNumTextZones
int getNumTextZones() const
returns the number of different text zones
Definition: WPS8Text.cpp:640
WPS8Text::m_styleParser
std::shared_ptr< WPS8TextStyle > m_styleParser
the graph parser
Definition: WPS8Text.h:189
WPS8Text::tokenEndDataParser
bool tokenEndDataParser(long endPage, std::vector< long > const &textPtrs)
reads a field type : TOKN zone
Definition: WPS8Text.cpp:1669
WPS8Text::bmktEndDataParser
bool bmktEndDataParser(long endPage, std::vector< long > const &textPtrs)
reads a field type : BMKT zone
Definition: WPS8Text.cpp:1448
WPSEntry
basic class to store an entry in a file This contained :
Definition: WPSEntry.h:39
WPSTextParser
class used to defined the ancestor of parser which manages the text data
Definition: WPSTextParser.h:40
WPSTextParser::m_mainParser
WPSParser & m_mainParser
pointer to the main zone parser;
Definition: WPSTextParser.h:130
libwps_internal.h
RVNGInputStreamPtr
std::shared_ptr< librevenge::RVNGInputStream > RVNGInputStreamPtr
shared pointer to librevenge::RVNGInputStream
Definition: libwps_internal.h:87
WPSContentListenerPtr
std::shared_ptr< WPSContentListener > WPSContentListenerPtr
shared pointer to WPSContentListener
Definition: libwps_internal.h:107
WPS8Struct
namespace used to read the structures stored in a WPS8 files
Definition: WPS8Struct.cpp:31
WPS8TextInternal
Definition: WPS8Text.cpp:67
WPS8Struct::FileData
A recursif structure which seems generally used to store complex memory structures in a file.
Definition: WPS8Struct.h:64