WPSCell.h
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
2/* libwps
3 * Version: MPL 2.0 / LGPLv2.1+
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 *
9 * Major Contributor(s):
10 * Copyright (C) 2009, 2011 Alonso Laurent (alonso@loria.fr)
11 * Copyright (C) 2006, 2007 Andrew Ziem
12 * Copyright (C) 2004-2006 Fridrich Strba (fridrich.strba@bluewin.ch)
13 * Copyright (C) 2004 Marc Maurer (uwog@uwog.net)
14 * Copyright (C) 2003-2005 William Lachance (william.lachance@sympatico.ca)
15 *
16 * For minor contributions see the git repository.
17 *
18 * Alternatively, the contents of this file may be used under the terms
19 * of the GNU Lesser General Public License Version 2.1 or later
20 * (LGPLv2.1+), in which case the provisions of the LGPLv2.1+ are
21 * applicable instead of those above.
22 *
23 * For further information visit http://libwps.sourceforge.net
24 */
25
26/* Define some classes used to store a Cell
27 */
28
29#ifndef WPS_CELL_H
30# define WPS_CELL_H
31
32#include <iostream>
33#include <vector>
34
35#include "libwps_internal.h"
36
37#include "WPSFont.h"
38
41{
42public:
48 };
55
56 /* subformat:
57 NUMBER DATE TIME TEXT
58 0 : default default[3/2/2000] default[10:03:00] default
59 1 : decimal
60 2 : exponential
61 3 : percent
62 4 : money
63 5 : thousand
64 6 : fixed
65 7 : fraction
66 */
67
72 virtual ~WPSCellFormat() {}
74 bool hasBasicFormat() const
75 {
77 }
79 std::string getValueType() const;
81 void addTo(librevenge::RVNGPropertyList &propList) const;
83 bool getNumberingProperties(librevenge::RVNGPropertyList &propList) const;
84
86 WPSFont const &getFont() const
87 {
88 return m_font;
89 }
91 void setFont(WPSFont const &font)
92 {
93 m_font=font;
94 }
97 {
98 return m_hAlign;
99 }
102 {
103 m_hAlign = align;
104 }
105
108 {
109 return m_vAlign;
110 }
113 {
114 m_vAlign = align;
115 }
118 {
119 return m_wrapping;
120 }
123 {
124 m_wrapping = align;
125 }
126
128 int getTextRotation() const
129 {
130 return m_rotation;
131 }
133 void setTextRotation(int rotation)
134 {
135 m_rotation = rotation;
136 }
137
140 {
141 return m_format;
142 }
144 int getSubFormat() const
145 {
146 return m_subFormat;
147 }
149 std::string getDTFormat() const
150 {
151 return m_DTFormat;
152 }
154 void setFormat(FormatType form, int subForm=0)
155 {
156 m_format = form;
157 m_subFormat = subForm;
158 }
160 void setDTFormat(FormatType form, std::string const &dtFormat="")
161 {
162 m_format = form;
163 m_subFormat = 0;
164 m_DTFormat = dtFormat;
165 }
166
168 int digits() const
169 {
170 return m_digits;
171 }
173 void setDigits(int newDigit)
174 {
175 m_digits = newDigit;
176 }
177
179 bool isProtected() const
180 {
181 return m_protected;
182 }
183
185 void setProtected(bool fl)
186 {
187 m_protected = fl;
188 }
189
191 bool hasBorders() const
192 {
193 return m_bordersList.size() != 0;
194 }
195
197 std::vector<WPSBorder> const &borders() const
198 {
199 return m_bordersList;
200 }
201
204 {
205 m_bordersList.resize(0);
206 }
207
209 void setBorders(int wh, WPSBorder const &border);
211 void setBorders(std::vector<WPSBorder> const &newBorders)
212 {
213 m_bordersList=newBorders;
214 }
215
218 {
219 return m_backgroundColor;
220 }
222 void setBackgroundColor(WPSColor const &color)
223 {
224 m_backgroundColor = color;
225 }
226
228 int compare(WPSCellFormat const &cell, bool onlyNumbering=false) const;
229
231 friend std::ostream &operator<<(std::ostream &o, WPSCellFormat const &cell);
232
235 {
239 bool operator()(WPSCellFormat const &c1, WPSCellFormat const &c2) const
240 {
241 return c1.compare(c2, true) < 0;
242 }
243 };
244
245protected:
247 static bool convertDTFormat(std::string const &dtFormat, librevenge::RVNGPropertyListVector &propListVector);
259 std::vector<WPSBorder> m_bordersList;
265 std::string m_DTFormat;
272};
273
274class WPSTable;
275
277class WPSCell : public WPSCellFormat
278{
279 friend class WPSTable;
280public:
284 virtual ~WPSCell() {}
285
287 void addTo(librevenge::RVNGPropertyList &propList) const;
288
290 void setBox(WPSBox2f const &b)
291 {
292 m_box = b;
293 }
295 WPSBox2f const &box() const
296 {
297 return m_box;
298 }
300 bool isVerticalSet() const
301 {
302 return m_verticalSet;
303 }
305 void setVerticalSet(bool verticalSet)
306 {
307 m_verticalSet = verticalSet;
308 }
311 {
312 return m_position;
313 }
315 Vec2i const &position() const
316 {
317 return m_position;
318 }
321 {
322 m_position = posi;
323 }
324
326 Vec2i const &numSpannedCells() const
327 {
328 return m_numberCellSpanned;
329 }
331 void setNumSpannedCells(Vec2i numSpanned)
332 {
333 m_numberCellSpanned=numSpanned;
334 }
335
337 virtual bool send(WPSListenerPtr &listener) = 0;
338
340 virtual bool sendContent(WPSListenerPtr &listener) = 0;
341
343 friend std::ostream &operator<<(std::ostream &o, WPSCell const &cell);
344
345protected:
347 struct Compare
348 {
349 explicit Compare(int dim) : m_coord(dim) {}
351 struct Point
352 {
353 Point(int wh, WPSCell const *cell) : m_which(wh), m_cell(cell) {}
354 float getPos(int coord) const
355 {
356 if (m_which)
357 return m_cell->box().max()[coord];
358 return m_cell->box().min()[coord];
359 }
360 float getSize(int coord) const
361 {
362 return m_cell->box().size()[coord];
363 }
366 };
367
369 bool operator()(Point const &c1, Point const &c2) const
370 {
371 float diffF = c1.getPos(m_coord)-c2.getPos(m_coord);
372 if (diffF < 0) return true;
373 if (diffF > 0) return false;
374 int diff = c2.m_which - c1.m_which;
375 if (diff) return (diff < 0);
376 diffF = c1.m_cell->box().size()[m_coord]
377 - c2.m_cell->box().size()[m_coord];
378 if (diffF < 0) return true;
379 if (diffF > 0) return false;
380 if (c1.m_cell->m_verticalSet != c2.m_cell->m_verticalSet) return c1.m_cell->m_verticalSet;
381#ifdef _WIN64
382 return ((__int64)c1.m_cell < (__int64)c2.m_cell);
383#else
384 return long(c1.m_cell) < long(c2.m_cell);
385#endif
386 }
387
390 };
391
400};
401
402#endif
403/* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */
Vec2< T > const & min() const
the minimum 2D point (in x and in y)
Definition: libwps_internal.h:742
Vec2< T > const & max() const
the maximum 2D point (in x and in y)
Definition: libwps_internal.h:747
Vec2< T > size() const
the box size
Definition: libwps_internal.h:771
a structure used to defined the cell format
Definition: WPSCell.h:41
void setFont(WPSFont const &font)
sets the font
Definition: WPSCell.h:91
Wrapping wrapping() const
returns the wrapping
Definition: WPSCell.h:117
bool isProtected() const
returns true if the cell is protected
Definition: WPSCell.h:179
void setVAlignement(VerticalAlignment align)
sets the vertical alignement
Definition: WPSCell.h:112
WPSFont m_font
the cell font ( used in spreadsheet code )
Definition: WPSCell.h:249
WPSCellFormat()
constructor
Definition: WPSCell.h:69
void setBorders(int wh, WPSBorder const &border)
sets the cell border: wh=WPSBorder::LeftBit|...
Definition: WPSCell.cpp:136
static bool convertDTFormat(std::string const &dtFormat, librevenge::RVNGPropertyListVector &propListVector)
convert a DTFormat in a propertyList
Definition: WPSCell.cpp:35
HorizontalAlignment
the default horizontal alignement.
Definition: WPSCell.h:46
@ HALIGN_DEFAULT
Definition: WPSCell.h:47
@ HALIGN_CENTER
Definition: WPSCell.h:46
@ HALIGN_RIGHT
Definition: WPSCell.h:46
@ HALIGN_FULL
Definition: WPSCell.h:47
@ HALIGN_LEFT
Definition: WPSCell.h:46
std::string getDTFormat() const
returns the date/time format ( if set)
Definition: WPSCell.h:149
virtual ~WPSCellFormat()
destructor
Definition: WPSCell.h:72
void setFormat(FormatType form, int subForm=0)
sets the format type
Definition: WPSCell.h:154
std::string m_DTFormat
a date/time format ( using a subset of strftime format )
Definition: WPSCell.h:265
int m_rotation
the text rotation
Definition: WPSCell.h:257
WPSColor m_backgroundColor
the backgroung color
Definition: WPSCell.h:271
std::string getValueType() const
returns a value type
Definition: WPSCell.cpp:239
bool m_protected
cell protected
Definition: WPSCell.h:269
HorizontalAlignment hAlignement() const
returns the horizontal alignement
Definition: WPSCell.h:96
void setDigits(int newDigit)
set the number of digits ( for a number)
Definition: WPSCell.h:173
int getSubFormat() const
returns the subformat type
Definition: WPSCell.h:144
FormatType m_format
the cell format : by default unknown
Definition: WPSCell.h:261
int digits() const
returns the number of digits ( for a number)
Definition: WPSCell.h:168
HorizontalAlignment m_hAlign
the cell alignement : by default nothing
Definition: WPSCell.h:251
void addTo(librevenge::RVNGPropertyList &propList) const
add to the propList
Definition: WPSCell.cpp:156
void setTextRotation(int rotation)
sets the text rotation angle
Definition: WPSCell.h:133
void setHAlignement(HorizontalAlignment align)
sets the horizontal alignement
Definition: WPSCell.h:101
bool getNumberingProperties(librevenge::RVNGPropertyList &propList) const
get the number style
Definition: WPSCell.cpp:274
int compare(WPSCellFormat const &cell, bool onlyNumbering=false) const
a comparison function
Definition: WPSCell.cpp:359
Wrapping m_wrapping
the wrapping : by default nothing
Definition: WPSCell.h:255
void setWrapping(Wrapping align)
sets the wrapping
Definition: WPSCell.h:122
std::vector< WPSBorder > const & borders() const
return the cell border: libwps::LeftBit | ...
Definition: WPSCell.h:197
void setBackgroundColor(WPSColor const &color)
set the background color
Definition: WPSCell.h:222
int m_digits
the number of digits
Definition: WPSCell.h:267
VerticalAlignment m_vAlign
the cell vertical alignement : by default nothing
Definition: WPSCell.h:253
VerticalAlignment vAlignement() const
returns the vertical alignement
Definition: WPSCell.h:107
void resetBorders()
reset the border
Definition: WPSCell.h:203
Wrapping
the wrapping
Definition: WPSCell.h:52
@ WRAP_NO_WRAP
Definition: WPSCell.h:52
@ WRAP_WRAP
Definition: WPSCell.h:52
@ WRAP_DEFAULT
Definition: WPSCell.h:52
void setProtected(bool fl)
returns true if the cell is protected
Definition: WPSCell.h:185
WPSFont const & getFont() const
returns the font
Definition: WPSCell.h:86
std::vector< WPSBorder > m_bordersList
the cell border WPSBorder::Pos
Definition: WPSCell.h:259
FormatType
the different types of cell's field
Definition: WPSCell.h:54
@ F_NUMBER
Definition: WPSCell.h:54
@ F_DATE
Definition: WPSCell.h:54
@ F_TIME
Definition: WPSCell.h:54
@ F_UNKNOWN
Definition: WPSCell.h:54
@ F_BOOLEAN
Definition: WPSCell.h:54
@ F_TEXT
Definition: WPSCell.h:54
int m_subFormat
the sub format
Definition: WPSCell.h:263
bool hasBorders() const
return true if the cell has some border
Definition: WPSCell.h:191
friend std::ostream & operator<<(std::ostream &o, WPSCellFormat const &cell)
operator<<
Definition: WPSCell.cpp:391
FormatType getFormat() const
returns the format type
Definition: WPSCell.h:139
void setDTFormat(FormatType form, std::string const &dtFormat="")
sets the format type
Definition: WPSCell.h:160
VerticalAlignment
the default vertical alignement.
Definition: WPSCell.h:50
@ VALIGN_BOTTOM
Definition: WPSCell.h:50
@ VALIGN_DEFAULT
Definition: WPSCell.h:50
@ VALIGN_CENTER
Definition: WPSCell.h:50
@ VALIGN_TOP
Definition: WPSCell.h:50
void setBorders(std::vector< WPSBorder > const &newBorders)
sets the cell borders
Definition: WPSCell.h:211
int getTextRotation() const
returns the text rotation angle
Definition: WPSCell.h:128
WPSColor backgroundColor() const
returns the background color
Definition: WPSCell.h:217
bool hasBasicFormat() const
returns true if this is a basic format style
Definition: WPSCell.h:74
a structure used to defined the cell position, and a format
Definition: WPSCell.h:278
Vec2i const & position() const
position accessor
Definition: WPSCell.h:315
Vec2i & position()
position accessor
Definition: WPSCell.h:310
bool m_verticalSet
true if y size is fixed
Definition: WPSCell.h:395
Vec2i m_position
the cell row and column : 0,0 -> A1, 0,1 -> A2
Definition: WPSCell.h:397
Vec2i const & numSpannedCells() const
returns the number of spanned cells
Definition: WPSCell.h:326
friend std::ostream & operator<<(std::ostream &o, WPSCell const &cell)
operator<<
Definition: WPSCell.cpp:533
Vec2i m_numberCellSpanned
the cell spanned : by default (1,1)
Definition: WPSCell.h:399
void addTo(librevenge::RVNGPropertyList &propList) const
add to the propList
Definition: WPSCell.cpp:522
WPSCell()
constructor
Definition: WPSCell.h:282
virtual bool sendContent(WPSListenerPtr &listener)=0
call when the content of a cell must be send
bool isVerticalSet() const
returns true if the vertical is fixed
Definition: WPSCell.h:300
WPSBox2f const & box() const
return the bounding box
Definition: WPSCell.h:295
void setVerticalSet(bool verticalSet)
fixes or not the vertical size
Definition: WPSCell.h:305
virtual bool send(WPSListenerPtr &listener)=0
call when a cell must be send
virtual ~WPSCell()
destructor
Definition: WPSCell.h:284
void setBox(WPSBox2f const &b)
set the bounding box (units in point)
Definition: WPSCell.h:290
void setNumSpannedCells(Vec2i numSpanned)
sets the number of spanned cells : Vec2i(1,1) means 1 cellule
Definition: WPSCell.h:331
void setPosition(Vec2i posi)
set the cell positions : 0,0 -> A1, 0,1 -> A2
Definition: WPSCell.h:320
WPSBox2f m_box
the cell bounding box (unit in point)
Definition: WPSCell.h:393
define the font properties
Definition: WPSFont.h:37
Definition: WPSTable.h:157
shared_ptr< WPSListener > WPSListenerPtr
shared pointer to WPSListener
Definition: libwps_internal.h:106
a border list
Definition: libwps_internal.h:380
a comparaison structure used to store data
Definition: WPSCell.h:235
CompareFormat()
constructor
Definition: WPSCell.h:237
bool operator()(WPSCellFormat const &c1, WPSCellFormat const &c2) const
comparaison function
Definition: WPSCell.h:239
small structure to define a cell point
Definition: WPSCell.h:352
WPSCell const * m_cell
Definition: WPSCell.h:365
float getSize(int coord) const
Definition: WPSCell.h:360
float getPos(int coord) const
Definition: WPSCell.h:354
Point(int wh, WPSCell const *cell)
Definition: WPSCell.h:353
int m_which
Definition: WPSCell.h:364
a comparaison structure used retrieve the rows and the columns
Definition: WPSCell.h:348
bool operator()(Point const &c1, Point const &c2) const
comparaison function
Definition: WPSCell.h:369
Compare(int dim)
Definition: WPSCell.h:349
int m_coord
the coord to compare
Definition: WPSCell.h:389
the class to store a color
Definition: libwps_internal.h:274

Generated on Fri Sep 30 2022 11:47:43 for libwps by doxygen 1.9.5