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

Fridrich Å trba fridrich.strba at bluewin.ch
Sat Jun 29 07:26:57 PDT 2013


 src/lib/CDRCollector.h          |    6 ---
 src/lib/CDRContentCollector.cpp |   36 ------------------
 src/lib/CDRContentCollector.h   |    6 ---
 src/lib/CDRParser.cpp           |   80 +++++++++++++++++++++-------------------
 src/lib/CDRStylesCollector.h    |    6 ---
 src/lib/CMXParser.cpp           |   48 +++++++++++++-----------
 6 files changed, 69 insertions(+), 113 deletions(-)

New commits:
commit 4a075558a28bcd09f554760ebcc3734afac304fc
Author: Fridrich Å trba <fridrich.strba at bluewin.ch>
Date:   Sat Jun 29 16:25:25 2013 +0200

    Simplify the path collection a bit

diff --git a/src/lib/CDRCollector.h b/src/lib/CDRCollector.h
index 68cc236..47aa00e 100644
--- a/src/lib/CDRCollector.h
+++ b/src/lib/CDRCollector.h
@@ -88,12 +88,6 @@ public:
   virtual void collectGroup(unsigned level) = 0;
   virtual void collectVect(unsigned level) = 0;
   virtual void collectOtherList() = 0;
-  virtual void collectCubicBezier(double x1, double y1, double x2, double y2, double x, double y) = 0;
-  virtual void collectQuadraticBezier(double x1, double y1, double x, double y) = 0;
-  virtual void collectMoveTo(double x, double y) = 0;
-  virtual void collectLineTo(double x, double y) = 0;
-  virtual void collectArcTo(double rx, double ry, bool largeArc, bool sweep, double x, double y) = 0;
-  virtual void collectClosePath() = 0;
   virtual void collectPath(const CDRPath &path) = 0;
   virtual void collectLevel(unsigned level) = 0;
   virtual void collectTransform(const CDRTransforms &transforms, bool considerGroupTransform) = 0;
diff --git a/src/lib/CDRContentCollector.cpp b/src/lib/CDRContentCollector.cpp
index 07e1f58..dd0b495 100644
--- a/src/lib/CDRContentCollector.cpp
+++ b/src/lib/CDRContentCollector.cpp
@@ -153,42 +153,6 @@ void libcdr::CDRContentCollector::collectOtherList()
 //  m_isPageProperties = false;
 }
 
-void libcdr::CDRContentCollector::collectCubicBezier(double x1, double y1, double x2, double y2, double x, double y)
-{
-  CDR_DEBUG_MSG(("CDRContentCollector::collectCubicBezier(%f, %f, %f, %f, %f, %f)\n", x1, y1, x2, y2, x, y));
-  m_currentPath.appendCubicBezierTo(x1, y1, x2, y2, x, y);
-}
-
-void libcdr::CDRContentCollector::collectQuadraticBezier(double x1, double y1, double x, double y)
-{
-  CDR_DEBUG_MSG(("CDRContentCollector::collectQuadraticBezier(%f, %f, %f, %f)\n", x1, y1, x, y));
-  m_currentPath.appendQuadraticBezierTo(x1, y1, x, y);
-}
-
-void libcdr::CDRContentCollector::collectMoveTo(double x, double y)
-{
-  CDR_DEBUG_MSG(("CDRContentCollector::collectMoveTo(%f, %f)\n", x, y));
-  m_currentPath.appendMoveTo(x,y);
-}
-
-void libcdr::CDRContentCollector::collectLineTo(double x, double y)
-{
-  CDR_DEBUG_MSG(("CDRContentCollector::collectLineTo(%f, %f)\n", x, y));
-  m_currentPath.appendLineTo(x, y);
-}
-
-void libcdr::CDRContentCollector::collectArcTo(double rx, double ry, bool largeArc, bool sweep, double x, double y)
-{
-  CDR_DEBUG_MSG(("CDRContentCollector::collectArcTo(%f, %f)\n", x, y));
-  m_currentPath.appendArcTo(rx, ry, 0.0, largeArc, sweep, x, y);
-}
-
-void libcdr::CDRContentCollector::collectClosePath()
-{
-  CDR_DEBUG_MSG(("CDRContentCollector::collectClosePath\n"));
-  m_currentPath.appendClosePath();
-}
-
 void libcdr::CDRContentCollector::collectPath(const CDRPath &path)
 {
   CDR_DEBUG_MSG(("CDRContentCollector::collectPath\n"));
diff --git a/src/lib/CDRContentCollector.h b/src/lib/CDRContentCollector.h
index 5242b1c..47f56aa 100644
--- a/src/lib/CDRContentCollector.h
+++ b/src/lib/CDRContentCollector.h
@@ -55,12 +55,6 @@ public:
   void collectGroup(unsigned level);
   void collectVect(unsigned level);
   void collectOtherList();
-  void collectCubicBezier(double x1, double y1, double x2, double y2, double x, double y);
-  void collectQuadraticBezier(double x1, double y1, double x, double y);
-  void collectMoveTo(double x, double y);
-  void collectLineTo(double x, double y);
-  void collectArcTo(double rx, double ry, bool largeArc, bool sweep, double x, double y);
-  void collectClosePath();
   void collectPath(const CDRPath &path);
   void collectLevel(unsigned level);
   void collectTransform(const CDRTransforms &transforms, bool considerGroupTransform);
diff --git a/src/lib/CDRParser.cpp b/src/lib/CDRParser.cpp
index 9f024b8..bff872b 100644
--- a/src/lib/CDRParser.cpp
+++ b/src/lib/CDRParser.cpp
@@ -1278,59 +1278,61 @@ void libcdr::CDRParser::readRectangle(WPXInputStream *input)
       r0 = readRectCoord(input);
     }
   }
