Main Page
Namespaces
Classes
Files
File List
File Members
MWAWTable.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
/*
35
* Structure to store and construct a table from an unstructured list
36
* of cell
37
*
38
*/
39
40
#ifndef MWAW_TABLE
41
# define MWAW_TABLE
42
43
#include <iostream>
44
#include <vector>
45
46
#include "
libmwaw_internal.hxx
"
47
48
#include "
MWAWCell.hxx
"
49
51
class
MWAWTable
52
{
53
public
:
55
enum
DataSet
{
56
CellPositionBit
=1,
BoxBit
=2,
SizeBit
=4,
TableDimBit
=8,
TablePosToCellBit
=0x10
57
};
61
enum
Alignment
{
62
Paragraph
,
Left
,
Center
,
Right
63
};
65
explicit
MWAWTable
(uint32_t givenData=
BoxBit
) :
66
m_givenData
(givenData),
m_setData
(givenData),
m_mergeBorders
(true),
m_cellsList
(),
67
m_numRows
(0),
m_numCols
(0),
m_rowsSize
(),
m_colsSize
(),
m_alignment
(
Paragraph
),
m_leftMargin
(0),
m_rightMargin
(0),
68
m_posToCellId
(),
m_hasExtraLines
(false) {}
69
71
virtual
~MWAWTable
();
72
74
void
add
(shared_ptr<MWAWCell> cell)
75
{
76
if
(!cell) {
77
MWAW_DEBUG_MSG
((
"MWAWTable::add: must be called with a cell\n"
));
78
return
;
79
}
80
m_cellsList
.push_back(cell);
81
}
83
bool
mergeBorders
()
const
84
{
85
return
m_mergeBorders
;
86
}
88
bool
setMergeBorders
(
bool
val)
89
{
90
return
m_mergeBorders
=val;
91
}
94
void
setAlignment
(
Alignment
align,
float
leftMargin=0,
float
rightMargin=0)
95
{
96
m_alignment
= align;
97
m_leftMargin
= leftMargin;
98
m_rightMargin
= rightMargin;
99
}
101
int
numCells
()
const
102
{
103
return
int(
m_cellsList
.size());
104
}
106
std::vector<float>
const
&
getRowsSize
()
const
107
{
108
return
m_rowsSize
;
109
}
111
void
setRowsSize
(std::vector<float>
const
&rSize)
112
{
113
m_rowsSize
=rSize;
114
}
116
std::vector<float>
const
&
getColsSize
()
const
117
{
118
return
m_colsSize
;
119
}
121
void
setColsSize
(std::vector<float>
const
&cSize)
122
{
123
m_colsSize
=cSize;
124
}
125
127
shared_ptr<MWAWCell>
get
(
int
id);
128
130
bool
updateTable
();
132
bool
hasExtraLines
()
133
{
134
if
(!
updateTable
())
return
false
;
135
return
m_hasExtraLines
;
136
}
137
142
bool
sendTable
(
MWAWListenerPtr
listener,
bool
inFrame=
true
);
143
145
bool
sendAsText
(
MWAWListenerPtr
listener);
146
147
// interface with the content listener
148
150
void
addTablePropertiesTo
(librevenge::RVNGPropertyList &propList)
const
;
151
152
protected
:
154
int
getCellIdPos
(
int
col,
int
row)
const
155
{
156
if
(col<0||col>=
int
(
m_numCols
))
157
return
-1;
158
if
(row<0||row>=
int
(
m_numRows
))
159
return
-1;
160
return
col*int(
m_numRows
)+row;
161
}
163
bool
buildStructures
();
165
bool
buildDims
();
167
bool
buildPosToCellId
();
169
void
sendExtraLines
(
MWAWListenerPtr
listener)
const
;
170
171
protected
:
173
uint32_t
m_givenData
;
175
uint32_t
m_setData
;
177
bool
m_mergeBorders
;
179
std::vector<shared_ptr<MWAWCell> >
m_cellsList
;
181
size_t
m_numRows
;
183
size_t
m_numCols
;
185
std::vector<float>
m_rowsSize
;
187
std::vector<float>
m_colsSize
;
189
Alignment
m_alignment
;
191
float
m_leftMargin
;
193
float
m_rightMargin
;
194
196
std::vector<int>
m_posToCellId
;
198
bool
m_hasExtraLines
;
199
};
200
201
#endif
202
// vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab:
Generated on Tue Mar 1 2016 23:42:51 for libmwaw by
doxygen
1.8.4