[Libreoffice-commits] libvisio.git: src/lib

Fridrich Štrba fridrich.strba at bluewin.ch
Mon Dec 14 22:59:31 PST 2015


 src/lib/VDXParser.cpp           |    9 +++++++--
 src/lib/VSD5Parser.cpp          |    8 +++++---
 src/lib/VSDCollector.h          |    4 ++--
 src/lib/VSDContentCollector.cpp |   22 +++++++++++++---------
 src/lib/VSDContentCollector.h   |    4 ++--
 src/lib/VSDParser.cpp           |   10 ++++++----
 src/lib/VSDStyles.h             |   21 +++++++++++++--------
 src/lib/VSDStylesCollector.cpp  |   28 +++++++++++++++++-----------
 src/lib/VSDStylesCollector.h    |    4 ++--
 src/lib/VSDXMLParserBase.cpp    |    2 +-
 src/lib/VSDXParser.cpp          |    9 +++++++--
 src/lib/tokens.txt              |    1 +
 12 files changed, 76 insertions(+), 46 deletions(-)

New commits:
commit 7b04394d01b5dfa227b213e0efac55dfd8d77c9d
Author: Fridrich Štrba <fridrich.strba at bluewin.ch>
Date:   Tue Dec 15 07:59:06 2015 +0100

    Read rounding in line properties
    
    Change-Id: Ib08f7625f7a41d7f37e8abce60a94b87bc742ecf

diff --git a/src/lib/VDXParser.cpp b/src/lib/VDXParser.cpp
index b2da904..d09aff1 100644
--- a/src/lib/VDXParser.cpp
+++ b/src/lib/VDXParser.cpp
@@ -316,6 +316,7 @@ void libvisio::VDXParser::readLine(xmlTextReaderPtr reader)
   boost::optional<unsigned char> startMarker;
   boost::optional<unsigned char> endMarker;
   boost::optional<unsigned char> lineCap;
+  boost::optional<double> rounding;
 
   unsigned level = (unsigned)getElementDepth(reader);
   int ret = 1;
@@ -344,6 +345,10 @@ void libvisio::VDXParser::readLine(xmlTextReaderPtr reader)
       if (XML_READER_TYPE_ELEMENT == tokenType)
         ret = readByteData(linePattern, reader);
       break;
+    case XML_ROUNDING:
+      if (XML_READER_TYPE_ELEMENT == tokenType)
+        ret = readDoubleData(rounding, reader);
+      break;
     case XML_BEGINARROW:
       if (XML_READER_TYPE_ELEMENT == tokenType)
         ret = readByteData(startMarker, reader);
@@ -363,9 +368,9 @@ void libvisio::VDXParser::readLine(xmlTextReaderPtr reader)
   while ((XML_LINE != tokenId || XML_READER_TYPE_END_ELEMENT != tokenType) && 1 == ret && (!m_watcher || !m_watcher->isError()));
 
   if (m_isInStyles)
-    m_collector->collectLineStyle(level, strokeWidth, colour, linePattern, startMarker, endMarker, lineCap);
+    m_collector->collectLineStyle(level, strokeWidth, colour, linePattern, startMarker, endMarker, lineCap, rounding);
   else
-    m_shape.m_lineStyle.override(VSDOptionalLineStyle(strokeWidth, colour, linePattern, startMarker, endMarker, lineCap));
+    m_shape.m_lineStyle.override(VSDOptionalLineStyle(strokeWidth, colour, linePattern, startMarker, endMarker, lineCap, rounding));
 }
 
 void libvisio::VDXParser::readFillAndShadow(xmlTextReaderPtr reader)
diff --git a/src/lib/VSD5Parser.cpp b/src/lib/VSD5Parser.cpp
index 7120c79..7a014be 100644
--- a/src/lib/VSD5Parser.cpp
+++ b/src/lib/VSD5Parser.cpp
@@ -199,15 +199,17 @@ void libvisio::VSD5Parser::readLine(librevenge::RVNGInputStream *input)
   unsigned char colourIndex = readU8(input);
   Colour c = _colourFromIndex(colourIndex);
   unsigned char linePattern = readU8(input);
