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;
164 WPSFont() : m_name(
""), m_size(0), m_attributes(0), m_color(0), m_languageId(-1), m_extra(
"") {}
180 return !m_name.empty();
184 bool operator==(
WPSFont const &ft)
const;
187 return !operator==(ft);
227 enum Style { None, Single, Double, Dot, LargeDot, Dash };
228 enum Pos { Left = 0, Right = 1, Top = 2, Bottom = 3 };
229 enum { LeftBit = 0x01, RightBit = 0x02, TopBit=0x4, BottomBit = 0x08 };
232 WPSBorder() : m_style(Single), m_width(1), m_color(0) { }
234 std::string getPropertyValue()
const;
245 return !operator==(orig);
248 int compare(
WPSBorder const &orig)
const;
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 317 Vec2(T xx=0,T yy=0) : m_x(xx), m_y(yy) { }
319 template <
class U>
Vec2(
Vec2<U> const &p) : m_x(T(p.x())), m_y(T(p.y())) {}
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);
549 return m_pt[1]-m_pt[0];
554 return 0.5*(m_pt[0]+m_pt[1]);
577 m_pt[1] = m_pt[0]+sz;
582 m_pt[0] = m_pt[1]-sz;
587 Vec2<T> ctr = 0.5*(m_pt[0]+m_pt[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)
602 m_pt[0] -=
Vec2<T>(val/2,val/2);
603 m_pt[1] +=
Vec2<T>(val-(val/2),val-(val/2));
617 bool operator<(Box2<T>
const &p)
const 625 int diff = m_pt[0].cmpY(p.
m_pt[0]);
626 if (diff)
return diff;
627 diff = m_pt[1].cmpY(p.
m_pt[1]);
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;
bool operator!=(Vec2< T > const &p) const
comparison!=
Definition: libwps_internal.h:417
std::string m_name
font name
Definition: libwps_internal.h:191
int cmpY(Vec2< T > const &p) const
a comparison function: which first compares y then x
Definition: libwps_internal.h:438
Definition: libwps_internal.h:263
static unsigned long readU16(const unsigned char *ptr)
Definition: WPSOLEStream.cpp:295
Vec2< float > Vec2f
Vec2 of float.
Definition: libwps_internal.h:496
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: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
Definition: libwps_internal.cpp:32
shared_ptr< WPXInputStream > WPXInputStreamPtr
Definition: libwps_internal.h:74
bool operator()(Box2< T > const &s1, Box2< T > const &s2) const
comparaison function
Definition: libwps_internal.h:645
virtual ~WPSFont()
Definition: libwps_internal.h:173
bool operator()(Vec2< T > const &s1, Vec2< T > const &s2) const
comparaison function
Definition: libwps_internal.h:478
Definition: libwps_internal.h:161
Definition: libwps_internal.h:269
Vec2< T > size() const
the box size
Definition: libwps_internal.h:547
uint8_t readU8(WPXInputStreamPtr &input)
Definition: libwps_internal.h:119
friend Vec2< T > operator-(Vec2< T > const &p1, Vec2< T > const &p2)
operator-
Definition: libwps_internal.h:398
bool operator==(WPSBorder const &orig) const
operator==
Definition: libwps_internal.h:237
T & operator[](int c)
operator[]
Definition: libwps_internal.h:338
bool operator()(Vec2< T > const &s1, Vec2< T > const &s2) const
comparaison function
Definition: libwps_internal.h:462
small class which defines a 2D Box
Definition: libwps_internal.h:501
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
bool operator!=(WPSFont const &ft) const
Definition: libwps_internal.h:185
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
map of Vec2
Definition: libwps_internal.h:486
WPSFont()
constructor
Definition: libwps_internal.h:164
int m_width
the border width
Definition: libwps_internal.h:255
Vec2< T > const & min() const
the minimum 2D point (in x and in y)
Definition: libwps_internal.h:517
Definition: libwps_internal.h:265
Vec2< T > & operator+=(Vec2< T > const &p)
operator+=
Definition: libwps_internal.h:369
Definition: libwps_internal.h:263
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
Vec2< T > const & operator[](int c) const
the two extremum points which defined the box
Definition: libwps_internal.h:541
Vec2< T > const & max() const
the maximum 2D point (in x and in y)
Definition: libwps_internal.h:522
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
Justification
Definition: libwps_internal.h:266
T operator[](int c) const
operator[]
Definition: libwps_internal.h:332
double m_rightGutter
Definition: libwps_internal.h:212
bool operator!=(WPSBorder const &orig) const
operator!=
Definition: libwps_internal.h:243
Definition: libwps_internal.h:263
T y() const
second element
Definition: libwps_internal.h:327
Definition: libwps_internal.h:265
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
int16_t read16(WPXInputStreamPtr &input)
Definition: libwps_internal.h:136
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
map of Box2
Definition: libwps_internal.h:653
WPSBorder()
constructor
Definition: libwps_internal.h:232
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
bool operator==(Vec2< T > const &p) const
comparison==
Definition: libwps_internal.h:412
int m_languageId
the language (simplified locale name id) if known
Definition: libwps_internal.h:199
Definition: libwps_internal.h:267
Definition: libwps_internal.h:265
bool operator==(Box2< T > const &p) const
comparison operator==
Definition: libwps_internal.h:607
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
bool operator!=(Box2< T > const &p) const
comparison operator!=
Definition: libwps_internal.h:612
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
int cmp(Vec2< T > const &p) const
a comparison function: which first compares x then y
Definition: libwps_internal.h:427
void operator()(T *)
Definition: libwps_internal.h:71
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
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
std::map< Vec2< int >, int, struct PosSizeLtX > MapX
map of Vec2
Definition: libwps_internal.h:470
static unsigned long readU32(const unsigned char *ptr)
Definition: WPSOLEStream.cpp:300
Vec2< int > Vec2i
Vec2 of int.
Definition: libwps_internal.h:494
Pos
Definition: libwps_internal.h:228
Definition: libwps_internal.h:267
Vec2(Vec2< U > const &p)
generic copy constructor
Definition: libwps_internal.h:319
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
int32_t read32(WPXInputStreamPtr &input)
Definition: libwps_internal.h:140
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
void setMin(Vec2< T > const &x)
resets the minimum point
Definition: libwps_internal.h:564
Vec2< T > center() const
the box center
Definition: libwps_internal.h:552
Box2(Vec2< T > minPt=Vec2< T >(), Vec2< T > maxPt=Vec2< T >())
constructor
Definition: libwps_internal.h:505
Definition: libwps_internal.h:92
WPSColumnDefinition()
Definition: libwps_internal.h:207
Style m_style
the border style
Definition: libwps_internal.h:253
Definition: libwps_internal.h:266
Definition: libwps_internal.h:263
Definition: libwps_internal.h:266
small class which defines a vector with 2 elements
Definition: libwps_internal.h:313
Definition: libwps_internal.h:263
friend Vec2< T > operator*(U scale, Vec2< T > const &p1)
generic operator*
Definition: libwps_internal.h:405
bool isSet() const
accessor
Definition: libwps_internal.h:178
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
T x() const
first element
Definition: libwps_internal.h:322
int cmp(Box2< T > const &p) const
comparison function : fist sorts min by Y,X values then max extremity
Definition: libwps_internal.h:623
Vec2< bool > Vec2b
Vec2 of bool.
Definition: libwps_internal.h:492
std::ostream & operator<<(std::ostream &o, WPSFont const &ft)
Definition: libwps_internal.cpp:141
int8_t read8(WPXInputStreamPtr &input)
Definition: libwps_internal.h:132
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