Code

speed up bounds_exact for 2geom even more.
authorjohanengelen <johanengelen@users.sourceforge.net>
Mon, 23 Jun 2008 22:57:47 +0000 (22:57 +0000)
committerjohanengelen <johanengelen@users.sourceforge.net>
Mon, 23 Jun 2008 22:57:47 +0000 (22:57 +0000)
src/helper/geom.cpp

index 9fe82367010d86a4aafd972a70b4f46b9f9a0c56..a056b285121fa39ee5ae8c7886e0526762064ff5 100644 (file)
@@ -17,6 +17,7 @@
 #include <2geom/transforms.h>\r
 #include <2geom/rect.h>\r
 #include <2geom/coord.h>\r
+#include <glibmm.h>\r
 \r
 /* Fast bbox calculation */\r
 /* Thanks to Nathan Hurst for suggesting it */\r
@@ -138,9 +139,8 @@ bounds_exact_transformed(Geom::PathVector const & pv, Geom::Matrix const & t)
     if (pv.empty())\r
         return bbox;\r
 \r
-    Geom::Curve *temp = pv.front().front().transformed(t);\r
-    bbox = temp->boundsExact(); // need decent starting bbox. could be improved by using large numbers for initial bbox (interval(huge,-huge))\r
-    delete temp;\r
+    Geom::Point initial = pv.front().initialPoint() * t;\r
+    bbox = Geom::Rect(initial, initial);        // obtain well defined bbox as starting point to unionWith\r
 \r
     for (Geom::PathVector::const_iterator it = pv.begin(); it != pv.end(); ++it) {\r
         bbox.expandTo(it->initialPoint() * t);\r