-  input->seek(10, librevenge::RVNG_SEEK_CUR);
+  input->seek(1, librevenge::RVNG_SEEK_CUR);
+  double rounding = readDouble(input);
+  input->seek(1, librevenge::RVNG_SEEK_CUR);
   unsigned char startMarker = readU8(input);
   unsigned char endMarker = readU8(input);
   unsigned char lineCap = readU8(input);
 
   if (m_isInStyles)
-    m_collector->collectLineStyle(m_header.level, strokeWidth, c, linePattern, startMarker, endMarker, lineCap);
+    m_collector->collectLineStyle(m_header.level, strokeWidth, c, linePattern, startMarker, endMarker, lineCap, rounding);
   else
-    m_shape.m_lineStyle.override(VSDOptionalLineStyle(strokeWidth, c, linePattern, startMarker, endMarker, lineCap));
+    m_shape.m_lineStyle.override(VSDOptionalLineStyle(strokeWidth, c, linePattern, startMarker, endMarker, lineCap, rounding));
 }
 
 void libvisio::VSD5Parser::readCharIX(librevenge::RVNGInputStream *input)
diff --git a/src/lib/VSDCollector.h b/src/lib/VSDCollector.h
index 35034f9..81914b6 100644
--- a/src/lib/VSDCollector.h
+++ b/src/lib/VSDCollector.h
@@ -30,7 +30,7 @@ public:
   virtual void collectEllipse(unsigned id, unsigned level, double cx, double cy, double xleft, double yleft, double xtop, double ytop) = 0;
   virtual void collectLine(unsigned level, const boost::optional<double> &strokeWidth, const boost::optional<Colour> &c, const boost::optional<unsigned char> &linePattern,
                            const boost::optional<unsigned char> &startMarker, const boost::optional<unsigned char> &endMarker,
-                           const boost::optional<unsigned char> &lineCap) = 0;
+                           const boost::optional<unsigned char> &lineCap, const boost::optional<double> &rounding) = 0;
   virtual void collectFillAndShadow(unsigned level, const boost::optional<Colour> &colourFG, const boost::optional<Colour> &colourBG,
                                     const boost::optional<unsigned char> &fillPattern, const boost::optional<double> &fillFGTransparency,
                                     const boost::optional<double> &fillBGTransparency, const boost::optional<unsigned char> &shadowPattern,
@@ -109,7 +109,7 @@ public:
   virtual void collectStyleSheet(unsigned id, unsigned level,unsigned parentLineStyle, unsigned parentFillStyle, unsigned parentTextStyle) = 0;
   virtual void collectLineStyle(unsigned level, const boost::optional<double> &strokeWidth, const boost::optional<Colour> &c, const boost::optional<unsigned char> &linePattern,
                                 const boost::optional<unsigned char> &startMarker, const boost::optional<unsigned char> &endMarker,
-                                const boost::optional<unsigned char> &lineCap) = 0;
+                                const boost::optional<unsigned char> &lineCap, const boost::optional<double> &rounding) = 0;
   virtual void collectFillStyle(unsigned level, const boost::optional<Colour> &colourFG, const boost::optional<Colour> &colourBG,
                                 const boost::optional<unsigned char> &fillPattern, const boost::optional<double> &fillFGTransparency,
                                 const boost::optional<double> &fillBGTransparency, const boost::optional<unsigned char> &shadowPattern,
diff --git a/src/lib/VSDContentCollector.cpp b/src/lib/VSDContentCollector.cpp
index a1ef3ff..abf57bf 100644
--- a/src/lib/VSDContentCollector.cpp
+++ b/src/lib/VSDContentCollector.cpp
@@ -1026,10 +1026,11 @@ void libvisio::VSDContentCollector::collectRelQuadBezTo(unsigned /* id */, unsig
 }
 
 void libvisio::VSDContentCollector::collectLine(unsigned level, const boost::optional<double> &strokeWidth, const boost::optional<Colour> &c, const boost::optional<unsigned char> &linePattern,
-                                                const boost::optional<unsigned char> &startMarker, const boost::optional<unsigned char> &endMarker, const boost::optional<unsigned char> &lineCap)
+                                                const boost::optional<unsigned char> &startMarker, const boost::optional<unsigned char> &endMarker, const boost::optional<unsigned char> &lineCap,
+                                                const boost::optional<double> &rounding)
 {
   _handleLevelChange(level);
-  m_lineStyle.override(VSDOptionalLineStyle(strokeWidth, c, linePattern, startMarker, endMarker, lineCap));
+  m_lineStyle.override(VSDOptionalLineStyle(strokeWidth, c, linePattern, startMarker, endMarker, lineCap, rounding));
 }
 
 void libvisio::VSDContentCollector::collectFillAndShadow(unsigned level, const boost::optional<Colour> &colourFG, const boost::optional<Colour> &colourBG,
@@ -2183,16 +2184,18 @@ void libvisio::VSDContentCollector::collectStyleSheet(unsigned id, unsigned leve
 }
 
 void libvisio::VSDContentCollector::collectLineStyle(unsigned /* level */, const boost::optional<double> &strokeWidth, const boost::optional<Colour> &c,
-                                                     const boost::optional<unsigned char> &linePattern, const boost::optional<unsigned char> &startMarker, const boost::optional<unsigned char> &endMarker,
-                                                     const boost::optional<unsigned char> &lineCap)
+                                                     const boost::optional<unsigned char> &linePattern, const boost::optional<unsigned char> &startMarker,
+                                                     const boost::optional<unsigned char> &endMarker, const boost::optional<unsigned char> &lineCap,
+                                                     const boost::optional<double> &rounding)
 {
-  VSDOptionalLineStyle lineStyle(strokeWidth, c, linePattern, startMarker, endMarker, lineCap);
+  VSDOptionalLineStyle lineStyle(strokeWidth, c, linePattern, startMarker, endMarker, lineCap, rounding);
   m_styles.addLineStyle(m_currentStyleSheet, lineStyle);
 }
 
 void libvisio::VSDContentCollector::collectFillStyle(unsigned /* level */, const boost::optional<Colour> &colourFG, const boost::optional<Colour> &colourBG,
-                                                     const boost::optional<unsigned char> &fillPattern, const boost::optional<double> &fillFGTransparency, const boost::optional<double> &fillBGTransparency,
-                                                     const boost::optional<unsigned char> &shadowPattern, const boost::optional<Colour> &shfgc, const boost::optional<double> &shadowOffsetX,
+                                                     const boost::optional<unsigned char> &fillPattern, const boost::optional<double> &fillFGTransparency,
+                                                     const boost::optional<double> &fillBGTransparency, const boost::optional<unsigned char> &shadowPattern,
+                                                     const boost::optional<Colour> &shfgc, const boost::optional<double> &shadowOffsetX,
                                                      const boost::optional<double> &shadowOffsetY)
 {
   VSDOptionalFillStyle fillStyle(colourFG, colourBG, fillPattern, fillFGTransparency, fillBGTransparency, shfgc, shadowPattern, shadowOffsetX, shadowOffsetY);
@@ -2201,8 +2204,9 @@ void libvisio::VSDContentCollector::collectFillStyle(unsigned /* level */, const
 }
 
 void libvisio::VSDContentCollector::collectFillStyle(unsigned level, const boost::optional<Colour> &colourFG, const boost::optional<Colour> &colourBG,
-                                                     const boost::optional<unsigned char> &fillPattern, const boost::optional<double> &fillFGTransparency, const boost::optional<double> &fillBGTransparency,
-                                                     const boost::optional<unsigned char> &shadowPattern, const boost::optional<Colour> &shfgc)
+                                                     const boost::optional<unsigned char> &fillPattern, const boost::optional<double> &fillFGTransparency,
+                                                     const boost::optional<double> &fillBGTransparency, const boost::optional<unsigned char> &shadowPattern,
+                                                     const boost::optional<Colour> &shfgc)
 {
   collectFillStyle(level, colourFG, colourBG, fillPattern, fillFGTransparency, fillBGTransparency, shadowPattern, shfgc, m_shadowOffsetX, m_shadowOffsetY);
 }
