X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/6746dc89c47ed01b165cc1152533605f97eb8e8d..HEAD:/src/draw/Sprite.js diff --git a/src/draw/Sprite.js b/src/draw/Sprite.js index e4b7cb54..8d29693a 100644 --- a/src/draw/Sprite.js +++ b/src/draw/Sprite.js @@ -13,37 +13,13 @@ If you are unsure which license is appropriate for your use, please contact the */ /** - * @class Ext.draw.Sprite - * @extends Object + * A Sprite is an object rendered in a Drawing surface. * - * A Sprite is an object rendered in a Drawing surface. There are different options and types of sprites. - * The configuration of a Sprite is an object with the following properties: + * # Translation * - * - **type** - (String) The type of the sprite. Possible options are 'circle', 'path', 'rect', 'text', 'square', 'image'. - * - **group** - (String/Array) The group that this sprite belongs to, or an array of groups. Only relevant when added to a {@link Ext.draw.Surface}. - * - **width** - (Number) Used in rectangle sprites, the width of the rectangle. - * - **height** - (Number) Used in rectangle sprites, the height of the rectangle. - * - **size** - (Number) Used in square sprites, the dimension of the square. - * - **radius** - (Number) Used in circle sprites, the radius of the circle. - * - **x** - (Number) The position along the x-axis. - * - **y** - (Number) The position along the y-axis. - * - **path** - (Array) Used in path sprites, the path of the sprite written in SVG-like path syntax. - * - **opacity** - (Number) The opacity of the sprite. - * - **fill** - (String) The fill color. - * - **stroke** - (String) The stroke color. - * - **stroke-width** - (Number) The width of the stroke. - * - **font** - (String) Used with text type sprites. The full font description. Uses the same syntax as the CSS `font` parameter. - * - **text** - (String) Used with text type sprites. The text itself. - * - **translate** - (Object) Defines a translation for the Sprite. There's more information on this property below. - * - **rotate** - (Object) Defines a rotation for the Sprite. There's more information on this property below. - * - **scale** - (Object) Defines a scaling for the Sprite. There's more information on this property below. - * - * - * ## Translation - * * For translate, the configuration object contains x and y attributes that indicate where to * translate the object. For example: - * + * * sprite.setAttributes({ * translate: { * x: 10, @@ -52,11 +28,11 @@ If you are unsure which license is appropriate for your use, please contact the * }, true); * * - * ## Rotation - * + * # Rotation + * * For rotation, the configuration object contains x and y attributes for the center of the rotation (which are optional), * and a `degrees` attribute that specifies the rotation in degrees. For example: - * + * * sprite.setAttributes({ * rotate: { * degrees: 90 @@ -76,10 +52,10 @@ If you are unsure which license is appropriate for your use, please contact the * will create a rotation around the `(0, 0)` axis. * * - * ## Scaling - * + * # Scaling + * * For scaling, the configuration object contains x and y attributes for the x-axis and y-axis scaling. For example: - * + * * sprite.setAttributes({ * scale: { * x: 10, @@ -99,33 +75,33 @@ If you are unsure which license is appropriate for your use, please contact the * }, true); * * That last example will scale a sprite taking as centers of scaling the `(0, 0)` coordinate. - * - * - * ## Creating and adding a Sprite to a Surface - * + * + * + * # Creating and adding a Sprite to a Surface + * * Sprites can be created with a reference to a {@link Ext.draw.Surface} * - * var drawComponent = Ext.create('Ext.draw.Component', options here...); + * var drawComponent = Ext.create('Ext.draw.Component', options here...); * - * var sprite = Ext.create('Ext.draw.Sprite', { - * type: 'circle', - * fill: '#ff0', - * surface: drawComponent.surface, - * radius: 5 - * }); + * var sprite = Ext.create('Ext.draw.Sprite', { + * type: 'circle', + * fill: '#ff0', + * surface: drawComponent.surface, + * radius: 5 + * }); * * Sprites can also be added to the surface as a configuration object: * - * var sprite = drawComponent.surface.add({ - * type: 'circle', - * fill: '#ff0', - * radius: 5 - * }); + * var sprite = drawComponent.surface.add({ + * type: 'circle', + * fill: '#ff0', + * radius: 5 + * }); * * In order to properly apply properties and render the sprite we have to * `show` the sprite setting the option `redraw` to `true`: * - * sprite.show(true); + * sprite.show(true); * * The constructor configuration object of the Sprite can also be used and passed into the {@link Ext.draw.Surface} * add method to append a new sprite to the canvas. For example: @@ -139,78 +115,82 @@ If you are unsure which license is appropriate for your use, please contact the * }); */ Ext.define('Ext.draw.Sprite', { - + + /* Begin Definitions */ + + mixins: { + observable: 'Ext.util.Observable', + animate: 'Ext.util.Animate' + }, + + requires: ['Ext.draw.SpriteDD'], + + /* End Definitions */ + /** * @cfg {String} type The type of the sprite. Possible options are 'circle', 'path', 'rect', 'text', 'square', 'image' */ - + /** * @cfg {Number} width Used in rectangle sprites, the width of the rectangle */ - + /** * @cfg {Number} height Used in rectangle sprites, the height of the rectangle */ - + /** * @cfg {Number} size Used in square sprites, the dimension of the square */ - + /** * @cfg {Number} radius Used in circle sprites, the radius of the circle */ - + /** * @cfg {Number} x The position along the x-axis */ - + /** * @cfg {Number} y The position along the y-axis */ - + /** * @cfg {Array} path Used in path sprites, the path of the sprite written in SVG-like path syntax */ - + /** * @cfg {Number} opacity The opacity of the sprite */ - + /** * @cfg {String} fill The fill color */ - + /** * @cfg {String} stroke The stroke color */ - + /** * @cfg {Number} stroke-width The width of the stroke */ - + /** * @cfg {String} font Used with text type sprites. The full font description. Uses the same syntax as the CSS font parameter */ - + /** * @cfg {String} text Used with text type sprites. The text itself */ - + /** - * @cfg {String/Array} group The group that this sprite belongs to, or an array of groups. Only relevant when added to a + * @cfg {String/String[]} group The group that this sprite belongs to, or an array of groups. Only relevant when added to a * {@link Ext.draw.Surface} */ - - /* Begin Definitions */ - mixins: { - observable: 'Ext.util.Observable', - animate: 'Ext.util.Animate' - }, - - requires: ['Ext.draw.SpriteDD'], - - /* End Definitions */ + /** + * @cfg {Boolean} draggable True to make the sprite draggable. + */ dirty: false, dirtyHidden: false, @@ -290,13 +270,14 @@ Ext.define('Ext.draw.Sprite', { }, /** - *

If this Sprite is configured {@link #draggable}, this property will contain - * an instance of {@link Ext.dd.DragSource} which handles dragging the Sprite.

+ * @property {Ext.dd.DragSource} dd + * If this Sprite is configured {@link #draggable}, this property will contain + * an instance of {@link Ext.dd.DragSource} which handles dragging the Sprite. + * * The developer must provide implementations of the abstract methods of {@link Ext.dd.DragSource} * in order to supply behaviour for each stage of the drag/drop process. See {@link #draggable}. - * @type Ext.dd.DragSource. - * @property dd */ + initDraggable: function() { var me = this; me.draggable = true; @@ -374,7 +355,7 @@ Ext.define('Ext.draw.Sprite', { rotate = attrs.rotate; rotation = spriteAttrs.rotation; if (rotate) { - if ((rotate.x && rotate.x !== rotation.x) || + if ((rotate.x && rotate.x !== rotation.x) || (rotate.y && rotate.y !== rotation.y) || (rotate.degrees && rotate.degrees !== rotation.degrees)) { Ext.apply(rotation, rotate); @@ -386,7 +367,7 @@ Ext.define('Ext.draw.Sprite', { scale = attrs.scale; scaling = spriteAttrs.scaling; if (scale) { - if ((scale.x && scale.x !== scaling.x) || + if ((scale.x && scale.x !== scaling.x) || (scale.y && scale.y !== scaling.y) || (scale.cx && scale.cx !== scaling.cx) || (scale.cy && scale.cy !== scaling.cy)) { @@ -406,19 +387,20 @@ Ext.define('Ext.draw.Sprite', { }, /** - * Retrieve the bounding box of the sprite. This will be returned as an object with x, y, width, and height properties. + * Retrieves the bounding box of the sprite. + * This will be returned as an object with x, y, width, and height properties. * @return {Object} bbox */ getBBox: function() { return this.surface.getBBox(this); }, - + setText: function(text) { return this.surface.setText(this, text); }, /** - * Hide the sprite. + * Hides the sprite. * @param {Boolean} redraw Flag to immediatly draw the change. * @return {Ext.draw.Sprite} this */ @@ -430,7 +412,7 @@ Ext.define('Ext.draw.Sprite', { }, /** - * Show the sprite. + * Shows the sprite. * @param {Boolean} redraw Flag to immediatly draw the change. * @return {Ext.draw.Sprite} this */ @@ -442,7 +424,7 @@ Ext.define('Ext.draw.Sprite', { }, /** - * Remove the sprite. + * Removes the sprite. */ remove: function() { if (this.surface) { @@ -470,7 +452,7 @@ Ext.define('Ext.draw.Sprite', { }, /** - * Redraw the sprite. + * Redraws the sprite. * @return {Ext.draw.Sprite} this */ redraw: function() { @@ -492,7 +474,7 @@ Ext.define('Ext.draw.Sprite', { /** * Adds one or more CSS classes to the element. Duplicate classes are automatically filtered out. Note this method * is severly limited in VML. - * @param {String/Array} className The CSS class to add, or an array of classes + * @param {String/String[]} className The CSS class to add, or an array of classes * @return {Ext.draw.Sprite} this */ addCls: function(obj) { @@ -502,7 +484,7 @@ Ext.define('Ext.draw.Sprite', { /** * Removes one or more CSS classes from the element. - * @param {String/Array} className The CSS class to remove, or an array of classes. Note this method + * @param {String/String[]} className The CSS class to remove, or an array of classes. Note this method * is severly limited in VML. * @return {Ext.draw.Sprite} this */