+  CDRPath path;
   if (r0 > 0.0)
-    m_collector->collectMoveTo(0.0, -r0/scaleY);
+    path.appendMoveTo(0.0, -r0/scaleY);
   else
-    m_collector->collectMoveTo(0.0, 0.0);
+    path.appendMoveTo(0.0, 0.0);
   if (r1 > 0.0)
   {
-    m_collector->collectLineTo(0.0, y0+r1/scaleY);
+    path.appendLineTo(0.0, y0+r1/scaleY);
     if (corner_type == 0)
-      m_collector->collectQuadraticBezier(0.0, y0, r1/scaleX, y0);
+      path.appendQuadraticBezierTo(0.0, y0, r1/scaleX, y0);
     else if (corner_type == 1)
-      m_collector->collectQuadraticBezier(r1/scaleX, y0+r1/scaleY, r1/scaleX, y0);
+      path.appendQuadraticBezierTo(r1/scaleX, y0+r1/scaleY, r1/scaleX, y0);
     else if (corner_type == 2)
-      m_collector->collectLineTo(r1/scaleX, y0);
+      path.appendLineTo(r1/scaleX, y0);
   }
   else
-    m_collector->collectLineTo(0.0, y0);
+    path.appendLineTo(0.0, y0);
   if (r2 > 0.0)
   {
-    m_collector->collectLineTo(x0-r2/scaleX, y0);
+    path.appendLineTo(x0-r2/scaleX, y0);
     if (corner_type == 0)
-      m_collector->collectQuadraticBezier(x0, y0, x0, y0+r2/scaleY);
+      path.appendQuadraticBezierTo(x0, y0, x0, y0+r2/scaleY);
     else if (corner_type == 1)
-      m_collector->collectQuadraticBezier(x0-r2/scaleX, y0+r2/scaleY, x0, y0+r2/scaleY);
+      path.appendQuadraticBezierTo(x0-r2/scaleX, y0+r2/scaleY, x0, y0+r2/scaleY);
     else if (corner_type == 2)
-      m_collector->collectLineTo(x0, y0+r2/scaleY);
+      path.appendLineTo(x0, y0+r2/scaleY);
   }
   else
-    m_collector->collectLineTo(x0, y0);
+    path.appendLineTo(x0, y0);
   if (r3 > 0.0)
   {
-    m_collector->collectLineTo(x0, -r3/scaleY);
+    path.appendLineTo(x0, -r3/scaleY);
     if (corner_type == 0)
-      m_collector->collectQuadraticBezier(x0, 0.0, x0-r3/scaleX, 0.0);
+      path.appendQuadraticBezierTo(x0, 0.0, x0-r3/scaleX, 0.0);
     else if (corner_type == 1)
-      m_collector->collectQuadraticBezier(x0-r3/scaleX, -r3/scaleY, x0-r3/scaleX, 0.0);
+      path.appendQuadraticBezierTo(x0-r3/scaleX, -r3/scaleY, x0-r3/scaleX, 0.0);
     else if (corner_type == 2)
-      m_collector->collectLineTo(x0-r3/scaleX, 0.0);
+      path.appendLineTo(x0-r3/scaleX, 0.0);
   }
   else