diff --git a/src/lib/VSDContentCollector.h b/src/lib/VSDContentCollector.h
index 4b920f8..cb4a636 100644
--- a/src/lib/VSDContentCollector.h
+++ b/src/lib/VSDContentCollector.h
@@ -49,7 +49,7 @@ public:
   void collectEllipse(unsigned id, unsigned level, double cx, double cy, double xleft, double yleft, double xtop, double ytop);
   void collectLine(unsigned level, const boost::optional<double> &strokeWidth, const boost::optional<Colour> &c, const boost::optional<unsigned char> &linePattern,
                    const boost::optional<unsigned char> &startMarker, const boost::optional<unsigned char> &endMarker,
-                   const boost::optional<unsigned char> &lineCap);
+                   const boost::optional<unsigned char> &lineCap, const boost::optional<double> &rounding);
   void collectFillAndShadow(unsigned level, const boost::optional<Colour> &colourFG, const boost::optional<Colour> &colourBG,
                             const boost::optional<unsigned char> &fillPattern, const boost::optional<double> &fillFGTransparency,
                             const boost::optional<double> &fillBGTransparency, const boost::optional<unsigned char> &shadowPattern,
@@ -129,7 +129,7 @@ public:
   void collectStyleSheet(unsigned id, unsigned level, unsigned parentLineStyle, unsigned parentFillStyle, unsigned parentTextStyle);
   void collectLineStyle(unsigned level, const boost::optional<double> &strokeWidth, const boost::optional<Colour> &c, const boost::optional<unsigned char> &linePattern,
                         const boost::optional<unsigned char> &startMarker, const boost::optional<unsigned char> &endMarker,
-                        const boost::optional<unsigned char> &lineCap);
+                        const boost::optional<unsigned char> &lineCap, const boost::optional<double> &rounding);
   void collectFillStyle(unsigned level, const boost::optional<Colour> &colourFG, const boost::optional<Colour> &colourBG,
                         const boost::optional<unsigned char> &fillPattern, const boost::optional<double> &fillFGTransparency,
                         const boost::optional<double> &fillBGTransparency, const boost::optional<unsigned char> &shadowPattern,
diff --git a/src/lib/VSDParser.cpp b/src/lib/VSDParser.cpp
index 74e9bc0..d3e6a0b 100644
--- a/src/lib/VSDParser.cpp
+++ b/src/lib/VSDParser.cpp
@@ -623,7 +623,7 @@ void libvisio::VSDParser::_flushShape()
     m_collector->collectTxtXForm(m_currentShapeLevel+2, *(m_shape.m_txtxform));
 
   m_collector->collectLine(m_currentShapeLevel+2, m_shape.m_lineStyle.width, m_shape.m_lineStyle.colour, m_shape.m_lineStyle.pattern,
-                           m_shape.m_lineStyle.startMarker, m_shape.m_lineStyle.endMarker, m_shape.m_lineStyle.cap);
+                           m_shape.m_lineStyle.startMarker, m_shape.m_lineStyle.endMarker, m_shape.m_lineStyle.cap, m_shape.m_lineStyle.rounding);
 
   m_collector->collectFillAndShadow(m_currentShapeLevel+2, m_shape.m_fillStyle.fgColour, m_shape.m_fillStyle.bgColour, m_shape.m_fillStyle.pattern,
                                     m_shape.m_fillStyle.fgTransparency, m_shape.m_fillStyle.bgTransparency, m_shape.m_fillStyle.shadowPattern,
@@ -827,15 +827,17 @@ void libvisio::VSDParser::readLine(librevenge::RVNGInputStream *input)
   c.b = readU8(input);
   c.a = readU8(input);
   unsigned char linePattern = readU8(input);
-  input->seek(10, librevenge::RVNG_SEEK_CUR);
+  input->seek(1, librevenge::RVNG_SEEK_CUR);
+  double rounding = readDouble(input);
+  input->seek(1, librevenge::RVNG_SEEK_CUR);
   unsigned char startMarker = readU8(input);
   unsigned char endMarker = readU8(input);
   unsigned char lineCap = readU8(input);
 
   if (m_isInStyles)
-    m_collector->collectLineStyle(m_header.level, strokeWidth, c, linePattern, startMarker, endMarker, lineCap);
+    m_collector->collectLineStyle(m_header.level, strokeWidth, c, linePattern, startMarker, endMarker, lineCap, rounding);
   else
-    m_shape.m_lineStyle.override(VSDOptionalLineStyle(strokeWidth, c, linePattern, startMarker, endMarker, lineCap));
+    m_shape.m_lineStyle.override(VSDOptionalLineStyle(strokeWidth, c, linePattern, startMarker, endMarker, lineCap, rounding));
 }
 
 void libvisio::VSDParser::readTextBlock(librevenge::RVNGInputStream *input)
