23 #ifndef LIBWPS_INTERNAL_H
24 #define LIBWPS_INTERNAL_H
35 #include <librevenge-stream/librevenge-stream.h>
36 #include <librevenge/librevenge.h>
38 #if defined(_MSC_VER) || defined(__DJGPP__)
39 typedef signed char int8_t;
40 typedef unsigned char uint8_t;
41 typedef signed short int16_t;
42 typedef unsigned short uint16_t;
43 typedef signed int int32_t;
44 typedef unsigned int uint32_t;
46 # include <inttypes.h>
57 # define gmtime_r(tp,tmp) (gmtime(tp)?(*(tmp)=*gmtime(tp),(tmp)):0)
58 # define localtime_r(tp,tmp) (localtime(tp)?(*(tmp)=*localtime(tp),(tmp)):0)
61 #if defined(SHAREDPTR_TR1)
63 using std::tr1::shared_ptr;
64 #elif defined(SHAREDPTR_STD)
66 using std::shared_ptr;
68 #include <boost/shared_ptr.hpp>
69 using boost::shared_ptr;
113 #define WPS_DEBUG_MSG(M) printf M
115 #define WPS_DEBUG_MSG(M)
146 uint8_t
readU8(librevenge::RVNGInputStream *input);
147 uint16_t
readU16(librevenge::RVNGInputStream *input);
148 uint32_t
readU32(librevenge::RVNGInputStream *input);
150 int8_t
read8(librevenge::RVNGInputStream *input);
151 int16_t
read16(librevenge::RVNGInputStream *input);
152 int32_t
read32(librevenge::RVNGInputStream *input);
156 return readU8(input.get());
169 return read8(input.get());
173 return read16(input.get());
177 return read32(input.get());
184 #define WPS_LE_GET_GUINT16(p) \
185 (uint16_t)((((uint8_t const *)(p))[0] << 0) | \
186 (((uint8_t const *)(p))[1] << 8))
187 #define WPS_LE_GET_GUINT32(p) \
188 (uint32_t)((((uint8_t const *)(p))[0] << 0) | \
189 (((uint8_t const *)(p))[1] << 8) | \
190 (((uint8_t const *)(p))[2] << 16) | \
191 (((uint8_t const *)(p))[3] << 24))
264 #define WPS_EXTRA_LARGE_BIT 1
265 #define WPS_VERY_LARGE_BIT 2
266 #define WPS_LARGE_BIT 4
267 #define WPS_SMALL_PRINT_BIT 8
268 #define WPS_FINE_PRINT_BIT 0x10
269 #define WPS_SUPERSCRIPT_BIT 0x20
270 #define WPS_SUBSCRIPT_BIT 0x40
271 #define WPS_OUTLINE_BIT 0x80
272 #define WPS_ITALICS_BIT 0x100
273 #define WPS_SHADOW_BIT 0x200
274 #define WPS_REDLINE_BIT 0x400
275 #define WPS_DOUBLE_UNDERLINE_BIT 0x800
276 #define WPS_BOLD_BIT 0x1000
277 #define WPS_STRIKEOUT_BIT 0x2000
278 #define WPS_UNDERLINE_BIT 0x4000
279 #define WPS_SMALL_CAPS_BIT 0x8000
280 #define WPS_BLINK_BIT 0x10000L
281 #define WPS_REVERSEVIDEO_BIT 0x20000L
282 #define WPS_ALL_CAPS_BIT 0x40000L
283 #define WPS_EMBOSS_BIT 0x80000L
284 #define WPS_ENGRAVE_BIT 0x100000L
285 #define WPS_OVERLINE_BIT 0x400000L
286 #define WPS_HIDDEN_BIT 0x800000L
289 #define WPS_PAGE_BREAK 0x00
290 #define WPS_SOFT_PAGE_BREAK 0x01
291 #define WPS_COLUMN_BREAK 0x02
294 #define WPS_LEFT 0x00
295 #define WPS_RIGHT 0x01
296 #define WPS_CENTER 0x02
298 #define WPS_BOTTOM 0x04
325 assert(c >= 0 && c <= 1);
326 return (c==0) ?
m_x :
m_y;
331 assert(c >= 0 && c <= 1);
332 return (c==0) ?
m_x :
m_y;
413 bool operator<(Vec2<T>
const &p)
const
437 friend std::ostream &operator<< (std::ostream &o, Vec2<T>
const &f)
439 o << f.m_x <<
"x" << f.m_y;
451 return s1.
cmp(s2) < 0;
457 typedef std::map<Vec2<T>, T,
struct PosSizeLtX>
MapX;
467 return s1.
cmpY(s2) < 0;
473 typedef std::map<Vec2<T>, T,
struct PosSizeLtY>
MapY;
500 for (
int c=0; c < 2; c++)
m_pt[c] = p[c];
530 assert(c >= 0 && c <= 1);
575 m_pt[0] = ctr - 0.5*sz;
576 m_pt[1] = ctr + (sz - 0.5*sz);
580 template <
class U>
void scale(U factor)
604 bool operator<(Box2<T>
const &p)
const
613 if (diff)
return diff;
615 if (diff)
return diff;
620 friend std::ostream &operator<< (std::ostream &o, Box2<T>
const &f)
622 o <<
"(" << f.m_pt[0] <<
"<->" << f.m_pt[1] <<
")";
634 return s1.
cmp(s2) < 0;
640 typedef std::map<Box2<T>, T,
struct PosSizeLt>
Map;
uint8_t readU8(librevenge::RVNGInputStream *input)
Definition: libwps_internal.cpp:34
Definition: libwps_internal.h:218
Definition: libwps_internal.h:254
shared_ptr< WPSContentListener > WPSContentListenerPtr
shared pointer to WPSContentListener
Definition: libwps_internal.h:100
bool readData(RVNGInputStreamPtr &input, unsigned long size, librevenge::RVNGBinaryData &data)
Definition: libwps_internal.cpp:84
Vec2< float > Vec2f
Vec2 of float.
Definition: libwps_internal.h:483
void set(Vec2< T > const &x, Vec2< T > const &y)
resets the data to minimum x and maximum y
Definition: libwps_internal.h:545
void setY(T yy)
resets the second element
Definition: libwps_internal.h:347
a border list
Definition: libwps_internal.h:216
Definition: libwps_internal.h:218
Definition: libwps_internal.h:206
Definition: libwps_internal.h:137
T m_x
first element
Definition: libwps_internal.h:475
Vec2< T > const & operator[](int c) const
the two extremum points which defined the box
Definition: libwps_internal.h:528
Vec2< T > const & min() const
the minimum 2D point (in x and in y)
Definition: libwps_internal.h:504
shared_ptr< WPSSubDocument > WPSSubDocumentPtr
shared pointer to WPSSubDocument
Definition: libwps_internal.h:104
bool operator!=(Box2< T > const &p) const
comparison operator!=
Definition: libwps_internal.h:599
Definition: libwps_internal.h:218
int cmp(Box2< T > const &p) const
comparison function : fist sorts min by Y,X values then max extremity
Definition: libwps_internal.h:610
Definition: libwps_internal.h:260
friend Vec2< T > operator-(Vec2< T > const &p1, Vec2< T > const &p2)
operator-
Definition: libwps_internal.h:389
int32_t read32(librevenge::RVNGInputStream *input)
Definition: libwps_internal.cpp:79
T & operator[](int c)
operator[]
Definition: libwps_internal.h:329
Definition: libwps_internal.h:219
small class which defines a 2D Box
Definition: libwps_internal.h:488
Definition: libwps_internal.h:220
internal struct used to create sorted map, sorted first min then max
Definition: libwps_internal.h:629
define the font properties
Definition: WPSFont.h:37
void resizeFromMin(Vec2< T > const &sz)
resize the box keeping the minimum
Definition: libwps_internal.h:562
double m_leftGutter
Definition: libwps_internal.h:202
Definition: libwps_internal.h:218
virtual class for content listener
Definition: WPSListener.h:36
internal struct used to create sorted map, sorted by X
Definition: libwps_internal.h:446
uint32_t m_color
the border color
Definition: libwps_internal.h:248
std::map< Vec2< bool >, bool, struct PosSizeLtY > MapY
Definition: libwps_internal.h:473
int m_width
the border width
Definition: libwps_internal.h:246
Definition: libwps_internal.h:256
Definition: libwps_internal.h:219
Vec2< T > & operator+=(Vec2< T > const &p)
operator+=
Definition: libwps_internal.h:360
Definition: libwps_internal.h:254
std::string getPropertyValue() const
return the properties
Definition: libwps_internal.cpp:148
void set(T xx, T yy)
resets the two elements
Definition: libwps_internal.h:336
Definition: libwps_internal.h:254
void extend(T val)
extends the bdbox by (val, val) keeping the center
Definition: libwps_internal.h:587
Definition: libwps_internal.h:256
Definition: WPSContentListener.h:44
uint32_t m_attributes
Definition: libwps_internal.h:211
Definition: libwps_internal.h:256
Box2< int > Box2i
Box2 of int.
Definition: libwps_internal.h:648
Vec2< T > & max()
the maximum 2D point (in x and in y)
Definition: libwps_internal.h:519
a structure used to defined the cell position, and a format
Definition: WPSCell.h:246
double m_width
Definition: libwps_internal.h:201
Vec2< T > center() const
the box center
Definition: libwps_internal.h:539
Justification
Definition: libwps_internal.h:257
double m_rightGutter
Definition: libwps_internal.h:203
virtual class to define a sub document
Definition: WPSSubDocument.h:33
bool operator==(Vec2< T > const &p) const
comparison==
Definition: libwps_internal.h:403
Definition: libwps_internal.h:218
Definition: libwps_internal.h:254
shared_ptr< WPSHeader > WPSHeaderPtr
shared pointer to WPSHeader
Definition: libwps_internal.h:102
Definition: libwps_internal.h:219
Definition: libwps_internal.h:256
bool operator!=(Vec2< T > const &p) const
comparison!=
Definition: libwps_internal.h:408
T y() const
second element
Definition: libwps_internal.h:318
Vec2(T xx=0, T yy=0)
constructor
Definition: libwps_internal.h:308
Box2< float > Box2f
Box2 of float.
Definition: libwps_internal.h:650
shared_ptr< WPSListener > WPSListenerPtr
shared pointer to WPSListener
Definition: libwps_internal.h:98
void setX(T xx)
resets the first element
Definition: libwps_internal.h:342
Definition: libwps_internal.h:260
std::map< Box2< float >, float, struct PosSizeLt > Map
Definition: libwps_internal.h:640
WPSBorder()
constructor
Definition: libwps_internal.h:223
Definition: libwps_internal.h:219
SubDocumentType
Definition: libwps_internal.h:256
Definition: libwps_internal.h:254
Definition: libwps_internal.h:257
Definition: libwps_internal.h:256
Definition: libwps_internal.h:132
Basic class used to store a spreadsheet sub document.
Definition: WKSSubDocument.h:35
Definition: libwps_internal.h:258
shared_ptr< WKSContentListener > WKSContentListenerPtr
shared pointer to WKSContentListener
Definition: libwps_internal.h:107
Vec2< T > const & max() const
the maximum 2D point (in x and in y)
Definition: libwps_internal.h:509
bool operator!=(WPSBorder const &orig) const
operator!=
Definition: libwps_internal.h:234
Definition: libwps_internal.h:256
Definition: libwps_internal.h:122
Box2(Box2< U > const &p)
generic constructor
Definition: libwps_internal.h:498
internal struct used to create sorted map, sorted by Y
Definition: libwps_internal.h:462
Vec2< T > m_pt[2]
the two extremities
Definition: libwps_internal.h:644
T x() const
first element
Definition: libwps_internal.h:313
void operator()(T *)
Definition: libwps_internal.h:76
int8_t read8(librevenge::RVNGInputStream *input)
Definition: libwps_internal.cpp:53
Definition: libwps_internal.h:218
void add(T dx, T dy)
increases the actuals values by dx and dy
Definition: libwps_internal.h:353
uint8_t m_alignment
Definition: libwps_internal.h:212
Definition: libwps_internal.h:196
bool operator()(Vec2< T > const &s1, Vec2< T > const &s2) const
comparaison function
Definition: libwps_internal.h:465
WPSColumnProperties()
Definition: libwps_internal.h:208
Vec2< T > & operator-=(Vec2< T > const &p)
operator-=
Definition: libwps_internal.h:367
Vec2< T > & operator*=(U scale)
generic operator*=
Definition: libwps_internal.h:375
NumberingType
Definition: libwps_internal.h:254
Definition: libwps_internal.h:220
int cmpY(Vec2< T > const &p) const
a comparison function: which first compares y then x
Definition: libwps_internal.h:427
std::map< Vec2< bool >, bool, struct PosSizeLtX > MapX
Definition: libwps_internal.h:457
int16_t read16(librevenge::RVNGInputStream *input)
Definition: libwps_internal.cpp:65
shared_ptr< librevenge::RVNGInputStream > RVNGInputStreamPtr
shared pointer to librevenge::RVNGInputStream
Definition: libwps_internal.h:81
Vec2< int > Vec2i
Vec2 of int.
Definition: libwps_internal.h:481
friend std::ostream & operator<<(std::ostream &o, WPSBorder const &border)
operator<<: prints data in form "XxY"
Definition: libwps_internal.cpp:177
Pos
Definition: libwps_internal.h:219
Definition: libwps_internal.h:258
Vec2(Vec2< U > const &p)
generic copy constructor
Definition: libwps_internal.h:310
bool operator==(Box2< T > const &p) const
comparison operator==
Definition: libwps_internal.h:594
T operator[](int c) const
operator[]
Definition: libwps_internal.h:323
int compare(WPSBorder const &orig) const
compare two cell
Definition: libwps_internal.cpp:137
void resizeFromMax(Vec2< T > const &sz)
resize the box keeping the maximum
Definition: libwps_internal.h:567
uint16_t readU16(librevenge::RVNGInputStream *input)
Definition: libwps_internal.cpp:58
bool readDataToEnd(RVNGInputStreamPtr &input, librevenge::RVNGBinaryData &data)
Definition: libwps_internal.cpp:98
void scale(U factor)
scales all points of the box by factor
Definition: libwps_internal.h:580
std::string numberingTypeToString(NumberingType type)
Definition: libwps_internal.cpp:109
void setMax(Vec2< T > const &y)
resets the maximum point
Definition: libwps_internal.h:556
Style
Definition: libwps_internal.h:218
bool operator==(WPSBorder const &orig) const
operator==
Definition: libwps_internal.h:228
void setMin(Vec2< T > const &x)
resets the minimum point
Definition: libwps_internal.h:551
uint32_t readU32(librevenge::RVNGInputStream *input)
Definition: libwps_internal.cpp:70
Box2(Vec2< T > minPt=Vec2< T >(), Vec2< T > maxPt=Vec2< T >())
constructor
Definition: libwps_internal.h:492
Definition: libwps_internal.h:127
Definition: libwps_internal.h:220
WPSColumnDefinition()
Definition: libwps_internal.h:198
Style m_style
the border style
Definition: libwps_internal.h:244
Definition: libwps_internal.h:257
Definition: libwps_internal.h:254
shared_ptr< WKSSubDocument > WKSSubDocumentPtr
shared pointer to WKSSubDocument
Definition: libwps_internal.h:109
Definition: libwps_internal.h:257
basic class to store an entry in a file This contained :
Definition: WPSEntry.h:37
small class which defines a vector with 2 elements
Definition: libwps_internal.h:304
bool operator()(Vec2< T > const &s1, Vec2< T > const &s2) const
comparaison function
Definition: libwps_internal.h:449
Definition: libwps_internal.h:254
friend Vec2< T > operator*(U scale, Vec2< T > const &p1)
generic operator*
Definition: libwps_internal.h:396
Class to define the position of an object (textbox, picture, ..) in the document. ...
Definition: WPSPosition.h:39
Vec2< T > size() const
the box size
Definition: libwps_internal.h:534
shared_ptr< WPSCell > WPSCellPtr
shared pointer to WPSCell
Definition: libwps_internal.h:93
T m_y
second element
Definition: libwps_internal.h:475
a noop deleter used to transform a librevenge pointer in a false shared_ptr
Definition: libwps_internal.h:74
bool operator()(Box2< T > const &s1, Box2< T > const &s2) const
comparaison function
Definition: libwps_internal.h:632
Definition: WKSContentListener.h:47
int cmp(Vec2< T > const &p) const
a comparison function: which first compares x then y
Definition: libwps_internal.h:418
Vec2< bool > Vec2b
Vec2 of bool.
Definition: libwps_internal.h:479
Definition: libwps_internal.h:220
void resizeFromCenter(Vec2< T > const &sz)
resize the box keeping the center
Definition: libwps_internal.h:572
Vec2< T > & min()
the minimum 2D point (in x and in y)
Definition: libwps_internal.h:514
friend Vec2< T > operator+(Vec2< T > const &p1, Vec2< T > const &p2)
operator+
Definition: libwps_internal.h:383