-    m_collector->collectLineTo(x0, 0.0);
+    path.appendLineTo(x0, 0.0);
   if (r0 > 0.0)
   {
-    m_collector->collectLineTo(r0/scaleX, 0.0);
+    path.appendLineTo(r0/scaleX, 0.0);
     if (corner_type == 0)
-      m_collector->collectQuadraticBezier(0.0, 0.0, 0.0, -r0/scaleY);
+      path.appendQuadraticBezierTo(0.0, 0.0, 0.0, -r0/scaleY);
     else if (corner_type == 1)
-      m_collector->collectQuadraticBezier(r0/scaleX, -r0/scaleY, 0.0, -r0/scaleY);
+      path.appendQuadraticBezierTo(r0/scaleX, -r0/scaleY, 0.0, -r0/scaleY);
     else if (corner_type == 2)
-      m_collector->collectLineTo(0.0, -r0/scaleY);
+      path.appendLineTo(0.0, -r0/scaleY);
   }
   else
-    m_collector->collectLineTo(0.0, 0.0);
-  m_collector->collectClosePath();
+    path.appendLineTo(0.0, 0.0);
+  path.appendClosePath();
+  m_collector->collectPath(path);
 }
 
 void libcdr::CDRParser::readEllipse(WPXInputStream *input)
@@ -1358,6 +1360,7 @@ void libcdr::CDRParser::readEllipse(WPXInputStream *input)
   while (angle2 > 2*M_PI)
     angle2 -= 2*M_PI;
 
+  CDRPath path;
   if (angle1 != angle2)
   {
     if (angle2 < angle1)
@@ -1370,13 +1373,13 @@ void libcdr::CDRParser::readEllipse(WPXInputStream *input)
 
     bool largeArc = (angle2 - angle1 > M_PI);
 
-    m_collector->collectMoveTo(x0, y0);
-    m_collector->collectArcTo(rx, ry, largeArc, false, x1, y1);
+    path.appendMoveTo(x0, y0);
+    path.appendArcTo(rx, ry, 0.0, largeArc, false, x1, y1);
     if (pie)
     {
-      m_collector->collectLineTo(cx, cy);
-      m_collector->collectLineTo(x0, y0);
-      m_collector->collectClosePath();
+      path.appendLineTo(cx, cy);
+      path.appendLineTo(x0, y0);
+      path.appendClosePath();
     }
   }
   else
@@ -1388,11 +1391,12 @@ void libcdr::CDRParser::readEllipse(WPXInputStream *input)
     double x1 = cx + rx*cos(angle2);
     double y1 = cy - ry*sin(angle2);
 
-    m_collector->collectMoveTo(x0, y0);
-    m_collector->collectArcTo(rx, ry, false, false, x1, y1);
-    m_collector->collectArcTo(rx, ry, true, false, x0, y0);
-    m_collector->collectClosePath();
+    path.appendMoveTo(x0, y0);
+    path.appendArcTo(rx, ry, 0.0, false, false, x1, y1);
+    path.appendArcTo(rx, ry, 0.0, true, false, x0, y0);
+    path.appendClosePath();
   }
+  m_collector->collectPath(path);
 }
 
 void libcdr::CDRParser::readDisp(WPXInputStream *input, unsigned length)
@@ -1524,11 +1528,13 @@ void libcdr::CDRParser::readBitmap(WPXInputStream *input)
     input->seek(8, WPX_SEEK_CUR);
     imageId = readUnsigned(input);
     input->seek(20, WPX_SEEK_CUR);
