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;
73 # ifdef HAVE_INTTYPES_H
74 # include <inttypes.h>
81 # include <inttypes.h>
90 # define gmtime_r(tp,tmp) (gmtime(tp)?(*(tmp)=*gmtime(tp),(tmp)):0)
91 # define localtime_r(tp,tmp) (localtime(tp)?(*(tmp)=*localtime(tp),(tmp)):0)
95 #if defined(SHAREDPTR_TR1)
97 using std::tr1::shared_ptr;
98 #elif defined(SHAREDPTR_STD)
100 using std::shared_ptr;
102 #include <boost/shared_ptr.hpp>
103 using boost::shared_ptr;
114 #define MWAW_DEBUG_MSG(M) printf M
116 #define MWAW_DEBUG_MSG(M)
146 uint8_t
readU8(WPXInputStream *input);
171 MWAWColor(
unsigned char r,
unsigned char g,
unsigned char b,
unsigned char a=0) :
172 m_value(uint32_t((a<<24)+(r<<16)+(g<<8)+b)) {
201 return (
m_value&0xFFFFFF)==0xFFFFFF;
230 std::string
str()
const;
248 bool addTo(WPXPropertyList &propList, std::string which=
"")
const;
413 T
const &
get()
const {
453 assert(c >= 0 && c <= 1);
454 return (c==0) ?
m_x :
m_y;
458 assert(c >= 0 && c <= 1);
459 return (c==0) ?
m_x :
m_y;
463 void set(T xx, T yy) {
528 bool operator<(Vec2<T>
const &p)
const {
534 if (diff < 0)
return -1;
535 if (diff > 0)
return 1;
537 if (diff < 0)
return -1;
538 if (diff > 0)
return 1;
544 if (diff < 0)
return -1;
545 if (diff > 0)
return 1;
547 if (diff < 0)
return -1;
548 if (diff > 0)
return 1;
553 friend std::ostream &operator<< (std::ostream &o, Vec2<T>
const &f) {
554 o << f.m_x <<
"x" << f.m_y;
564 return s1.
cmp(s2) < 0;
570 typedef std::map<Vec2<T>, T,
struct PosSizeLtX>
MapX;
578 return s1.
cmpY(s2) < 0;
584 typedef std::map<Vec2<T>, T,
struct PosSizeLtY>
MapY;
612 for (
int c = 0; c < 3; c++)
m_val[c] = T(p[c]);
629 assert(c >= 0 && c <= 2);
634 assert(c >= 0 && c <= 2);
639 void set(T xx, T yy, T zz) {
658 void add(T dx, T dy, T dz) {
677 for (
int c = 0; c < 3; c++)
m_val[c] = T(
m_val[c]*scale);
707 bool operator<(Vec3<T>
const &p)
const {
712 for (
int c = 0; c < 3; c++) {
714 if (diff)
return (diff < 0) ? -1 : 1;
720 friend std::ostream &operator<< (std::ostream &o, Vec3<T>
const &f) {
721 o << f.m_val[0] <<
"x" << f.m_val[1] <<
"x" << f.m_val[2];
731 return s1.
cmp(s2) < 0;
764 for (
int c=0; c < 2; c++)
m_pt[c] = p[c];
788 assert(c >= 0 && c <= 1);
825 m_pt[0] = centerPt - 0.5*sz;
826 m_pt[1] = centerPt + (sz - 0.5*sz);
830 template <
class U>
void scale(U factor) {
868 bool operator<(Box2<T>
const &p)
const {
875 if (diff)
return diff;
877 if (diff)
return diff;
882 friend std::ostream &operator<< (std::ostream &o, Box2<T>
const &f) {
883 o <<
"(" << f.m_pt[0] <<
"<->" << f.m_pt[1] <<
")";
893 return s1.
cmp(s2) < 0;
899 typedef std::map<Box2<T>, T,
struct PosSizeLt>
Map;