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 
33 namespace WPS8Struct
34 {
35 struct FileData;
36 }
37 
38 namespace WPS8TextInternal
39 {
40 struct State;
41 class SubDocument;
42 }
43 
44 class WPS8Parser;
45 class WPS8TextStyle;
46 
47 class WPS8Text : public WPSTextParser
48 {
50  friend class WPS8Parser;
51  friend class WPS8TextStyle;
52 public:
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 
96 protected:
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  bool readString(RVNGInputStreamPtr input, long page_size,
122  librevenge::RVNGString &res);
124  long readUTF16LE(RVNGInputStreamPtr input, long endPos, uint16_t firstC);
125 
129  bool readNotes(WPSEntry const &entry);
130 
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,
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 
185 protected:
189  std::shared_ptr<WPS8TextStyle> m_styleParser;
191  mutable std::shared_ptr<WPS8TextInternal::State> m_state;
192 protected:
193 };
194 
195 
196 #endif /* WPS8_TEXT_H */
197 /* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */
bool defDataParser(long, long, int, WPS8Struct::FileData const &data, std::string &mess)
default parser
Definition: WPS8Text.cpp:1360
bool tokenEndDataParser(long endPage, std::vector< long > const &textPtrs)
reads a field type : TOKN zone
Definition: WPS8Text.cpp:1668
Definition: WPS8TextStyle.h:40
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
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
This class parses Works version 2000 through 8.
Definition: WPS8.h:49
int getTextZoneType(int typeId) const
returns the type of a text zone
Definition: WPS8Text.cpp:644
bool bmktEndDataParser(long endPage, std::vector< long > const &textPtrs)
reads a field type : BMKT zone
Definition: WPS8Text.cpp:1447
Definition: WPS8Text.h:47
WPSEntry getFooterEntry() const
returns the footer entry (if such entry exists, if not returns an invalid entry)
Definition: WPS8Text.cpp:617
WPSContentListenerPtr m_listener
the listener
Definition: WPS8Text.h:187
WPS8Text(WPS8Parser &parser)
Definition: WPS8Text.cpp:542
std::shared_ptr< WPS8TextStyle > m_styleParser
the graph parser
Definition: WPS8Text.h:189
Internal: the subdocument of a WPS8Text.
Definition: WPS8Text.cpp:452
bool readParagraph(long endPos, int &id, std::string &mess)
the paragraph
Definition: WPS8Text.cpp:585
void createNotesCorrespondance()
creates the notes association : text and notes positions
Definition: WPS8Text.cpp:1280
WPS8Parser const & mainParser() const
return the main parser
Definition: WPS8Text.h:103
void readTextInCell(int strsId, int cellId)
reads a cell section and sends it to a listener
Definition: WPS8Text.cpp:654
WPSParser & m_mainParser
pointer to the main zone parser;
Definition: WPSTextParser.h:130
void readText(WPSEntry const &entry)
reads a text section and sends it to a listener
Definition: WPS8Text.cpp:671
namespace used to read the structures stored in a WPS8 files
Definition: WPS8Struct.cpp:30
std::shared_ptr< librevenge::RVNGInputStream > RVNGInputStreamPtr
shared pointer to librevenge::RVNGInputStream
Definition: libwps_internal.h:87
Definition: WPS8Text.cpp:66
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:1596
std::shared_ptr< WPSContentListener > WPSContentListenerPtr
shared pointer to WPSContentListener
Definition: libwps_internal.h:107
bool readNotes(WPSEntry const &entry)
the footnote ( FTN or EDN )
Definition: WPS8Text.cpp:1148
void setListener(WPSContentListenerPtr &listen)
sets the listener
Definition: WPS8Text.cpp:557
void flushExtra()
sends the data which have not yet been sent to the listener
Definition: WPS8Text.cpp:937
bool readFont(long endPos, int &id, std::string &mess)
reads a font properties
Definition: WPS8Text.cpp:580
~WPS8Text() override
Definition: WPS8Text.cpp:552
WPSEntry getTextEntry() const
returns the main zone entry (if such entry exists, if not returns an invalid entry) ...
Definition: WPS8Text.cpp:635
int getNumTextZones() const
returns the number of different text zones
Definition: WPS8Text.cpp:640
bool textZonesDataParser(long bot, long eot, int nId, WPS8Struct::FileData const &data, std::string &mess)
the text zones parser: STRS
Definition: WPS8Text.cpp:1386
long readUTF16LE(RVNGInputStreamPtr input, long endPos, uint16_t firstC)
reads a utf16 character,
Definition: WPS8Text.cpp:1094
bool readString(RVNGInputStreamPtr input, long page_size, librevenge::RVNGString &res)
reads a string
Definition: WPS8Text.cpp:1127
int numPages() const
returns the number of pages
Definition: WPS8Text.cpp:565
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:1990
basic class to store an entry in a file This contained :
Definition: WPSEntry.h:38
std::shared_ptr< WPS8TextInternal::State > m_state
the internal state
Definition: WPS8Text.h:191
class used to defined the ancestor of parser which manages the text data
Definition: WPSTextParser.h:39
bool readStructures()
finds all entries which correspond to the text data, parses them and stores data
Definition: WPS8Text.cpp:952
WPSEntry getHeaderEntry() const
returns the header entry (if such entry exists, if not returns an invalid entry)
Definition: WPS8Text.cpp:599
A recursif structure which seems generally used to store complex memory structures in a file...
Definition: WPS8Struct.h:63
WPSEntry getEntry(int strsId) const
returns ith zone entry (if such entry exists, if not returns an invalid entry)
Definition: WPS8Text.cpp:593
WPS8Parser & mainParser()
return the main parser
Definition: WPS8Text.h:98

Generated on Fri May 27 2022 03:07:00 for libwps by doxygen 1.8.14