Main Page
Namespaces
Classes
Files
File List
File Members
MWAWParagraph.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_PARAGRAPH
35
# define MWAW_PARAGRAPH
36
37
#include <assert.h>
38
#include <iostream>
39
#include <vector>
40
41
#include <libwpd/libwpd.h>
42
43
#include "
libmwaw_internal.hxx
"
44
#include "
MWAWList.hxx
"
45
46
class
WPXPropertyList;
47
class
WPXPropertyListVector;
48
50
struct
MWAWTabStop
{
52
enum
Alignment
{
LEFT
,
RIGHT
,
CENTER
,
DECIMAL
,
BAR
};
54
MWAWTabStop
(
double
position = 0.0,
Alignment
alignment =
LEFT
, uint16_t leaderCharacter=
'\0'
, uint16_t decimalCharacter =
'.'
) :
55
m_position
(position),
m_alignment
(alignment),
m_leaderCharacter
(leaderCharacter),
m_decimalCharacter
(decimalCharacter) {
56
}
58
void
addTo
(WPXPropertyListVector &propList,
double
decalX=0.0)
const
;
60
bool
operator==
(
MWAWTabStop
const
&tabs)
const
{
61
return
cmp
(tabs)==0;
62
}
64
bool
operator!=
(
MWAWTabStop
const
&tabs)
const
{
65
return
cmp
(tabs)!=0;
66
}
68
friend
std::ostream &
operator<<
(std::ostream &o,
MWAWTabStop
const
&ft);
70
int
cmp
(
MWAWTabStop
const
&tabs)
const
;
72
double
m_position
;
74
Alignment
m_alignment
;
76
uint16_t
m_leaderCharacter
;
78
uint16_t
m_decimalCharacter
;
79
};
80
82
class
MWAWParagraph
83
{
84
public
:
86
enum
{
NoBreakBit
= 0x1,
NoBreakWithNextBit
=0x2 };
88
enum
Justification
{
JustificationLeft
,
JustificationFull
,
JustificationCenter
,
89
JustificationRight
,
JustificationFullAllLines
90
};
92
enum
LineSpacingType
{
Fixed
,
AtLeast
};
93
95
MWAWParagraph
();
97
virtual
~MWAWParagraph
();
99
bool
operator==
(
MWAWParagraph
const
&p)
const
{
100
return
cmp
(p)==0;
101
}
103
bool
operator!=
(
MWAWParagraph
const
&p)
const
{
104
return
cmp
(p)!=0;
105
}
107
int
cmp
(
MWAWParagraph
const
&p)
const
;
109
double
getMarginsWidth
()
const
;
111
bool
hasBorders
()
const
;
113
bool
hasDifferentBorders
()
const
;
115
void
resizeBorders
(
size_t
newSize) {
116
MWAWBorder
empty;
117
empty.
m_style
=
MWAWBorder::None
;
118
m_borders
.resize(newSize, empty);
119
}
121
void
setInterline
(
double
value, WPXUnit unit,
LineSpacingType
type=
Fixed
) {
122
m_spacings
[0]=value;
123
m_spacingsInterlineUnit
=unit;
124
m_spacingsInterlineType
=type;
125
}
127
void
addTo
(WPXPropertyList &propList,
bool
inTable)
const
;
129
void
addTabsTo
(WPXPropertyListVector &propList,
double
decalX=0.0)
const
;
130
132
void
insert
(
MWAWParagraph
const
¶);
134
friend
std::ostream &
operator<<
(std::ostream &o,
MWAWParagraph
const
&ft);
135
141
Variable<double>
m_margins
[3];
// 0: first line left, 1: left, 2: right
143
Variable<WPXUnit>
m_marginsUnit
;
149
Variable<double>
m_spacings
[3];
// 0: interline, 1: before, 2: after
151
Variable<WPXUnit>
m_spacingsInterlineUnit
;
153
Variable<LineSpacingType>
m_spacingsInterlineType
;
155
Variable<std::vector<MWAWTabStop>
>
m_tabs
;
157
Variable<bool>
m_tabsRelativeToLeftMargin
;
158
160
Variable<Justification>
m_justify
;
162
Variable<int>
m_breakStatus
;
// BITS: 1: unbreakable, 2: dont break after
163
165
Variable<int>
m_listLevelIndex
;
167
Variable<int>
m_listId
;
169
Variable<int>
m_listStartValue
;
171
Variable<MWAWListLevel>
m_listLevel
;
172
174
Variable<MWAWColor>
m_backgroundColor
;
175
177
std::vector<Variable<MWAWBorder> >
m_borders
;
178
180
std::string
m_extra
;
181
};
182
#endif
183
// vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab:
Generated on Thu Apr 24 2014 14:47:42 for libmwaw by
doxygen
1.8.3.1