libmwaw_internal.hxx
Go to the documentation of this file.
1 /* -*- Mode: C++; c-default-style: "k&r"; indent-tabs-mode: nil; tab-width: 2; c-basic-offset: 2 -*- */
2
3 /* libmwaw
4 * Version: MPL 2.0 / LGPLv2+
5 *
6 * The contents of this file are subject to the Mozilla Public License Version
7 * 2.0 (the "License"); you may not use this file except in compliance with
8 * the License or as specified alternatively below. You may obtain a copy of
9 * the License at http://www.mozilla.org/MPL/
10 *
11 * Software distributed under the License is distributed on an "AS IS" basis,
12 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13 * for the specific language governing rights and limitations under the
14 * License.
15 *
16 * Major Contributor(s):
17 * Copyright (C) 2002 William Lachance (wrlach@gmail.com)
18 * Copyright (C) 2002,2004 Marc Maurer (uwog@uwog.net)
19 * Copyright (C) 2004-2006 Fridrich Strba (fridrich.strba@bluewin.ch)
20 * Copyright (C) 2006, 2007 Andrew Ziem
21 * Copyright (C) 2011, 2012 Alonso Laurent (alonso@loria.fr)
22 *
23 *
24 * All Rights Reserved.
25 *
26 * For minor contributions see the git repository.
27 *
28 * Alternatively, the contents of this file may be used under the terms of
29 * the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"),
30 * in which case the provisions of the LGPLv2+ are applicable
31 * instead of those above.
32 */
33
34 #ifndef LIBMWAW_INTERNAL_H
35 #define LIBMWAW_INTERNAL_H
36 #ifdef DEBUG
37 #include <stdio.h>
38 #endif
39
40 #include <math.h>
41
42 #include <algorithm>
43 #include <cmath>
44 #include <limits>
45 #include <map>
46 #include <memory>
47 #include <ostream>
48 #include <string>
49 #include <vector>
50
51 #ifndef M_PI
52 #define M_PI 3.14159265358979323846
53 #endif
54
55 #include <librevenge-stream/librevenge-stream.h>
56 #include <librevenge/librevenge.h>
57
58 #if defined(_MSC_VER) || defined(__DJGPP__)
59
60 typedef signed char int8_t;
61 typedef unsigned char uint8_t;
62 typedef signed short int16_t;
63 typedef unsigned short uint16_t;
64 typedef signed int int32_t;
65 typedef unsigned int uint32_t;
66 typedef unsigned __int64 uint64_t;
67 typedef __int64 int64_t;
68
69 #else /* !_MSC_VER && !__DJGPP__*/
70
71 # ifdef HAVE_CONFIG_H
72
73 # include <config.h>
74 # ifdef HAVE_STDINT_H
75 # include <stdint.h>
76 # endif
77 # ifdef HAVE_INTTYPES_H
78 # include <inttypes.h>
79 # endif
80
81 # else
82
83 // assume that the headers are there inside LibreOffice build when no HAVE_CONFIG_H is defined
84 # include <stdint.h>
85 # include <inttypes.h>
86
87 # endif
88
89 #endif /* _MSC_VER || __DJGPP__ */
90
91 // define gmtime_r and localtime_r on Windows, so that can use
92 // thread-safe functions on other environments
93 #ifdef _WIN32
94 # define gmtime_r(tp,tmp) (gmtime(tp)?(*(tmp)=*gmtime(tp),(tmp)):0)
95 # define localtime_r(tp,tmp) (localtime(tp)?(*(tmp)=*localtime(tp),(tmp)):0)
96 #endif
97
98 /* ---------- memory --------------- */
100 template <class T>
101 struct MWAW_shared_ptr_noop_deleter {
102 void operator()(T *) {}
103 };
104
105 #if defined(HAVE_FUNC_ATTRIBUTE_FORMAT)
106 # define LIBMWAW_ATTRIBUTE_PRINTF(fmt, arg) __attribute__((format(printf, fmt, arg)))
107 #else
108 # define LIBMWAW_ATTRIBUTE_PRINTF(fmt, arg)
109 #endif
110
111 #define MWAW_N_ELEMENTS(m) sizeof(m)/sizeof(m[0])
112
113 #if defined(HAVE_CLANG_ATTRIBUTE_FALLTHROUGH)
114 # define MWAW_FALLTHROUGH [[clang::fallthrough]]
115 #elif defined(HAVE_GCC_ATTRIBUTE_FALLTHROUGH)
116 # define MWAW_FALLTHROUGH __attribute__((fallthrough))
117 #else
118 # define MWAW_FALLTHROUGH ((void) 0)
119 #endif
120
121 /* ---------- debug --------------- */
122 #ifdef DEBUG
123 namespace libmwaw
124 {
125 void printDebugMsg(const char *format, ...) LIBMWAW_ATTRIBUTE_PRINTF(1,2);
126 }
127 #define MWAW_DEBUG_MSG(M) libmwaw::printDebugMsg M
128 #else
129 #define MWAW_DEBUG_MSG(M)
130 #endif
131
132 namespace libmwaw
133 {
134 // Various exceptions:
135 class VersionException
136 {
137 };
138
139 class FileException
140 {
141 };
142
143 class ParseException
144 {
145 };
146
147 class GenericException
148 {
149 };
150
151 class WrongPasswordException
152 {
153 };
154 }
155
156 /* ---------- input ----------------- */
157 namespace libmwaw
158 {
159 uint8_t readU8(librevenge::RVNGInputStream *input);
161 void appendUnicode(uint32_t val, librevenge::RVNGString &buffer);
162
164 template<typename T>
165 bool checkAddOverflow(T x, T y)
166 {
167 return (x < 0 && y < std::numeric_limits<T>::lowest() - x)
168 || (x > 0 && y > std::numeric_limits<T>::max() - x);
169 }
170 }
171
172 /* ---------- small enum/class ------------- */
173 namespace libmwaw
174 {
176 enum Position { Left = 0, Right = 1, Top = 2, Bottom = 3, HMiddle = 4, VMiddle = 5 };
178 enum { LeftBit = 0x01, RightBit = 0x02, TopBit=0x4, BottomBit = 0x08, HMiddleBit = 0x10, VMiddleBit = 0x20 };
179
180 enum NumberingType { NONE, BULLET, ARABIC, LOWERCASE, UPPERCASE, LOWERCASE_ROMAN, UPPERCASE_ROMAN };
181 std::string numberingTypeToString(NumberingType type);
182 std::string numberingValueToString(NumberingType type, int value);
183
185 enum WritingMode { WritingLeftTop, WritingLeftBottom, WritingRightTop, WritingRightBottom, WritingInherited };
187 std::string writingModeToString(WritingMode mode);
188 enum SubDocumentType { DOC_NONE, DOC_CHART, DOC_CHART_ZONE, DOC_COMMENT_ANNOTATION, DOC_GRAPHIC_GROUP, DOC_HEADER_FOOTER, DOC_NOTE, DOC_SHEET, DOC_TABLE, DOC_TEXT_BOX };
189 }
190
192 struct MWAWColor {
194 explicit MWAWColor(uint32_t argb=0)
195 : m_value(argb)
196 {
197 }
199 MWAWColor(unsigned char r, unsigned char g, unsigned char b, unsigned char a=255)
200 : m_value(uint32_t((a<<24)+(r<<16)+(g<<8)+b))
201 {
202 }
204 MWAWColor(MWAWColor const &) = default;
206 MWAWColor(MWAWColor &&) = default;
208 MWAWColor &operator=(MWAWColor const &) = default;
210 MWAWColor &operator=(MWAWColor &&) = default;
212 MWAWColor &operator=(uint32_t argb)
213 {
214 m_value = argb;
215 return *this;
216 }
218 static MWAWColor colorFromCMYK(unsigned char c, unsigned char m, unsigned char y, unsigned char k)
219 {
220 double w=1.-static_cast<double>(k)/255.;
221 return MWAWColor
222 (static_cast<unsigned char>(255 * (1-static_cast<double>(c)/255) * w),
223 static_cast<unsigned char>(255 * (1-static_cast<double>(m)/255) * w),
224 static_cast<unsigned char>(255 * (1-static_cast<double>(y)/255) * w)
225 );
226 }
228 static MWAWColor colorFromHSL(unsigned char H, unsigned char S, unsigned char L)
229 {
230 double c=(1-((L>=128) ? (2*static_cast<double>(L)-255) : (255-2*static_cast<double>(L)))/255)*
231 static_cast<double>(S)/255;
232 double tmp=std::fmod((static_cast<double>(H)*6/255),2)-1;
233 double x=c*(1-(tmp>0 ? tmp : -tmp));
234 auto C=static_cast<unsigned char>(255*c);
235 auto M=static_cast<unsigned char>(static_cast<double>(L)-255*c/2);
236 auto X=static_cast<unsigned char>(255*x);
237 if (H<=42) return MWAWColor(static_cast<unsigned char>(M+C),static_cast<unsigned char>(M+X),static_cast<unsigned char>(M));
238 if (H<=85) return MWAWColor(static_cast<unsigned char>(M+X),static_cast<unsigned char>(M+C),static_cast<unsigned char>(M));
239 if (H<=127) return MWAWColor(static_cast<unsigned char>(M),static_cast<unsigned char>(M+C),static_cast<unsigned char>(M+X));
240 if (H<=170) return MWAWColor(static_cast<unsigned char>(M),static_cast<unsigned char>(M+X),static_cast<unsigned char>(M+C));
241 if (H<=212) return MWAWColor(static_cast<unsigned char>(M+X),static_cast<unsigned char>(M),static_cast<unsigned char>(M+C));
242 return MWAWColor(static_cast<unsigned char>(M+C),static_cast<unsigned char>(M),static_cast<unsigned char>(M+X));
243 }
245 static MWAWColor black()
246 {
247 return MWAWColor(0,0,0);
248 }
250 static MWAWColor white()
251 {
252 return MWAWColor(255,255,255);
253 }
254
256 static MWAWColor barycenter(float alpha, MWAWColor const &colA,
257 float beta, MWAWColor const &colB);
259 uint32_t value() const
260 {
261 return m_value;
262 }
264 unsigned char getAlpha() const
265 {
266 return static_cast<unsigned char>((m_value>>24)&0xFF);
267 }
269 unsigned char getBlue() const
270 {
271 return static_cast<unsigned char>(m_value&0xFF);
272 }
274 unsigned char getRed() const
275 {
276 return static_cast<unsigned char>((m_value>>16)&0xFF);
277 }
279 unsigned char getGreen() const
280 {
281 return static_cast<unsigned char>((m_value>>8)&0xFF);
282 }
284 bool isBlack() const
285 {
286 return (m_value&0xFFFFFF)==0;
287 }
289 bool isWhite() const
290 {
291 return (m_value&0xFFFFFF)==0xFFFFFF;
292 }
294 bool operator==(MWAWColor const &c) const
295 {
296 return (c.m_value&0xFFFFFF)==(m_value&0xFFFFFF);
297 }
299 bool operator!=(MWAWColor const &c) const
300 {
301 return !operator==(c);
302 }
304 bool operator<(MWAWColor const &c) const
305 {
306 return (c.m_value&0xFFFFFF)<(m_value&0xFFFFFF);
307 }
309 bool operator<=(MWAWColor const &c) const
310 {
311 return (c.m_value&0xFFFFFF)<=(m_value&0xFFFFFF);
312 }
314 bool operator>(MWAWColor const &c) const
315 {
316 return !operator<=(c);
317 }
319 bool operator>=(MWAWColor const &c) const
320 {
321 return !operator<(c);
322 }
324 friend std::ostream &operator<< (std::ostream &o, MWAWColor const &c);
326 std::string str() const;
327 protected:
329 uint32_t m_value;
330 };
331
333 struct MWAWBorder {
335 enum Style { None, Simple, Dot, LargeDot, Dash };
337 enum Type { Single, Double, Triple };
338
340 MWAWBorder()
341 : m_style(Simple)
342 , m_type(Single)
343 , m_width(1)
344 , m_widthsList()
345 , m_color(MWAWColor::black())
346 , m_extra("") { }
347 MWAWBorder(MWAWBorder const &) = default;
348 MWAWBorder(MWAWBorder &&) = default;
349 MWAWBorder &operator=(MWAWBorder const &) = default;
350 MWAWBorder &operator=(MWAWBorder &&) = default;
354 bool addTo(librevenge::RVNGPropertyList &propList, std::string which="") const;
356 bool isEmpty() const
357 {
358 return m_style==None || m_width <= 0;
359 }
361 bool operator==(MWAWBorder const &orig) const
362 {
363 return !operator!=(orig);
364 }
366 bool operator!=(MWAWBorder const &orig) const
367 {
368 return m_style != orig.m_style || m_type != orig.m_type ||
369 m_width < orig.m_width || m_width > orig.m_width || m_color != orig.m_color ||
370 m_widthsList != orig.m_widthsList;
371 }
373 int compare(MWAWBorder const &orig) const;
374
376 friend std::ostream &operator<< (std::ostream &o, MWAWBorder const &border);
378 friend std::ostream &operator<< (std::ostream &o, MWAWBorder::Style const &style);
380 Style m_style;
381
382 // multiple borders
383
385 Type m_type;
387 double m_width;
391 std::vector<double> m_widthsList;
393 MWAWColor m_color;
395 std::string m_extra;
396 };
397
399 struct MWAWField {
401 enum Type { None, PageCount, PageNumber, Date, Time, Title, Database };
402
404 explicit MWAWField(Type type)
405 : m_type(type)
406 , m_numberingType(libmwaw::ARABIC)
407 , m_DTFormat("")
408 , m_data("")
409 {
410 }
411 MWAWField(MWAWField &&) = default;
412 MWAWField(MWAWField const &) = default;
413 MWAWField &operator=(MWAWField const &) = default;
414 MWAWField &operator=(MWAWField &&) = default;
416 bool addTo(librevenge::RVNGPropertyList &propList) const;
418 librevenge::RVNGString getString() const;
420 Type m_type;
422 libmwaw::NumberingType m_numberingType;
424 std::string m_DTFormat;
426 std::string m_data;
427 };
428
430 struct MWAWLink {
432 MWAWLink()
433 : m_HRef("")
434 {
435 }
436
438 bool addTo(librevenge::RVNGPropertyList &propList) const;
439
441 std::string m_HRef;
442 };
443
445 struct MWAWNote {
447 enum Type { FootNote, EndNote };
449 explicit MWAWNote(Type type)
450 : m_type(type)
451 , m_label("")
452 , m_number(-1)
453 {
454 }
456 Type m_type;
458 librevenge::RVNGString m_label;
460 int m_number;
461 };
462
467 struct MWAWEmbeddedObject {
469 MWAWEmbeddedObject()
470 : m_dataList()
471 , m_typeList()
472 {
473 }
475 MWAWEmbeddedObject(librevenge::RVNGBinaryData const &binaryData,
476 std::string const &type="image/pict") : m_dataList(), m_typeList()
477 {
478 add(binaryData, type);
479 }
481 ~MWAWEmbeddedObject();
483 bool isEmpty() const
484 {
485 for (auto const &data : m_dataList) {
486 if (!data.empty())
487 return false;
488 }
489 return true;
490 }
492 void add(librevenge::RVNGBinaryData const &binaryData, std::string const &type="image/pict")
493 {
494 size_t pos=m_dataList.size();
495 if (pos<m_typeList.size()) pos=m_typeList.size();
496 m_dataList.resize(pos+1);
497 m_dataList[pos]=binaryData;
498 m_typeList.resize(pos+1);
499 m_typeList[pos]=type;
500 }
502 bool addTo(librevenge::RVNGPropertyList &propList) const;
504 friend std::ostream &operator<<(std::ostream &o, MWAWEmbeddedObject const &pict);
506 int cmp(MWAWEmbeddedObject const &pict) const;
507
509 std::vector<librevenge::RVNGBinaryData> m_dataList;
511 std::vector<std::string> m_typeList;
512 };
513
514 // forward declarations of basic classes and smart pointers
515 class MWAWEntry;
516 class MWAWFont;
517 class MWAWGraphicEncoder;
518 class MWAWGraphicShape;
519 class MWAWGraphicStyle;
520 class MWAWHeader;
521 class MWAWList;
522 class MWAWPageSpan;
523 class MWAWParagraph;
524 class MWAWParser;
525 class MWAWPosition;
526 class MWAWSection;
527
528 class MWAWFontConverter;
529 class MWAWFontManager;
530 class MWAWGraphicListener;
531 class MWAWInputStream;
532 class MWAWListener;
533 class MWAWListManager;
534 class MWAWParserState;
535 class MWAWPresentationListener;
536 class MWAWRSRCParser;
537 class MWAWSpreadsheetListener;
538 class MWAWSubDocument;
539 class MWAWTextListener;
541 typedef std::shared_ptr<MWAWFontConverter> MWAWFontConverterPtr;
543 typedef std::shared_ptr<MWAWFontManager> MWAWFontManagerPtr;
545 typedef std::shared_ptr<MWAWGraphicListener> MWAWGraphicListenerPtr;
547 typedef std::shared_ptr<MWAWInputStream> MWAWInputStreamPtr;
549 typedef std::shared_ptr<MWAWListener> MWAWListenerPtr;
551 typedef std::shared_ptr<MWAWListManager> MWAWListManagerPtr;
553 typedef std::shared_ptr<MWAWParserState> MWAWParserStatePtr;
555 typedef std::shared_ptr<MWAWPresentationListener> MWAWPresentationListenerPtr;
557 typedef std::shared_ptr<MWAWRSRCParser> MWAWRSRCParserPtr;
559 typedef std::shared_ptr<MWAWSpreadsheetListener> MWAWSpreadsheetListenerPtr;
561 typedef std::shared_ptr<MWAWSubDocument> MWAWSubDocumentPtr;
563 typedef std::shared_ptr<MWAWTextListener> MWAWTextListenerPtr;
564
573 template <class T> struct MWAWVariable {
575 MWAWVariable()
576 : m_data()
577 , m_set(false) {}
579 explicit MWAWVariable(T const &def)
580 : m_data(def)
581 , m_set(false) {}
583 MWAWVariable(MWAWVariable const &orig)
584 : m_data(orig.m_data)
585 , m_set(orig.m_set) {}
587 MWAWVariable &operator=(MWAWVariable const &) = default;
589 MWAWVariable &operator=(T const &val)
590 {
591 m_data = val;
592 m_set = true;
593 return *this;
594 }
596 void insert(MWAWVariable const &orig)
597 {
598 if (orig.m_set) {
599 m_data = orig.m_data;
600 m_set = orig.m_set;
601 }
602 }
604 T const *operator->() const
605 {
606 return &m_data;
607 }
609 T *operator->()
610 {
611 m_set = true;
612 return &m_data;
613 }
615 T const &operator*() const
616 {
617 return m_data;
618 }
620 T &operator*()
621 {
622 m_set = true;
623 return m_data;
624 }
626 T const &get() const
627 {
628 return m_data;
629 }
631 bool isSet() const
632 {
633 return m_set;
634 }
636 void setSet(bool newVal)
637 {
638 m_set=newVal;
639 }
640 protected:
642 T m_data;
644 bool m_set;
645 };
646
647 /* ---------- vec2/box2f ------------- */
651 template <class T> class MWAWVec2
652 {
653 public:
655 explicit MWAWVec2(T xx=0,T yy=0)
656 : m_x(xx)
657 , m_y(yy) { }
659 template <class U> explicit MWAWVec2(MWAWVec2<U> const &p)
660 : m_x(T(p.x()))
661 , m_y(T(p.y())) {}
662
664 T x() const
665 {
666 return m_x;
667 }
669 T y() const
670 {
671 return m_y;
672 }
674 T operator[](int c) const
675 {
676 if (c<0 || c>1) throw libmwaw::GenericException();
677 return (c==0) ? m_x : m_y;
678 }
680 T &operator[](int c)
681 {
682 if (c<0 || c>1) throw libmwaw::GenericException();
683 return (c==0) ? m_x : m_y;
684 }
685
687 void set(T xx, T yy)
688 {
689 m_x = xx;
690 m_y = yy;
691 }
693 void setX(T xx)
694 {
695 m_x = xx;
696 }
698 void setY(T yy)
699 {
700 m_y = yy;
701 }
702
704 void add(T dx, T dy)
705 {
706 if (libmwaw::checkAddOverflow(m_x, dx) || libmwaw::checkAddOverflow(m_y, dy))
707 throw libmwaw::GenericException();
708 m_x += dx;
709 m_y += dy;
710 }
711
713 MWAWVec2<T> &operator+=(MWAWVec2<T> const &p)
714 {
715 add(p.m_x, p.m_y);
716 return *this;
717 }
719 MWAWVec2<T> &operator-=(MWAWVec2<T> const &p)
720 {
721 // check if negation of either of the coords will cause overflow
722 const T diff = std::numeric_limits<T>::min() + std::numeric_limits<T>::max();
723 if (libmwaw::checkAddOverflow(p.m_x, diff) || libmwaw::checkAddOverflow(p.m_y, diff))
724 throw libmwaw::GenericException();
725 add(-p.m_x, -p.m_y);
726 return *this;
727 }
729 template <class U>
730 MWAWVec2<T> &operator*=(U scale)
731 {
732 m_x = T(m_x*scale);
733 m_y = T(m_y*scale);
734 return *this;
735 }
736
738 friend MWAWVec2<T> operator+(MWAWVec2<T> const &p1, MWAWVec2<T> const &p2)
739 {
740 MWAWVec2<T> p(p1);
741 return p+=p2;
742 }
744 friend MWAWVec2<T> operator-(MWAWVec2<T> const &p1, MWAWVec2<T> const &p2)
745 {
746 MWAWVec2<T> p(p1);
747 return p-=p2;
748 }
750 template <class U>
751 friend MWAWVec2<T> operator*(U scale, MWAWVec2<T> const &p1)
752 {
753 MWAWVec2<T> p(p1);
754 return p *= scale;
755 }
756
758 bool operator==(MWAWVec2<T> const &p) const
759 {
760 return cmpY(p) == 0;
761 }
763 bool operator!=(MWAWVec2<T> const &p) const
764 {
765 return cmpY(p) != 0;
766 }
768 bool operator<(MWAWVec2<T> const &p) const
769 {
770 return cmpY(p) < 0;
771 }
773 int cmp(MWAWVec2<T> const &p) const
774 {
775 if (m_x < p.m_x) return -1;
776 if (m_x > p.m_x) return 1;
777 if (m_y < p.m_y) return -1;
778 if (m_y > p.m_y) return 1;
779 return 0;
780 }
782 int cmpY(MWAWVec2<T> const &p) const
783 {
784 if (m_y < p.m_y) return -1;
785 if (m_y > p.m_y) return 1;
786 if (m_x < p.m_x) return -1;
787 if (m_x > p.m_x) return 1;
788 return 0;
789 }
790
792 friend std::ostream &operator<< (std::ostream &o, MWAWVec2<T> const &f)
793 {
794 o << f.m_x << "x" << f.m_y;
795 return o;
796 }
797
801 struct PosSizeLtX {
803 bool operator()(MWAWVec2<T> const &s1, MWAWVec2<T> const &s2) const
804 {
805 return s1.cmp(s2) < 0;
806 }
807 };
811 typedef std::map<MWAWVec2<T>, T,struct PosSizeLtX> MapX;
812
816 struct PosSizeLtY {
818 bool operator()(MWAWVec2<T> const &s1, MWAWVec2<T> const &s2) const
819 {
820 return s1.cmpY(s2) < 0;
821 }
822 };
826 typedef std::map<MWAWVec2<T>, T,struct PosSizeLtY> MapY;
827 protected:
828 T m_x, m_y;
829 };
830
832 typedef MWAWVec2<bool> MWAWVec2b;
834 typedef MWAWVec2<int> MWAWVec2i;
836 typedef MWAWVec2<long> MWAWVec2l;
838 typedef MWAWVec2<float> MWAWVec2f;
839
843 template <class T> class MWAWVec3
844 {
845 public:
847 explicit MWAWVec3(T xx=0,T yy=0,T zz=0)
848 {
849 m_val[0] = xx;
850 m_val[1] = yy;
851 m_val[2] = zz;
852 }
854 template <class U> explicit MWAWVec3(MWAWVec3<U> const &p)
855 {
856 for (int c = 0; c < 3; c++) m_val[c] = T(p[c]);
857 }
858
860 T x() const
861 {
862 return m_val[0];
863 }
865 T y() const
866 {
867 return m_val[1];
868 }
870 T z() const
871 {
872 return m_val[2];
873 }
875 T operator[](int c) const
876 {
877 if (c<0 || c>2) throw libmwaw::GenericException();
878 return m_val[c];
879 }
881 T &operator[](int c)
882 {
883 if (c<0 || c>2) throw libmwaw::GenericException();
884 return m_val[c];
885 }
886
888 void set(T xx, T yy, T zz)
889 {
890 m_val[0] = xx;
891 m_val[1] = yy;
892 m_val[2] = zz;
893 }
895 void setX(T xx)
896 {
897 m_val[0] = xx;
898 }
900 void setY(T yy)
901 {
902 m_val[1] = yy;
903 }
905 void setZ(T zz)
906 {
907 m_val[2] = zz;
908 }
909
911 void add(T dx, T dy, T dz)
912 {
913 m_val[0] += dx;
914 m_val[1] += dy;
915 m_val[2] += dz;
916 }
917
919 MWAWVec3<T> &operator+=(MWAWVec3<T> const &p)
920 {
921 for (int c = 0; c < 3; c++) m_val[c] = T(m_val[c]+p.m_val[c]);
922 return *this;
923 }
925 MWAWVec3<T> &operator-=(MWAWVec3<T> const &p)
926 {
927 for (int c = 0; c < 3; c++) m_val[c] = T(m_val[c]-p.m_val[c]);
928 return *this;
929 }
931 template <class U>
932 MWAWVec3<T> &operator*=(U scale)
933 {
934 for (auto &c : m_val) c = T(c*scale);
935 return *this;
936 }
937
939 friend MWAWVec3<T> operator+(MWAWVec3<T> const &p1, MWAWVec3<T> const &p2)
940 {
941 MWAWVec3<T> p(p1);
942 return p+=p2;
943 }
945 friend MWAWVec3<T> operator-(MWAWVec3<T> const &p1, MWAWVec3<T> const &p2)
946 {
947 MWAWVec3<T> p(p1);
948 return p-=p2;
949 }
951 template <class U>
952 friend MWAWVec3<T> operator*(U scale, MWAWVec3<T> const &p1)
953 {
954 MWAWVec3<T> p(p1);
955 return p *= scale;
956 }
957
959 bool operator==(MWAWVec3<T> const &p) const
960 {
961 return cmp(p) == 0;
962 }
964 bool operator!=(MWAWVec3<T> const &p) const
965 {
966 return cmp(p) != 0;
967 }
969 bool operator<(MWAWVec3<T> const &p) const
970 {
971 return cmp(p) < 0;
972 }
974 int cmp(MWAWVec3<T> const &p) const
975 {
976 for (int c = 0; c < 3; c++) {
977 if (m_val[c]<p.m_val[c]) return -1;
978 if (m_val[c]>p.m_val[c]) return 1;
979 }
980 return 0;
981 }
982
984 friend std::ostream &operator<< (std::ostream &o, MWAWVec3<T> const &f)
985 {
986 o << f.m_val[0] << "x" << f.m_val[1] << "x" << f.m_val[2];
987 return o;
988 }
989
993 struct PosSizeLt {
995 bool operator()(MWAWVec3<T> const &s1, MWAWVec3<T> const &s2) const
996 {
997 return s1.cmp(s2) < 0;
998 }
999 };
1003 typedef std::map<MWAWVec3<T>, T,struct PosSizeLt> Map;
1004
1005 protected:
1007 T m_val[3];
1008 };
1009
1011 typedef MWAWVec3<unsigned char> MWAWVec3uc;
1013 typedef MWAWVec3<int> MWAWVec3i;
1015 typedef MWAWVec3<float> MWAWVec3f;
1016
1020 template <class T> class MWAWBox2
1021 {
1022 public:
1024 explicit MWAWBox2(MWAWVec2<T> minPt=MWAWVec2<T>(), MWAWVec2<T> maxPt=MWAWVec2<T>())
1025 : m_data(minPt, maxPt)
1026 {
1027 }
1029 template <class U> explicit MWAWBox2(MWAWBox2<U> const &p)
1030 : m_data(p.min(), p.max())
1031 {
1032 }
1033
1035 MWAWVec2<T> const &min() const
1036 {
1037 return m_data.first;
1038 }
1040 MWAWVec2<T> const &max() const
1041 {
1042 return m_data.second;
1043 }
1045 MWAWVec2<T> &min()
1046 {
1047 return m_data.first;
1048 }
1050 MWAWVec2<T> &max()
1051 {
1052 return m_data.second;
1053 }
1057 MWAWVec2<T> const &operator[](int c) const
1058 {
1059 if (c<0 || c>1) throw libmwaw::GenericException();
1060 return c==0 ? m_data.first : m_data.second;
1061 }
1063 MWAWVec2<T> size() const
1064 {
1065 return m_data.second-m_data.first;
1066 }
1068 MWAWVec2<T> center() const
1069 {
1070 return MWAWVec2<T>((m_data.first.x()+m_data.second.x())/2,
1071 (m_data.first.y()+m_data.second.y())/2);
1072 }
1073
1075 void set(MWAWVec2<T> const &x, MWAWVec2<T> const &y)
1076 {
1077 m_data.first = x;
1078 m_data.second = y;
1079 }
1081 void setMin(MWAWVec2<T> const &x)
1082 {
1083 m_data.first = x;
1084 }
1086 void setMax(MWAWVec2<T> const &y)
1087 {
1088 m_data.second = y;
1089 }
1090
1092 void resizeFromMin(MWAWVec2<T> const &sz)
1093 {
1094 m_data.second = m_data.first+sz;
1095 }
1097 void resizeFromMax(MWAWVec2<T> const &sz)
1098 {
1099 m_data.first = m_data.second-sz;
1100 }
1102 void resizeFromCenter(MWAWVec2<T> const &sz)
1103 {
1104 MWAWVec2<T> centerPt = center();
1105 MWAWVec2<T> decal(sz.x()/2,sz.y()/2);
1106 m_data.first = centerPt - decal;
1107 m_data.second = centerPt + (sz - decal);
1108 }
1109
1111 template <class U> void scale(U factor)
1112 {
1113 m_data.first *= factor;
1114 m_data.second *= factor;
1115 }
1116
1118 void extend(T val)
1119 {
1120 m_data.first -= MWAWVec2<T>(val/2,val/2);
1121 m_data.second += MWAWVec2<T>(val-(val/2),val-(val/2));
1122 }
1123
1125 MWAWBox2<T> getUnion(MWAWBox2<T> const &box) const
1126 {
1127 MWAWBox2<T> res;
1128 res.m_data.first=MWAWVec2<T>(m_data.first[0]<box.m_data.first[0]?m_data.first[0] : box.m_data.first[0],
1129 m_data.first[1]<box.m_data.first[1]?m_data.first[1] : box.m_data.first[1]);
1130 res.m_data.second=MWAWVec2<T>(m_data.second[0]>box.m_data.second[0]?m_data.second[0] : box.m_data.second[0],
1131 m_data.second[1]>box.m_data.second[1]?m_data.second[1] : box.m_data.second[1]);
1132 return res;
1133 }
1135 MWAWBox2<T> getIntersection(MWAWBox2<T> const &box) const
1136 {
1137 MWAWBox2<T> res;
1138 res.m_data.first=MWAWVec2<T>(m_data.first[0]>box.m_data.first[0]?m_data.first[0] : box.m_data.first[0],
1139 m_data.first[1]>box.m_data.first[1]?m_data.first[1] : box.m_data.first[1]);
1140 res.m_data.second=MWAWVec2<T>(m_data.second[0]<box.m_data.second[0]?m_data.second[0] : box.m_data.second[0],
1141 m_data.second[1]<box.m_data.second[1]?m_data.second[1] : box.m_data.second[1]);
1142 return res;
1143 }
1145 bool operator==(MWAWBox2<T> const &mat) const
1146 {
1147 return m_data==mat.m_data;
1148 }
1150 bool operator!=(MWAWBox2<T> const &mat) const
1151 {
1152 return m_data!=mat.m_data;
1153 }
1155 bool operator<(MWAWBox2<T> const &mat) const
1156 {
1157 return m_data<mat.m_data;
1158 }
1160 bool operator<=(MWAWBox2<T> const &mat) const
1161 {
1162 return m_data<=mat.m_data;
1163 }
1165 bool operator>(MWAWBox2<T> const &mat) const
1166 {
1167 return m_data>mat.m_data;
1168 }
1170 bool operator>=(MWAWBox2<T> const &mat) const
1171 {
1172 return m_data>=mat.m_data;
1173 }
1175 friend std::ostream &operator<< (std::ostream &o, MWAWBox2<T> const &f)
1176 {
1177 o << "(" << f.min() << "<->" << f.max() << ")";
1178 return o;
1179 }
1180
1181 protected:
1183 std::pair<MWAWVec2<T>, MWAWVec2<T> > m_data;
1184 };
1185
1187 typedef MWAWBox2<int> MWAWBox2i;
1189 typedef MWAWBox2<float> MWAWBox2f;
1191 typedef MWAWBox2<long> MWAWBox2l;
1192
1194 class MWAWTransformation
1195 {
1196 public:
1198 explicit MWAWTransformation(MWAWVec3f const &xRow=MWAWVec3f(1,0,0), MWAWVec3f const &yRow=MWAWVec3f(0,1,0))
1199 : m_data(xRow, yRow)
1200 , m_isIdentity(false)
1201 {
1202 checkIdentity();
1203 }
1205 bool isIdentity() const
1206 {
1207 return m_isIdentity;
1208 }
1210 void checkIdentity() const
1211 {
1212 m_isIdentity= m_data.first==MWAWVec3f(1,0,0) && m_data.second==MWAWVec3f(0,1,0);
1213 }
1217 MWAWVec3f const &operator[](int c) const
1218 {
1219 if (c<0 || c>1) throw libmwaw::GenericException();
1220 return c==0 ? m_data.first : m_data.second;
1221 }
1223 MWAWVec2f operator*(MWAWVec2f const &pt) const
1224 {
1225 if (m_isIdentity) return pt;
1226 return multiplyDirection(pt)+MWAWVec2f(m_data.first[2],m_data.second[2]);
1227 }
1229 MWAWVec2f multiplyDirection(MWAWVec2f const &dir) const
1230 {
1231 if (m_isIdentity) return dir;
1232 MWAWVec2f res;
1233 for (int coord=0; coord<2; ++coord) {
1234 MWAWVec3f const &row=coord==0 ? m_data.first : m_data.second;
1235 float value=0;
1236 for (int i=0; i<2; ++i)
1237 value+=row[i]*dir[i];
1238 res[coord]=value;
1239 }
1240 return res;
1241 }
1243 MWAWBox2f operator*(MWAWBox2f const &box) const
1244 {
1245 if (m_isIdentity) return box;
1246 return MWAWBox2f(operator*(box.min()), operator*(box.max()));
1247 }
1249 MWAWTransformation operator*(MWAWTransformation const &mat) const
1250 {
1251 if (mat.m_isIdentity) return *this;
1252 MWAWTransformation res;
1253 for (int row=0; row<2; ++row) {
1254 MWAWVec3f &resRow=row==0 ? res.m_data.first : res.m_data.second;
1255 for (int col=0; col<3; ++col) {
1256 float value=0;
1257 for (int i=0; i<3; ++i)
1258 value+=(*this)[row][i]*(i==2 ? (col==2 ? 1.f : 0.f) : mat[i][col]);
1259 resRow[col]=value;
1260 }
1261 }
1262 res.checkIdentity();
1263 return res;
1264 }
1266 MWAWTransformation &operator*=(MWAWTransformation const &mat)
1267 {
1268 if (!mat.m_isIdentity)
1269 *this=(*this)*mat;
1270 return *this;
1271 }
1273 bool operator==(MWAWTransformation const &mat) const
1274 {
1275 return m_data==mat.m_data;
1276 }
1278 bool operator!=(MWAWTransformation const &mat) const
1279 {
1280 return m_data!=mat.m_data;
1281 }
1283 bool operator<(MWAWTransformation const &mat) const
1284 {
1285 return m_data<mat.m_data;
1286 }
1288 bool operator<=(MWAWTransformation const &mat) const
1289 {
1290 return m_data<=mat.m_data;
1291 }
1293 bool operator>(MWAWTransformation const &mat) const
1294 {
1295 return m_data>mat.m_data;
1296 }
1298 bool operator>=(MWAWTransformation const &mat) const
1299 {
1300 return m_data>=mat.m_data;
1301 }
1305 bool decompose(float &rotation, MWAWVec2f &shearing, MWAWTransformation &transform, MWAWVec2f const &center) const;
1306
1308 static MWAWTransformation translation(MWAWVec2f const &trans)
1309 {
1310 return MWAWTransformation(MWAWVec3f(1, 0, trans[0]), MWAWVec3f(0, 1, trans[1]));
1311 }
1313 static MWAWTransformation scale(MWAWVec2f const &trans)
1314 {
1315 return MWAWTransformation(MWAWVec3f(trans[0], 0, 0), MWAWVec3f(0, trans[1], 0));
1316 }
1320 static MWAWTransformation rotation(float angle, MWAWVec2f const &center=MWAWVec2f(0,0));
1324 static MWAWTransformation shear(MWAWVec2f s, MWAWVec2f const &center=MWAWVec2f(0,0))
1325 {
1326 return MWAWTransformation(MWAWVec3f(1, s[0], -s[0]*center[1]), MWAWVec3f(s[1], 1, -s[1]*center[0]));
1327 }
1328 protected:
1330 std::pair<MWAWVec3f, MWAWVec3f > m_data;
1332 mutable bool m_isIdentity;
1333 };
1334
1335 // some format function
1336 namespace libmwaw
1337 {
1339 bool convertDTFormat(std::string const &dtFormat, librevenge::RVNGPropertyListVector &propVect);
1340 }
1341
1342 // some geometrical function
1343 namespace libmwaw
1344 {
1346 MWAWVec2f rotatePointAroundCenter(MWAWVec2f const &point, MWAWVec2f const &center, float angle);
1348 MWAWBox2f rotateBoxFromCenter(MWAWBox2f const &box, float angle);
1349 }
1350 #endif /* LIBMWAW_INTERNAL_H */
1351 // vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab:
MWAWVec3::z
T z() const
third element
Definition: libmwaw_internal.hxx:870
MWAWEmbeddedObject::add
void add(librevenge::RVNGBinaryData const &binaryData, std::string const &type="image/pict")
add a picture
Definition: libmwaw_internal.hxx:492
MWAWTextListenerPtr
std::shared_ptr< MWAWTextListener > MWAWTextListenerPtr
a smart pointer of MWAWTextListener
Definition: libmwaw_internal.hxx:563
MWAWVec2::setY
void setY(T yy)
resets the second element
Definition: libmwaw_internal.hxx:698
MWAWNote::m_number
int m_number
the note number if defined
Definition: libmwaw_internal.hxx:460
MWAWHeader
a function used by MWAWDocument to store the version of document
Definition: MWAWHeader.hxx:56
MWAWVec3::operator*=
MWAWVec3< T > & operator*=(U scale)
generic operator*=
Definition: libmwaw_internal.hxx:932
libmwaw::NumberingType
NumberingType
Definition: libmwaw_internal.hxx:180
MWAWColor::operator<
bool operator<(MWAWColor const &c) const
operator<
Definition: libmwaw_internal.hxx:304
MWAWVec2::operator-=
MWAWVec2< T > & operator-=(MWAWVec2< T > const &p)
operator-=
Definition: libmwaw_internal.hxx:719
libmwaw::appendUnicode
void appendUnicode(uint32_t val, librevenge::RVNGString &buffer)
adds an unicode character to a string
Definition: libmwaw_internal.cxx:63
libmwaw::DOC_NONE
Definition: libmwaw_internal.hxx:188
MWAWColor::operator=
MWAWColor & operator=(uint32_t argb)
operator=
Definition: libmwaw_internal.hxx:212
libmwaw::LOWERCASE_ROMAN
Definition: libmwaw_internal.hxx:180
MWAWParserStatePtr
std::shared_ptr< MWAWParserState > MWAWParserStatePtr
a smart pointer of MWAWParserState
Definition: libmwaw_internal.hxx:553
libmwaw::UPPERCASE_ROMAN
Definition: libmwaw_internal.hxx:180
MWAWVec3i
MWAWVec3< int > MWAWVec3i
MWAWVec3 of int.
Definition: libmwaw_internal.hxx:1013
MWAWVec2< bool >::MapX
std::map< MWAWVec2< bool >, bool, struct PosSizeLtX > MapX
map of MWAWVec2
Definition: libmwaw_internal.hxx:811
MWAWTransformation::multiplyDirection
MWAWVec2f multiplyDirection(MWAWVec2f const &dir) const
operator* for direction
Definition: libmwaw_internal.hxx:1229
MWAWVec2::y
T y() const
second element
Definition: libmwaw_internal.hxx:669
libmwaw::DOC_GRAPHIC_GROUP
Definition: libmwaw_internal.hxx:188
libmwaw::NONE
Definition: libmwaw_internal.hxx:180
MWAWField::m_data
std::string m_data
the database/link field ( if defined )
Definition: libmwaw_internal.hxx:426
MWAWFontManager
a font manager which can be used to store fonts, ...
Definition: MWAWFont.hxx:582
MWAWColor::getRed
unsigned char getRed() const
returns the red value
Definition: libmwaw_internal.hxx:274
MWAWPresentationListener
This class contains code needed to write a presention document.
Definition: MWAWPresentationListener.hxx:59
MWAWBorder::m_type
Type m_type
the border repetition
Definition: libmwaw_internal.hxx:385
libmwaw::TopBit
Definition: libmwaw_internal.hxx:178
BeagleWksDRParserInternal::operator<<
std::ostream & operator<<(std::ostream &o, Shape const &shape)
Definition: BeagleWksDRParser.cxx:107
MWAWPageSpan
A class which defines the page properties.
Definition: MWAWPageSpan.hxx:95
MWAWBorder::isEmpty
bool isEmpty() const
returns true if the border is empty
Definition: libmwaw_internal.hxx:356
MWAWTransformation::translation
static MWAWTransformation translation(MWAWVec2f const &trans)
returns a translation transformation
Definition: libmwaw_internal.hxx:1308
libmwaw::rotateBoxFromCenter
MWAWBox2f rotateBoxFromCenter(MWAWBox2f const &box, float angle)
rotate a bdox and returns the final bdbox, angle is given in degree
Definition: libmwaw_internal.cxx:700
MWAWVariable::operator*
T & operator*()
operator*
Definition: libmwaw_internal.hxx:620
MWAWEmbeddedObject::m_dataList
std::vector< librevenge::RVNGBinaryData > m_dataList
the picture content: one data by representation
Definition: libmwaw_internal.hxx:509
MWAWListenerPtr
std::shared_ptr< MWAWListener > MWAWListenerPtr
a smart pointer of MWAWListener
Definition: libmwaw_internal.hxx:549
MWAWColor::isWhite
bool isWhite() const
return true if the color is white
Definition: libmwaw_internal.hxx:289
libmwaw::DOC_TEXT_BOX
Definition: libmwaw_internal.hxx:188
MWAWTextListener
This class contents the main functions needed to create a Word processing Document.
Definition: MWAWTextListener.hxx:64
MWAWColor::isBlack
bool isBlack() const
return true if the color is black
Definition: libmwaw_internal.hxx:284
MWAWColor::white
static MWAWColor white()
return the white color
Definition: libmwaw_internal.hxx:250
MWAWNote::MWAWNote
MWAWNote(Type type)
constructor
Definition: libmwaw_internal.hxx:449
MWAWVec2::MWAWVec2
MWAWVec2(T xx=0, T yy=0)
constructor
Definition: libmwaw_internal.hxx:655
libmwaw::DOC_NOTE
Definition: libmwaw_internal.hxx:188
libmwaw::numberingValueToString
std::string numberingValueToString(NumberingType type, int value)
Definition: libmwaw_internal.cxx:130
MWAWSpreadsheetListenerPtr
std::shared_ptr< MWAWSpreadsheetListener > MWAWSpreadsheetListenerPtr
a smart pointer of MWAWSpreadsheetListener
Definition: libmwaw_internal.hxx:559
MWAWLink
a link
Definition: libmwaw_internal.hxx:430
MWAWVariable::m_data
T m_data
the value
Definition: libmwaw_internal.hxx:642
MWAWVec3::operator!=
bool operator!=(MWAWVec3< T > const &p) const
comparison!=
Definition: libmwaw_internal.hxx:964
libmwaw::convertDTFormat
bool convertDTFormat(std::string const &dtFormat, librevenge::RVNGPropertyListVector &propVect)
convert a DTFormat in a propertyList
Definition: libmwaw_internal.cxx:316
libmwaw::VMiddleBit
Definition: libmwaw_internal.hxx:178
MWAWBox2::extend
void extend(T val)
extends the bdbox by (val, val) keeping the center
Definition: libmwaw_internal.hxx:1118
MWAWVariable::operator->
T * operator->()
operator*
Definition: libmwaw_internal.hxx:609
MWAWTransformation::MWAWTransformation
MWAWTransformation(MWAWVec3f const &xRow=MWAWVec3f(1, 0, 0), MWAWVec3f const &yRow=MWAWVec3f(0, 1, 0))
constructor
Definition: libmwaw_internal.hxx:1198
MWAWColor::MWAWColor
MWAWColor(unsigned char r, unsigned char g, unsigned char b, unsigned char a=255)
constructor from color
Definition: libmwaw_internal.hxx:199
MWAWVec3::add
void add(T dx, T dy, T dz)
increases the actuals values by dx, dy, dz
Definition: libmwaw_internal.hxx:911
MWAWTransformation::operator*
MWAWVec2f operator*(MWAWVec2f const &pt) const
operator* for vec2f
Definition: libmwaw_internal.hxx:1223
libmwaw::DOC_CHART
Definition: libmwaw_internal.hxx:188
MWAWVariable::MWAWVariable
MWAWVariable(T const &def)
constructor with a default value
Definition: libmwaw_internal.hxx:579
MWAWBox2::resizeFromMax
void resizeFromMax(MWAWVec2< T > const &sz)
resize the box keeping the maximum
Definition: libmwaw_internal.hxx:1097
MWAWColor::black
static MWAWColor black()
return the back color
Definition: libmwaw_internal.hxx:245
MWAWTransformation::m_isIdentity
bool m_isIdentity
flag to know if this matrix is an identity matrix
Definition: libmwaw_internal.hxx:1332
MWAWVec3< int >::Map
std::map< MWAWVec3< int >, int, struct PosSizeLt > Map
map of MWAWVec3
Definition: libmwaw_internal.hxx:1003
MWAWGraphicStyle
a structure used to define a picture style
Definition: MWAWGraphicStyle.hxx:47
MWAWBox2::operator==
bool operator==(MWAWBox2< T > const &mat) const
operator==
Definition: libmwaw_internal.hxx:1145
MWAWBox2::center
MWAWVec2< T > center() const
the box center
Definition: libmwaw_internal.hxx:1068
MWAWVec3::operator-=
MWAWVec3< T > & operator-=(MWAWVec3< T > const &p)
operator-=
Definition: libmwaw_internal.hxx:925
MWAWVariable::insert
void insert(MWAWVariable const &orig)
update the current value if orig is set
Definition: libmwaw_internal.hxx:596
MWAWGraphicListener
This class contains the code needed to create Graphic document.
Definition: MWAWGraphicListener.hxx:59
libmwaw::SubDocumentType
SubDocumentType
Definition: libmwaw_internal.hxx:188
MWAWVec3::operator*
friend MWAWVec3< T > operator*(U scale, MWAWVec3< T > const &p1)
generic operator*
Definition: libmwaw_internal.hxx:952
MWAWTransformation::shear
static MWAWTransformation shear(MWAWVec2f s, MWAWVec2f const &center=MWAWVec2f(0, 0))
returns a shear transformation letting center invariant, ie.
Definition: libmwaw_internal.hxx:1324
MWAWPresentationListenerPtr
std::shared_ptr< MWAWPresentationListener > MWAWPresentationListenerPtr
a smart pointer of MWAWPresentationListener
Definition: libmwaw_internal.hxx:555
libmwaw::numberingTypeToString
std::string numberingTypeToString(NumberingType type)
Definition: libmwaw_internal.cxx:106
MWAWVec3::y
T y() const
second element
Definition: libmwaw_internal.hxx:865
MWAWTransformation::operator>
bool operator>(MWAWTransformation const &mat) const
operator>
Definition: libmwaw_internal.hxx:1293
libmwaw::VMiddle
Definition: libmwaw_internal.hxx:176
MWAWBox2::size
MWAWVec2< T > size() const
the box size
Definition: libmwaw_internal.hxx:1063
MWAWVec2i
MWAWVec2< int > MWAWVec2i
MWAWVec2 of int.
Definition: libmwaw_internal.hxx:834
MWAWBorder::m_width
double m_width
the border total width in point
Definition: libmwaw_internal.hxx:387
MWAWTransformation::operator!=
bool operator!=(MWAWTransformation const &mat) const
operator!=
Definition: libmwaw_internal.hxx:1278
libmwaw::Bottom
Definition: libmwaw_internal.hxx:176
MWAWVec2::MWAWVec2
MWAWVec2(MWAWVec2< U > const &p)
generic copy constructor
Definition: libmwaw_internal.hxx:659
MWAWVec3::x
T x() const
first element
Definition: libmwaw_internal.hxx:860
MWAWVec2::operator-
friend MWAWVec2< T > operator-(MWAWVec2< T > const &p1, MWAWVec2< T > const &p2)
operator-
Definition: libmwaw_internal.hxx:744
libmwaw::Position
Position
basic position enum
Definition: libmwaw_internal.hxx:176
libmwaw::Top
Definition: libmwaw_internal.hxx:176
MWAWVec2::operator*=
MWAWVec2< T > & operator*=(U scale)
generic operator*=
Definition: libmwaw_internal.hxx:730
MWAWBox2i
MWAWBox2< int > MWAWBox2i
MWAWBox2 of int.
Definition: libmwaw_internal.hxx:1187
MWAWNote::m_type
Type m_type
the note type
Definition: libmwaw_internal.hxx:456
MWAWVec2::add
void add(T dx, T dy)
increases the actuals values by dx and dy
Definition: libmwaw_internal.hxx:704
MWAWBox2::operator>
bool operator>(MWAWBox2< T > const &mat) const
operator>
Definition: libmwaw_internal.hxx:1165
libmwaw::Right
Definition: libmwaw_internal.hxx:176
MWAWVec2::operator[]
T & operator[](int c)
operator[]
Definition: libmwaw_internal.hxx:680
MWAWBox2::min
MWAWVec2< T > const & min() const
the minimum 2D point (in x and in y)
Definition: libmwaw_internal.hxx:1035
MWAWVec3
small class which defines a vector with 3 elements
Definition: libmwaw_internal.hxx:843
MWAWVariable::isSet
bool isSet() const
return true if the variable is set
Definition: libmwaw_internal.hxx:631
libmwaw
namespace used to regroup all libwpd functions, enumerations which we have redefined for internal usa...
Definition: libmwaw_internal.cxx:50
MWAWBorder::Type
Type
the line repetition
Definition: libmwaw_internal.hxx:337
MWAWVec2::cmp
int cmp(MWAWVec2< T > const &p) const
a comparison function: which first compares x then y
Definition: libmwaw_internal.hxx:773
libmwaw::WritingRightTop
Definition: libmwaw_internal.hxx:185
MWAWTransformation::operator[]
MWAWVec3f const & operator[](int c) const
the two extremum points which defined the box
Definition: libmwaw_internal.hxx:1217
MWAWColor::colorFromCMYK
static MWAWColor colorFromCMYK(unsigned char c, unsigned char m, unsigned char y, unsigned char k)
return a color from a cmyk color ( basic)
Definition: libmwaw_internal.hxx:218
MWAWColor
the class to store a color
Definition: libmwaw_internal.hxx:192
libmwaw::DOC_CHART_ZONE
Definition: libmwaw_internal.hxx:188
MWAWEmbeddedObject::MWAWEmbeddedObject
MWAWEmbeddedObject(librevenge::RVNGBinaryData const &binaryData, std::string const &type="image/pict")
constructor
Definition: libmwaw_internal.hxx:475
libmwaw::WrongPasswordException
Definition: libmwaw_internal.hxx:151
MWAWVec3::operator-
friend MWAWVec3< T > operator-(MWAWVec3< T > const &p1, MWAWVec3< T > const &p2)
operator-
Definition: libmwaw_internal.hxx:945
MWAWGraphicListenerPtr
std::shared_ptr< MWAWGraphicListener > MWAWGraphicListenerPtr
a smart pointer of MWAWGraphicListener
Definition: libmwaw_internal.hxx:545
MWAWField::MWAWField
MWAWField(Type type)
basic constructor
Definition: libmwaw_internal.hxx:404
MWAWVec3::operator[]
T & operator[](int c)
operator[]
Definition: libmwaw_internal.hxx:881
libmwaw::Left
Definition: libmwaw_internal.hxx:176
MWAWTransformation::operator<=
bool operator<=(MWAWTransformation const &mat) const
operator<=
Definition: libmwaw_internal.hxx:1288
libmwaw::WritingInherited
Definition: libmwaw_internal.hxx:185
MWAWNote::m_label
librevenge::RVNGString m_label
the note label
Definition: libmwaw_internal.hxx:458
MWAWBorder::Style
Style
the line style
Definition: libmwaw_internal.hxx:335
libmwaw::UPPERCASE
Definition: libmwaw_internal.hxx:180
MWAWVec2::x
T x() const
first element
Definition: libmwaw_internal.hxx:664
MWAWTransformation::operator*
MWAWTransformation operator*(MWAWTransformation const &mat) const
operator* for transform
Definition: libmwaw_internal.hxx:1249
MWAWInputStream
Internal class used to read the file stream Internal class used to read the file stream, this class adds some usefull functions to the basic librevenge::RVNGInputStream:
Definition: MWAWInputStream.hxx:53
MWAWNote::Type
Type
enum to define note type
Definition: libmwaw_internal.hxx:447
MWAWLink::MWAWLink
MWAWLink()
basic constructor
Definition: libmwaw_internal.hxx:432
MWAWTransformation::scale
static MWAWTransformation scale(MWAWVec2f const &trans)
returns a scaling transformation
Definition: libmwaw_internal.hxx:1313
MWAWRSRCParserPtr
std::shared_ptr< MWAWRSRCParser > MWAWRSRCParserPtr
a smart pointer of MWAWRSRCParser
Definition: libmwaw_internal.hxx:557
MWAWVec2::m_y
T m_y
second element
Definition: libmwaw_internal.hxx:828
MWAWVec3::PosSizeLt::operator()
bool operator()(MWAWVec3< T > const &s1, MWAWVec3< T > const &s2) const
comparaison function
Definition: libmwaw_internal.hxx:995
MWAWBorder::m_widthsList
std::vector< double > m_widthsList
the different length used for each line/sep (if defined)
Definition: libmwaw_internal.hxx:391
libmwaw::rotatePointAroundCenter
MWAWVec2f rotatePointAroundCenter(MWAWVec2f const &point, MWAWVec2f const &center, float angle)
rotate a point around center, angle is given in degree
Definition: libmwaw_internal.cxx:692
MWAWFont
Class to store font.
Definition: MWAWFont.hxx:43
MWAWBorder
a border
Definition: libmwaw_internal.hxx:333
MWAWBox2
small class which defines a 2D Box
Definition: libmwaw_internal.hxx:1020
libmwaw::WritingLeftBottom
Definition: libmwaw_internal.hxx:185
MWAWVariable::operator=
MWAWVariable & operator=(T const &val)
set a value
Definition: libmwaw_internal.hxx:589
MWAWBox2::min
MWAWVec2< T > & min()
the minimum 2D point (in x and in y)
Definition: libmwaw_internal.hxx:1045
MWAWVec3::m_val
T m_val[3]
the values
Definition: libmwaw_internal.hxx:1007
MWAWParserState
a class to define the parser state
Definition: MWAWParser.hxx:49
MWAWVariable::m_set
bool m_set
a flag to know if the variable is set or not
Definition: libmwaw_internal.hxx:644
libmwaw::DOC_TABLE
Definition: libmwaw_internal.hxx:188
MWAWVec3::operator==
bool operator==(MWAWVec3< T > const &p) const
comparison==
Definition: libmwaw_internal.hxx:959
MWAWVec2::setX
void setX(T xx)
resets the first element
Definition: libmwaw_internal.hxx:693
MWAWBox2::operator>=
bool operator>=(MWAWBox2< T > const &mat) const
operator>=
Definition: libmwaw_internal.hxx:1170
libmwaw::GenericException
Definition: libmwaw_internal.hxx:147
MWAWSpreadsheetListener
This class contents the main functions needed to create a spreadsheet processing Document.
Definition: MWAWSpreadsheetListener.hxx:65
MWAWFontManagerPtr
std::shared_ptr< MWAWFontManager > MWAWFontManagerPtr
a smart pointer of MWAWFontManager
Definition: libmwaw_internal.hxx:543
MWAWField::m_type
Type m_type
the type
Definition: libmwaw_internal.hxx:420
MWAWVec2f
MWAWVec2< float > MWAWVec2f
MWAWVec2 of float.
Definition: libmwaw_internal.hxx:838
libmwaw::BULLET
Definition: libmwaw_internal.hxx:180
MWAWColor::operator==
bool operator==(MWAWColor const &c) const
operator==
Definition: libmwaw_internal.hxx:294
MWAWVec3f
MWAWVec3< float > MWAWVec3f
MWAWVec3 of float.
Definition: libmwaw_internal.hxx:1015
MWAWVec2::operator+=
MWAWVec2< T > & operator+=(MWAWVec2< T > const &p)
operator+=
Definition: libmwaw_internal.hxx:713
MWAWBox2::MWAWBox2
MWAWBox2(MWAWBox2< U > const &p)
generic constructor
Definition: libmwaw_internal.hxx:1029
MWAWVec2b
MWAWVec2< bool > MWAWVec2b
MWAWVec2 of bool.
Definition: libmwaw_internal.hxx:832
libmwaw::LOWERCASE
Definition: libmwaw_internal.hxx:180
MWAWListManagerPtr
std::shared_ptr< MWAWListManager > MWAWListManagerPtr
a smart pointer of MWAWListManager
Definition: libmwaw_internal.hxx:551
MWAWColor::operator>
bool operator>(MWAWColor const &c) const
operator>
Definition: libmwaw_internal.hxx:314
MWAWVec3::cmp
int cmp(MWAWVec3< T > const &p) const
a comparison function: which first compares x values, then y values then z values.
Definition: libmwaw_internal.hxx:974
libmwaw::checkAddOverflow
bool checkAddOverflow(T x, T y)
checks whether addition of x and y would overflow
Definition: libmwaw_internal.hxx:165
MWAWBox2::operator!=
bool operator!=(MWAWBox2< T > const &mat) const
operator!=
Definition: libmwaw_internal.hxx:1150
MWAWSubDocument
abstract class used to store a subdocument (with a comparison function)
Definition: MWAWSubDocument.hxx:41
MWAWVec2::operator==
bool operator==(MWAWVec2< T > const &p) const
comparison==
Definition: libmwaw_internal.hxx:758
MWAWTransformation::m_data
std::pair< MWAWVec3f, MWAWVec3f > m_data
the data
Definition: libmwaw_internal.hxx:1330
MWAWListManager
a manager which manages the lists, keeps the different kind of lists, to assure the unicity of each l...
Definition: MWAWList.hxx:212
libmwaw::BottomBit
Definition: libmwaw_internal.hxx:178
MWAWVec3::PosSizeLt
internal struct used to create sorted map, sorted by X, Y, Z
Definition: libmwaw_internal.hxx:993
MWAWColor::value
uint32_t value() const
return the rgba value
Definition: libmwaw_internal.hxx:259
MWAWEmbeddedObject::m_typeList
std::vector< std::string > m_typeList
the picture type: one type by representation
Definition: libmwaw_internal.hxx:511
MWAWVec3::setX
void setX(T xx)
resets the first element
Definition: libmwaw_internal.hxx:895
libmwaw::ParseException
Definition: libmwaw_internal.hxx:143
MWAWColor::MWAWColor
MWAWColor(uint32_t argb=0)
constructor
Definition: libmwaw_internal.hxx:194
MWAWEmbeddedObject
small class use to define a embedded object
Definition: libmwaw_internal.hxx:467
MWAWBox2::resizeFromCenter
void resizeFromCenter(MWAWVec2< T > const &sz)
resize the box keeping the center
Definition: libmwaw_internal.hxx:1102
LIBMWAW_ATTRIBUTE_PRINTF
#define LIBMWAW_ATTRIBUTE_PRINTF(fmt, arg)
Definition: libmwaw_internal.hxx:108
libmwaw::FileException
Definition: libmwaw_internal.hxx:139
libmwaw::DOC_SHEET
Definition: libmwaw_internal.hxx:188
libmwaw::WritingLeftTop
Definition: libmwaw_internal.hxx:185
MWAWColor::getGreen
unsigned char getGreen() const
returns the green value
Definition: libmwaw_internal.hxx:279
MWAWBox2::operator[]
MWAWVec2< T > const & operator[](int c) const
the two extremum points which defined the box
Definition: libmwaw_internal.hxx:1057
MWAWSection
a class which stores section properties
Definition: MWAWSection.hxx:45
MWAWBox2::getUnion
MWAWBox2< T > getUnion(MWAWBox2< T > const &box) const
returns the union between this and box
Definition: libmwaw_internal.hxx:1125
MWAWVec3::MWAWVec3
MWAWVec3(MWAWVec3< U > const &p)
generic copy constructor
Definition: libmwaw_internal.hxx:854
MWAWColor::operator>=
bool operator>=(MWAWColor const &c) const
operator>=
Definition: libmwaw_internal.hxx:319
MWAWEmbeddedObject::MWAWEmbeddedObject
MWAWEmbeddedObject()
empty constructor
Definition: libmwaw_internal.hxx:469
MWAWBox2::MWAWBox2
MWAWBox2(MWAWVec2< T > minPt=MWAWVec2< T >(), MWAWVec2< T > maxPt=MWAWVec2< T >())
constructor
Definition: libmwaw_internal.hxx:1024
MWAWVec2::operator+
friend MWAWVec2< T > operator+(MWAWVec2< T > const &p1, MWAWVec2< T > const &p2)
operator+
Definition: libmwaw_internal.hxx:738
MWAWColor::operator!=
bool operator!=(MWAWColor const &c) const
operator!=
Definition: libmwaw_internal.hxx:299
libmwaw::writingModeToString
std::string writingModeToString(WritingMode mode)
a function to convert a writing mode in string lt-rb, ...
Definition: libmwaw_internal.cxx:184
libmwaw::HMiddleBit
Definition: libmwaw_internal.hxx:178
MWAWBorder::m_style
Style m_style
the border style
Definition: libmwaw_internal.hxx:380
MWAWVec3::operator+
friend MWAWVec3< T > operator+(MWAWVec3< T > const &p1, MWAWVec3< T > const &p2)
operator+
Definition: libmwaw_internal.hxx:939
MWAWFontConverter
a namespace used to convert Mac font characters in unicode
Definition: MWAWFontConverter.hxx:62
MWAWVec3::setZ
void setZ(T zz)
resets the third element
Definition: libmwaw_internal.hxx:905
MWAWVec3uc
MWAWVec3< unsigned char > MWAWVec3uc
MWAWVec3 of unsigned char.
Definition: libmwaw_internal.hxx:1011
MWAWInputStreamPtr
std::shared_ptr< MWAWInputStream > MWAWInputStreamPtr
a smart pointer of MWAWInputStream
Definition: libmwaw_internal.hxx:547
MWAWBox2::max
MWAWVec2< T > & max()
the maximum 2D point (in x and in y)
Definition: libmwaw_internal.hxx:1050
MWAWVec3::operator[]
T operator[](int c) const
operator[]
Definition: libmwaw_internal.hxx:875
MWAWBox2::max
MWAWVec2< T > const & max() const
the maximum 2D point (in x and in y)
Definition: libmwaw_internal.hxx:1040
MWAW_shared_ptr_noop_deleter
an noop deleter used to transform a libwpd pointer in a false std::shared_ptr
Definition: libmwaw_internal.hxx:101
libmwaw::RightBit
Definition: libmwaw_internal.hxx:178
MWAWGraphicShape
a structure used to define a picture shape
Definition: MWAWGraphicShape.hxx:45
MWAWVec3::MWAWVec3
MWAWVec3(T xx=0, T yy=0, T zz=0)
constructor
Definition: libmwaw_internal.hxx:847
libmwaw::ARABIC
Definition: libmwaw_internal.hxx:180
MWAWVec2::PosSizeLtY::operator()
bool operator()(MWAWVec2< T > const &s1, MWAWVec2< T > const &s2) const
comparaison function
Definition: libmwaw_internal.hxx:818
MWAWBox2::m_data
std::pair< MWAWVec2< T >, MWAWVec2< T > > m_data
the data
Definition: libmwaw_internal.hxx:1183
MWAWVec2::PosSizeLtY
internal struct used to create sorted map, sorted by Y
Definition: libmwaw_internal.hxx:816
MWAWBox2f
MWAWBox2< float > MWAWBox2f
MWAWBox2 of float.
Definition: libmwaw_internal.hxx:1189
MWAWColor::getBlue
unsigned char getBlue() const
returns the green value
Definition: libmwaw_internal.hxx:269
MWAWVec2::operator!=
bool operator!=(MWAWVec2< T > const &p) const
comparison!=
Definition: libmwaw_internal.hxx:763
MWAWBox2::getIntersection
MWAWBox2< T > getIntersection(MWAWBox2< T > const &box) const
returns the intersection between this and box
Definition: libmwaw_internal.hxx:1135
MWAWEmbeddedObject::isEmpty
bool isEmpty() const
return true if the picture contains no data
Definition: libmwaw_internal.hxx:483
MWAWParagraph
class to store the paragraph properties
Definition: MWAWParagraph.hxx:84
MWAWFontConverterPtr
std::shared_ptr< MWAWFontConverter > MWAWFontConverterPtr
a smart pointer of MWAWFontConverter
Definition: libmwaw_internal.hxx:539
MWAWLink::m_HRef
std::string m_HRef
the href field
Definition: libmwaw_internal.hxx:441
MWAWBox2::setMax
void setMax(MWAWVec2< T > const &y)
resets the maximum point
Definition: libmwaw_internal.hxx:1086
MWAWTransformation::isIdentity
bool isIdentity() const
returns true if the matrix is an identity matrix
Definition: libmwaw_internal.hxx:1205
MWAWVariable::setSet
void setSet(bool newVal)
define if the variable is set
Definition: libmwaw_internal.hxx:636
MWAWField
a field
Definition: libmwaw_internal.hxx:399
MWAWColor::colorFromHSL
static MWAWColor colorFromHSL(unsigned char H, unsigned char S, unsigned char L)
return a color from a hsl color (basic)
Definition: libmwaw_internal.hxx:228
MWAWVec2< bool >::MapY
std::map< MWAWVec2< bool >, bool, struct PosSizeLtY > MapY
map of MWAWVec2
Definition: libmwaw_internal.hxx:826
MWAWBorder::operator==
bool operator==(MWAWBorder const &orig) const
operator==
Definition: libmwaw_internal.hxx:361
MWAWField::m_DTFormat
std::string m_DTFormat
the date/time format using strftime format if defined
Definition: libmwaw_internal.hxx:424
MWAWVariable::MWAWVariable
MWAWVariable(MWAWVariable const &orig)
copy constructor
Definition: libmwaw_internal.hxx:583
MWAWColor::getAlpha
unsigned char getAlpha() const
returns the alpha value
Definition: libmwaw_internal.hxx:264
libmwaw::DOC_HEADER_FOOTER
Definition: libmwaw_internal.hxx:188
libmwaw::readU8
uint8_t readU8(librevenge::RVNGInputStream *input)
Definition: libmwaw_internal.cxx:52
MWAWBorder::m_extra
std::string m_extra
extra data ( if needed)
Definition: libmwaw_internal.hxx:395
libmwaw::WritingMode
WritingMode
the different writing mode
Definition: libmwaw_internal.hxx:185
MWAWVec2::cmpY
int cmpY(MWAWVec2< T > const &p) const
a comparison function: which first compares y then x
Definition: libmwaw_internal.hxx:782
MWAWNote
a note
Definition: libmwaw_internal.hxx:445
MWAWParser
virtual class which defines the ancestor of all main zone parser
Definition: MWAWParser.hxx:99
MWAWVariable::operator->
T const * operator->() const
operator*
Definition: libmwaw_internal.hxx:604
MWAWPosition
Class to define the position of an object (textbox, picture, ..) in the document. ...
Definition: MWAWPosition.hxx:47
MWAWField::Type
Type
Defines some basic type for field.
Definition: libmwaw_internal.hxx:401
MWAWListener
This class contains a virtual interface to all listener.
Definition: MWAWListener.hxx:49
MWAWVec2l
MWAWVec2< long > MWAWVec2l
MWAWVec2 of long.
Definition: libmwaw_internal.hxx:836
MWAWTransformation::operator>=
bool operator>=(MWAWTransformation const &mat) const
operator>=
Definition: libmwaw_internal.hxx:1298
MWAWSubDocumentPtr
std::shared_ptr< MWAWSubDocument > MWAWSubDocumentPtr
a smart pointer of MWAWSubDocument
Definition: libmwaw_internal.hxx:561
MWAWBorder::MWAWBorder
MWAWBorder()
constructor
Definition: libmwaw_internal.hxx:340
MWAWEntry
basic class to store an entry in a file This contained :
Definition: MWAWEntry.hxx:46
MWAWTransformation::operator*=
MWAWTransformation & operator*=(MWAWTransformation const &mat)
operator*=
Definition: libmwaw_internal.hxx:1266
MWAWVec2::operator[]
T operator[](int c) const
operator[]
Definition: libmwaw_internal.hxx:674
MWAW_shared_ptr_noop_deleter::operator()
void operator()(T *)
Definition: libmwaw_internal.hxx:102
MWAWTransformation::operator*
MWAWBox2f operator*(MWAWBox2f const &box) const
operator* for box2f
Definition: libmwaw_internal.hxx:1243
MWAWVec2::m_x
T m_x
first element
Definition: libmwaw_internal.hxx:828
MWAWTransformation::operator==
bool operator==(MWAWTransformation const &mat) const
operator==
Definition: libmwaw_internal.hxx:1273
MWAWBox2::scale
void scale(U factor)
scales all points of the box by factor
Definition: libmwaw_internal.hxx:1111
MWAWBox2l
MWAWBox2< long > MWAWBox2l
MWAWBox2 of long.
Definition: libmwaw_internal.hxx:1191
libmwaw::WritingRightBottom
Definition: libmwaw_internal.hxx:185
MWAWList
a small structure used to store the informations about a list
Definition: MWAWList.hxx:119
MWAWTransformation::operator<
bool operator<(MWAWTransformation const &mat) const
operator<
Definition: libmwaw_internal.hxx:1283
MWAWRSRCParser
the main class to read a Mac resource fork
Definition: MWAWRSRCParser.hxx:46
libmwaw::LeftBit
Definition: libmwaw_internal.hxx:178
MWAWBorder::m_color
MWAWColor m_color
the border color
Definition: libmwaw_internal.hxx:393
MWAWColor::operator<=
bool operator<=(MWAWColor const &c) const
operator<=
Definition: libmwaw_internal.hxx:309
MWAWVec3::operator+=
MWAWVec3< T > & operator+=(MWAWVec3< T > const &p)
operator+=
Definition: libmwaw_internal.hxx:919
MWAWField::m_numberingType
libmwaw::NumberingType m_numberingType
the number type ( for number field )
Definition: libmwaw_internal.hxx:422
libmwaw::DOC_COMMENT_ANNOTATION
Definition: libmwaw_internal.hxx:188
MWAWVariable::MWAWVariable
MWAWVariable()
constructor
Definition: libmwaw_internal.hxx:575
MWAWGraphicEncoder
main class used to define store librevenge::RVNGDrawingInterface lists of command in a librevenge::RV...
Definition: MWAWGraphicEncoder.hxx:55
MWAWVec2::operator*
friend MWAWVec2< T > operator*(U scale, MWAWVec2< T > const &p1)
generic operator*
Definition: libmwaw_internal.hxx:751
MWAWVec2::PosSizeLtX
internal struct used to create sorted map, sorted by X
Definition: libmwaw_internal.hxx:801
MWAWVariable
a generic variable template: value + flag to know if the variable is set
Definition: libmwaw_internal.hxx:573
MWAWBorder::operator!=
bool operator!=(MWAWBorder const &orig) const
operator!=
Definition: libmwaw_internal.hxx:366
libmwaw::HMiddle
Definition: libmwaw_internal.hxx:176
MWAWBox2::resizeFromMin
void resizeFromMin(MWAWVec2< T > const &sz)
resize the box keeping the minimum
Definition: libmwaw_internal.hxx:1092
MWAWColor::m_value
uint32_t m_value
the argb color
Definition: libmwaw_internal.hxx:329
MWAWVariable::operator*
T const & operator*() const
operator*
Definition: libmwaw_internal.hxx:615
MWAWTransformation
a transformation which stored the first row of a 3x3 perspective matrix
Definition: libmwaw_internal.hxx:1194
libmwaw::VersionException
Definition: libmwaw_internal.hxx:135
MWAWVec2
small class which defines a vector with 2 elements
Definition: libmwaw_internal.hxx:651
MWAWTransformation::checkIdentity
void checkIdentity() const
check if a matrix is the identity matrix
Definition: libmwaw_internal.hxx:1210
MWAWVec3::setY
void setY(T yy)
resets the second element
Definition: libmwaw_internal.hxx:900
MWAWVec2::PosSizeLtX::operator()
bool operator()(MWAWVec2< T > const &s1, MWAWVec2< T > const &s2) const
comparaison function
Definition: libmwaw_internal.hxx:803
MWAWBox2::setMin
void setMin(MWAWVec2< T > const &x)
resets the minimum point
Definition: libmwaw_internal.hxx:1081