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
!
operator!=
(tabs);
62
}
64
bool
operator!=
(
MWAWTabStop
const
&tabs)
const
{
65
return
m_position
< tabs.
m_position
||
m_position
> tabs.
m_position
||
66
m_alignment
!= tabs.
m_alignment
||
67
m_leaderCharacter
!= tabs.
m_leaderCharacter
||
68
m_decimalCharacter
!= tabs.
m_decimalCharacter
;
69
}
71
friend
std::ostream &
operator<<
(std::ostream &o,
MWAWTabStop
const
&ft);
73
double
m_position
;
75
Alignment
m_alignment
;
77
uint16_t
m_leaderCharacter
;
79
uint16_t
m_decimalCharacter
;
80
};
81
83
class
MWAWParagraph
84
{
85
public
:
87
enum
{
NoBreakBit
= 0x1,
NoBreakWithNextBit
=0x2 };
89
enum
Justification
{
JustificationLeft
,
JustificationFull
,
JustificationCenter
,
90
JustificationRight
,
JustificationFullAllLines
91
};
93
enum
LineSpacingType
{
Fixed
,
AtLeast
};
94
96
MWAWParagraph
();
98
virtual
~MWAWParagraph
();
100
bool
operator==
(
MWAWParagraph
const
&p)
const
{
101
return
!
operator!=
(p);
102
}
104
bool
operator!=
(
MWAWParagraph
const
&p)
const
;
106
double
getMarginsWidth
()
const
;
108
bool
hasBorders
()
const
;
110
bool
hasDifferentBorders
()
const
;
112
void
resizeBorders
(
size_t
newSize) {
113
MWAWBorder
empty;
114
empty.
m_style
=
MWAWBorder::None
;
115
m_borders
.resize(newSize, empty);
116
}
118
void
setInterline
(
double
value, WPXUnit unit,
LineSpacingType
type=
Fixed
) {
119
m_spacings
[0]=value;
120
m_spacingsInterlineUnit
=unit;
121
m_spacingsInterlineType
=type;
122
}
124
void
addTo
(WPXPropertyList &propList,
bool
inTable)
const
;
126
void
addTabsTo
(WPXPropertyListVector &propList,
double
decalX=0.0)
const
;
127
129
void
insert
(
MWAWParagraph
const
¶);
131
friend
std::ostream &
operator<<
(std::ostream &o,
MWAWParagraph
const
&ft);
132
138
Variable<double>
m_margins
[3];
// 0: first line left, 1: left, 2: right
140
Variable<WPXUnit>
m_marginsUnit
;
146
Variable<double>
m_spacings
[3];
// 0: interline, 1: before, 2: after
148
Variable<WPXUnit>
m_spacingsInterlineUnit
;
150
Variable<LineSpacingType>
m_spacingsInterlineType
;
152
Variable<std::vector<MWAWTabStop>
>
m_tabs
;
154
Variable<bool>
m_tabsRelativeToLeftMargin
;
155
157
Variable<Justification>
m_justify
;
159
Variable<int>
m_breakStatus
;
// BITS: 1: unbreakable, 2: dont break after
160
162
Variable<int>
m_listLevelIndex
;
164
Variable<int>
m_listId
;
166
Variable<int>
m_listStartValue
;
168
Variable<MWAWListLevel>
m_listLevel
;
169
171
Variable<MWAWColor>
m_backgroundColor
;
172
174
std::vector<Variable<MWAWBorder> >
m_borders
;
175
177
std::string
m_extra
;
178
};
179
#endif
180
// vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab:
Generated on Wed Jul 10 2013 18:02:03 for libmwaw by
doxygen
1.8.4