SVG.Line = SVG.invent({ // Initialize node create: 'line' // Inherit from , inherit: SVG.Shape // Add class methods , extend: { // Get array array: function() { return new SVG.PointArray([ [ this.attr('x1'), this.attr('y1') ] , [ this.attr('x2'), this.attr('y2') ] ]) } // Overwrite native plot() method , plot: function(x1, y1, x2, y2) { if (arguments.length == 4) x1 = { x1: x1, y1: y1, x2: x2, y2: y2 } else x1 = new SVG.PointArray(x1).toLine() return this.attr(x1) } // Move by left top corner , move: function(x, y) { return this.attr(this.array().move(x, y).toLine()) } // Set element size to given width and height , size: function(width, height) { var p = proportionalSize(this.bbox(), width, height) return this.attr(this.array().size(p.width, p.height).toLine()) } } // Add parent method , construct: { // Create a line element line: function(x1, y1, x2, y2) { return this.put(new SVG.Line).plot(x1, y1, x2, y2) } } })