MWAWList.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 MWAW_LIST_H
35 # define MWAW_LIST_H
36 
37 #include <iostream>
38 
39 #include <vector>
40 
41 #include <libwpd/libwpd.h>
42 
43 class WPXPropertyList;
44 
46 struct MWAWListLevel {
50  };
52  enum Alignment { LEFT, RIGHT, CENTER };
53 
56  m_label(""), m_prefix(""), m_suffix(""), m_bullet(""), m_extra("") {
57  }
60 
62  bool isDefault() const {
63  return m_type ==DEFAULT;
64  }
66  bool isNumeric() const {
67  return m_type !=DEFAULT && m_type !=NONE && m_type != BULLET;
68  }
70  void addTo(WPXPropertyList &propList) const;
71 
73  int getStartValue() const {
74  return m_startValue <= 0 ? 1 : m_startValue;
75  }
76 
78  int cmp(MWAWListLevel const &levl) const;
79 
81  friend std::ostream &operator<<(std::ostream &o, MWAWListLevel const &ft);
82 
86  double m_labelWidth ;
94  WPXString m_label ,
95  m_prefix ,
96  m_suffix,
97  m_bullet ;
99  std::string m_extra;
100 };
101 
103 class MWAWList
104 {
105 public:
108  m_id[0] = m_id[1] = -1;
109  }
110 
112  int getId() const {
113  return m_id[0];
114  }
115 
117  int getMarker() const {
118  return m_modifyMarker;
119  }
121  void resize(int levl);
123  bool isCompatibleWith(int levl, MWAWListLevel const &level) const;
125  bool isCompatibleWith(MWAWList const &newList) const;
127  void updateIndicesFrom(MWAWList const &list);
128 
133  void swapId() const {
134  int tmp = m_id[0];
135  m_id[0] = m_id[1];
136  m_id[1] = tmp;
137  }
138 
140  void setId(int newId) const;
141 
143  MWAWListLevel getLevel(int levl) const {
144  if (levl >= 0 && levl < int(m_levels.size()))
145  return m_levels[size_t(levl)];
146  MWAW_DEBUG_MSG(("MWAWList::getLevel: can not find level %d\n", levl));
147  return MWAWListLevel();
148  }
150  int numLevels() const {
151  return int(m_levels.size());
152  }
154  void set(int levl, MWAWListLevel const &level);
155 
157  void setLevel(int levl) const;
159  void openElement() const;
161  void closeElement() const {}
163  int getStartValueForNextElement() const;
165  void setStartValueForNextElement(int value);
166 
168  bool isNumeric(int levl) const;
169 
171  bool addTo(int level, WPXPropertyList &pList) const;
172 
173 protected:
175  std::vector<MWAWListLevel> m_levels;
176 
178  mutable int m_actLevel;
179  mutable std::vector<int> m_actualIndices, m_nextIndices;
181  mutable int m_id[2];
183  mutable int m_modifyMarker;
184 };
185 
188 {
189 public:
195  bool needToSend(int index, std::vector<int> &idMarkerList) const;
197  shared_ptr<MWAWList> getList(int index) const;
199  shared_ptr<MWAWList> getNewList(shared_ptr<MWAWList> actList, int levl, MWAWListLevel const &level);
200 protected:
202  std::vector<MWAWList> m_listList;
204  mutable std::vector<int> m_sendIdMarkerList;
205 };
206 #endif
207 // vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab:
MWAWList()
default constructor
Definition: MWAWList.hxx:107
Definition: MWAWList.hxx:52
int m_modifyMarker
a modification marker ( can be used to check if a list has been send to a interface ) ...
Definition: MWAWList.hxx:183
void setId(int newId) const
set the list id
Definition: MWAWList.cxx:241
bool isDefault() const
returns true if the level type was not set
Definition: MWAWList.hxx:62
Alignment
the item alignement
Definition: MWAWList.hxx:52
~MWAWListLevel()
destructor
Definition: MWAWList.hxx:59
shared_ptr< MWAWList > getNewList(shared_ptr< MWAWList > actList, int levl, MWAWListLevel const &level)
returns a new list corresponding to a list where we have a new level
Definition: MWAWList.cxx:376
Definition: MWAWList.hxx:48
double m_labelBeforeSpace
the extra space between inserting a label
Definition: MWAWList.hxx:85
void openElement() const
open the list element
Definition: MWAWList.cxx:322
MWAWListLevel()
basic constructor
Definition: MWAWList.hxx:55
int cmp(MWAWListLevel const &levl) const
comparison function ( compare all values excepted m_startValues
Definition: MWAWList.cxx:103
bool isNumeric() const
returns true if the list is decimal, alpha or roman
Definition: MWAWList.hxx:66
bool needToSend(int index, std::vector< int > &idMarkerList) const
check if a list need to be send/resend to the interface
Definition: MWAWList.cxx:345
Definition: MWAWList.hxx:48
void updateIndicesFrom(MWAWList const &list)
update the indices, the actual level from newList
Definition: MWAWList.cxx:206
Definition: MWAWList.hxx:48
MWAWListLevel getLevel(int levl) const
returns a level if it exists
Definition: MWAWList.hxx:143
small structure to keep information about a list level
Definition: MWAWList.hxx:46
int m_numBeforeLabels
the number of label to show before this
Definition: MWAWList.hxx:89
std::vector< int > m_nextIndices
Definition: MWAWList.hxx:179
int getStartValueForNextElement() const
returns the startvalue corresponding to the actual level ( or -1 for an unknown/unordered list) ...
Definition: MWAWList.cxx:311
Definition: MWAWList.hxx:49
int m_id[2]
the identificator ( actual and auxilliar )
Definition: MWAWList.hxx:181
double m_labelAfterSpace
the minimum distance between the label and the text
Definition: MWAWList.hxx:87
#define MWAW_DEBUG_MSG(M)
Definition: libmwaw_internal.hxx:116
void setStartValueForNextElement(int value)
set the startvalue corresponding to the actual level
Definition: MWAWList.cxx:299
std::vector< MWAWListLevel > m_levels
the different levels
Definition: MWAWList.hxx:175
Definition: MWAWList.hxx:52
void setLevel(int levl) const
set the list level
Definition: MWAWList.cxx:285
WPXString m_suffix
string which follows the number if we have an ordered level
Definition: MWAWList.hxx:94
WPXString m_prefix
string which preceedes the number if we have an ordered level
Definition: MWAWList.hxx:94
int getId() const
returns the list id
Definition: MWAWList.hxx:112
std::vector< int > m_sendIdMarkerList
the list of send list to interface
Definition: MWAWList.hxx:204
Definition: MWAWList.hxx:48
Definition: MWAWList.hxx:52
Definition: MWAWList.hxx:49
void resize(int levl)
resize the number of level of the list (keeping only n level)
Definition: MWAWList.cxx:190
void closeElement() const
close the list element
Definition: MWAWList.hxx:161
shared_ptr< MWAWList > getList(int index) const
returns a list with given index ( if found )
Definition: MWAWList.cxx:363
bool addTo(int level, WPXPropertyList &pList) const
retrieve the list level property
Definition: MWAWList.cxx:247
a manager which manages the lists, keeps the different kind of lists, to assure the unicity of each l...
Definition: MWAWList.hxx:187
bool isCompatibleWith(int levl, MWAWListLevel const &level) const
returns true if we can add a new level in the list without changing is meaning
Definition: MWAWList.cxx:218
Definition: MWAWList.hxx:48
~MWAWListManager()
the destructor
Definition: MWAWList.hxx:193
Type m_type
the type of the level
Definition: MWAWList.hxx:84
int getStartValue() const
returns the start value (if set) or 1
Definition: MWAWList.hxx:73
Definition: MWAWList.hxx:49
friend std::ostream & operator<<(std::ostream &o, MWAWListLevel const &ft)
operator&lt;&lt;
Definition: MWAWList.cxx:131
std::vector< int > m_actualIndices
Definition: MWAWList.hxx:179
std::string m_extra
extra data
Definition: MWAWList.hxx:99
bool isNumeric(int levl) const
returns true is a level is numeric
Definition: MWAWList.cxx:332
Definition: MWAWList.hxx:48
int getMarker() const
returns the actual modify marker
Definition: MWAWList.hxx:117
WPXString m_bullet
the bullet if we have an bullet level
Definition: MWAWList.hxx:94
Alignment m_alignment
the alignement ( left, center, ...)
Definition: MWAWList.hxx:91
WPXString m_label
the text label
Definition: MWAWList.hxx:94
int numLevels() const
returns the number of level
Definition: MWAWList.hxx:150
void swapId() const
swap the list id
Definition: MWAWList.hxx:133
double m_labelWidth
the minimum label width
Definition: MWAWList.hxx:86
a small structure used to store the informations about a list
Definition: MWAWList.hxx:103
Type
the type of the level
Definition: MWAWList.hxx:48
int m_startValue
the actual value (if this is an ordered level )
Definition: MWAWList.hxx:93
MWAWListManager()
the constructor
Definition: MWAWList.hxx:191
int m_actLevel
the actual levels
Definition: MWAWList.hxx:178
void set(int levl, MWAWListLevel const &level)
sets a level
Definition: MWAWList.cxx:266
std::vector< MWAWList > m_listList
the list of created list
Definition: MWAWList.hxx:202
void addTo(WPXPropertyList &propList) const
add the information of this level in the propList
Definition: MWAWList.cxx:46

Generated on Tue Mar 10 2015 17:32:09 for libmwaw by doxygen 1.8.5