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 <librevenge/librevenge.h>
42
48 };
51
54 m_label(""), m_prefix(""), m_suffix(""), m_bullet(""), m_spanId(-1), m_extra("")
55 {
56 }
59
61 bool isDefault() const
62 {
63 return m_type ==DEFAULT;
64 }
66 bool isNumeric() const
67 {
68 return m_type !=DEFAULT && m_type !=NONE && m_type != BULLET;
69 }
71 void addTo(librevenge::RVNGPropertyList &propList, MWAWFontManagerPtr fontManager) const;
72
74 int getStartValue() const
75 {
76 return m_startValue <= 0 ? 1 : m_startValue;
77 }
78
80 int cmp(MWAWListLevel const &levl) const;
81
83 friend std::ostream &operator<<(std::ostream &o, MWAWListLevel const &ft);
84
90 double m_labelWidth ;
96 librevenge::RVNGString m_label ,
103 std::string m_extra;
104};
105
108{
109public:
112 {
113 m_id[0] = m_id[1] = -1;
114 }
115
117 int getId() const
118 {
119 return m_id[0];
120 }
121
123 int getMarker() const
124 {
125 return m_modifyMarker;
126 }
128 void resize(int levl);
130 bool isCompatibleWith(int levl, MWAWListLevel const &level) const;
132 bool isCompatibleWith(MWAWList const &newList) const;
134 void updateIndicesFrom(MWAWList const &list);
135
140 void swapId() const
141 {
142 int tmp = m_id[0];
143 m_id[0] = m_id[1];
144 m_id[1] = tmp;
145 }
146
148 void setId(int newId) const;
149
151 MWAWListLevel getLevel(int levl) const
152 {
153 if (levl >= 0 && levl < int(m_levels.size()))
154 return m_levels[size_t(levl)];
155 MWAW_DEBUG_MSG(("MWAWList::getLevel: can not find level %d\n", levl));
156 return MWAWListLevel();
157 }
159 int numLevels() const
160 {
161 return int(m_levels.size());
162 }
164 void set(int levl, MWAWListLevel const &level);
165
167 void setLevel(int levl) const;
169 void openElement() const;
171 void closeElement() const {}
173 int getStartValueForNextElement() const;
175 void setStartValueForNextElement(int value);
176
178 bool isNumeric(int levl) const;
179
181 bool addTo(int level, librevenge::RVNGPropertyList &pList, MWAWFontManagerPtr fontManager) const;
182
183protected:
185 std::vector<MWAWListLevel> m_levels;
186
187 mutable std::vector<int> m_actualIndices, m_nextIndices;
189 mutable int m_actLevel;
191 mutable int m_id[2];
193 mutable int m_modifyMarker;
194};
195
198{
199public:
201 explicit MWAWListManager(MWAWFontManagerPtr fontManager);
205 bool needToSend(int index, std::vector<int> &idMarkerList) const;
207 shared_ptr<MWAWList> getList(int index) const;
209 shared_ptr<MWAWList> getNewList(shared_ptr<MWAWList> actList, int levl, MWAWListLevel const &level);
210protected:
214 std::vector<MWAWList> m_listList;
216 mutable std::vector<int> m_sendIdMarkerList;
217};
218#endif
219// vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab:
a manager which manages the lists, keeps the different kind of lists, to assure the unicity of each l...
Definition: MWAWList.hxx:198
bool needToSend(int index, std::vector< int > &idMarkerList) const
check if a list need to be send/resend to the interface
Definition: MWAWList.cxx:373
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:404
std::vector< MWAWList > m_listList
the list of created list
Definition: MWAWList.hxx:214
MWAWFontManagerPtr m_fontManager
the font manager
Definition: MWAWList.hxx:212
std::vector< int > m_sendIdMarkerList
the list of send list to interface
Definition: MWAWList.hxx:216
MWAWListManager(MWAWFontManagerPtr fontManager)
the constructor
Definition: MWAWList.cxx:365
shared_ptr< MWAWList > getList(int index) const
returns a list with given index ( if found )
Definition: MWAWList.cxx:391
~MWAWListManager()
the destructor
Definition: MWAWList.cxx:369
a small structure used to store the informations about a list
Definition: MWAWList.hxx:108
int getStartValueForNextElement() const
returns the startvalue corresponding to the actual level ( or -1 for an unknown/unordered list)
Definition: MWAWList.cxx:331
void setStartValueForNextElement(int value)
set the startvalue corresponding to the actual level
Definition: MWAWList.cxx:319
MWAWList()
default constructor
Definition: MWAWList.hxx:111
std::vector< int > m_nextIndices
Definition: MWAWList.hxx:187
MWAWListLevel getLevel(int levl) const
returns a level if it exists
Definition: MWAWList.hxx:151
int getId() const
returns the list id
Definition: MWAWList.hxx:117
void swapId() const
swap the list id
Definition: MWAWList.hxx:140
std::vector< MWAWListLevel > m_levels
the different levels
Definition: MWAWList.hxx:185
void set(int levl, MWAWListLevel const &level)
sets a level
Definition: MWAWList.cxx:286
void closeElement() const
close the list element
Definition: MWAWList.hxx:171
int m_modifyMarker
a modification marker ( can be used to check if a list has been send to a interface )
Definition: MWAWList.hxx:193
int m_id[2]
the identificator ( actual and auxilliar )
Definition: MWAWList.hxx:191
std::vector< int > m_actualIndices
Definition: MWAWList.hxx:187
int getMarker() const
returns the actual modify marker
Definition: MWAWList.hxx:123
void setId(int newId) const
set the list id
Definition: MWAWList.cxx:261
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:238
bool isNumeric(int levl) const
returns true is a level is numeric
Definition: MWAWList.cxx:352
void openElement() const
open the list element
Definition: MWAWList.cxx:342
void updateIndicesFrom(MWAWList const &list)
update the indices, the actual level from newList
Definition: MWAWList.cxx:226
int numLevels() const
returns the number of level
Definition: MWAWList.hxx:159
void setLevel(int levl) const
set the list level
Definition: MWAWList.cxx:305
bool addTo(int level, librevenge::RVNGPropertyList &pList, MWAWFontManagerPtr fontManager) const
retrieve the list level property
Definition: MWAWList.cxx:267
void resize(int levl)
resize the number of level of the list (keeping only n level)
Definition: MWAWList.cxx:210
int m_actLevel
the actual levels
Definition: MWAWList.hxx:189
shared_ptr< MWAWFontManager > MWAWFontManagerPtr
a smart pointer of MWAWFontManager
Definition: libmwaw_internal.hxx:499
#define MWAW_DEBUG_MSG(M)
Definition: libmwaw_internal.hxx:127
small structure to keep information about a list level
Definition: MWAWList.hxx:44
int cmp(MWAWListLevel const &levl) const
comparison function ( compare all values excepted m_startValues
Definition: MWAWList.cxx:116
Alignment
the item alignment
Definition: MWAWList.hxx:50
@ RIGHT
Definition: MWAWList.hxx:50
@ CENTER
Definition: MWAWList.hxx:50
@ LEFT
Definition: MWAWList.hxx:50
int getStartValue() const
returns the start value (if set) or 1
Definition: MWAWList.hxx:74
~MWAWListLevel()
destructor
Definition: MWAWList.hxx:58
double m_labelAfterSpace
the minimum distance between the label and the text
Definition: MWAWList.hxx:91
bool isNumeric() const
returns true if the list is decimal, alpha or roman
Definition: MWAWList.hxx:66
std::string m_extra
extra data
Definition: MWAWList.hxx:103
void addTo(librevenge::RVNGPropertyList &propList, MWAWFontManagerPtr fontManager) const
add the information of this level in the propList
Definition: MWAWList.cxx:47
Type
the type of the level
Definition: MWAWList.hxx:46
@ UPPER_ROMAN
Definition: MWAWList.hxx:47
@ LOWER_ALPHA
Definition: MWAWList.hxx:46
@ BULLET
Definition: MWAWList.hxx:46
@ LABEL
Definition: MWAWList.hxx:47
@ UPPER_ALPHA
Definition: MWAWList.hxx:46
@ LOWER_ROMAN
Definition: MWAWList.hxx:47
@ DEFAULT
Definition: MWAWList.hxx:46
@ NONE
Definition: MWAWList.hxx:46
@ DECIMAL
Definition: MWAWList.hxx:46
MWAWListLevel()
basic constructor
Definition: MWAWList.hxx:53
librevenge::RVNGString m_bullet
the bullet if we have an bullet level
Definition: MWAWList.hxx:99
Type m_type
the type of the level
Definition: MWAWList.hxx:86
friend std::ostream & operator<<(std::ostream &o, MWAWListLevel const &ft)
operator<<
Definition: MWAWList.cxx:146
double m_labelBeforeSpace
the extra space between inserting a label
Definition: MWAWList.hxx:89
librevenge::RVNGString m_label
the text label
Definition: MWAWList.hxx:96
int m_startValue
the actual value (if this is an ordered level )
Definition: MWAWList.hxx:95
bool isDefault() const
returns true if the level type was not set
Definition: MWAWList.hxx:61
librevenge::RVNGString m_prefix
string which preceedes the number if we have an ordered level
Definition: MWAWList.hxx:97
int m_spanId
the style span id
Definition: MWAWList.hxx:101
librevenge::RVNGString m_suffix
string which follows the number if we have an ordered level
Definition: MWAWList.hxx:98
Alignment m_alignment
the alignment ( left, center, ...)
Definition: MWAWList.hxx:93
int m_numBeforeLabels
the number of label to show before this
Definition: MWAWList.hxx:88
double m_labelWidth
the minimum label width
Definition: MWAWList.hxx:90

Generated on Wed Jan 19 2022 22:23:16 for libmwaw by doxygen 1.9.3