Main Page
Namespaces
Classes
Files
File List
File Members
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
class
WPXDocumentInterface;
45
47
struct
MWAWListLevel
{
49
enum
Type
{
DEFAULT
,
NONE
,
BULLET
,
DECIMAL
,
LOWER_ALPHA
,
UPPER_ALPHA
,
50
LOWER_ROMAN
,
UPPER_ROMAN
,
LABEL
51
};
53
enum
Alignment
{
LEFT
,
RIGHT
,
CENTER
};
54
56
MWAWListLevel
() :
m_type
(
NONE
),
m_labelBeforeSpace
(0.0),
m_labelWidth
(0.1),
m_labelAfterSpace
(0.0),
m_numBeforeLabels
(0),
m_alignment
(
LEFT
),
m_startValue
(0),
57
m_label
(
""
),
m_prefix
(
""
),
m_suffix
(
""
),
m_bullet
(
""
),
m_extra
(
""
) {
58
}
60
~MWAWListLevel
() {}
61
63
bool
isDefault
()
const
{
64
return
m_type
==
DEFAULT
;
65
}
67
bool
isNumeric
()
const
{
68
return
m_type
!=
DEFAULT
&&
m_type
!=
NONE
&&
m_type
!=
BULLET
;
69
}
71
void
addTo
(WPXPropertyList &propList)
const
;
72
74
int
getStartValue
()
const
{
75
return
m_startValue
<= 0 ? 1 :
m_startValue
;
76
}
77
79
int
cmp
(
MWAWListLevel
const
&levl)
const
;
80
82
friend
std::ostream &
operator<<
(std::ostream &o,
MWAWListLevel
const
&ft);
83
85
Type
m_type
;
86
double
m_labelBeforeSpace
;
87
double
m_labelWidth
;
88
double
m_labelAfterSpace
;
90
int
m_numBeforeLabels
;
92
Alignment
m_alignment
;
94
int
m_startValue
;
95
WPXString
m_label
,
96
m_prefix
,
97
m_suffix
,
98
m_bullet
;
100
std::string
m_extra
;
101
};
102
104
class
MWAWList
105
{
106
public
:
108
MWAWList
() :
m_levels
(),
m_actLevel
(-1),
m_actualIndices
(),
m_nextIndices
() {
109
m_id
[0] =
m_id
[1] = -1;
110
}
111
113
int
getId
()
const
{
114
return
m_id
[0];
115
}
116
118
void
resize
(
int
levl);
120
bool
isCompatibleWith
(
int
levl,
MWAWListLevel
const
&level)
const
;
122
bool
isCompatibleWith
(
MWAWList
const
&newList)
const
;
124
void
updateIndicesFrom
(
MWAWList
const
&list);
125
130
void
swapId
()
const
{
131
int
tmp =
m_id
[0];
132
m_id
[0] =
m_id
[1];
133
m_id
[1] = tmp;
134
}
135
137
void
setId
(
int
newId)
const
;
138
140
MWAWListLevel
getLevel
(
int
levl)
const
{
141
if
(levl >= 0 && levl <
int
(
m_levels
.size()))
142
return
m_levels
[size_t(levl)];
143
MWAW_DEBUG_MSG
((
"MWAWList::getLevel: can not find level %d\n"
, levl));
144
return
MWAWListLevel
();
145
}
147
int
numLevels
()
const
{
148
return
int(
m_levels
.size());
149
}
151
void
set
(
int
levl,
MWAWListLevel
const
&level);
152
154
void
setLevel
(
int
levl)
const
;
156
void
openElement
()
const
;
158
void
closeElement
()
const
{}
160
int
getStartValueForNextElement
()
const
;
162
void
setStartValueForNextElement
(
int
value);
163
165
bool
isNumeric
(
int
levl)
const
;
166
168
void
sendTo
(WPXDocumentInterface &docInterface,
int
level)
const
;
169
170
protected
:
172
std::vector<MWAWListLevel>
m_levels
;
173
175
mutable
int
m_actLevel
;
176
mutable
std::vector<int>
m_actualIndices
,
m_nextIndices
;
178
mutable
int
m_id
[2];
179
};
180
182
class
MWAWListManager
183
{
184
public
:
186
MWAWListManager
() :
m_listList
(),
m_sendIdList
() { }
188
~MWAWListManager
() { }
190
bool
send
(
int
index, WPXDocumentInterface &docInterface)
const
;
192
shared_ptr<MWAWList>
getList
(
int
index)
const
;
194
shared_ptr<MWAWList>
getNewList
(shared_ptr<MWAWList> actList,
int
levl,
MWAWListLevel
const
&level);
195
protected
:
197
void
resetSend
(
size_t
id
)
const
;
199
std::vector<MWAWList>
m_listList
;
201
mutable
std::vector<bool>
m_sendIdList
;
202
};
203
#endif
204
// vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab:
Generated on Tue Oct 8 2013 19:56:45 for libmwaw by
doxygen
1.8.4