diff --git a/src/lib/VSDStyles.h b/src/lib/VSDStyles.h
index 0d6519a..456577a 100644
--- a/src/lib/VSDStyles.h
+++ b/src/lib/VSDStyles.h
@@ -70,14 +70,15 @@ struct VSDThemeReference
 struct VSDOptionalLineStyle
 {
   VSDOptionalLineStyle() :
-    width(), colour(), pattern(), startMarker(), endMarker(), cap() {}
+    width(), colour(), pattern(), startMarker(), endMarker(), cap(), rounding() {}
   VSDOptionalLineStyle(const boost::optional<double> &w, const boost::optional<Colour> &col,
                        const boost::optional<unsigned char> &p, const boost::optional<unsigned char> &sm,
-                       const boost::optional<unsigned char> &em, const boost::optional<unsigned char> &c) :
-    width(w), colour(col), pattern(p), startMarker(sm), endMarker(em), cap(c) {}
+                       const boost::optional<unsigned char> &em, const boost::optional<unsigned char> &c,
+                       const boost::optional<double> &r) :
+    width(w), colour(col), pattern(p), startMarker(sm), endMarker(em), cap(c), rounding(r) {}
   VSDOptionalLineStyle(const VSDOptionalLineStyle &style) :
     width(style.width), colour(style.colour), pattern(style.pattern), startMarker(style.startMarker),
