%PDF- %PDF-
Direktori : /home/jalalj2hb/public_html/ftm-admin/bower_components/kineticjs/src/ |
Current File : /home/jalalj2hb/public_html/ftm-admin/bower_components/kineticjs/src/Shape.js |
(function() { var HAS_SHADOW = 'hasShadow'; function _fillFunc(context) { context.fill(); } function _strokeFunc(context) { context.stroke(); } function _fillFuncHit(context) { context.fill(); } function _strokeFuncHit(context) { context.stroke(); } function _clearHasShadowCache() { this._clearCache(HAS_SHADOW); } Kinetic.Util.addMethods(Kinetic.Shape, { __init: function(config) { this.nodeType = 'Shape'; this._fillFunc = _fillFunc; this._strokeFunc = _strokeFunc; this._fillFuncHit = _fillFuncHit; this._strokeFuncHit = _strokeFuncHit; // set colorKey var shapes = Kinetic.shapes; var key; while(true) { key = Kinetic.Util.getRandomColor(); if(key && !( key in shapes)) { break; } } this.colorKey = key; shapes[key] = this; // call super constructor Kinetic.Node.call(this, config); this.on('shadowColorChange.kinetic shadowBlurChange.kinetic shadowOffsetChange.kinetic shadowOpacityChange.kinetic shadowEnabledChange.kinetic', _clearHasShadowCache); }, hasChildren: function() { return false; }, getChildren: function() { return []; }, /** * get canvas context tied to the layer * @method * @memberof Kinetic.Shape.prototype * @returns {Kinetic.Context} */ getContext: function() { return this.getLayer().getContext(); }, /** * get canvas renderer tied to the layer. Note that this returns a canvas renderer, not a canvas element * @method * @memberof Kinetic.Shape.prototype * @returns {Kinetic.Canvas} */ getCanvas: function() { return this.getLayer().getCanvas(); }, /** * returns whether or not a shadow will be rendered * @method * @memberof Kinetic.Shape.prototype * @returns {Boolean} */ hasShadow: function() { return this._getCache(HAS_SHADOW, this._hasShadow); }, _hasShadow: function() { return this.getShadowEnabled() && (this.getShadowOpacity() !== 0 && !!(this.getShadowColor() || this.getShadowBlur() || this.getShadowOffsetX() || this.getShadowOffsetY())); }, /** * returns whether or not the shape will be filled * @method * @memberof Kinetic.Shape.prototype * @returns {Boolean} */ hasFill: function() { return !!(this.getFill() || this.getFillPatternImage() || this.getFillLinearGradientColorStops() || this.getFillRadialGradientColorStops()); }, /** * returns whether or not the shape will be stroked * @method * @memberof Kinetic.Shape.prototype * @returns {Boolean} */ hasStroke: function() { return !!(this.stroke() || this.strokeRed() || this.strokeGreen() || this.strokeBlue()); }, _get: function(selector) { return this.className === selector || this.nodeType === selector ? [this] : []; }, /** * determines if point is in the shape, regardless if other shapes are on top of it. Note: because * this method clears a temporary canvas and then redraws the shape, it performs very poorly if executed many times * consecutively. Please use the {@link Kinetic.Stage#getIntersection} method if at all possible * because it performs much better * @method * @memberof Kinetic.Shape.prototype * @param {Object} point * @param {Number} point.x * @param {Number} point.y * @returns {Boolean} */ intersects: function(pos) { var stage = this.getStage(), bufferHitCanvas = stage.bufferHitCanvas, p; bufferHitCanvas.getContext().clear(); this.drawScene(bufferHitCanvas); p = bufferHitCanvas.context.getImageData(Math.round(pos.x), Math.round(pos.y), 1, 1).data; return p[3] > 0; }, // extends Node.prototype.destroy destroy: function() { Kinetic.Node.prototype.destroy.call(this); delete Kinetic.shapes[this.colorKey]; }, _useBufferCanvas: function() { return (this.hasShadow() || this.getAbsoluteOpacity() !== 1) && this.hasFill() && this.hasStroke() && this.getStage(); }, drawScene: function(can, top) { var layer = this.getLayer(), canvas = can || layer.getCanvas(), context = canvas.getContext(), cachedCanvas = this._cache.canvas, drawFunc = this.sceneFunc(), hasShadow = this.hasShadow(), stage, bufferCanvas, bufferContext; if(this.isVisible()) { if (cachedCanvas) { this._drawCachedSceneCanvas(context); } else if (drawFunc) { context.save(); // if buffer canvas is needed if (this._useBufferCanvas()) { stage = this.getStage(); bufferCanvas = stage.bufferCanvas; bufferContext = bufferCanvas.getContext(); bufferContext.clear(); bufferContext.save(); bufferContext._applyLineJoin(this); layer._applyTransform(this, bufferContext, top); drawFunc.call(this, bufferContext); bufferContext.restore(); if (hasShadow) { context.save(); context._applyShadow(this); context.drawImage(bufferCanvas._canvas, 0, 0); context.restore(); } context._applyOpacity(this); context.drawImage(bufferCanvas._canvas, 0, 0); } // if buffer canvas is not needed else { context._applyLineJoin(this); layer._applyTransform(this, context, top); if (hasShadow) { context.save(); context._applyShadow(this); drawFunc.call(this, context); context.restore(); } context._applyOpacity(this); drawFunc.call(this, context); } context.restore(); } } return this; }, drawHit: function(can, top) { var layer = this.getLayer(), canvas = can || layer.hitCanvas, context = canvas.getContext(), drawFunc = this.hitFunc() || this.sceneFunc(), cachedCanvas = this._cache.canvas, cachedHitCanvas = cachedCanvas && cachedCanvas.hit; if(this.shouldDrawHit()) { if (cachedHitCanvas) { this._drawCachedHitCanvas(context); } else if (drawFunc) { context.save(); context._applyLineJoin(this); layer._applyTransform(this, context, top); drawFunc.call(this, context); context.restore(); } } return this; }, /** * draw hit graph using the cached scene canvas * @method * @memberof Kinetic.Shape.prototype * @param {Integer} alphaThreshold alpha channel threshold that determines whether or not * a pixel should be drawn onto the hit graph. Must be a value between 0 and 255. * The default is 0 * @returns {Kinetic.Shape} * @example * shape.cache(); * shape.drawHitFromCache(); */ drawHitFromCache: function(alphaThreshold) { var threshold = alphaThreshold || 0, cachedCanvas = this._cache.canvas, sceneCanvas = this._getCachedSceneCanvas(), sceneContext = sceneCanvas.getContext(), hitCanvas = cachedCanvas.hit, hitContext = hitCanvas.getContext(), width = sceneCanvas.getWidth(), height = sceneCanvas.getHeight(), sceneImageData, sceneData, hitImageData, hitData, len, rgbColorKey, i, alpha; hitContext.clear(); try { sceneImageData = sceneContext.getImageData(0, 0, width, height); sceneData = sceneImageData.data; hitImageData = hitContext.getImageData(0, 0, width, height); hitData = hitImageData.data; len = sceneData.length; rgbColorKey = Kinetic.Util._hexToRgb(this.colorKey); // replace non transparent pixels with color key for(i = 0; i < len; i += 4) { alpha = sceneData[i + 3]; if (alpha > threshold) { hitData[i] = rgbColorKey.r; hitData[i + 1] = rgbColorKey.g; hitData[i + 2] = rgbColorKey.b; hitData[i + 3] = 255; } } hitContext.putImageData(hitImageData, 0, 0); } catch(e) { Kinetic.Util.warn('Unable to draw hit graph from cached scene canvas. ' + e.message); } return this; }, }); Kinetic.Util.extend(Kinetic.Shape, Kinetic.Node); // add getters and setters Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'stroke'); /** * get/set stroke color * @name stroke * @method * @memberof Kinetic.Shape.prototype * @param {String} color * @returns {String} * @example * // get stroke color<br> * var stroke = shape.stroke();<br><br> * * // set stroke color with color string<br> * shape.stroke('green');<br><br> * * // set stroke color with hex<br> * shape.stroke('#00ff00');<br><br> * * // set stroke color with rgb<br> * shape.stroke('rgb(0,255,0)');<br><br> * * // set stroke color with rgba and make it 50% opaque<br> * shape.stroke('rgba(0,255,0,0.5'); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'strokeRed', 0, Kinetic.Validators.RGBComponent); /** * get/set stroke red component * @name strokeRed * @method * @memberof Kinetic.Shape.prototype * @param {Integer} red * @returns {Integer} * @example * // get stroke red component<br> * var strokeRed = shape.strokeRed();<br><br> * * // set stroke red component<br> * shape.strokeRed(0); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'strokeGreen', 0, Kinetic.Validators.RGBComponent); /** * get/set stroke green component * @name strokeGreen * @method * @memberof Kinetic.Shape.prototype * @param {Integer} green * @returns {Integer} * @example * // get stroke green component<br> * var strokeGreen = shape.strokeGreen();<br><br> * * // set stroke green component<br> * shape.strokeGreen(255); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'strokeBlue', 0, Kinetic.Validators.RGBComponent); /** * get/set stroke blue component * @name strokeBlue * @method * @memberof Kinetic.Shape.prototype * @param {Integer} blue * @returns {Integer} * @example * // get stroke blue component<br> * var strokeBlue = shape.strokeBlue();<br><br> * * // set stroke blue component<br> * shape.strokeBlue(0); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'strokeAlpha', 1, Kinetic.Validators.alphaComponent); /** * get/set stroke alpha component. Alpha is a real number between 0 and 1. The default * is 1. * @name strokeAlpha * @method * @memberof Kinetic.Shape.prototype * @param {Number} alpha * @returns {Number} * @example * // get stroke alpha component<br> * var strokeAlpha = shape.strokeAlpha();<br><br> * * // set stroke alpha component<br> * shape.strokeAlpha(0.5); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'strokeWidth', 2); /** * get/set stroke width * @name strokeWidth * @method * @memberof Kinetic.Shape.prototype * @param {Number} strokeWidth * @returns {Number} * @example * // get stroke width<br> * var strokeWidth = shape.strokeWidth();<br><br> * * // set stroke width<br> * shape.strokeWidth(); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'lineJoin'); /** * get/set line join. Can be miter, round, or bevel. The * default is miter * @name lineJoin * @method * @memberof Kinetic.Shape.prototype * @param {String} lineJoin * @returns {String} * @example * // get line join<br> * var lineJoin = shape.lineJoin();<br><br> * * // set line join<br> * shape.lineJoin('round'); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'lineCap'); /** * get/set line cap. Can be butt, round, or square * @name lineCap * @method * @memberof Kinetic.Shape.prototype * @param {String} lineCap * @returns {String} * @example * // get line cap<br> * var lineCap = shape.lineCap();<br><br> * * // set line cap<br> * shape.lineCap('round'); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'sceneFunc'); /** * get/set scene draw function * @name sceneFunc * @method * @memberof Kinetic.Shape.prototype * @param {Function} drawFunc drawing function * @returns {Function} * @example * // get scene draw function<br> * var sceneFunc = shape.sceneFunc();<br><br> * * // set scene draw function<br> * shape.sceneFunc(function(context) {<br> * context.beginPath();<br> * context.rect(0, 0, this.width(), this.height());<br> * context.closePath();<br> * context.fillStrokeShape(this);<br> * }); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'hitFunc'); /** * get/set hit draw function * @name hitFunc * @method * @memberof Kinetic.Shape.prototype * @param {Function} drawFunc drawing function * @returns {Function} * @example * // get hit draw function<br> * var hitFunc = shape.hitFunc();<br><br> * * // set hit draw function<br> * shape.hitFunc(function(context) {<br> * context.beginPath();<br> * context.rect(0, 0, this.width(), this.height());<br> * context.closePath();<br> * context.fillStrokeShape(this);<br> * }); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'dash'); /** * get/set dash array for stroke. * @name dash * @method * @memberof Kinetic.Shape.prototype * @param {Array} dash * @returns {Array} * @example * // apply dashed stroke that is 10px long and 5 pixels apart<br> * line.dash([10, 5]);<br><br> * * // apply dashed stroke that is made up of alternating dashed<br> * // lines that are 10px long and 20px apart, and dots that have<br> * // a radius of 5px and are 20px apart<br> * line.dash([10, 20, 0.001, 20]); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'shadowColor'); /** * get/set shadow color * @name shadowColor * @method * @memberof Kinetic.Shape.prototype * @param {String} color * @returns {String} * @example * // get shadow color<br> * var shadow = shape.shadowColor();<br><br> * * // set shadow color with color string<br> * shape.shadowColor('green');<br><br> * * // set shadow color with hex<br> * shape.shadowColor('#00ff00');<br><br> * * // set shadow color with rgb<br> * shape.shadowColor('rgb(0,255,0)');<br><br> * * // set shadow color with rgba and make it 50% opaque<br> * shape.shadowColor('rgba(0,255,0,0.5'); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'shadowRed', 0, Kinetic.Validators.RGBComponent); /** * get/set shadow red component * @name shadowRed * @method * @memberof Kinetic.Shape.prototype * @param {Integer} red * @returns {Integer} * @example * // get shadow red component<br> * var shadowRed = shape.shadowRed();<br><br> * * // set shadow red component<br> * shape.shadowRed(0); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'shadowGreen', 0, Kinetic.Validators.RGBComponent); /** * get/set shadow green component * @name shadowGreen * @method * @memberof Kinetic.Shape.prototype * @param {Integer} green * @returns {Integer} * @example * // get shadow green component<br> * var shadowGreen = shape.shadowGreen();<br><br> * * // set shadow green component<br> * shape.shadowGreen(255); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'shadowBlue', 0, Kinetic.Validators.RGBComponent); /** * get/set shadow blue component * @name shadowBlue * @method * @memberof Kinetic.Shape.prototype * @param {Integer} blue * @returns {Integer} * @example * // get shadow blue component<br> * var shadowBlue = shape.shadowBlue();<br><br> * * // set shadow blue component<br> * shape.shadowBlue(0); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'shadowAlpha', 1, Kinetic.Validators.alphaComponent); /** * get/set shadow alpha component. Alpha is a real number between 0 and 1. The default * is 1. * @name shadowAlpha * @method * @memberof Kinetic.Shape.prototype * @param {Number} alpha * @returns {Number} * @example * // get shadow alpha component<br> * var shadowAlpha = shape.shadowAlpha();<br><br> * * // set shadow alpha component<br> * shape.shadowAlpha(0.5); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'shadowBlur'); /** * get/set shadow blur * @name shadowBlur * @method * @memberof Kinetic.Shape.prototype * @param {Number} blur * @returns {Number} * @example * // get shadow blur<br> * var shadowBlur = shape.shadowBlur();<br><br> * * // set shadow blur<br> * shape.shadowBlur(10); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'shadowOpacity'); /** * get/set shadow opacity. must be a value between 0 and 1 * @name shadowOpacity * @method * @memberof Kinetic.Shape.prototype * @param {Number} opacity * @returns {Number} * @example * // get shadow opacity<br> * var shadowOpacity = shape.shadowOpacity();<br><br> * * // set shadow opacity<br> * shape.shadowOpacity(0.5); */ Kinetic.Factory.addComponentsGetterSetter(Kinetic.Shape, 'shadowOffset', ['x', 'y']); /** * get/set shadow offset * @name shadowOffset * @method * @memberof Kinetic.Shape.prototype * @param {Object} offset * @param {Number} offset.x * @param {Number} offset.y * @returns {Object} * @example * // get shadow offset<br> * var shadowOffset = shape.shadowOffset();<br><br> * * // set shadow offset<br> * shape.shadowOffset({<br> * x: 20<br> * y: 10<br> * }); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'shadowOffsetX', 0); /** * get/set shadow offset x * @name shadowOffsetX * @method * @memberof Kinetic.Shape.prototype * @param {Number} x * @returns {Number} * @example * // get shadow offset x<br> * var shadowOffsetX = shape.shadowOffsetX();<br><br> * * // set shadow offset x<br> * shape.shadowOffsetX(5); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'shadowOffsetY', 0); /** * get/set shadow offset y * @name shadowOffsetY * @method * @memberof Kinetic.Shape.prototype * @param {Number} y * @returns {Number} * @example * // get shadow offset y<br> * var shadowOffsetY = shape.shadowOffsetY();<br><br> * * // set shadow offset y<br> * shape.shadowOffsetY(5); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'fillPatternImage'); /** * get/set fill pattern image * @name fillPatternImage * @method * @memberof Kinetic.Shape.prototype * @param {Image} image object * @returns {Image} * @example * // get fill pattern image<br> * var fillPatternImage = shape.fillPatternImage();<br><br> * * // set fill pattern image<br> * var imageObj = new Image();<br> * imageObj.onload = function() {<br> * shape.fillPatternImage(imageObj);<br> * };<br> * imageObj.src = 'path/to/image/jpg'; */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'fill'); /** * get/set fill color * @name fill * @method * @memberof Kinetic.Shape.prototype * @param {String} color * @returns {String} * @example * // get fill color<br> * var fill = shape.fill();<br><br> * * // set fill color with color string<br> * shape.fill('green');<br><br> * * // set fill color with hex<br> * shape.fill('#00ff00');<br><br> * * // set fill color with rgb<br> * shape.fill('rgb(0,255,0)');<br><br> * * // set fill color with rgba and make it 50% opaque<br> * shape.fill('rgba(0,255,0,0.5'); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'fillRed', 0, Kinetic.Validators.RGBComponent); /** * get/set fill red component * @name fillRed * @method * @memberof Kinetic.Shape.prototype * @param {Integer} red * @returns {Integer} * @example * // get fill red component<br> * var fillRed = shape.fillRed();<br><br> * * // set fill red component<br> * shape.fillRed(0); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'fillGreen', 0, Kinetic.Validators.RGBComponent); /** * get/set fill green component * @name fillGreen * @method * @memberof Kinetic.Shape.prototype * @param {Integer} green * @returns {Integer} * @example * // get fill green component<br> * var fillGreen = shape.fillGreen();<br><br> * * // set fill green component<br> * shape.fillGreen(255); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'fillBlue', 0, Kinetic.Validators.RGBComponent); /** * get/set fill blue component * @name fillBlue * @method * @memberof Kinetic.Shape.prototype * @param {Integer} blue * @returns {Integer} * @example * // get fill blue component<br> * var fillBlue = shape.fillBlue();<br><br> * * // set fill blue component<br> * shape.fillBlue(0); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'fillAlpha', 1, Kinetic.Validators.alphaComponent); /** * get/set fill alpha component. Alpha is a real number between 0 and 1. The default * is 1. * @name fillAlpha * @method * @memberof Kinetic.Shape.prototype * @param {Number} alpha * @returns {Number} * @example * // get fill alpha component<br> * var fillAlpha = shape.fillAlpha();<br><br> * * // set fill alpha component<br> * shape.fillAlpha(0.5); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'fillPatternX', 0); /** * get/set fill pattern x * @name fillPatternX * @method * @memberof Kinetic.Shape.prototype * @param {Number} x * @returns {Number} * @example * // get fill pattern x<br> * var fillPatternX = shape.fillPatternX();<br><br> * * // set fill pattern x<br> * shape.fillPatternX(20); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'fillPatternY', 0); /** * get/set fill pattern y * @name fillPatternY * @method * @memberof Kinetic.Shape.prototype * @param {Number} y * @returns {Number} * @example * // get fill pattern y<br> * var fillPatternY = shape.fillPatternY();<br><br> * * // set fill pattern y<br> * shape.fillPatternY(20); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'fillLinearGradientColorStops'); /** * get/set fill linear gradient color stops * @name fillLinearGradientColorStops * @method * @memberof Kinetic.Shape.prototype * @param {Array} colorStops * @returns {Array} colorStops * @example * // get fill linear gradient color stops<br> * var colorStops = shape.fillLinearGradientColorStops();<br><br> * * // create a linear gradient that starts with red, changes to blue <br> * // halfway through, and then changes to green<br> * shape.fillLinearGradientColorStops(0, 'red', 0.5, 'blue', 1, 'green'); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'fillRadialGradientStartRadius', 0); /** * get/set fill radial gradient start radius * @name fillRadialGradientStartRadius * @method * @memberof Kinetic.Shape.prototype * @param {Number} radius * @returns {Number} * @example * // get radial gradient start radius<br> * var startRadius = shape.fillRadialGradientStartRadius();<br><br> * * // set radial gradient start radius<br> * shape.fillRadialGradientStartRadius(0); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'fillRadialGradientEndRadius', 0); /** * get/set fill radial gradient end radius * @name fillRadialGradientEndRadius * @method * @memberof Kinetic.Shape.prototype * @param {Number} radius * @returns {Number} * @example * // get radial gradient end radius<br> * var endRadius = shape.fillRadialGradientEndRadius();<br><br> * * // set radial gradient end radius<br> * shape.fillRadialGradientEndRadius(100); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'fillRadialGradientColorStops'); /** * get/set fill radial gradient color stops * @name fillRadialGradientColorStops * @method * @memberof Kinetic.Shape.prototype * @param {Number} colorStops * @returns {Array} * @example * // get fill radial gradient color stops<br> * var colorStops = shape.fillRadialGradientColorStops();<br><br> * * // create a radial gradient that starts with red, changes to blue <br> * // halfway through, and then changes to green<br> * shape.fillRadialGradientColorStops(0, 'red', 0.5, 'blue', 1, 'green'); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'fillPatternRepeat', 'repeat'); /** * get/set fill pattern repeat. Can be 'repeat', 'repeat-x', 'repeat-y', or 'no-repeat'. The default is 'repeat' * @name fillPatternRepeat * @method * @memberof Kinetic.Shape.prototype * @param {String} repeat * @returns {String} * @example * // get fill pattern repeat<br> * var repeat = shape.fillPatternRepeat();<br><br> * * // repeat pattern in x direction only<br> * shape.fillPatternRepeat('repeat-x');<br><br> * * // do not repeat the pattern<br> * shape.fillPatternRepeat('no repeat'); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'fillEnabled', true); /** * get/set fill enabled flag * @name fillEnabled * @method * @memberof Kinetic.Shape.prototype * @param {Boolean} enabled * @returns {Boolean} * @example * // get fill enabled flag<br> * var fillEnabled = shape.fillEnabled();<br><br> * * // disable fill<br> * shape.fillEnabled(false);<br><br> * * // enable fill<br> * shape.fillEnabled(true); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'strokeEnabled', true); /** * get/set stroke enabled flag * @name strokeEnabled * @method * @memberof Kinetic.Shape.prototype * @param {Boolean} enabled * @returns {Boolean} * @example * // get stroke enabled flag<br> * var strokeEnabled = shape.strokeEnabled();<br><br> * * // disable stroke<br> * shape.strokeEnabled(false);<br><br> * * // enable stroke<br> * shape.strokeEnabled(true); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'shadowEnabled', true); /** * get/set shadow enabled flag * @name shadowEnabled * @method * @memberof Kinetic.Shape.prototype * @param {Boolean} enabled * @returns {Boolean} * @example * // get shadow enabled flag<br> * var shadowEnabled = shape.shadowEnabled();<br><br> * * // disable shadow<br> * shape.shadowEnabled(false);<br><br> * * // enable shadow<br> * shape.shadowEnabled(true); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'dashEnabled', true); /** * get/set dash enabled flag * @name dashEnabled * @method * @memberof Kinetic.Shape.prototype * @param {Boolean} enabled * @returns {Boolean} * @example * // get dash enabled flag<br> * var dashEnabled = shape.dashEnabled();<br><br> * * // disable dash<br> * shape.dashEnabled(false);<br><br> * * // enable dash<br> * shape.dashEnabled(true); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'strokeScaleEnabled', true); /** * get/set strokeScale enabled flag * @name strokeScaleEnabled * @method * @memberof Kinetic.Shape.prototype * @param {Boolean} enabled * @returns {Boolean} * @example * // get stroke scale enabled flag<br> * var strokeScaleEnabled = shape.strokeScaleEnabled();<br><br> * * // disable stroke scale<br> * shape.strokeScaleEnabled(false);<br><br> * * // enable stroke scale<br> * shape.strokeScaleEnabled(true); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'fillPriority', 'color'); /** * get/set fill priority. can be color, pattern, linear-gradient, or radial-gradient. The default is color. * This is handy if you want to toggle between different fill types. * @name fillPriority * @method * @memberof Kinetic.Shape.prototype * @param {String} priority * @returns {String} * @example * // get fill priority<br> * var fillPriority = shape.fillPriority();<br><br> * * // set fill priority<br> * shape.fillPriority('linear-gradient'); */ Kinetic.Factory.addComponentsGetterSetter(Kinetic.Shape, 'fillPatternOffset', ['x', 'y']); /** * get/set fill pattern offset * @name fillPatternOffset * @method * @memberof Kinetic.Shape.prototype * @param {Object} offset * @param {Number} offset.x * @param {Number} offset.y * @returns {Object} * @example * // get fill pattern offset<br> * var patternOffset = shape.fillPatternOffset();<br><br> * * // set fill pattern offset<br> * shape.fillPatternOffset({<br> * x: 20<br> * y: 10<br> * }); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'fillPatternOffsetX', 0); /** * get/set fill pattern offset x * @name fillPatternOffsetX * @method * @memberof Kinetic.Shape.prototype * @param {Number} x * @returns {Number} * @example * // get fill pattern offset x<br> * var patternOffsetX = shape.fillPatternOffsetX();<br><br> * * // set fill pattern offset x<br> * shape.fillPatternOffsetX(20); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'fillPatternOffsetY', 0); /** * get/set fill pattern offset y * @name fillPatternOffsetY * @method * @memberof Kinetic.Shape.prototype * @param {Number} y * @returns {Number} * @example * // get fill pattern offset y<br> * var patternOffsetY = shape.fillPatternOffsetY();<br><br> * * // set fill pattern offset y<br> * shape.fillPatternOffsetY(10); */ Kinetic.Factory.addComponentsGetterSetter(Kinetic.Shape, 'fillPatternScale', ['x', 'y']); /** * get/set fill pattern scale * @name fillPatternScale * @method * @memberof Kinetic.Shape.prototype * @param {Object} scale * @param {Number} scale.x * @param {Number} scale.y * @returns {Object} * @example * // get fill pattern scale<br> * var patternScale = shape.fillPatternScale();<br><br> * * // set fill pattern scale<br> * shape.fillPatternScale({<br> * x: 2<br> * y: 2<br> * }); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'fillPatternScaleX', 1); /** * get/set fill pattern scale x * @name fillPatternScaleX * @method * @memberof Kinetic.Shape.prototype * @param {Number} x * @returns {Number} * @example * // get fill pattern scale x<br> * var patternScaleX = shape.fillPatternScaleX();<br><br> * * // set fill pattern scale x<br> * shape.fillPatternScaleX(2); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'fillPatternScaleY', 1); /** * get/set fill pattern scale y * @name fillPatternScaleY * @method * @memberof Kinetic.Shape.prototype * @param {Number} y * @returns {Number} * @example * // get fill pattern scale y<br> * var patternScaleY = shape.fillPatternScaleY();<br><br> * * // set fill pattern scale y<br> * shape.fillPatternScaleY(2); */ Kinetic.Factory.addComponentsGetterSetter(Kinetic.Shape, 'fillLinearGradientStartPoint', ['x', 'y']); /** * get/set fill linear gradient start point * @name fillLinearGradientStartPoint * @method * @memberof Kinetic.Shape.prototype * @param {Object} startPoint * @param {Number} startPoint.x * @param {Number} startPoint.y * @returns {Object} * @example * // get fill linear gradient start point<br> * var startPoint = shape.fillLinearGradientStartPoint();<br><br> * * // set fill linear gradient start point<br> * shape.fillLinearGradientStartPoint({<br> * x: 20<br> * y: 10<br> * }); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'fillLinearGradientStartPointX', 0); /** * get/set fill linear gradient start point x * @name fillLinearGradientStartPointX * @method * @memberof Kinetic.Shape.prototype * @param {Number} x * @returns {Number} * @example * // get fill linear gradient start point x<br> * var startPointX = shape.fillLinearGradientStartPointX();<br><br> * * // set fill linear gradient start point x<br> * shape.fillLinearGradientStartPointX(20); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'fillLinearGradientStartPointY', 0); /** * get/set fill linear gradient start point y * @name fillLinearGradientStartPointY * @method * @memberof Kinetic.Shape.prototype * @param {Number} y * @returns {Number} * @example * // get fill linear gradient start point y<br> * var startPointY = shape.fillLinearGradientStartPointY();<br><br> * * // set fill linear gradient start point y<br> * shape.fillLinearGradientStartPointY(20); */ Kinetic.Factory.addComponentsGetterSetter(Kinetic.Shape, 'fillLinearGradientEndPoint', ['x', 'y']); /** * get/set fill linear gradient end point * @name fillLinearGradientEndPoint * @method * @memberof Kinetic.Shape.prototype * @param {Object} endPoint * @param {Number} endPoint.x * @param {Number} endPoint.y * @returns {Object} * @example * // get fill linear gradient end point<br> * var endPoint = shape.fillLinearGradientEndPoint();<br><br> * * // set fill linear gradient end point<br> * shape.fillLinearGradientEndPoint({<br> * x: 20<br> * y: 10<br> * }); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'fillLinearGradientEndPointX', 0); /** * get/set fill linear gradient end point x * @name fillLinearGradientEndPointX * @method * @memberof Kinetic.Shape.prototype * @param {Number} x * @returns {Number} * @example * // get fill linear gradient end point x<br> * var endPointX = shape.fillLinearGradientEndPointX();<br><br> * * // set fill linear gradient end point x<br> * shape.fillLinearGradientEndPointX(20); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'fillLinearGradientEndPointY', 0); /** * get/set fill linear gradient end point y * @name fillLinearGradientEndPointY * @method * @memberof Kinetic.Shape.prototype * @param {Number} y * @returns {Number} * @example * // get fill linear gradient end point y<br> * var endPointY = shape.fillLinearGradientEndPointY();<br><br> * * // set fill linear gradient end point y<br> * shape.fillLinearGradientEndPointY(20); */ Kinetic.Factory.addComponentsGetterSetter(Kinetic.Shape, 'fillRadialGradientStartPoint', ['x', 'y']); /** * get/set fill radial gradient start point * @name fillRadialGradientStartPoint * @method * @memberof Kinetic.Shape.prototype * @param {Object} startPoint * @param {Number} startPoint.x * @param {Number} startPoint.y * @returns {Object} * @example * // get fill radial gradient start point<br> * var startPoint = shape.fillRadialGradientStartPoint();<br><br> * * // set fill radial gradient start point<br> * shape.fillRadialGradientStartPoint({<br> * x: 20<br> * y: 10<br> * }); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'fillRadialGradientStartPointX', 0); /** * get/set fill radial gradient start point x * @name fillRadialGradientStartPointX * @method * @memberof Kinetic.Shape.prototype * @param {Number} x * @returns {Number} * @example * // get fill radial gradient start point x<br> * var startPointX = shape.fillRadialGradientStartPointX();<br><br> * * // set fill radial gradient start point x<br> * shape.fillRadialGradientStartPointX(20); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'fillRadialGradientStartPointY', 0); /** * get/set fill radial gradient start point y * @name fillRadialGradientStartPointY * @method * @memberof Kinetic.Shape.prototype * @param {Number} y * @returns {Number} * @example * // get fill radial gradient start point y<br> * var startPointY = shape.fillRadialGradientStartPointY();<br><br> * * // set fill radial gradient start point y<br> * shape.fillRadialGradientStartPointY(20); */ Kinetic.Factory.addComponentsGetterSetter(Kinetic.Shape, 'fillRadialGradientEndPoint', ['x', 'y']); /** * get/set fill radial gradient end point * @name fillRadialGradientEndPoint * @method * @memberof Kinetic.Shape.prototype * @param {Object} endPoint * @param {Number} endPoint.x * @param {Number} endPoint.y * @returns {Object} * @example * // get fill radial gradient end point<br> * var endPoint = shape.fillRadialGradientEndPoint();<br><br> * * // set fill radial gradient end point<br> * shape.fillRadialGradientEndPoint({<br> * x: 20<br> * y: 10<br> * }); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'fillRadialGradientEndPointX', 0); /** * get/set fill radial gradient end point x * @name fillRadialGradientEndPointX * @method * @memberof Kinetic.Shape.prototype * @param {Number} x * @returns {Number} * @example * // get fill radial gradient end point x<br> * var endPointX = shape.fillRadialGradientEndPointX();<br><br> * * // set fill radial gradient end point x<br> * shape.fillRadialGradientEndPointX(20); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'fillRadialGradientEndPointY', 0); /** * get/set fill radial gradient end point y * @name fillRadialGradientEndPointY * @method * @memberof Kinetic.Shape.prototype * @param {Number} y * @returns {Number} * @example * // get fill radial gradient end point y<br> * var endPointY = shape.fillRadialGradientEndPointY();<br><br> * * // set fill radial gradient end point y<br> * shape.fillRadialGradientEndPointY(20); */ Kinetic.Factory.addGetterSetter(Kinetic.Shape, 'fillPatternRotation', 0); /** * get/set fill pattern rotation in degrees * @name fillPatternRotation * @method * @memberof Kinetic.Shape.prototype * @param {Number} rotation * @returns {Kinetic.Shape} * @example * // get fill pattern rotation<br> * var patternRotation = shape.fillPatternRotation();<br><br> * * // set fill pattern rotation<br> * shape.fillPatternRotation(20); */ Kinetic.Factory.backCompat(Kinetic.Shape, { dashArray: 'dash', getDashArray: 'getDash', setDashArray: 'getDash', drawFunc: 'sceneFunc', getDrawFunc: 'getSceneFunc', setDrawFunc: 'setSceneFunc', drawHitFunc: 'hitFunc', getDrawHitFunc: 'getHitFunc', setDrawHitFunc: 'setHitFunc' }); Kinetic.Collection.mapMethods(Kinetic.Shape); })();