StarWriterStruct.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 /* libstaroffice
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  * StarWriterStruct to read/parse some basic writer structure in StarOffice documents
36  *
37  */
38 #ifndef STAR_WRITER_STRUCT
39 # define STAR_WRITER_STRUCT
40 
41 #include <ostream>
42 #include <vector>
43 
45 
46 #include "STOFFDebug.hxx"
47 
49 {
50 struct FormatDef;
51 }
52 class StarAttribute;
53 class StarObject;
54 class StarZone;
55 
57 namespace StarWriterStruct
58 {
61 struct Attribute {
62 public:
64  Attribute() : m_attribute(), m_position(-1,-1)
65  {
66  }
68  ~Attribute();
70  friend std::ostream &operator<<(std::ostream &o, Attribute const &attribute);
72  bool read(StarZone &zone, StarObject &object);
74  static bool readList(StarZone &zone, std::vector<Attribute> &attributeList, StarObject &object);
76  shared_ptr<StarAttribute> m_attribute;
79 };
80 
83 class Bookmark
84 {
85 public:
87  Bookmark() : m_shortName(""), m_name(""), m_offset(0), m_key(0), m_modifier(0)
88  {
89  }
91  friend std::ostream &operator<<(std::ostream &o, Bookmark const &mark);
93  bool read(StarZone &zone);
95  static bool readList(StarZone &zone, std::vector<Bookmark> &markList);
97  librevenge::RVNGString m_shortName;
99  librevenge::RVNGString m_name;
101  int m_offset;
103  int m_key;
107  librevenge::RVNGString m_macroNames[4];
108 };
109 
112 struct DatabaseName {
113 public:
115  DatabaseName() : m_sql(""), m_dataList()
116  {
117  }
119  friend std::ostream &operator<<(std::ostream &o, DatabaseName const &databaseName);
121  bool read(StarZone &zone);
123  struct Data {
125  Data() : m_name(""), m_selection(0,0)
126  {
127  }
129  friend std::ostream &operator<<(std::ostream &o, Data const &data)
130  {
131  o << data.m_name.cstr() << ",";
132  if (data.m_selection!=STOFFVec2i(0,0)) o << "select=" << STOFFVec2i(0,0) << ",";
133  return o;
134  }
136  librevenge::RVNGString m_name;
139  };
141  librevenge::RVNGString m_names[2];
143  librevenge::RVNGString m_sql;
145  std::vector<Data> m_dataList;
146 };
147 
150 struct Dictionary {
151 public:
153  Dictionary() : m_dataList()
154  {
155  }
157  friend std::ostream &operator<<(std::ostream &o, Dictionary const &dictionary);
159  bool read(StarZone &zone);
161  struct Data {
163  Data() : m_name(""), m_language(0), m_id(0), m_spellWrong(true)
164  {
165  }
167  friend std::ostream &operator<<(std::ostream &o, Data const &data)
168  {
169  o << data.m_name.cstr() << ",";
170  if (data.m_language) o << "language=" << data.m_language << ",";
171  if (data.m_id) o << "id=" << data.m_id << ",";
172  if (data.m_spellWrong) o << "spellWrong,";
173  return o;
174  }
176  librevenge::RVNGString m_name;
180  int m_id;
183  };
185  std::vector<Data> m_dataList;
186 };
187 
190 struct DocStats {
191 public:
193  DocStats() : m_isModified(false)
194  {
195  for (int i=0; i<7; ++i) m_numbers[i]=0;
196  }
198  friend std::ostream &operator<<(std::ostream &o, DocStats const &docStats);
200  bool read(StarZone &zone);
202  long m_numbers[7];
205 };
206 
209 struct Macro {
210 public:
212  Macro() : m_key(0), m_scriptType(0)
213  {
214  }
216  friend std::ostream &operator<<(std::ostream &o, Macro const &macro);
218  bool read(StarZone &zone);
220  static bool readList(StarZone &zone, std::vector<Macro> &macroLis);
222  int m_key;
224  librevenge::RVNGString m_names[2];
227 };
228 
231 struct Mark {
232 public:
234  Mark() : m_type(-1), m_id(-1), m_offset(-1)
235  {
236  }
238  friend std::ostream &operator<<(std::ostream &o, Mark const &mark);
240  bool read(StarZone &zone);
242  int m_type;
244  int m_id;
246  int m_offset;
247 };
248 
251 struct NodeRedline {
252 public:
254  NodeRedline() : m_id(-1), m_offset(-1), m_flags(0)
255  {
256  }
258  friend std::ostream &operator<<(std::ostream &o, NodeRedline const &nodeRedline);
260  bool read(StarZone &zone);
262  int m_id;
264  int m_offset;
266  int m_flags;
267 };
268 
271 struct NoteInfo {
272 public:
274  explicit NoteInfo(bool isFootnote) : m_isFootnote(isFootnote), m_type(0), m_ftnOffset(0), m_posType(0), m_numType(0)
275  {
276  for (int i=0; i<4; ++i) m_idx[i]=0xFFFF;
277  }
279  friend std::ostream &operator<<(std::ostream &o, NoteInfo const &noteInfo);
281  bool read(StarZone &zone);
285  int m_type;
287  int m_idx[4];
291  librevenge::RVNGString m_strings[4];
296 };
297 
300 struct PrintData {
301 public:
303  PrintData() : m_flags(0), m_colRow(1,1)
304  {
305  for (int i=0; i<6; ++i) m_spacings[i]=0;
306  }
308  friend std::ostream &operator<<(std::ostream &o, PrintData const &printData);
310  bool read(StarZone &zone);
312  int m_flags;
316  int m_spacings[6];
317 };
318 
321 struct Redline {
322 public:
324  Redline() : m_type(0), m_stringId(0), m_date(0), m_time(0), m_comment()
325  {
326  }
328  friend std::ostream &operator<<(std::ostream &o, Redline const &redline);
330  bool read(StarZone &zone);
332  static bool readList(StarZone &zone, std::vector<Redline> &redlineList);
334  static bool readListList(StarZone &zone, std::vector<std::vector<Redline> > &redlineListList);
336  int m_type;
340  long m_date;
342  long m_time;
344  librevenge::RVNGString m_comment;
345 };
346 
349 struct TOX {
350 public:
352  TOX() : m_type(0), m_createType(0), m_captionDisplay(0), m_styleId(0xFFFF), m_data(0), m_formFlags(0)
353  , m_title(""), m_name(""), m_OLEOptions(0), m_stringIdList(), m_styleList(), m_titleLength(), m_formatList()
354  {
355  for (int i=0; i<3; ++i) m_stringIds[i]=0xFFFF;
356  }
358  ~TOX();
360  friend std::ostream &operator<<(std::ostream &o, TOX const &tox);
362  bool read(StarZone &zone, StarObject &object);
364  static bool readList(StarZone &zone, std::vector<TOX> &toxList, StarObject &object);
365 
367  struct Style {
369  Style() : m_level(0), m_names()
370  {
371  }
373  friend std::ostream &operator<<(std::ostream &o, Style const &style)
374  {
375  o << "level=" << style.m_level << ",";
376  if (!style.m_names.empty()) {
377  o << "names=[";
378  for (size_t i=0; i<style.m_names.size(); ++i) o << style.m_names[i].cstr() << ",";
379  o << "],";
380  }
381  return o;
382  }
384  int m_level;
386  std::vector<librevenge::RVNGString> m_names;
387  };
389  int m_type;
395  int m_stringIds[3];
399  int m_data;
403  librevenge::RVNGString m_title;
405  librevenge::RVNGString m_name;
409  std::vector<int> m_stringIdList;
411  std::vector<Style> m_styleList;
415  std::vector<shared_ptr<StarFormatManagerInternal::FormatDef> > m_formatList;
416 };
417 
420 struct TOX51 {
421 public:
423  TOX51() : m_typeName(""), m_type(0), m_createType(0), m_firstTabPos(0), m_title(""), m_patternList(), m_stringIdList(), m_infLevel(0)
424  {
425  }
427  ~TOX51();
429  friend std::ostream &operator<<(std::ostream &o, TOX51 const &tox);
431  bool read(StarZone &zone, StarObject &object);
433  static bool readList(StarZone &zone, std::vector<TOX51> &toxList, StarObject &object);
434 
436  librevenge::RVNGString m_typeName;
438  int m_type;
444  librevenge::RVNGString m_title;
446  std::vector<librevenge::RVNGString> m_patternList;
448  std::vector<int> m_stringIdList;
451 };
452 
453 }
454 #endif
455 // vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab:
long m_date
the date
Definition: StarWriterStruct.hxx:340
int m_id
the id
Definition: StarWriterStruct.hxx:262
librevenge::RVNGString m_name
the name
Definition: StarWriterStruct.hxx:405
the doc statistic
Definition: StarWriterStruct.hxx:300
struct use an attribute and a position
Definition: StarWriterStruct.hxx:61
TOX51()
constructor
Definition: StarWriterStruct.hxx:423
int m_captionDisplay
the captionDisplay
Definition: StarWriterStruct.hxx:393
int m_type
the type: 2: bookmark-start, 3:bookmark-end
Definition: StarWriterStruct.hxx:242
int m_styleId
the style id
Definition: StarWriterStruct.hxx:397
structure to store a TOX in a text zone
Definition: StarWriterStruct.hxx:349
the doc statistic
Definition: StarWriterStruct.hxx:190
int m_infLevel
the inf level
Definition: StarWriterStruct.hxx:450
int m_key
the key
Definition: StarWriterStruct.hxx:103
NoteInfo(bool isFootnote)
constructor
Definition: StarWriterStruct.hxx:274
bool m_isFootnote
a flag to know if this corresponds to a footnote or a endnote
Definition: StarWriterStruct.hxx:283
int m_data
the number of data?
Definition: StarWriterStruct.hxx:399
bool m_isModified
modified flags
Definition: StarWriterStruct.hxx:204
DatabaseName()
constructor
Definition: StarWriterStruct.hxx:115
structure to store a bookmark
Definition: StarWriterStruct.hxx:83
int m_scriptType
the scriptType
Definition: StarWriterStruct.hxx:226
int m_offset
the offset
Definition: StarWriterStruct.hxx:246
structure to store a TOX51 in a text zone
Definition: StarWriterStruct.hxx:420
structure to store a macro in a text zone
Definition: StarWriterStruct.hxx:209
librevenge::RVNGString m_title
the title
Definition: StarWriterStruct.hxx:403
std::vector< Data > m_dataList
the list of data
Definition: StarWriterStruct.hxx:145
PrintData()
constructor
Definition: StarWriterStruct.hxx:303
long m_titleLength
the title length
Definition: StarWriterStruct.hxx:413
librevenge::RVNGString m_shortName
the shortname
Definition: StarWriterStruct.hxx:97
structure to store a redline in a text zone
Definition: StarWriterStruct.hxx:321
std::vector< librevenge::RVNGString > m_names
the list of names
Definition: StarWriterStruct.hxx:386
std::ostream & operator<<(std::ostream &o, STOFFColor const &c)
Definition: libstaroffice_internal.cxx:213
Internal: the structures of a StarFormatManager.
Definition: StarFormatManager.cxx:57
Style()
constructor
Definition: StarWriterStruct.hxx:369
int m_language
the language
Definition: StarWriterStruct.hxx:178
shared_ptr< StarAttribute > m_attribute
the attribute
Definition: StarWriterStruct.hxx:76
Attribute()
constructor
Definition: StarWriterStruct.hxx:64
structure to store a nodeRedline in a text zone
Definition: StarWriterStruct.hxx:251
STOFFVec2i m_colRow
the row, col dim
Definition: StarWriterStruct.hxx:314
Mark()
constructor
Definition: StarWriterStruct.hxx:234
Macro()
constructor
Definition: StarWriterStruct.hxx:212
friend std::ostream & operator<<(std::ostream &o, Data const &data)
operator<<
Definition: StarWriterStruct.hxx:167
int m_type
the type
Definition: StarWriterStruct.hxx:389
std::vector< librevenge::RVNGString > m_patternList
the pattern list
Definition: StarWriterStruct.hxx:446
int m_formFlags
the format flags?
Definition: StarWriterStruct.hxx:401
librevenge::RVNGString m_sql
the SQL string
Definition: StarWriterStruct.hxx:143
int m_OLEOptions
the ole options
Definition: StarWriterStruct.hxx:407
int m_id
the id
Definition: StarWriterStruct.hxx:180
std::vector< int > m_stringIdList
a list of template string ids
Definition: StarWriterStruct.hxx:448
namespace use to keep basic writer structure
Definition: StarWriterStruct.cxx:48
librevenge::RVNGString m_typeName
the typeName
Definition: StarWriterStruct.hxx:436
librevenge::RVNGString m_name
the name
Definition: StarWriterStruct.hxx:176
int m_createType
the createType
Definition: StarWriterStruct.hxx:440
int m_id
the id
Definition: StarWriterStruct.hxx:244
virtual class used to store the different attribute
Definition: StarAttribute.hxx:62
bool m_spellWrong
a flag to know if we do spell or not
Definition: StarWriterStruct.hxx:182
Bookmark()
the constructor
Definition: StarWriterStruct.hxx:87
DocStats()
constructor
Definition: StarWriterStruct.hxx:193
STOFFVec2i m_selection
the start/end position
Definition: StarWriterStruct.hxx:138
std::vector< shared_ptr< StarFormatManagerInternal::FormatDef > > m_formatList
the format
Definition: StarWriterStruct.hxx:415
a data of a DatabaseName
Definition: StarWriterStruct.hxx:123
TOX()
constructor
Definition: StarWriterStruct.hxx:352
std::vector< Style > m_styleList
a list of style names?
Definition: StarWriterStruct.hxx:411
int m_type
the type
Definition: StarWriterStruct.hxx:438
Data()
constructor
Definition: StarWriterStruct.hxx:125
int m_key
the key
Definition: StarWriterStruct.hxx:222
int m_posType
the posType
Definition: StarWriterStruct.hxx:293
friend std::ostream & operator<<(std::ostream &o, Style const &style)
operator<<
Definition: StarWriterStruct.hxx:373
Redline()
constructor
Definition: StarWriterStruct.hxx:324
a style
Definition: StarWriterStruct.hxx:367
long m_time
the time
Definition: StarWriterStruct.hxx:342
STOFFVec2< int > STOFFVec2i
STOFFVec2 of int.
Definition: libstaroffice_internal.hxx:748
int m_stringId
the stringId
Definition: StarWriterStruct.hxx:338
int m_numType
the numType
Definition: StarWriterStruct.hxx:295
int m_createType
the createType
Definition: StarWriterStruct.hxx:391
Data()
constructor
Definition: StarWriterStruct.hxx:163
int m_flags
the flags
Definition: StarWriterStruct.hxx:312
a data of a Dictionary
Definition: StarWriterStruct.hxx:161
int m_offset
the offset
Definition: StarWriterStruct.hxx:101
librevenge::RVNGString m_comment
the comment
Definition: StarWriterStruct.hxx:344
NodeRedline()
constructor
Definition: StarWriterStruct.hxx:254
librevenge::RVNGString m_name
the name
Definition: StarWriterStruct.hxx:136
std::vector< int > m_stringIdList
a list of template string ids
Definition: StarWriterStruct.hxx:409
int m_offset
the offset
Definition: StarWriterStruct.hxx:264
int m_type
the type
Definition: StarWriterStruct.hxx:285
structure to store a dictionary in a text zone
Definition: StarWriterStruct.hxx:150
librevenge::RVNGString m_title
the title
Definition: StarWriterStruct.hxx:444
structure to store a endnoteInfo or a footnoteInfo in a text zone
Definition: StarWriterStruct.hxx:271
int m_level
the level
Definition: StarWriterStruct.hxx:384
friend std::ostream & operator<<(std::ostream &o, Data const &data)
operator<<
Definition: StarWriterStruct.hxx:129
Dictionary()
constructor
Definition: StarWriterStruct.hxx:153
an object corresponding to an OLE directory
Definition: StarObject.hxx:64
librevenge::RVNGString m_name
the name
Definition: StarWriterStruct.hxx:99
a zone in a StarOffice file
Definition: StarZone.hxx:56
structure to store a mark in a text zone
Definition: StarWriterStruct.hxx:231
int m_type
the type
Definition: StarWriterStruct.hxx:336
int m_modifier
the modifier
Definition: StarWriterStruct.hxx:105
std::vector< Data > m_dataList
the list of data
Definition: StarWriterStruct.hxx:185
int m_firstTabPos
the firstTabPos
Definition: StarWriterStruct.hxx:442
int m_ftnOffset
the ftnOffset
Definition: StarWriterStruct.hxx:289
STOFFVec2i m_position
the begin/end position
Definition: StarWriterStruct.hxx:78
int m_flags
the flags
Definition: StarWriterStruct.hxx:266
structure to store a databaseName in a text zone
Definition: StarWriterStruct.hxx:112

Generated on Wed Feb 22 2017 09:28:18 for libstaroffice by doxygen 1.8.13