-    endMarker(style.endMarker), cap(style.cap) {}
+    endMarker(style.endMarker), cap(style.cap), rounding(style.rounding) {}
   ~VSDOptionalLineStyle() {}
   void override(const VSDOptionalLineStyle &style)
   {
@@ -87,6 +88,7 @@ struct VSDOptionalLineStyle
     ASSIGN_OPTIONAL(style.startMarker, startMarker);
     ASSIGN_OPTIONAL(style.endMarker, endMarker);
     ASSIGN_OPTIONAL(style.cap, cap);
+    ASSIGN_OPTIONAL(style.rounding, rounding);
   }
 
   boost::optional<double> width;
@@ -95,18 +97,19 @@ struct VSDOptionalLineStyle
   boost::optional<unsigned char> startMarker;
   boost::optional<unsigned char> endMarker;
   boost::optional<unsigned char> cap;
+  boost::optional<double> rounding;
 };
 
 struct VSDLineStyle
 {
   VSDLineStyle() :
-    width(0.01), colour(), pattern(1), startMarker(0), endMarker(0), cap(0) {}
+    width(0.01), colour(), pattern(1), startMarker(0), endMarker(0), cap(0), rounding(0.0) {}
   VSDLineStyle(double w, Colour col, unsigned char p, unsigned char sm,
-               unsigned char em, unsigned char c) :
-    width(w), colour(col), pattern(p), startMarker(sm), endMarker(em), cap(c) {}
+               unsigned char em, unsigned char c, double r) :
+    width(w), colour(col), pattern(p), startMarker(sm), endMarker(em), cap(c), rounding(r) {}
   VSDLineStyle(const VSDLineStyle &style) :
     width(style.width), colour(style.colour), pattern(style.pattern), startMarker(style.startMarker),
-    endMarker(style.endMarker), cap(style.cap) {}
+    endMarker(style.endMarker), cap(style.cap), rounding(style.rounding) {}
   ~VSDLineStyle() {}
   void override(const VSDOptionalLineStyle &style)
   {
@@ -116,6 +119,7 @@ struct VSDLineStyle
     ASSIGN_OPTIONAL(style.startMarker, startMarker);
     ASSIGN_OPTIONAL(style.endMarker, endMarker);
     ASSIGN_OPTIONAL(style.cap, cap);
+    ASSIGN_OPTIONAL(style.rounding, rounding);
   }
 
   double width;
