|
- SVG.Path = SVG.invent({
- // Initialize node
- create: 'path'
-
- // Inherit from
- , inherit: SVG.Shape
-
- // Add class methods
- , extend: {
- // Define morphable array
- morphArray: SVG.PathArray
- // Get array
- , array: function() {
- return this._array || (this._array = new SVG.PathArray(this.attr('d')))
- }
- // Plot new path
- , plot: function(d) {
- return (d == null) ?
- this.array() :
- this.clear().attr('d', typeof d == 'string' ? d : (this._array = new SVG.PathArray(d)))
- }
- // Clear array cache
- , clear: function() {
- delete this._array
- return this
- }
- // Move by left top corner
- , move: function(x, y) {
- return this.attr('d', this.array().move(x, y))
- }
- // Move by left top corner over x-axis
- , x: function(x) {
- return x == null ? this.bbox().x : this.move(x, this.bbox().y)
- }
- // Move by left top corner over y-axis
- , y: function(y) {
- return y == null ? this.bbox().y : this.move(this.bbox().x, y)
- }
- // Set element size to given width and height
- , size: function(width, height) {
- var p = proportionalSize(this, width, height)
-
- return this.attr('d', this.array().size(p.width, p.height))
- }
- // Set width of element
- , width: function(width) {
- return width == null ? this.bbox().width : this.size(width, this.bbox().height)
- }
- // Set height of element
- , height: function(height) {
- return height == null ? this.bbox().height : this.size(this.bbox().width, height)
- }
-
- }
-
- // Add parent method
- , construct: {
- // Create a wrapped path element
- path: function(d) {
- // make sure plot is called as a setter
- return this.put(new SVG.Path).plot(d || new SVG.PathArray)
- }
- }
- })
|