SVG.Polyline = SVG.invent({ // Initialize node create: 'polyline' // Inherit from , inherit: SVG.Shape // Add parent method , construct: { // Create a wrapped polyline element polyline: function(p) { return this.put(new SVG.Polyline).plot(p) } } }) SVG.Polygon = SVG.invent({ // Initialize node create: 'polygon' // Inherit from , inherit: SVG.Shape // Add parent method , construct: { // Create a wrapped polygon element polygon: function(p) { return this.put(new SVG.Polygon).plot(p) } } }) // Add polygon-specific functions SVG.extend(SVG.Polyline, SVG.Polygon, { // Get array array: function() { return this._array || (this._array = new SVG.PointArray(this.attr('points'))) } // Plot new path , plot: function(p) { return this.attr('points', (this._array = new SVG.PointArray(p))) } // Move by left top corner , move: function(x, y) { return this.attr('points', this.array().move(x, y)) } // Set element size to given width and height , size: function(width, height) { var p = proportionalSize(this.bbox(), width, height) return this.attr('points', this.array().size(p.width, p.height)) } })