Code

Merging from trunk
[inkscape.git] / src / 2geom / piecewise.cpp
index 2d8638818c18868e50997ba962d925af5db99d29..4c63b20dfabee681ebf6f7cc842a05cb0042ccce 100644 (file)
@@ -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,6 +166,18 @@ std::vector<double> roots(Piecewise<SBasis> const &f){
     return result;
 }
 
+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));
+            }
+        }
+    }
+    return result;
+}
 
 }
 /*