Code

Split SPCanvasItem and SPCanvasGroup to individual .h files. Pruned forward header.
[inkscape.git] / src / 2geom / piecewise.cpp
index 222152aa36fd8209c39f7f9fb2bbc56ca22a9ca1..fcecc13c19b61d96690e5ef2b80e39cb042492fe 100644 (file)
@@ -29,7 +29,7 @@
  *
  */
 
-#include "piecewise.h"
+#include <2geom/piecewise.h>
 #include <iterator>
 #include <map>
 
@@ -158,7 +158,6 @@ std::vector<double> roots(Piecewise<SBasis> const &f){
     std::vector<double> result;
     for (unsigned i=0; i<f.size(); i++){
         std::vector<double> rts=roots(f.segs[i]);
-        rts=roots(f.segs[i]);
 
         for (unsigned r=0; r<rts.size(); r++){
             result.push_back(f.mapToDomain(rts[r], i));
@@ -167,22 +166,19 @@ std::vector<double> roots(Piecewise<SBasis> const &f){
     return result;
 }
 
-Piecewise<SBasis> reverse(Piecewise<SBasis> const &f) {
-    Piecewise<SBasis> ret = Piecewise<SBasis>();
-    ret.cuts.resize(f.cuts.size());
-    ret.segs.resize(f.segs.size());
-    double start = f.cuts[0];
-    double end = f.cuts.back();
-    for (unsigned i = 0; i < f.cuts.size(); i++) {
-        double x = f.cuts[f.cuts.size() - 1 - i];
-        ret.cuts[i] = end - (x - start);
+std::vector<std::vector<double> > multi_roots(Piecewise<SBasis> const &f, std::vector<double> const &values) {
+    std::vector<std::vector<double> > result(values.size());
+    for (unsigned i=0; i<f.size(); i++) {
+        std::vector<std::vector<double> > rts = multi_roots(f.segs[i], values);
+        for(unsigned j=0; j<rts.size(); j++) {
+            for(unsigned r=0; r<rts[j].size(); r++){
+                result[j].push_back(f.mapToDomain(rts[j][r], i));
+            }
+        }
     }
-    for (unsigned i = 0; i < f.segs.size(); i++)
-        ret.segs[i] = reverse(f[f.segs.size() - i - 1]);
-    return ret;
+    return result;
 }
 
-
 }
 /*
   Local Variables:
@@ -193,4 +189,4 @@ Piecewise<SBasis> reverse(Piecewise<SBasis> const &f) {
   fill-column:99
   End:
 */
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :
+// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :