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 <iostream>
38
#include <vector>
39
40
#include <librevenge/librevenge.h>
41
42
#include "
libmwaw_internal.hxx
"
43
#include "
MWAWList.hxx
"
44
46
struct
MWAWTabStop
{
48
enum
Alignment
{
LEFT
,
RIGHT
,
CENTER
,
DECIMAL
,
BAR
};
50
MWAWTabStop
(
double
position = 0.0,
Alignment
alignment =
LEFT
, uint16_t leaderCharacter=
'\0'
, uint16_t decimalCharacter =
'.'
) :
51
m_position
(position),
m_alignment
(alignment),
m_leaderCharacter
(leaderCharacter),
m_decimalCharacter
(decimalCharacter)
52
{
53
}
55
void
addTo
(librevenge::RVNGPropertyListVector &propList,
double
decalX=0.0)
const
;
57
bool
operator==
(
MWAWTabStop
const
&tabs)
const
58
{
59
return
cmp
(tabs)==0;
60
}
62
bool
operator!=
(
MWAWTabStop
const
&tabs)
const
63
{
64
return
cmp
(tabs)!=0;
65
}
67
friend
std::ostream &
operator<<
(std::ostream &o,
MWAWTabStop
const
&ft);
69
int
cmp
(
MWAWTabStop
const
&tabs)
const
;
71
double
m_position
;
73
Alignment
m_alignment
;
75
uint16_t
m_leaderCharacter
;
77
uint16_t
m_decimalCharacter
;
78
};
79
81
class
MWAWParagraph
82
{
83
public
:
85
enum
{
NoBreakBit
= 0x1,
NoBreakWithNextBit
=0x2 };
87
enum
Justification
{
JustificationLeft
,
JustificationFull
,
JustificationCenter
,
88
JustificationRight
,
JustificationFullAllLines
89
};
91
enum
LineSpacingType
{
Fixed
,
AtLeast
};
92
94
MWAWParagraph
();
96
virtual
~MWAWParagraph
();
98
bool
operator==
(
MWAWParagraph
const
&p)
const
99
{
100
return
cmp
(p)==0;
101
}
103
bool
operator!=
(
MWAWParagraph
const
&p)
const
104
{
105
return
cmp
(p)!=0;
106
}
108
int
cmp
(
MWAWParagraph
const
&p)
const
;
110
double
getMarginsWidth
()
const
;
112
bool
hasBorders
()
const
;
114
bool
hasDifferentBorders
()
const
;
116
void
resizeBorders
(
size_t
newSize)
117
{
118
MWAWBorder
empty;
119
empty.
m_style
=
MWAWBorder::None
;
120
m_borders
.resize(newSize,
MWAWVariable<MWAWBorder>
(empty));
121
}
123
void
setInterline
(
double
value, librevenge::RVNGUnit unit,
LineSpacingType
type=
Fixed
)
124
{
125
m_spacings
[0]=value;
126
m_spacingsInterlineUnit
=unit;
127
m_spacingsInterlineType
=type;
128
}
130
void
addTo
(librevenge::RVNGPropertyList &propList,
bool
inTable)
const
;
131
133
void
insert
(
MWAWParagraph
const
¶);
135
friend
std::ostream &
operator<<
(std::ostream &o,
MWAWParagraph
const
&ft);
136
142
MWAWVariable<double>
m_margins
[3];
// 0: first line left, 1: left, 2: right
144
MWAWVariable<librevenge::RVNGUnit>
m_marginsUnit
;
150
MWAWVariable<double>
m_spacings
[3];
// 0: interline, 1: before, 2: after
152
MWAWVariable<librevenge::RVNGUnit>
m_spacingsInterlineUnit
;
154
MWAWVariable<LineSpacingType>
m_spacingsInterlineType
;
156
MWAWVariable<std::vector<MWAWTabStop>
>
m_tabs
;
158
MWAWVariable<bool>
m_tabsRelativeToLeftMargin
;
159
161
MWAWVariable<Justification>
m_justify
;
163
MWAWVariable<int>
m_breakStatus
;
// BITS: 1: unbreakable, 2: dont break after
164
166
MWAWVariable<int>
m_listLevelIndex
;
168
MWAWVariable<int>
m_listId
;
170
MWAWVariable<int>
m_listStartValue
;
172
MWAWVariable<MWAWListLevel>
m_listLevel
;
173
175
MWAWVariable<MWAWColor>
m_backgroundColor
;
176
178
std::vector<MWAWVariable<MWAWBorder> >
m_borders
;
179
181
std::string
m_styleName
;
183
std::string
m_extra
;
184
};
185
#endif
186
// vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab:
Generated on Tue Mar 1 2016 23:42:50 for libmwaw by
doxygen
1.8.4