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);
153 MWAWColor(
unsigned char r,
unsigned char g,
unsigned char b,
unsigned char a=0) :
154 m_value(uint32_t((a<<24)+(r<<16)+(g<<8)+b)) {
183 return (
m_value&0xFFFFFF)==0xFFFFFF;
212 std::string
str()
const;
280 #define MWAW_LEFT 0x00
281 #define MWAW_RIGHT 0x01
282 #define MWAW_CENTER 0x02
283 #define MWAW_TOP 0x03
284 #define MWAW_BOTTOM 0x04
339 T
const &
get()
const {
379 assert(c >= 0 && c <= 1);
380 return (c==0) ?
m_x :
m_y;
384 assert(c >= 0 && c <= 1);
385 return (c==0) ?
m_x :
m_y;
389 void set(T xx, T yy) {
454 bool operator<(Vec2<T>
const &p)
const {
460 if (diff < 0)
return -1;
461 if (diff > 0)
return 1;
463 if (diff < 0)
return -1;
464 if (diff > 0)
return 1;
470 if (diff < 0)
return -1;
471 if (diff > 0)
return 1;
473 if (diff < 0)
return -1;
474 if (diff > 0)
return 1;
479 friend std::ostream &operator<< (std::ostream &o, Vec2<T>
const &f) {
480 o << f.m_x <<
"x" << f.m_y;
490 return s1.
cmp(s2) < 0;
496 typedef std::map<Vec2<T>, T,
struct PosSizeLtX>
MapX;
504 return s1.
cmpY(s2) < 0;
510 typedef std::map<Vec2<T>, T,
struct PosSizeLtY>
MapY;
538 for (
int c = 0; c < 3; c++)
m_val[c] = T(p[c]);
555 assert(c >= 0 && c <= 2);
560 assert(c >= 0 && c <= 2);
565 void set(T xx, T yy, T zz) {
584 void add(T dx, T dy, T dz) {
603 for (
int c = 0; c < 3; c++)
m_val[c] = T(
m_val[c]*scale);
633 bool operator<(Vec3<T>
const &p)
const {
638 for (
int c = 0; c < 3; c++) {
640 if (diff)
return (diff < 0) ? -1 : 1;
646 friend std::ostream &operator<< (std::ostream &o, Vec3<T>
const &f) {
647 o << f.m_val[0] <<
"x" << f.m_val[1] <<
"x" << f.m_val[2];
657 return s1.
cmp(s2) < 0;
690 for (
int c=0; c < 2; c++)
m_pt[c] = p[c];
714 assert(c >= 0 && c <= 1);
751 m_pt[0] = centerPt - 0.5*sz;
752 m_pt[1] = centerPt + (sz - 0.5*sz);
756 template <
class U>
void scale(U factor) {
776 bool operator<(Box2<T>
const &p)
const {
783 if (diff)
return diff;
785 if (diff)
return diff;
790 friend std::ostream &operator<< (std::ostream &o, Box2<T>
const &f) {
791 o <<
"(" << f.m_pt[0] <<
"<->" << f.m_pt[1] <<
")";
801 return s1.
cmp(s2) < 0;
807 typedef std::map<Box2<T>, T,
struct PosSizeLt>
Map;