34 #ifndef LIBMWAW_INTERNAL_H
35 #define LIBMWAW_INTERNAL_H
48 #define M_PI 3.14159265358979323846
51 #include <libwpd-stream/libwpd-stream.h>
52 #include <libwpd/libwpd.h>
54 #if defined(_MSC_VER) || defined(__DJGPP__)
56 typedef signed char int8_t;
57 typedef unsigned char uint8_t;
58 typedef signed short int16_t;
59 typedef unsigned short uint16_t;
60 typedef signed int int32_t;
61 typedef unsigned int uint32_t;
62 typedef unsigned __int64 uint64_t;
63 typedef __int64 int64_t;
75 #ifdef HAVE_INTTYPES_H
90 #if defined(SHAREDPTR_TR1)
92 using std::tr1::shared_ptr;
93 #elif defined(SHAREDPTR_STD)
95 using std::shared_ptr;
97 #include <boost/shared_ptr.hpp>
98 using boost::shared_ptr;
109 #define MWAW_DEBUG_MSG(M) printf M
111 #define MWAW_DEBUG_MSG(M)
141 uint8_t
readU8(WPXInputStream *input);
166 MWAWColor(
unsigned char r,
unsigned char g,
unsigned char b,
unsigned char a=0) :
167 m_value(uint32_t((a<<24)+(r<<16)+(g<<8)+b)) {
196 return (
m_value&0xFFFFFF)==0xFFFFFF;
225 std::string
str()
const;
243 bool addTo(WPXPropertyList &propList, std::string which=
"")
const;
397 T
const &
get()
const {
437 assert(c >= 0 && c <= 1);
438 return (c==0) ?
m_x :
m_y;
442 assert(c >= 0 && c <= 1);
443 return (c==0) ?
m_x :
m_y;
512 bool operator<(Vec2<T>
const &p)
const {
518 if (diff < 0)
return -1;
519 if (diff > 0)
return 1;
521 if (diff < 0)
return -1;
522 if (diff > 0)
return 1;
528 if (diff < 0)
return -1;
529 if (diff > 0)
return 1;
531 if (diff < 0)
return -1;
532 if (diff > 0)
return 1;
537 friend std::ostream &operator<< (std::ostream &o, Vec2<T>
const &f) {
538 o << f.m_x <<
"x" << f.m_y;
548 return s1.
cmp(s2) < 0;
554 typedef std::map<Vec2<T>, T,
struct PosSizeLtX>
MapX;
562 return s1.
cmpY(s2) < 0;
568 typedef std::map<Vec2<T>, T,
struct PosSizeLtY>
MapY;
596 for (
int c = 0; c < 3; c++)
m_val[c] = T(p[c]);
613 assert(c >= 0 && c <= 2);
618 assert(c >= 0 && c <= 2);
623 void set(T xx, T yy, T zz) {
642 void add(T dx, T dy, T dz) {
661 for (
int c = 0; c < 3; c++)
m_val[c] = T(
m_val[c]*scale);
691 bool operator<(Vec3<T>
const &p)
const {
696 for (
int c = 0; c < 3; c++) {
698 if (diff)
return (diff < 0) ? -1 : 1;
704 friend std::ostream &operator<< (std::ostream &o, Vec3<T>
const &f) {
705 o << f.m_val[0] <<
"x" << f.m_val[1] <<
"x" << f.m_val[2];
715 return s1.
cmp(s2) < 0;
748 for (
int c=0; c < 2; c++)
m_pt[c] = p[c];
772 assert(c >= 0 && c <= 1);
809 m_pt[0] = centerPt - 0.5*sz;
810 m_pt[1] = centerPt + (sz - 0.5*sz);
814 template <
class U>
void scale(U factor) {
834 bool operator<(Box2<T>
const &p)
const {
841 if (diff)
return diff;
843 if (diff)
return diff;
848 friend std::ostream &operator<< (std::ostream &o, Box2<T>
const &f) {
849 o <<
"(" << f.m_pt[0] <<
"<->" << f.m_pt[1] <<
")";
859 return s1.
cmp(s2) < 0;
865 typedef std::map<Box2<T>, T,
struct PosSizeLt>
Map;