MWAWCell.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
38#ifndef MWAW_CELL_H
39# define MWAW_CELL_H
40
41#include <string>
42#include <vector>
43
44#include "libmwaw_internal.hxx"
45
46#include "MWAWEntry.hxx"
47#include "MWAWFont.hxx"
48
49class MWAWTable;
50
53{
54public:
60 struct Format {
64 {
65 }
67 virtual ~Format();
69 bool hasBasicFormat() const
70 {
72 }
74 std::string getValueType() const;
76 bool getNumberingProperties(librevenge::RVNGPropertyList &propList) const;
78 friend std::ostream &operator<<(std::ostream &o, Format const &format);
80 int compare(Format const &format) const;
81
99 std::string m_currencySymbol;
101 std::string m_DTFormat;
102 };
108 bool operator()(Format const &c1, Format const &c2) const
109 {
110 return c1.compare(c2) < 0;
111 }
112 };
118 };
119
123
126
130 m_backgroundColor(MWAWColor::white()), m_protected(false),
132
134 virtual ~MWAWCell() {}
135
137 void addTo(librevenge::RVNGPropertyList &propList, shared_ptr<MWAWFontConverter> fontConverter) const;
138
140 friend std::ostream &operator<<(std::ostream &o, MWAWCell const &cell);
141
142 // interface with MWAWTable:
143
148 virtual bool send(MWAWListenerPtr listener, MWAWTable &table);
153 virtual bool sendContent(MWAWListenerPtr listener, MWAWTable &table);
154
155 // position
156
158 MWAWVec2i const &position() const
159 {
160 return m_position;
161 }
164 {
165 m_position = posi;
166 }
167
170 {
171 return m_numberCellSpanned;
172 }
175 {
176 m_numberCellSpanned=numSpanned;
177 }
178
180 MWAWBox2f const &bdBox() const
181 {
182 return m_bdBox;
183 }
186 {
187 m_bdBox = box;
188 }
189
191 MWAWVec2f const &bdSize() const
192 {
193 return m_bdSize;
194 }
197 {
198 m_bdSize = sz;
199 }
201 static std::string getBasicCellName(MWAWVec2i const &pos);
203 static std::string getCellName(MWAWVec2i const &pos, MWAWVec2b const &absolute);
204
206 static std::string getColumnName(int col);
207
208 // format
209
211 Format const &getFormat() const
212 {
213 return m_format;
214 }
216 void setFormat(Format const &format)
217 {
218 m_format=format;
219 }
220
222 bool isFontSet() const
223 {
224 return m_fontSet;
225 }
228 {
229 return m_font;
230 }
232 void setFont(MWAWFont const &font, bool isDefault=false)
233 {
234 m_font=font;
235 m_fontSet=!isDefault;
236 }
237
239 bool isProtected() const
240 {
241 return m_protected;
242 }
244 void setProtected(bool fl)
245 {
246 m_protected = fl;
247 }
248
251 {
252 return m_hAlign;
253 }
256 {
257 m_hAlign = align;
258 }
259
262 {
263 return m_vAlign;
264 }
267 {
268 m_vAlign = align;
269 }
270
272 bool hasBorders() const
273 {
274 return m_bordersList.size() != 0;
275 }
277 std::vector<MWAWBorder> const &borders() const
278 {
279 return m_bordersList;
280 }
281
284 {
285 m_bordersList.resize(0);
286 }
288 void setBorders(int wh, MWAWBorder const &border);
289
292 {
293 return m_backgroundColor;
294 }
297 {
298 m_backgroundColor = color;
299 }
301 bool hasExtraLine() const
302 {
304 }
307 {
308 return m_extraLine;
309 }
312 {
313 return m_extraLineType;
314 }
316 void setExtraLine(ExtraLine extrLine, MWAWBorder const &type=MWAWBorder())
317 {
318 m_extraLine = extrLine;
319 m_extraLineType=type;
320 }
321protected:
330
345
347 std::vector<MWAWBorder> m_bordersList;
352};
353
356{
357public:
363 {
364 for (int i=0; i<2; ++i) {
365 m_position[i]=MWAWVec2i(0,0);
366 m_positionRelative[i]=MWAWVec2b(false,false);
367 }
368 }
370 librevenge::RVNGPropertyList getPropertyList(MWAWFontConverter &fontConverter, int fontId) const;
372 friend std::ostream &operator<<(std::ostream &o, FormulaInstruction const &inst);
376 std::string m_content;
386 std::string m_sheet;
387 };
388
396 friend std::ostream &operator<<(std::ostream &o, MWAWCellContent const &cell);
397
399 bool empty() const
400 {
401 if (m_contentType == C_NUMBER) return false;
402 if (m_contentType == C_TEXT && m_textEntry.valid()) return false;
403 if (m_contentType == C_FORMULA && (m_formula.size() || isValueSet())) return false;
404 return true;
405 }
407 void setValue(double value)
408 {
409 m_value = value;
410 m_valueSet = true;
411 }
413 bool isValueSet() const
414 {
415 return m_valueSet;
416 }
418 bool hasText() const
419 {
420 return m_textEntry.valid();
421 }
424 static bool double2Date(double val, int &Y, int &M, int &D);
426 static bool double2Time(double val, int &H, int &M, int &S);
428 static bool double2String(double val, MWAWCell::Format const &format, std::string &str);
430 static bool date2Double(int Y, int M, int D, double &val);
434 double m_value;
440 std::vector<FormulaInstruction> m_formula;
441};
442
443#endif
444// vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab:
small class use to define a sheet cell content
Definition: MWAWCell.hxx:356
bool empty() const
returns true if the cell has no content
Definition: MWAWCell.hxx:399
MWAWCellContent()
constructor
Definition: MWAWCell.hxx:392
static bool date2Double(int Y, int M, int D, double &val)
conversion beetween date and double days since 1900 date
Definition: MWAWCell.cxx:555
Type
the different types of cell's field
Definition: MWAWCell.hxx:390
@ C_FORMULA
Definition: MWAWCell.hxx:390
@ C_UNKNOWN
Definition: MWAWCell.hxx:390
@ C_TEXT
Definition: MWAWCell.hxx:390
@ C_NUMBER
Definition: MWAWCell.hxx:390
@ C_NONE
Definition: MWAWCell.hxx:390
static bool double2Date(double val, int &Y, int &M, int &D)
conversion beetween double days since 1900 and a date, ie val=0 corresponds to 1/1/1900,...
Definition: MWAWCell.cxx:505
bool hasText() const
returns true if the text is set
Definition: MWAWCell.hxx:418
static bool double2Time(double val, int &H, int &M, int &S)
conversion beetween double: second since 0:00 and time
Definition: MWAWCell.cxx:585
~MWAWCellContent()
destructor
Definition: MWAWCell.hxx:394
bool isValueSet() const
returns true if the value has been setted
Definition: MWAWCell.hxx:413
void setValue(double value)
sets the double value
Definition: MWAWCell.hxx:407
double m_value
the cell value
Definition: MWAWCell.hxx:434
static bool double2String(double val, MWAWCell::Format const &format, std::string &str)
conversion of the value in string knowing the cell format
Definition: MWAWCell.cxx:597
MWAWEntry m_textEntry
the cell string
Definition: MWAWCell.hxx:438
std::vector< FormulaInstruction > m_formula
the formula list of instruction
Definition: MWAWCell.hxx:440
friend std::ostream & operator<<(std::ostream &o, MWAWCellContent const &cell)
operator<<
Definition: MWAWCell.cxx:684
bool m_valueSet
true if the value has been set
Definition: MWAWCell.hxx:436
Type m_contentType
the content type ( by default unknown )
Definition: MWAWCell.hxx:432
a structure used to define a cell and its format
Definition: MWAWCell.hxx:53
void addTo(librevenge::RVNGPropertyList &propList, shared_ptr< MWAWFontConverter > fontConverter) const
adds to the propList
Definition: MWAWCell.cxx:255
MWAWVec2i m_position
the cell row and column : 0,0 -> A1, 0,1 -> A2
Definition: MWAWCell.hxx:323
static std::string getCellName(MWAWVec2i const &pos, MWAWVec2b const &absolute)
return the name of a cell (given row and column) : 0,0 -> [.A1], 0,1 -> [.A2]
Definition: MWAWCell.cxx:359
void setFont(MWAWFont const &font, bool isDefault=false)
sets the fonts
Definition: MWAWCell.hxx:232
void setBorders(int wh, MWAWBorder const &border)
sets the cell border: wh=libmwaw::LeftBit|...
Definition: MWAWCell.cxx:379
Format const & getFormat() const
returns the cell format
Definition: MWAWCell.hxx:211
MWAWColor backgroundColor() const
returns the background color
Definition: MWAWCell.hxx:291
std::vector< MWAWBorder > m_bordersList
the cell border MWAWBorder::Pos
Definition: MWAWCell.hxx:347
MWAWVec2i const & position() const
position accessor
Definition: MWAWCell.hxx:158
virtual ~MWAWCell()
destructor
Definition: MWAWCell.hxx:134
void setProtected(bool fl)
sets the cell's protected flag
Definition: MWAWCell.hxx:244
MWAWBox2f m_bdBox
the cell bounding box (unit in point)
Definition: MWAWCell.hxx:327
ExtraLine m_extraLine
extra line
Definition: MWAWCell.hxx:349
void setHAlignment(HorizontalAlignment align)
sets the horizontal alignment
Definition: MWAWCell.hxx:255
bool m_protected
cell protected
Definition: MWAWCell.hxx:344
void setNumSpannedCells(MWAWVec2i numSpanned)
sets the number of spanned cells : MWAWVec2i(1,1) means 1 cellule
Definition: MWAWCell.hxx:174
MWAWFont m_font
the cell font
Definition: MWAWCell.hxx:334
VerticalAlignment
the default vertical alignment.
Definition: MWAWCell.hxx:122
@ VALIGN_BOTTOM
Definition: MWAWCell.hxx:122
@ VALIGN_TOP
Definition: MWAWCell.hxx:122
@ VALIGN_CENTER
Definition: MWAWCell.hxx:122
@ VALIGN_DEFAULT
Definition: MWAWCell.hxx:122
ExtraLine
an enum to defined potential internal line: E_Line1=TL to RB, E_Line2=BL to RT
Definition: MWAWCell.hxx:125
@ E_Line1
Definition: MWAWCell.hxx:125
@ E_None
Definition: MWAWCell.hxx:125
@ E_Line2
Definition: MWAWCell.hxx:125
@ E_Cross
Definition: MWAWCell.hxx:125
void setBdSize(MWAWVec2f sz)
set the bdbox size(unit point)
Definition: MWAWCell.hxx:196
HorizontalAlignment
the default horizontal alignment.
Definition: MWAWCell.hxx:116
@ HALIGN_FULL
Definition: MWAWCell.hxx:117
@ HALIGN_DEFAULT
Definition: MWAWCell.hxx:117
@ HALIGN_RIGHT
Definition: MWAWCell.hxx:116
@ HALIGN_LEFT
Definition: MWAWCell.hxx:116
@ HALIGN_CENTER
Definition: MWAWCell.hxx:116
static std::string getColumnName(int col)
return the column name
Definition: MWAWCell.cxx:332
Format m_format
the cell format
Definition: MWAWCell.hxx:332
VerticalAlignment m_vAlign
the vertical cell alignment : by default nothing
Definition: MWAWCell.hxx:340
FormatType
the different format of a cell's content
Definition: MWAWCell.hxx:56
@ F_TIME
Definition: MWAWCell.hxx:56
@ F_NUMBER
Definition: MWAWCell.hxx:56
@ F_BOOLEAN
Definition: MWAWCell.hxx:56
@ F_UNKNOWN
Definition: MWAWCell.hxx:56
@ F_DATE
Definition: MWAWCell.hxx:56
@ F_TEXT
Definition: MWAWCell.hxx:56
MWAWCell()
constructor
Definition: MWAWCell.hxx:128
void setPosition(MWAWVec2i posi)
set the cell positions : 0,0 -> A1, 0,1 -> A2
Definition: MWAWCell.hxx:163
MWAWBorder m_extraLineType
extra line type
Definition: MWAWCell.hxx:351
HorizontalAlignment hAlignment() const
returns the horizontal alignment
Definition: MWAWCell.hxx:250
std::vector< MWAWBorder > const & borders() const
return the cell border: libmwaw::Left | ...
Definition: MWAWCell.hxx:277
MWAWVec2f m_bdSize
the cell bounding size : unit point
Definition: MWAWCell.hxx:329
bool m_fontSet
a flag to know if the font has been set
Definition: MWAWCell.hxx:336
MWAWVec2i m_numberCellSpanned
the cell spanned : by default (1,1)
Definition: MWAWCell.hxx:325
MWAWFont getFont() const
returns the font
Definition: MWAWCell.hxx:227
void setFormat(Format const &format)
set the cell format
Definition: MWAWCell.hxx:216
void setExtraLine(ExtraLine extrLine, MWAWBorder const &type=MWAWBorder())
sets the extraline
Definition: MWAWCell.hxx:316
bool isProtected() const
returns true if the cell is protected
Definition: MWAWCell.hxx:239
virtual bool sendContent(MWAWListenerPtr listener, MWAWTable &table)
function called when the content of a cell must be send to the listener, ie.
Definition: MWAWCell.cxx:496
bool hasExtraLine() const
returns true if we have some extra lines
Definition: MWAWCell.hxx:301
static std::string getBasicCellName(MWAWVec2i const &pos)
return the name of a cell (given row and column) : 0,0 -> A1, 0,1 -> A2...
Definition: MWAWCell.cxx:342
HorizontalAlignment m_hAlign
the cell alignment : by default nothing
Definition: MWAWCell.hxx:338
virtual bool send(MWAWListenerPtr listener, MWAWTable &table)
function called when a cell is send by MWAWTable to send a cell to a listener.
Definition: MWAWCell.cxx:487
MWAWBox2f const & bdBox() const
bdbox accessor
Definition: MWAWCell.hxx:180
MWAWColor m_backgroundColor
the backgroung color
Definition: MWAWCell.hxx:342
ExtraLine extraLine() const
returns the extra lines
Definition: MWAWCell.hxx:306
bool hasBorders() const
return true if the cell has some border
Definition: MWAWCell.hxx:272
NumberType
the different number format of a cell's content
Definition: MWAWCell.hxx:58
@ F_NUMBER_UNKNOWN
Definition: MWAWCell.hxx:58
@ F_NUMBER_SCIENTIFIC
Definition: MWAWCell.hxx:58
@ F_NUMBER_GENERIC
Definition: MWAWCell.hxx:58
@ F_NUMBER_PERCENT
Definition: MWAWCell.hxx:58
@ F_NUMBER_FRACTION
Definition: MWAWCell.hxx:58
@ F_NUMBER_DECIMAL
Definition: MWAWCell.hxx:58
@ F_NUMBER_CURRENCY
Definition: MWAWCell.hxx:58
MWAWBorder const & extraLineType() const
returns the extra line border
Definition: MWAWCell.hxx:311
void resetBorders()
reset the border
Definition: MWAWCell.hxx:283
MWAWVec2f const & bdSize() const
bdbox size accessor
Definition: MWAWCell.hxx:191
VerticalAlignment vAlignment() const
returns the vertical alignment
Definition: MWAWCell.hxx:261
friend std::ostream & operator<<(std::ostream &o, MWAWCell const &cell)
operator<<
Definition: MWAWCell.cxx:402
void setVAlignment(VerticalAlignment align)
sets the vertical alignment
Definition: MWAWCell.hxx:266
bool isFontSet() const
returns true if the font has been set
Definition: MWAWCell.hxx:222
void setBackgroundColor(MWAWColor color)
sets the background color
Definition: MWAWCell.hxx:296
void setBdBox(MWAWBox2f box)
set the bdbox (unit point)
Definition: MWAWCell.hxx:185
MWAWVec2i const & numSpannedCells() const
returns the number of spanned cells
Definition: MWAWCell.hxx:169
basic class to store an entry in a file This contained :
Definition: MWAWEntry.hxx:47
bool valid() const
returns true if the zone length is positive
Definition: MWAWEntry.hxx:88
a namespace used to convert Mac font characters in unicode
Definition: MWAWFontConverter.hxx:63
Class to store font.
Definition: MWAWFont.hxx:44
a class used to recreate the table structure using cell informations, ....
Definition: MWAWTable.hxx:52
MWAWVec2< int > MWAWVec2i
MWAWVec2 of int.
Definition: libmwaw_internal.hxx:781
shared_ptr< MWAWListener > MWAWListenerPtr
a smart pointer of MWAWListener
Definition: libmwaw_internal.hxx:505
MWAWVec2< bool > MWAWVec2b
MWAWVec2 of bool.
Definition: libmwaw_internal.hxx:779
a border
Definition: libmwaw_internal.hxx:314
bool isEmpty() const
returns true if the border is empty
Definition: libmwaw_internal.hxx:327
small class use to define a formula instruction
Definition: MWAWCell.hxx:359
librevenge::RVNGPropertyList getPropertyList(MWAWFontConverter &fontConverter, int fontId) const
returns a proplist corresponding to a instruction using a font converter to send the text
Definition: MWAWCell.cxx:722
std::string m_content
the content ( if type == F_Operator or type = F_Function or type==F_Text)
Definition: MWAWCell.hxx:376
std::string m_sheet
the sheet name (if not empty)
Definition: MWAWCell.hxx:386
Type
Definition: MWAWCell.hxx:360
@ F_Cell
Definition: MWAWCell.hxx:360
@ F_Long
Definition: MWAWCell.hxx:360
@ F_Function
Definition: MWAWCell.hxx:360
@ F_Text
Definition: MWAWCell.hxx:360
@ F_Operator
Definition: MWAWCell.hxx:360
@ F_CellList
Definition: MWAWCell.hxx:360
@ F_Double
Definition: MWAWCell.hxx:360
MWAWVec2b m_positionRelative[2]
relative cell position ( if type==F_Cell or F_CellList )
Definition: MWAWCell.hxx:384
friend std::ostream & operator<<(std::ostream &o, FormulaInstruction const &inst)
operator<<
Definition: MWAWCell.cxx:792
MWAWVec2i m_position[2]
cell position ( if type==F_Cell or F_CellList )
Definition: MWAWCell.hxx:382
FormulaInstruction()
constructor
Definition: MWAWCell.hxx:362
double m_doubleValue
value ( if type==F_Double )
Definition: MWAWCell.hxx:380
Type m_type
the type
Definition: MWAWCell.hxx:374
double m_longValue
value ( if type==F_Long )
Definition: MWAWCell.hxx:378
a comparaison structure used to store data
Definition: MWAWCell.hxx:104
CompareFormat()
constructor
Definition: MWAWCell.hxx:106
bool operator()(Format const &c1, Format const &c2) const
comparaison function
Definition: MWAWCell.hxx:108
a structure uses to define the format of a cell content
Definition: MWAWCell.hxx:60
int compare(Format const &format) const
a comparison function
Definition: MWAWCell.cxx:230
bool m_parenthesesForNegative
true if we use parenthese to print negative number
Definition: MWAWCell.hxx:97
virtual ~Format()
destructor
Definition: MWAWCell.cxx:54
bool hasBasicFormat() const
returns true if this is a basic format style
Definition: MWAWCell.hxx:69
NumberType m_numberFormat
the numeric format
Definition: MWAWCell.hxx:85
std::string getValueType() const
returns a value type
Definition: MWAWCell.cxx:58
bool getNumberingProperties(librevenge::RVNGPropertyList &propList) const
get the numbering style
Definition: MWAWCell.cxx:82
Format()
constructor
Definition: MWAWCell.hxx:62
int m_digits
the number of digits
Definition: MWAWCell.hxx:87
bool m_thousandHasSeparator
true if we must separate the thousand
Definition: MWAWCell.hxx:95
int m_denominatorDigits
the number of denominator digits
Definition: MWAWCell.hxx:93
std::string m_DTFormat
a date/time format ( using a subset of strftime format )
Definition: MWAWCell.hxx:101
std::string m_currencySymbol
the currency symbol ( default '$')
Definition: MWAWCell.hxx:99
FormatType m_format
the cell format : by default unknown
Definition: MWAWCell.hxx:83
int m_integerDigits
the number of main digits
Definition: MWAWCell.hxx:89
friend std::ostream & operator<<(std::ostream &o, Format const &format)
operator<<
Definition: MWAWCell.cxx:167
int m_numeratorDigits
the number of numerator digits
Definition: MWAWCell.hxx:91
the class to store a color
Definition: libmwaw_internal.hxx:182

Generated on Wed Jan 19 2022 22:23:15 for libmwaw by doxygen 1.9.3