]> source.dussan.org Git - svg.js.git/commitdiff
Fixed few bugs with doc() and problems with textNodes (#357)
authorUlrich-Matthias Schäfer <ulima.ums@googlemail.com>
Sun, 28 Jun 2015 19:24:20 +0000 (21:24 +0200)
committerUlrich-Matthias Schäfer <ulima.ums@googlemail.com>
Sun, 28 Jun 2015 19:24:20 +0000 (21:24 +0200)
src/image.js
src/parent.js
src/text.js
src/utilities.js

index ed4475223b189da9118e1fa62b43bdccf813f68a..ed803d69fdb5e7912b742242097dff9c3ba263f4 100644 (file)
@@ -16,7 +16,7 @@ SVG.Image = SVG.invent({
       
       // preload image
       img.onload = function() {
-        var p = self.doc(SVG.Pattern)
+        var p = self.parent(SVG.Pattern)
 
         // ensure image size
         if (self.width() == 0 && self.height() == 0)
index c4476c648ed84aaee2a84a25c56b5f246a11f5c2..86c7db8a113e8c9a21daad90960d8b0dd3c3bc5c 100644 (file)
@@ -11,7 +11,7 @@ SVG.Parent = SVG.invent({
 , extend: {
     // Returns all child elements
     children: function() {
-      return SVG.utils.map(this.node.childNodes, function(node) {
+      return SVG.utils.map(SVG.utils.filterSVGElements(this.node.childNodes), function(node) {
         return SVG.adopt(node)
       })
     }
index 389a670f0d00ea5549f844f7e3fa5b82929bc472..14f2137490e7ff23dabc87888a0aeb7b3c4e5203 100644 (file)
@@ -89,10 +89,10 @@ SVG.Text = SVG.invent({
     // Get all the first level lines
   , lines: function() {
       // filter tspans and map them to SVG.js instances
-      for (var i = 0, il = this.node.childNodes.length, lines = []; i < il; i++)
-        if (this.node.childNodes[i] instanceof SVGElement)
-          lines.push(SVG.adopt(this.node.childNodes[i]))
-      
+      var lines = SVG.utils.map(SVG.utils.filterSVGElements(this.node.childNodes), function(el){
+        return SVG.adopt(el)
+      })
+
       // return an instance of SVG.set
       return new SVG.Set(lines)
     }
@@ -167,7 +167,7 @@ SVG.Tspan = SVG.invent({
     // Create new line
   , newLine: function() {
       // fetch text parent
-      var t = this.doc(SVG.Text)
+      var t = this.parent(SVG.Text)
 
       // mark new line
       this.newLined = true
@@ -203,13 +203,6 @@ SVG.extend(SVG.Text, SVG.Tspan, {
     // add new tspan
     node.appendChild(tspan.node)
 
-    // only first level tspans are considered to be "lines"
-    // that doenst make sence. A line is added to a SVG.Set which is never used or returned.
-    // So why bother adding it?
-    // Also: lines() reads all children so it already has this tspan in it because we added it before
-    if (this instanceof SVG.Text)
-      this.lines().add(tspan)
-
     return tspan.text(text)
   }
   // Clear all lines
index 0c1a0a391f0383eafe1e17b58e8bc272f5f7c63c..70495cd436c5f8acb1a3e68ae154c581bf036d36 100644 (file)
@@ -1,10 +1,10 @@
 SVG.utils = {
-  // Map function
-  map: function(array, block) {
+    // Map function
+    map: function(array, block) {
     var i
       , il = array.length
       , result = []
-
+    
     for (i = 0; i < il; i++)
       result.push(block(array[i]))
     
@@ -13,11 +13,14 @@ SVG.utils = {
 
   // Degrees to radians
 , radians: function(d) {
-               return d % 360 * Math.PI / 180
-       }
-       // Radians to degrees
+    return d % 360 * Math.PI / 180
+  }
+  // Radians to degrees
 , degrees: function(r) {
-               return r * 180 / Math.PI % 360
-       }
+    return r * 180 / Math.PI % 360
+  }
+, filterSVGElements: function(p) {
+    return [].filter.call(p, function(el){ return el instanceof SVGElement })
+  }
 
 }
\ No newline at end of file