@@ -124,6 +128,7 @@ struct VSDLineStyle
   unsigned char startMarker;
   unsigned char endMarker;
   unsigned char cap;
+  double rounding;
 };
 
 struct VSDOptionalFillStyle
diff --git a/src/lib/VSDStylesCollector.cpp b/src/lib/VSDStylesCollector.cpp
index 25f4029..0fefbb7 100644
--- a/src/lib/VSDStylesCollector.cpp
+++ b/src/lib/VSDStylesCollector.cpp
@@ -55,7 +55,7 @@ void libvisio::VSDStylesCollector::collectEllipse(unsigned /* id */, unsigned le
 void libvisio::VSDStylesCollector::collectLine(unsigned level, const boost::optional<double> & /* strokeWidth */,
                                                const boost::optional<Colour> & /* c */, const boost::optional<unsigned char> & /* linePattern */,
                                                const boost::optional<unsigned char> & /* startMarker */, const boost::optional<unsigned char> & /* endMarker */,
-                                               const boost::optional<unsigned char> &/* lineCap */)
+                                               const boost::optional<unsigned char> & /* lineCap */, const boost::optional<double> & /* rounding */)
 {
   _handleLevelChange(level);
 }
@@ -328,32 +328,38 @@ void libvisio::VSDStylesCollector::collectStyleSheet(unsigned /* id */, unsigned
 }
 
 void libvisio::VSDStylesCollector::collectLineStyle(unsigned level, const boost::optional<double> & /* strokeWidth */, const boost::optional<Colour> & /* c */,
-                                                    const boost::optional<unsigned char> & /* linePattern */, const boost::optional<unsigned char> & /* startMarker */, const boost::optional<unsigned char> & /* endMarker */,
-                                                    const boost::optional<unsigned char> & /* lineCap */)
+                                                    const boost::optional<unsigned char> & /* linePattern */, const boost::optional<unsigned char> & /* startMarker */,
+                                                    const boost::optional<unsigned char> & /* endMarker */, const boost::optional<unsigned char> & /* lineCap */,
+                                                    const boost::optional<double> & /* rounding */)
 {
   _handleLevelChange(level);
 }
 
 void libvisio::VSDStylesCollector::collectFillStyle(unsigned level, const boost::optional<Colour> & /* colourFG */, const boost::optional<Colour> & /* colourBG */,
-                                                    const boost::optional<unsigned char> & /* fillPattern */, const boost::optional<double> & /* fillFGTransparency */, const boost::optional<double> & /* fillBGTransparency */,
-                                                    const boost::optional<unsigned char> & /* shadowPattern */, const boost::optional<Colour> & /* shfgc */, const boost::optional<double> & /* shadowOffsetX */,
+                                                    const boost::optional<unsigned char> & /* fillPattern */, const boost::optional<double> & /* fillFGTransparency */,
+                                                    const boost::optional<double> & /* fillBGTransparency */, const boost::optional<unsigned char> & /* shadowPattern */,
+                                                    const boost::optional<Colour> & /* shfgc */, const boost::optional<double> & /* shadowOffsetX */,
                                                     const boost::optional<double> & /* shadowOffsetY */)
 {
   _handleLevelChange(level);
 }
 
 void libvisio::VSDStylesCollector::collectFillStyle(unsigned level, const boost::optional<Colour> & /* colourFG */, const boost::optional<Colour> & /* colourBG */,
-                                                    const boost::optional<unsigned char> & /* fillPattern */, const boost::optional<double> & /* fillFGTransparency */, const boost::optional<double> & /* fillBGTransparency */,
-                                                    const boost::optional<unsigned char> & /* shadowPattern */, const boost::optional<Colour> & /* shfgc */)
+                                                    const boost::optional<unsigned char> & /* fillPattern */, const boost::optional<double> & /* fillFGTransparency */,
+                                                    const boost::optional<double> & /* fillBGTransparency */, const boost::optional<unsigned char> & /* shadowPattern */,
+                                                    const boost::optional<Colour> & /* shfgc */)
 {
   _handleLevelChange(level);
 }
 
 void libvisio::VSDStylesCollector::collectCharIXStyle(unsigned /* id */, unsigned level, unsigned /* charCount */, const boost::optional<VSDName> & /* font */,
-                                                      const boost::optional<Colour> & /* fontColour */, const boost::optional<double> & /* fontSize */, const boost::optional<bool> & /* bold */, const boost::optional<bool> & /* italic */,
-                                                      const boost::optional<bool> & /* underline */, const boost::optional<bool> & /* doubleunderline */, const boost::optional<bool> & /* strikeout */,
-                                                      const boost::optional<bool> & /* doublestrikeout */, const boost::optional<bool> & /* allcaps */, const boost::optional<bool> & /* initcaps */, const boost::optional<bool> & /* smallcaps */,
-                                                      const boost::optional<bool> & /* superscript */, const boost::optional<bool> & /* subscript */)
+                                                      const boost::optional<Colour> & /* fontColour */, const boost::optional<double> & /* fontSize */,
+                                                      const boost::optional<bool> & /* bold */, const boost::optional<bool> & /* italic */,
+                                                      const boost::optional<bool> & /* underline */, const boost::optional<bool> & /* doubleunderline */,
+                                                      const boost::optional<bool> & /* strikeout */, const boost::optional<bool> & /* doublestrikeout */,
+                                                      const boost::optional<bool> & /* allcaps */, const boost::optional<bool> & /* initcaps */,
+                                                      const boost::optional<bool> & /* smallcaps */, const boost::optional<bool> & /* superscript */,
+                                                      const boost::optional<bool> & /* subscript */)
 {
   _handleLevelChange(level);
 }