-    m_collector->collectMoveTo(x1, y1);
-    m_collector->collectLineTo(x1, y2);
-    m_collector->collectLineTo(x2, y2);
-    m_collector->collectLineTo(x2, y1);
-    m_collector->collectLineTo(x1, y1);
+    CDRPath path;
+    path.appendMoveTo(x1, y1);
+    path.appendLineTo(x1, y2);
+    path.appendLineTo(x2, y2);
+    path.appendLineTo(x2, y1);
+    path.appendLineTo(x1, y1);
+    m_collector->collectPath(path);
   }
   else
   {
diff --git a/src/lib/CDRStylesCollector.h b/src/lib/CDRStylesCollector.h
index d7e26a9..d037931 100644
--- a/src/lib/CDRStylesCollector.h
+++ b/src/lib/CDRStylesCollector.h
@@ -56,12 +56,6 @@ public:
   void collectGroup(unsigned) {}
   void collectVect(unsigned) {}
   void collectOtherList() {}
-  void collectCubicBezier(double, double, double, double, double, double) {}
-  void collectQuadraticBezier(double, double, double, double) {}
-  void collectMoveTo(double, double) {}
-  void collectLineTo(double, double) {}
-  void collectArcTo(double, double, bool, bool, double, double) {}
-  void collectClosePath() {}
   void collectPath(const CDRPath &) {}
   void collectLevel(unsigned) {}
   void collectTransform(const CDRTransforms &, bool) {}
diff --git a/src/lib/CMXParser.cpp b/src/lib/CMXParser.cpp
index 59afc07..64dc906 100644
--- a/src/lib/CMXParser.cpp
+++ b/src/lib/CMXParser.cpp
@@ -479,6 +479,7 @@ void libcdr::CMXParser::readEllipse(WPXInputStream *input)
     return;
 
   m_collector->collectObject(1);
+  CDRPath path;
   if (angle1 != angle2)
   {
     if (angle2 < angle1)
@@ -491,13 +492,13 @@ void libcdr::CMXParser::readEllipse(WPXInputStream *input)
 
     bool largeArc = (angle2 - angle1 > M_PI || angle2 - angle1 < -M_PI);
 
-    m_collector->collectMoveTo(x0, y0);
-    m_collector->collectArcTo(rx, ry, largeArc, true, x1, y1);
+    path.appendMoveTo(x0, y0);
+    path.appendArcTo(rx, ry, 0.0, largeArc, true, x1, y1);
     if (pie)
     {
-      m_collector->collectLineTo(cx, cy);
-      m_collector->collectLineTo(x0, y0);
-      m_collector->collectClosePath();
+      path.appendLineTo(cx, cy);
+      path.appendLineTo(x0, y0);
+      path.appendClosePath();
     }
   }
   else
@@ -508,10 +509,11 @@ void libcdr::CMXParser::readEllipse(WPXInputStream *input)
     double x1 = cx;
     double y1 = cy - ry;
 
-    m_collector->collectMoveTo(x0, y0);
-    m_collector->collectArcTo(rx, ry, false, true, x1, y1);
-    m_collector->collectArcTo(rx, ry, true, true, x0, y0);
+    path.appendMoveTo(x0, y0);
+    path.appendArcTo(rx, ry, 0.0, false, true, x1, y1);
+    path.appendArcTo(rx, ry, 0.0, true, true, x0, y0);
   }
+  m_collector->collectPath(path);
   m_collector->collectRotate(rotation, cx, cy);
   m_collector->collectLevel(1);
 }
@@ -577,26 +579,28 @@ void libcdr::CMXParser::readRectangle(WPXInputStream *input)
   double y0 = cy - height / 2.0;
   double x1 = cx + width / 2.0;
   double y1 = cy + height / 2.0;
+  CDRPath path;
   if (radius > 0.0)
   {
-    m_collector->collectMoveTo(x0, y0-radius);
-    m_collector->collectLineTo(x0, y1+radius);
-    m_collector->collectQuadraticBezier(x0, y1, x0+radius, y1);
-    m_collector->collectLineTo(x1-radius, y1);
-    m_collector->collectQuadraticBezier(x1, y1, x1, y1+radius);
-    m_collector->collectLineTo(x1, y0-radius);
-    m_collector->collectQuadraticBezier(x1, y0, x1-radius, y0);
-    m_collector->collectLineTo(x0+radius, y0);
-    m_collector->collectQuadraticBezier(x0, y0, x0, y0-radius);
+    path.appendMoveTo(x0, y0-radius);
+    path.appendLineTo(x0, y1+radius);
+    path.appendQuadraticBezierTo(x0, y1, x0+radius, y1);
+    path.appendLineTo(x1-radius, y1);
+    path.appendQuadraticBezierTo(x1, y1, x1, y1+radius);
+    path.appendLineTo(x1, y0-radius);
+    path.appendQuadraticBezierTo(x1, y0, x1-radius, y0);
+    path.appendLineTo(x0+radius, y0);
+    path.appendQuadraticBezierTo(x0, y0, x0, y0-radius);
   }
   else
   {
-    m_collector->collectMoveTo(x0, y0);
-    m_collector->collectLineTo(x0, y1);
-    m_collector->collectLineTo(x1, y1);
-    m_collector->collectLineTo(x1, y0);
-    m_collector->collectLineTo(x0, y0);
+    path.appendMoveTo(x0, y0);
+    path.appendLineTo(x0, y1);
+    path.appendLineTo(x1, y1);
+    path.appendLineTo(x1, y0);
+    path.appendLineTo(x0, y0);
   }
+  m_collector->collectPath(path);
   m_collector->collectRotate(angle, cx, cy);
   m_collector->collectLevel(1);
 }


More information about the Libreoffice-commits mailing list