23 #ifndef LIBWPS_INTERNAL_H
24 #define LIBWPS_INTERNAL_H
35 #include <libwpd-stream/libwpd-stream.h>
36 #include <libwpd/libwpd.h>
40 #if defined(_MSC_VER) || defined(__DJGPP__)
41 typedef signed char int8_t;
42 typedef unsigned char uint8_t;
43 typedef signed short int16_t;
44 typedef unsigned short uint16_t;
45 typedef signed int int32_t;
46 typedef unsigned int uint32_t;
56 #if defined(SHAREDPTR_TR1)
58 using std::tr1::shared_ptr;
59 #elif defined(SHAREDPTR_STD)
61 using std::shared_ptr;
63 #include <boost/shared_ptr.hpp>
64 using boost::shared_ptr;
78 #define WPS_DEBUG_MSG(M) printf M
80 #define WPS_DEBUG_MSG(M)
111 uint8_t
readU8(WPXInputStream *input);
112 uint16_t
readU16(WPXInputStream *input);
113 uint32_t
readU32(WPXInputStream *input);
115 int8_t
read8(WPXInputStream *input);
116 int16_t
read16(WPXInputStream *input);
117 int32_t
read32(WPXInputStream *input);
121 return readU8(input.get());
134 return read8(input.get());
138 return read16(input.get());
142 return read32(input.get());
149 #define WPS_LE_GET_GUINT16(p) \
150 (uint16_t)((((uint8_t const *)(p))[0] << 0) | \
151 (((uint8_t const *)(p))[1] << 8))
152 #define WPS_LE_GET_GUINT32(p) \
153 (uint32_t)((((uint8_t const *)(p))[0] << 0) | \
154 (((uint8_t const *)(p))[1] << 8) | \
155 (((uint8_t const *)(p))[2] << 16) | \
156 (((uint8_t const *)(p))[3] << 24))
160 class WPXPropertyListVector;
273 #define WPS_EXTRA_LARGE_BIT 1
274 #define WPS_VERY_LARGE_BIT 2
275 #define WPS_LARGE_BIT 4
276 #define WPS_SMALL_PRINT_BIT 8
277 #define WPS_FINE_PRINT_BIT 0x10
278 #define WPS_SUPERSCRIPT_BIT 0x20
279 #define WPS_SUBSCRIPT_BIT 0x40
280 #define WPS_OUTLINE_BIT 0x80
281 #define WPS_ITALICS_BIT 0x100
282 #define WPS_SHADOW_BIT 0x200
283 #define WPS_REDLINE_BIT 0x400
284 #define WPS_DOUBLE_UNDERLINE_BIT 0x800
285 #define WPS_BOLD_BIT 0x1000
286 #define WPS_STRIKEOUT_BIT 0x2000
287 #define WPS_UNDERLINE_BIT 0x4000
288 #define WPS_SMALL_CAPS_BIT 0x8000
289 #define WPS_BLINK_BIT 0x10000L
290 #define WPS_REVERSEVIDEO_BIT 0x20000L
291 #define WPS_ALL_CAPS_BIT 0x40000L
292 #define WPS_EMBOSS_BIT 0x80000L
293 #define WPS_ENGRAVE_BIT 0x100000L
294 #define WPS_OVERLINE_BIT 0x400000L
295 #define WPS_HIDDEN_BIT 0x800000L
298 #define WPS_PAGE_BREAK 0x00
299 #define WPS_SOFT_PAGE_BREAK 0x01
300 #define WPS_COLUMN_BREAK 0x02
303 #define WPS_LEFT 0x00
304 #define WPS_RIGHT 0x01
305 #define WPS_CENTER 0x02
307 #define WPS_BOTTOM 0x04
334 assert(c >= 0 && c <= 1);
335 return (c==0) ?
m_x :
m_y;
340 assert(c >= 0 && c <= 1);
341 return (c==0) ?
m_x :
m_y;
422 bool operator<(Vec2<T>
const &p)
const
430 if (diff < 0)
return -1;
431 if (diff > 0)
return 1;
433 if (diff < 0)
return -1;
434 if (diff > 0)
return 1;
441 if (diff < 0)
return -1;
442 if (diff > 0)
return 1;
444 if (diff < 0)
return -1;
445 if (diff > 0)
return 1;
450 friend std::ostream &operator<< (std::ostream &o, Vec2<T>
const &f)
452 o << f.m_x <<
"x" << f.m_y;
464 return s1.
cmp(s2) < 0;
470 typedef std::map<Vec2<T>, T,
struct PosSizeLtX>
MapX;
480 return s1.
cmpY(s2) < 0;
486 typedef std::map<Vec2<T>, T,
struct PosSizeLtY>
MapY;
513 for (
int c=0; c < 2; c++)
m_pt[c] = p[c];
543 assert(c >= 0 && c <= 1);
588 m_pt[0] = ctr - 0.5*sz;
589 m_pt[1] = ctr + (sz - 0.5*sz);
593 template <
class U>
void scale(U factor)
617 bool operator<(Box2<T>
const &p)
const
626 if (diff)
return diff;
628 if (diff)
return diff;
633 friend std::ostream &operator<< (std::ostream &o, Box2<T>
const &f)
635 o <<
"(" << f.m_pt[0] <<
"<->" << f.m_pt[1] <<
")";
647 return s1.
cmp(s2) < 0;
653 typedef std::map<Box2<T>, T,
struct PosSizeLt>
Map;
Definition: libwps_internal.h:227
std::string m_name
font name
Definition: libwps_internal.h:191
Definition: libwps_internal.h:263
uint32_t readU32(WPXInputStream *input)
Definition: libwps_internal.cpp:70
Vec2< float > Vec2f
Vec2 of float.
Definition: libwps_internal.h:496
void set(Vec2< T > const &x, Vec2< T > const &y)
resets the data to minimum x and maximum y
Definition: libwps_internal.h:558
void setY(T yy)
resets the second element
Definition: libwps_internal.h:356
a border list
Definition: libwps_internal.h:225
Definition: libwps_internal.h:227
Definition: libwps_internal.h:215
bool readData(WPXInputStreamPtr &input, unsigned long size, WPXBinaryData &data)
Definition: libwps_internal.cpp:84
Definition: libwps_internal.h:102
T m_x
first element
Definition: libwps_internal.h:488
uint32_t m_color
the font color
Definition: libwps_internal.h:197
shared_ptr< WPXInputStream > WPXInputStreamPtr
Definition: libwps_internal.h:74
Vec2< T > const & operator[](int c) const
the two extremum points which defined the box
Definition: libwps_internal.h:541
Vec2< T > const & min() const
the minimum 2D point (in x and in y)
Definition: libwps_internal.h:517
bool operator!=(WPSFont const &ft) const
Definition: libwps_internal.h:185
virtual ~WPSFont()
Definition: libwps_internal.h:173
bool operator!=(Box2< T > const &p) const
comparison operator!=
Definition: libwps_internal.h:612
Definition: libwps_internal.h:227
Definition: libwps_internal.h:161
int cmp(Box2< T > const &p) const
comparison function : fist sorts min by Y,X values then max extremity
Definition: libwps_internal.h:623
Definition: libwps_internal.h:269
friend Vec2< T > operator-(Vec2< T > const &p1, Vec2< T > const &p2)
operator-
Definition: libwps_internal.h:398
T & operator[](int c)
operator[]
Definition: libwps_internal.h:338
Definition: libwps_internal.h:228
small class which defines a 2D Box
Definition: libwps_internal.h:501
Definition: libwps_internal.h:229
bool readDataToEnd(WPXInputStreamPtr &input, WPXBinaryData &data)
Definition: libwps_internal.cpp:105
internal struct used to create sorted map, sorted first min then max
Definition: libwps_internal.h:642
void resizeFromMin(Vec2< T > const &sz)
resize the box keeping the minimum
Definition: libwps_internal.h:575
double m_leftGutter
Definition: libwps_internal.h:211
Definition: libwps_internal.h:227
internal struct used to create sorted map, sorted by X
Definition: libwps_internal.h:459
uint32_t m_color
the border color
Definition: libwps_internal.h:257
std::map< Vec2< int >, int, struct PosSizeLtY > MapY
Definition: libwps_internal.h:486
WPSFont()
constructor
Definition: libwps_internal.h:164
int m_width
the border width
Definition: libwps_internal.h:255
int16_t read16(WPXInputStream *input)
Definition: libwps_internal.cpp:65
Definition: libwps_internal.h:265
Definition: libwps_internal.h:228
Vec2< T > & operator+=(Vec2< T > const &p)
operator+=
Definition: libwps_internal.h:369
Definition: libwps_internal.h:263
std::string getPropertyValue() const
return the properties
Definition: libwps_internal.cpp:197
void set(T xx, T yy)
resets the two elements
Definition: libwps_internal.h:345
Definition: libwps_internal.h:263
void extend(T val)
extends the bdbox by (val, val) keeping the center
Definition: libwps_internal.h:600
Definition: libwps_internal.h:265
uint32_t m_attributes
Definition: libwps_internal.h:220
Definition: libwps_internal.h:265
Box2< int > Box2i
Box2 of int.
Definition: libwps_internal.h:661
Vec2< T > & max()
the maximum 2D point (in x and in y)
Definition: libwps_internal.h:532
double m_width
Definition: libwps_internal.h:210
Vec2< T > center() const
the box center
Definition: libwps_internal.h:552
Justification
Definition: libwps_internal.h:266
double m_rightGutter
Definition: libwps_internal.h:212
uint16_t readU16(WPXInputStream *input)
Definition: libwps_internal.cpp:58
bool operator==(Vec2< T > const &p) const
comparison==
Definition: libwps_internal.h:412
Definition: libwps_internal.h:227
Definition: libwps_internal.h:263
int8_t read8(WPXInputStream *input)
Definition: libwps_internal.cpp:53
Definition: libwps_internal.h:228
Definition: libwps_internal.h:265
bool operator!=(Vec2< T > const &p) const
comparison!=
Definition: libwps_internal.h:417
T y() const
second element
Definition: libwps_internal.h:327
uint32_t m_attributes
the font attributes defined as a set of bits
Definition: libwps_internal.h:195
Vec2(T xx=0, T yy=0)
constructor
Definition: libwps_internal.h:317
Box2< float > Box2f
Box2 of float.
Definition: libwps_internal.h:663
void setX(T xx)
resets the first element
Definition: libwps_internal.h:351
Definition: libwps_internal.h:269
std::map< Box2< float >, float, struct PosSizeLt > Map
Definition: libwps_internal.h:653
WPSBorder()
constructor
Definition: libwps_internal.h:232
Definition: libwps_internal.h:228
SubDocumentType
Definition: libwps_internal.h:265
Definition: libwps_internal.h:263
Definition: libwps_internal.h:266
Definition: libwps_internal.h:265
Definition: libwps_internal.h:97
int m_languageId
the language (simplified locale name id) if known
Definition: libwps_internal.h:199
Definition: libwps_internal.h:267
Vec2< T > const & max() const
the maximum 2D point (in x and in y)
Definition: libwps_internal.h:522
bool operator!=(WPSBorder const &orig) const
operator!=
Definition: libwps_internal.h:243
Definition: libwps_internal.h:265
Definition: libwps_internal.h:87
Box2(Box2< U > const &p)
generic constructor
Definition: libwps_internal.h:511
internal struct used to create sorted map, sorted by Y
Definition: libwps_internal.h:475
std::string m_extra
public field use to add a message when the font is printed
Definition: libwps_internal.h:202
Vec2< T > m_pt[2]
the two extremities
Definition: libwps_internal.h:657
T x() const
first element
Definition: libwps_internal.h:322
void operator()(T *)
Definition: libwps_internal.h:71
Definition: libwps_internal.h:227
void add(T dx, T dy)
increases the actuals values by dx and dy
Definition: libwps_internal.h:362
uint8_t m_alignment
Definition: libwps_internal.h:221
Definition: libwps_internal.h:205
bool operator()(Vec2< T > const &s1, Vec2< T > const &s2) const
comparaison function
Definition: libwps_internal.h:478
WPSColumnProperties()
Definition: libwps_internal.h:217
Vec2< T > & operator-=(Vec2< T > const &p)
operator-=
Definition: libwps_internal.h:376
Vec2< T > & operator*=(U scale)
generic operator*=
Definition: libwps_internal.h:384
NumberingType
Definition: libwps_internal.h:263
static WPSFont getDefault()
Definition: libwps_internal.h:165
Definition: libwps_internal.h:229
int cmpY(Vec2< T > const &p) const
a comparison function: which first compares y then x
Definition: libwps_internal.h:438
std::map< Vec2< int >, int, struct PosSizeLtX > MapX
Definition: libwps_internal.h:470
bool isSet() const
accessor
Definition: libwps_internal.h:178
Vec2< int > Vec2i
Vec2 of int.
Definition: libwps_internal.h:494
friend std::ostream & operator<<(std::ostream &o, WPSBorder const &border)
operator<<: prints data in form "XxY"
Definition: libwps_internal.cpp:226
Pos
Definition: libwps_internal.h:228
Definition: libwps_internal.h:267
Vec2(Vec2< U > const &p)
generic copy constructor
Definition: libwps_internal.h:319
bool operator==(Box2< T > const &p) const
comparison operator==
Definition: libwps_internal.h:607
T operator[](int c) const
operator[]
Definition: libwps_internal.h:332
int compare(WPSBorder const &orig) const
compare two cell
Definition: libwps_internal.cpp:186
void resizeFromMax(Vec2< T > const &sz)
resize the box keeping the maximum
Definition: libwps_internal.h:580
int m_size
font size
Definition: libwps_internal.h:193
void scale(U factor)
scales all points of the box by factor
Definition: libwps_internal.h:593
std::string numberingTypeToString(NumberingType type)
Definition: libwps_internal.cpp:117
void setMax(Vec2< T > const &y)
resets the maximum point
Definition: libwps_internal.h:569
Style
Definition: libwps_internal.h:227
bool operator==(WPSBorder const &orig) const
operator==
Definition: libwps_internal.h:237
void setMin(Vec2< T > const &x)
resets the minimum point
Definition: libwps_internal.h:564
Box2(Vec2< T > minPt=Vec2< T >(), Vec2< T > maxPt=Vec2< T >())
constructor
Definition: libwps_internal.h:505
uint8_t readU8(WPXInputStream *input)
Definition: libwps_internal.cpp:34
Definition: libwps_internal.h:92
Definition: libwps_internal.h:229
WPSColumnDefinition()
Definition: libwps_internal.h:207
Style m_style
the border style
Definition: libwps_internal.h:253
Definition: libwps_internal.h:266
int32_t read32(WPXInputStream *input)
Definition: libwps_internal.cpp:79
Definition: libwps_internal.h:263
Definition: libwps_internal.h:266
small class which defines a vector with 2 elements
Definition: libwps_internal.h:313
bool operator()(Vec2< T > const &s1, Vec2< T > const &s2) const
comparaison function
Definition: libwps_internal.h:462
Definition: libwps_internal.h:263
friend Vec2< T > operator*(U scale, Vec2< T > const &p1)
generic operator*
Definition: libwps_internal.h:405
Vec2< T > size() const
the box size
Definition: libwps_internal.h:547
T m_y
second element
Definition: libwps_internal.h:488
an noop deleter used to transform a libwpd pointer in a false shared_ptr
Definition: libwps_internal.h:69
bool operator()(Box2< T > const &s1, Box2< T > const &s2) const
comparaison function
Definition: libwps_internal.h:645
friend std::ostream & operator<<(std::ostream &o, WPSFont const &ft)
operator<<
Definition: libwps_internal.cpp:141
bool operator==(WPSFont const &ft) const
compares to font
Definition: libwps_internal.cpp:172
int cmp(Vec2< T > const &p) const
a comparison function: which first compares x then y
Definition: libwps_internal.h:427
Vec2< bool > Vec2b
Vec2 of bool.
Definition: libwps_internal.h:492
Definition: libwps_internal.h:229
void resizeFromCenter(Vec2< T > const &sz)
resize the box keeping the center
Definition: libwps_internal.h:585
Vec2< T > & min()
the minimum 2D point (in x and in y)
Definition: libwps_internal.h:527
friend Vec2< T > operator+(Vec2< T > const &p1, Vec2< T > const &p2)
operator+
Definition: libwps_internal.h:392