diff --git a/src/lib/VSDStylesCollector.h b/src/lib/VSDStylesCollector.h
index caa6eb7..65304fc 100644
--- a/src/lib/VSDStylesCollector.h
+++ b/src/lib/VSDStylesCollector.h
@@ -41,7 +41,7 @@ public:
   void collectEllipse(unsigned id, unsigned level, double cx, double cy, double xleft, double yleft, double xtop, double ytop);
   void collectLine(unsigned level, const boost::optional<double> &strokeWidth, const boost::optional<Colour> &c, const boost::optional<unsigned char> &linePattern,
                    const boost::optional<unsigned char> &startMarker, const boost::optional<unsigned char> &endMarker,
-                   const boost::optional<unsigned char> &lineCap);
+                   const boost::optional<unsigned char> &lineCap, const boost::optional<double> &rounding);
   void collectFillAndShadow(unsigned level, const boost::optional<Colour> &colourFG, const boost::optional<Colour> &colourBG,
                             const boost::optional<unsigned char> &fillPattern, const boost::optional<double> &fillFGTransparency,
                             const boost::optional<double> &fillBGTransparency, const boost::optional<unsigned char> &shadowPattern,
@@ -122,7 +122,7 @@ public:
   void collectStyleSheet(unsigned id, unsigned level,unsigned parentLineStyle, unsigned parentFillStyle, unsigned parentTextStyle);
   void collectLineStyle(unsigned level, const boost::optional<double> &strokeWidth, const boost::optional<Colour> &c, const boost::optional<unsigned char> &linePattern,
                         const boost::optional<unsigned char> &startMarker, const boost::optional<unsigned char> &endMarker,
-                        const boost::optional<unsigned char> &lineCap);
+                        const boost::optional<unsigned char> &lineCap, const boost::optional<double> &rounding);
   void collectFillStyle(unsigned level, const boost::optional<Colour> &colourFG, const boost::optional<Colour> &colourBG,
                         const boost::optional<unsigned char> &fillPattern, const boost::optional<double> &fillFGTransparency,
                         const boost::optional<double> &fillBGTransparency, const boost::optional<unsigned char> &shadowPattern,
diff --git a/src/lib/VSDXMLParserBase.cpp b/src/lib/VSDXMLParserBase.cpp
index f2ca3b6..89e09d4 100644
--- a/src/lib/VSDXMLParserBase.cpp
+++ b/src/lib/VSDXMLParserBase.cpp
@@ -1688,7 +1688,7 @@ void libvisio::VSDXMLParserBase::_flushShape()
     m_collector->collectTxtXForm(m_currentShapeLevel+2, *(m_shape.m_txtxform));
 
   m_collector->collectLine(m_currentShapeLevel+2, m_shape.m_lineStyle.width, m_shape.m_lineStyle.colour, m_shape.m_lineStyle.pattern,
-                           m_shape.m_lineStyle.startMarker, m_shape.m_lineStyle.endMarker, m_shape.m_lineStyle.cap);
+                           m_shape.m_lineStyle.startMarker, m_shape.m_lineStyle.endMarker, m_shape.m_lineStyle.cap, m_shape.m_lineStyle.rounding);
 
   m_collector->collectFillAndShadow(m_currentShapeLevel+2, m_shape.m_fillStyle.fgColour, m_shape.m_fillStyle.bgColour, m_shape.m_fillStyle.pattern,
                                     m_shape.m_fillStyle.fgTransparency, m_shape.m_fillStyle.bgTransparency, m_shape.m_fillStyle.shadowPattern,
diff --git a/src/lib/VSDXParser.cpp b/src/lib/VSDXParser.cpp
index 37351b9..1bdd33f 100644
--- a/src/lib/VSDXParser.cpp
+++ b/src/lib/VSDXParser.cpp
@@ -709,6 +709,7 @@ void libvisio::VSDXParser::readStyleProperties(xmlTextReaderPtr reader)
   boost::optional<double> strokeWidth;
   boost::optional<Colour> strokeColour;
   boost::optional<unsigned char> linePattern;
+  boost::optional<double> rounding;
   boost::optional<unsigned char> startMarker;
   boost::optional<unsigned char> endMarker;
   boost::optional<unsigned char> lineCap;
@@ -763,6 +764,10 @@ void libvisio::VSDXParser::readStyleProperties(xmlTextReaderPtr reader)
       if (XML_READER_TYPE_ELEMENT == tokenType)
         ret = readByteData(linePattern, reader);
       break;
+    case XML_ROUNDING:
+      if (XML_READER_TYPE_ELEMENT == tokenType)
+        ret = readDoubleData(rounding, reader);
+      break;
     case XML_BEGINARROW:
       if (XML_READER_TYPE_ELEMENT == tokenType)
         ret = readByteData(startMarker, reader);
@@ -909,7 +914,7 @@ void libvisio::VSDXParser::readStyleProperties(xmlTextReaderPtr reader)
 
   if (m_isInStyles)
   {
-    m_collector->collectLineStyle(level, strokeWidth, strokeColour, linePattern, startMarker, endMarker, lineCap);
+    m_collector->collectLineStyle(level, strokeWidth, strokeColour, linePattern, startMarker, endMarker, lineCap, rounding);
     m_collector->collectFillStyle(level, fillColourFG, fillColourBG, fillPattern, fillFGTransparency,
                                   fillBGTransparency, shadowPattern, shadowColourFG, shadowOffsetX, shadowOffsetY);
     m_collector->collectTextBlockStyle(level, leftMargin, rightMargin, topMargin, bottomMargin,
@@ -917,7 +922,7 @@ void libvisio::VSDXParser::readStyleProperties(xmlTextReaderPtr reader)
   }
   else
   {
-    m_shape.m_lineStyle.override(VSDOptionalLineStyle(strokeWidth, strokeColour, linePattern, startMarker, endMarker, lineCap));
+    m_shape.m_lineStyle.override(VSDOptionalLineStyle(strokeWidth, strokeColour, linePattern, startMarker, endMarker, lineCap, rounding));
     m_shape.m_fillStyle.override(VSDOptionalFillStyle(fillColourFG, fillColourBG, fillPattern, fillFGTransparency, fillBGTransparency, shadowColourFG,
                                                       shadowPattern, shadowOffsetX, shadowOffsetY));
     m_shape.m_textBlockStyle.override(VSDOptionalTextBlockStyle(leftMargin, rightMargin, topMargin, bottomMargin, verticalAlign, !!bgClrId, bgColour,
diff --git a/src/lib/tokens.txt b/src/lib/tokens.txt
index 0d62b4b..0fc8b5a 100644
--- a/src/lib/tokens.txt
+++ b/src/lib/tokens.txt
@@ -158,6 +158,7 @@ RelMoveTo
 RelQuadBezTo
 ResizeMode
 RightMargin
+Rounding
 Row
 Section
 Shape


More information about the Libreoffice-commits mailing list