diff --git a/src/core/display/Container.js b/src/core/display/Container.js index 0c2fe16..5b97a75 100644 --- a/src/core/display/Container.js +++ b/src/core/display/Container.js @@ -488,6 +488,12 @@ } }; +/** + * To be overridden by the subclass + * + * @param renderer {WebGLRenderer} The renderer + * @private + */ Container.prototype._renderWebGL = function (renderer) { // this is where content itself gets rendered... diff --git a/src/core/display/Container.js b/src/core/display/Container.js index 0c2fe16..5b97a75 100644 --- a/src/core/display/Container.js +++ b/src/core/display/Container.js @@ -488,6 +488,12 @@ } }; +/** + * To be overridden by the subclass + * + * @param renderer {WebGLRenderer} The renderer + * @private + */ Container.prototype._renderWebGL = function (renderer) { // this is where content itself gets rendered... diff --git a/src/core/graphics/Graphics.js b/src/core/graphics/Graphics.js index 86cdf2f..66162a9 100644 --- a/src/core/graphics/Graphics.js +++ b/src/core/graphics/Graphics.js @@ -5,7 +5,8 @@ CanvasGraphics = require('../renderers/canvas/utils/CanvasGraphics'), GraphicsData = require('./GraphicsData'), math = require('../math'), - CONST = require('../const'); + CONST = require('../const'), + tempPoint = new math.Point(); /** * The Graphics class contains methods used to draw primitive shapes such as lines, circles and @@ -889,6 +890,40 @@ }; /** +* Tests if a point is inside this graphics object +* +* @param point {Point} the point to test +* @return {boolean} the result of the test +*/ +Graphics.prototype.containsPoint = function( point ) +{ + this.worldTransform.applyInverse(point, tempPoint); + + var graphicsData = this.graphicsData; + + for (var i = 0; i < graphicsData.length; i++) + { + var data = graphicsData[i]; + + if (!data.fill) + { + continue; + } + + // only deal with fills.. + if (data.shape) + { + if ( data.shape.contains( tempPoint.x, tempPoint.y ) ) + { + return true; + } + } + } + + return false; +}; + +/** * Update the bounds of the object * */ diff --git a/src/core/display/Container.js b/src/core/display/Container.js index 0c2fe16..5b97a75 100644 --- a/src/core/display/Container.js +++ b/src/core/display/Container.js @@ -488,6 +488,12 @@ } }; +/** + * To be overridden by the subclass + * + * @param renderer {WebGLRenderer} The renderer + * @private + */ Container.prototype._renderWebGL = function (renderer) { // this is where content itself gets rendered... diff --git a/src/core/graphics/Graphics.js b/src/core/graphics/Graphics.js index 86cdf2f..66162a9 100644 --- a/src/core/graphics/Graphics.js +++ b/src/core/graphics/Graphics.js @@ -5,7 +5,8 @@ CanvasGraphics = require('../renderers/canvas/utils/CanvasGraphics'), GraphicsData = require('./GraphicsData'), math = require('../math'), - CONST = require('../const'); + CONST = require('../const'), + tempPoint = new math.Point(); /** * The Graphics class contains methods used to draw primitive shapes such as lines, circles and @@ -889,6 +890,40 @@ }; /** +* Tests if a point is inside this graphics object +* +* @param point {Point} the point to test +* @return {boolean} the result of the test +*/ +Graphics.prototype.containsPoint = function( point ) +{ + this.worldTransform.applyInverse(point, tempPoint); + + var graphicsData = this.graphicsData; + + for (var i = 0; i < graphicsData.length; i++) + { + var data = graphicsData[i]; + + if (!data.fill) + { + continue; + } + + // only deal with fills.. + if (data.shape) + { + if ( data.shape.contains( tempPoint.x, tempPoint.y ) ) + { + return true; + } + } + } + + return false; +}; + +/** * Update the bounds of the object * */ diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index fefbeb3..15ce4fe 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -8,7 +8,6 @@ ObjectRenderer = require('./utils/ObjectRenderer'), FXAAFilter = require('./filters/FXAAFilter'), utils = require('../../utils'), - CONST = require('../../const'); /** @@ -19,6 +18,7 @@ * * @class * @memberof PIXI + * @extends SystemRenderer * @param [width=0] {number} the width of the canvas view * @param [height=0] {number} the height of the canvas view * @param [options] {object} The optional renderer parameters @@ -38,6 +38,12 @@ SystemRenderer.call(this, 'WebGL', width, height, options); + /** + * The type of this renderer as a standardised const + * + * @member {number} + * + */ this.type = CONST.RENDERER_TYPE.WEBGL; this.handleContextLost = this.handleContextLost.bind(this); @@ -55,7 +61,20 @@ this.view.addEventListener('webglcontextrestored', this.handleContextRestored, false); //TODO possibility to force FXAA as it may offer better performance? + /** + * Does it use FXAA ? + * + * @member {boolean} + * @private + */ this._useFXAA = false; + + /** + * The fxaa filter + * + * @member {FXAAFilter} + * @private + */ this._FXAAFilter = null; /** @@ -137,6 +156,7 @@ /** * An array of render targets * @member {Array} TODO @alvin + * @private */ this._renderTargetStack = []; } @@ -150,7 +170,7 @@ WebGLRenderer.glContextId = 0; /** - * + * Creates the WebGL context * @private */ WebGLRenderer.prototype._initContext = function () @@ -245,8 +265,8 @@ * Renders a Display Object. * * @param displayObject {DisplayObject} The DisplayObject to render - * @param projection {Point} The projection - * @param buffer {Array} a standard WebGL buffer + * @param renderTarget {Point} TODO @alvin + * */ WebGLRenderer.prototype.renderDisplayObject = function (displayObject, renderTarget)//projection, buffer) { diff --git a/src/core/display/Container.js b/src/core/display/Container.js index 0c2fe16..5b97a75 100644 --- a/src/core/display/Container.js +++ b/src/core/display/Container.js @@ -488,6 +488,12 @@ } }; +/** + * To be overridden by the subclass + * + * @param renderer {WebGLRenderer} The renderer + * @private + */ Container.prototype._renderWebGL = function (renderer) { // this is where content itself gets rendered... diff --git a/src/core/graphics/Graphics.js b/src/core/graphics/Graphics.js index 86cdf2f..66162a9 100644 --- a/src/core/graphics/Graphics.js +++ b/src/core/graphics/Graphics.js @@ -5,7 +5,8 @@ CanvasGraphics = require('../renderers/canvas/utils/CanvasGraphics'), GraphicsData = require('./GraphicsData'), math = require('../math'), - CONST = require('../const'); + CONST = require('../const'), + tempPoint = new math.Point(); /** * The Graphics class contains methods used to draw primitive shapes such as lines, circles and @@ -889,6 +890,40 @@ }; /** +* Tests if a point is inside this graphics object +* +* @param point {Point} the point to test +* @return {boolean} the result of the test +*/ +Graphics.prototype.containsPoint = function( point ) +{ + this.worldTransform.applyInverse(point, tempPoint); + + var graphicsData = this.graphicsData; + + for (var i = 0; i < graphicsData.length; i++) + { + var data = graphicsData[i]; + + if (!data.fill) + { + continue; + } + + // only deal with fills.. + if (data.shape) + { + if ( data.shape.contains( tempPoint.x, tempPoint.y ) ) + { + return true; + } + } + } + + return false; +}; + +/** * Update the bounds of the object * */ diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index fefbeb3..15ce4fe 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -8,7 +8,6 @@ ObjectRenderer = require('./utils/ObjectRenderer'), FXAAFilter = require('./filters/FXAAFilter'), utils = require('../../utils'), - CONST = require('../../const'); /** @@ -19,6 +18,7 @@ * * @class * @memberof PIXI + * @extends SystemRenderer * @param [width=0] {number} the width of the canvas view * @param [height=0] {number} the height of the canvas view * @param [options] {object} The optional renderer parameters @@ -38,6 +38,12 @@ SystemRenderer.call(this, 'WebGL', width, height, options); + /** + * The type of this renderer as a standardised const + * + * @member {number} + * + */ this.type = CONST.RENDERER_TYPE.WEBGL; this.handleContextLost = this.handleContextLost.bind(this); @@ -55,7 +61,20 @@ this.view.addEventListener('webglcontextrestored', this.handleContextRestored, false); //TODO possibility to force FXAA as it may offer better performance? + /** + * Does it use FXAA ? + * + * @member {boolean} + * @private + */ this._useFXAA = false; + + /** + * The fxaa filter + * + * @member {FXAAFilter} + * @private + */ this._FXAAFilter = null; /** @@ -137,6 +156,7 @@ /** * An array of render targets * @member {Array} TODO @alvin + * @private */ this._renderTargetStack = []; } @@ -150,7 +170,7 @@ WebGLRenderer.glContextId = 0; /** - * + * Creates the WebGL context * @private */ WebGLRenderer.prototype._initContext = function () @@ -245,8 +265,8 @@ * Renders a Display Object. * * @param displayObject {DisplayObject} The DisplayObject to render - * @param projection {Point} The projection - * @param buffer {Array} a standard WebGL buffer + * @param renderTarget {Point} TODO @alvin + * */ WebGLRenderer.prototype.renderDisplayObject = function (displayObject, renderTarget)//projection, buffer) { diff --git a/src/core/renderers/webgl/filters/AbstractFilter.js b/src/core/renderers/webgl/filters/AbstractFilter.js index 6d71106..91e874c 100644 --- a/src/core/renderers/webgl/filters/AbstractFilter.js +++ b/src/core/renderers/webgl/filters/AbstractFilter.js @@ -21,6 +21,7 @@ this.passes = [this]; /** + * An array of shaders * @member {Shader[]} * @private */ @@ -32,15 +33,22 @@ this.padding = 0; /** + * The uniforms as an object * @member {object} * @private */ this.uniforms = uniforms || {}; + /** + * The code of the vertex shader + * @member {string[]} + * @private + */ this.vertexSrc = vertexSrc; /** + * The code of the frament shader * @member {string[]} * @private */ diff --git a/src/core/display/Container.js b/src/core/display/Container.js index 0c2fe16..5b97a75 100644 --- a/src/core/display/Container.js +++ b/src/core/display/Container.js @@ -488,6 +488,12 @@ } }; +/** + * To be overridden by the subclass + * + * @param renderer {WebGLRenderer} The renderer + * @private + */ Container.prototype._renderWebGL = function (renderer) { // this is where content itself gets rendered... diff --git a/src/core/graphics/Graphics.js b/src/core/graphics/Graphics.js index 86cdf2f..66162a9 100644 --- a/src/core/graphics/Graphics.js +++ b/src/core/graphics/Graphics.js @@ -5,7 +5,8 @@ CanvasGraphics = require('../renderers/canvas/utils/CanvasGraphics'), GraphicsData = require('./GraphicsData'), math = require('../math'), - CONST = require('../const'); + CONST = require('../const'), + tempPoint = new math.Point(); /** * The Graphics class contains methods used to draw primitive shapes such as lines, circles and @@ -889,6 +890,40 @@ }; /** +* Tests if a point is inside this graphics object +* +* @param point {Point} the point to test +* @return {boolean} the result of the test +*/ +Graphics.prototype.containsPoint = function( point ) +{ + this.worldTransform.applyInverse(point, tempPoint); + + var graphicsData = this.graphicsData; + + for (var i = 0; i < graphicsData.length; i++) + { + var data = graphicsData[i]; + + if (!data.fill) + { + continue; + } + + // only deal with fills.. + if (data.shape) + { + if ( data.shape.contains( tempPoint.x, tempPoint.y ) ) + { + return true; + } + } + } + + return false; +}; + +/** * Update the bounds of the object * */ diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index fefbeb3..15ce4fe 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -8,7 +8,6 @@ ObjectRenderer = require('./utils/ObjectRenderer'), FXAAFilter = require('./filters/FXAAFilter'), utils = require('../../utils'), - CONST = require('../../const'); /** @@ -19,6 +18,7 @@ * * @class * @memberof PIXI + * @extends SystemRenderer * @param [width=0] {number} the width of the canvas view * @param [height=0] {number} the height of the canvas view * @param [options] {object} The optional renderer parameters @@ -38,6 +38,12 @@ SystemRenderer.call(this, 'WebGL', width, height, options); + /** + * The type of this renderer as a standardised const + * + * @member {number} + * + */ this.type = CONST.RENDERER_TYPE.WEBGL; this.handleContextLost = this.handleContextLost.bind(this); @@ -55,7 +61,20 @@ this.view.addEventListener('webglcontextrestored', this.handleContextRestored, false); //TODO possibility to force FXAA as it may offer better performance? + /** + * Does it use FXAA ? + * + * @member {boolean} + * @private + */ this._useFXAA = false; + + /** + * The fxaa filter + * + * @member {FXAAFilter} + * @private + */ this._FXAAFilter = null; /** @@ -137,6 +156,7 @@ /** * An array of render targets * @member {Array} TODO @alvin + * @private */ this._renderTargetStack = []; } @@ -150,7 +170,7 @@ WebGLRenderer.glContextId = 0; /** - * + * Creates the WebGL context * @private */ WebGLRenderer.prototype._initContext = function () @@ -245,8 +265,8 @@ * Renders a Display Object. * * @param displayObject {DisplayObject} The DisplayObject to render - * @param projection {Point} The projection - * @param buffer {Array} a standard WebGL buffer + * @param renderTarget {Point} TODO @alvin + * */ WebGLRenderer.prototype.renderDisplayObject = function (displayObject, renderTarget)//projection, buffer) { diff --git a/src/core/renderers/webgl/filters/AbstractFilter.js b/src/core/renderers/webgl/filters/AbstractFilter.js index 6d71106..91e874c 100644 --- a/src/core/renderers/webgl/filters/AbstractFilter.js +++ b/src/core/renderers/webgl/filters/AbstractFilter.js @@ -21,6 +21,7 @@ this.passes = [this]; /** + * An array of shaders * @member {Shader[]} * @private */ @@ -32,15 +33,22 @@ this.padding = 0; /** + * The uniforms as an object * @member {object} * @private */ this.uniforms = uniforms || {}; + /** + * The code of the vertex shader + * @member {string[]} + * @private + */ this.vertexSrc = vertexSrc; /** + * The code of the frament shader * @member {string[]} * @private */ diff --git a/src/core/renderers/webgl/managers/StencilManager.js b/src/core/renderers/webgl/managers/StencilManager.js index 7b7de67..4dc4cc3 100644 --- a/src/core/renderers/webgl/managers/StencilManager.js +++ b/src/core/renderers/webgl/managers/StencilManager.js @@ -40,7 +40,7 @@ */ WebGLMaskManager.prototype.pushStencil = function (graphics, webGLData) { - this.renderer.currentRenderTarget.attachStenilBuffer(); + this.renderer.currentRenderTarget.attachStencilBuffer(); var gl = this.renderer.gl, sms = this.stencilMaskStack; diff --git a/src/core/display/Container.js b/src/core/display/Container.js index 0c2fe16..5b97a75 100644 --- a/src/core/display/Container.js +++ b/src/core/display/Container.js @@ -488,6 +488,12 @@ } }; +/** + * To be overridden by the subclass + * + * @param renderer {WebGLRenderer} The renderer + * @private + */ Container.prototype._renderWebGL = function (renderer) { // this is where content itself gets rendered... diff --git a/src/core/graphics/Graphics.js b/src/core/graphics/Graphics.js index 86cdf2f..66162a9 100644 --- a/src/core/graphics/Graphics.js +++ b/src/core/graphics/Graphics.js @@ -5,7 +5,8 @@ CanvasGraphics = require('../renderers/canvas/utils/CanvasGraphics'), GraphicsData = require('./GraphicsData'), math = require('../math'), - CONST = require('../const'); + CONST = require('../const'), + tempPoint = new math.Point(); /** * The Graphics class contains methods used to draw primitive shapes such as lines, circles and @@ -889,6 +890,40 @@ }; /** +* Tests if a point is inside this graphics object +* +* @param point {Point} the point to test +* @return {boolean} the result of the test +*/ +Graphics.prototype.containsPoint = function( point ) +{ + this.worldTransform.applyInverse(point, tempPoint); + + var graphicsData = this.graphicsData; + + for (var i = 0; i < graphicsData.length; i++) + { + var data = graphicsData[i]; + + if (!data.fill) + { + continue; + } + + // only deal with fills.. + if (data.shape) + { + if ( data.shape.contains( tempPoint.x, tempPoint.y ) ) + { + return true; + } + } + } + + return false; +}; + +/** * Update the bounds of the object * */ diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index fefbeb3..15ce4fe 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -8,7 +8,6 @@ ObjectRenderer = require('./utils/ObjectRenderer'), FXAAFilter = require('./filters/FXAAFilter'), utils = require('../../utils'), - CONST = require('../../const'); /** @@ -19,6 +18,7 @@ * * @class * @memberof PIXI + * @extends SystemRenderer * @param [width=0] {number} the width of the canvas view * @param [height=0] {number} the height of the canvas view * @param [options] {object} The optional renderer parameters @@ -38,6 +38,12 @@ SystemRenderer.call(this, 'WebGL', width, height, options); + /** + * The type of this renderer as a standardised const + * + * @member {number} + * + */ this.type = CONST.RENDERER_TYPE.WEBGL; this.handleContextLost = this.handleContextLost.bind(this); @@ -55,7 +61,20 @@ this.view.addEventListener('webglcontextrestored', this.handleContextRestored, false); //TODO possibility to force FXAA as it may offer better performance? + /** + * Does it use FXAA ? + * + * @member {boolean} + * @private + */ this._useFXAA = false; + + /** + * The fxaa filter + * + * @member {FXAAFilter} + * @private + */ this._FXAAFilter = null; /** @@ -137,6 +156,7 @@ /** * An array of render targets * @member {Array} TODO @alvin + * @private */ this._renderTargetStack = []; } @@ -150,7 +170,7 @@ WebGLRenderer.glContextId = 0; /** - * + * Creates the WebGL context * @private */ WebGLRenderer.prototype._initContext = function () @@ -245,8 +265,8 @@ * Renders a Display Object. * * @param displayObject {DisplayObject} The DisplayObject to render - * @param projection {Point} The projection - * @param buffer {Array} a standard WebGL buffer + * @param renderTarget {Point} TODO @alvin + * */ WebGLRenderer.prototype.renderDisplayObject = function (displayObject, renderTarget)//projection, buffer) { diff --git a/src/core/renderers/webgl/filters/AbstractFilter.js b/src/core/renderers/webgl/filters/AbstractFilter.js index 6d71106..91e874c 100644 --- a/src/core/renderers/webgl/filters/AbstractFilter.js +++ b/src/core/renderers/webgl/filters/AbstractFilter.js @@ -21,6 +21,7 @@ this.passes = [this]; /** + * An array of shaders * @member {Shader[]} * @private */ @@ -32,15 +33,22 @@ this.padding = 0; /** + * The uniforms as an object * @member {object} * @private */ this.uniforms = uniforms || {}; + /** + * The code of the vertex shader + * @member {string[]} + * @private + */ this.vertexSrc = vertexSrc; /** + * The code of the frament shader * @member {string[]} * @private */ diff --git a/src/core/renderers/webgl/managers/StencilManager.js b/src/core/renderers/webgl/managers/StencilManager.js index 7b7de67..4dc4cc3 100644 --- a/src/core/renderers/webgl/managers/StencilManager.js +++ b/src/core/renderers/webgl/managers/StencilManager.js @@ -40,7 +40,7 @@ */ WebGLMaskManager.prototype.pushStencil = function (graphics, webGLData) { - this.renderer.currentRenderTarget.attachStenilBuffer(); + this.renderer.currentRenderTarget.attachStencilBuffer(); var gl = this.renderer.gl, sms = this.stencilMaskStack; diff --git a/src/core/renderers/webgl/utils/ObjectRenderer.js b/src/core/renderers/webgl/utils/ObjectRenderer.js index b90a4d5..9edbd1a 100644 --- a/src/core/renderers/webgl/utils/ObjectRenderer.js +++ b/src/core/renderers/webgl/utils/ObjectRenderer.js @@ -4,6 +4,7 @@ * Base for a common object renderer that can be used as a system renderer plugin. * * @class + * @extends WebGLManager * @memberof PIXI * @param renderer {WebGLRenderer} The renderer this object renderer works for. */ @@ -17,22 +18,38 @@ ObjectRenderer.prototype.constructor = ObjectRenderer; module.exports = ObjectRenderer; +/** + * Starts the renderer and sets the shader + * + */ ObjectRenderer.prototype.start = function () { // set the shader.. }; +/** + * Stops the renderer + * + */ ObjectRenderer.prototype.stop = function () { this.flush(); }; +/** + * flushes + * + */ ObjectRenderer.prototype.flush = function () { // flush! }; -ObjectRenderer.prototype.render = function (/* object */) +/** + * Renders an object + * + */ +ObjectRenderer.prototype.render = function (object) { // render the object }; diff --git a/src/core/display/Container.js b/src/core/display/Container.js index 0c2fe16..5b97a75 100644 --- a/src/core/display/Container.js +++ b/src/core/display/Container.js @@ -488,6 +488,12 @@ } }; +/** + * To be overridden by the subclass + * + * @param renderer {WebGLRenderer} The renderer + * @private + */ Container.prototype._renderWebGL = function (renderer) { // this is where content itself gets rendered... diff --git a/src/core/graphics/Graphics.js b/src/core/graphics/Graphics.js index 86cdf2f..66162a9 100644 --- a/src/core/graphics/Graphics.js +++ b/src/core/graphics/Graphics.js @@ -5,7 +5,8 @@ CanvasGraphics = require('../renderers/canvas/utils/CanvasGraphics'), GraphicsData = require('./GraphicsData'), math = require('../math'), - CONST = require('../const'); + CONST = require('../const'), + tempPoint = new math.Point(); /** * The Graphics class contains methods used to draw primitive shapes such as lines, circles and @@ -889,6 +890,40 @@ }; /** +* Tests if a point is inside this graphics object +* +* @param point {Point} the point to test +* @return {boolean} the result of the test +*/ +Graphics.prototype.containsPoint = function( point ) +{ + this.worldTransform.applyInverse(point, tempPoint); + + var graphicsData = this.graphicsData; + + for (var i = 0; i < graphicsData.length; i++) + { + var data = graphicsData[i]; + + if (!data.fill) + { + continue; + } + + // only deal with fills.. + if (data.shape) + { + if ( data.shape.contains( tempPoint.x, tempPoint.y ) ) + { + return true; + } + } + } + + return false; +}; + +/** * Update the bounds of the object * */ diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index fefbeb3..15ce4fe 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -8,7 +8,6 @@ ObjectRenderer = require('./utils/ObjectRenderer'), FXAAFilter = require('./filters/FXAAFilter'), utils = require('../../utils'), - CONST = require('../../const'); /** @@ -19,6 +18,7 @@ * * @class * @memberof PIXI + * @extends SystemRenderer * @param [width=0] {number} the width of the canvas view * @param [height=0] {number} the height of the canvas view * @param [options] {object} The optional renderer parameters @@ -38,6 +38,12 @@ SystemRenderer.call(this, 'WebGL', width, height, options); + /** + * The type of this renderer as a standardised const + * + * @member {number} + * + */ this.type = CONST.RENDERER_TYPE.WEBGL; this.handleContextLost = this.handleContextLost.bind(this); @@ -55,7 +61,20 @@ this.view.addEventListener('webglcontextrestored', this.handleContextRestored, false); //TODO possibility to force FXAA as it may offer better performance? + /** + * Does it use FXAA ? + * + * @member {boolean} + * @private + */ this._useFXAA = false; + + /** + * The fxaa filter + * + * @member {FXAAFilter} + * @private + */ this._FXAAFilter = null; /** @@ -137,6 +156,7 @@ /** * An array of render targets * @member {Array} TODO @alvin + * @private */ this._renderTargetStack = []; } @@ -150,7 +170,7 @@ WebGLRenderer.glContextId = 0; /** - * + * Creates the WebGL context * @private */ WebGLRenderer.prototype._initContext = function () @@ -245,8 +265,8 @@ * Renders a Display Object. * * @param displayObject {DisplayObject} The DisplayObject to render - * @param projection {Point} The projection - * @param buffer {Array} a standard WebGL buffer + * @param renderTarget {Point} TODO @alvin + * */ WebGLRenderer.prototype.renderDisplayObject = function (displayObject, renderTarget)//projection, buffer) { diff --git a/src/core/renderers/webgl/filters/AbstractFilter.js b/src/core/renderers/webgl/filters/AbstractFilter.js index 6d71106..91e874c 100644 --- a/src/core/renderers/webgl/filters/AbstractFilter.js +++ b/src/core/renderers/webgl/filters/AbstractFilter.js @@ -21,6 +21,7 @@ this.passes = [this]; /** + * An array of shaders * @member {Shader[]} * @private */ @@ -32,15 +33,22 @@ this.padding = 0; /** + * The uniforms as an object * @member {object} * @private */ this.uniforms = uniforms || {}; + /** + * The code of the vertex shader + * @member {string[]} + * @private + */ this.vertexSrc = vertexSrc; /** + * The code of the frament shader * @member {string[]} * @private */ diff --git a/src/core/renderers/webgl/managers/StencilManager.js b/src/core/renderers/webgl/managers/StencilManager.js index 7b7de67..4dc4cc3 100644 --- a/src/core/renderers/webgl/managers/StencilManager.js +++ b/src/core/renderers/webgl/managers/StencilManager.js @@ -40,7 +40,7 @@ */ WebGLMaskManager.prototype.pushStencil = function (graphics, webGLData) { - this.renderer.currentRenderTarget.attachStenilBuffer(); + this.renderer.currentRenderTarget.attachStencilBuffer(); var gl = this.renderer.gl, sms = this.stencilMaskStack; diff --git a/src/core/renderers/webgl/utils/ObjectRenderer.js b/src/core/renderers/webgl/utils/ObjectRenderer.js index b90a4d5..9edbd1a 100644 --- a/src/core/renderers/webgl/utils/ObjectRenderer.js +++ b/src/core/renderers/webgl/utils/ObjectRenderer.js @@ -4,6 +4,7 @@ * Base for a common object renderer that can be used as a system renderer plugin. * * @class + * @extends WebGLManager * @memberof PIXI * @param renderer {WebGLRenderer} The renderer this object renderer works for. */ @@ -17,22 +18,38 @@ ObjectRenderer.prototype.constructor = ObjectRenderer; module.exports = ObjectRenderer; +/** + * Starts the renderer and sets the shader + * + */ ObjectRenderer.prototype.start = function () { // set the shader.. }; +/** + * Stops the renderer + * + */ ObjectRenderer.prototype.stop = function () { this.flush(); }; +/** + * flushes + * + */ ObjectRenderer.prototype.flush = function () { // flush! }; -ObjectRenderer.prototype.render = function (/* object */) +/** + * Renders an object + * + */ +ObjectRenderer.prototype.render = function (object) { // render the object }; diff --git a/src/core/renderers/webgl/utils/Quad.js b/src/core/renderers/webgl/utils/Quad.js index c135ec3..ca49ceb 100644 --- a/src/core/renderers/webgl/utils/Quad.js +++ b/src/core/renderers/webgl/utils/Quad.js @@ -1,14 +1,23 @@ /** + * Helper class to create a quad * @class * @memberof PIXI * @param gl {WebGLRenderingContext} The gl context for this quad to use. */ function Quad(gl) { + /* + * @member {WebGLRenderingContext} the current WebGL drawing context + */ this.gl = gl; // this.textures = new TextureUvs(); + /** + * An array of vertices + * + * @member {Float32Array} + */ this.vertices = new Float32Array([ 0,0, 200,0, @@ -16,6 +25,11 @@ 0,200 ]); + /** + * The Uvs of the quad + * + * @member {Float32Array} + */ this.uvs = new Float32Array([ 0,0, 1,0, @@ -25,6 +39,11 @@ // var white = (0xFFFFFF >> 16) + (0xFFFFFF & 0xff00) + ((0xFFFFFF & 0xff) << 16) + (1 * 255 << 24); //TODO convert this to a 32 unsigned int array + /** + * The color components of the triangles + * + * @member {Float32Array} + */ this.colors = new Float32Array([ 1,1,1,1, 1,1,1,1, @@ -32,11 +51,21 @@ 1,1,1,1 ]); + /* + * @member {Uint16Array} An array containing the indices of the vertices + */ this.indices = new Uint16Array([ 0, 1, 2, 0, 3, 2 ]); + /* + * @member {WebGLBuffer} The vertex buffer + */ this.vertexBuffer = gl.createBuffer(); + + /* + * @member {WebGLBuffer} The index buffer + */ this.indexBuffer = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); @@ -50,6 +79,11 @@ Quad.prototype.constructor = Quad; +/** + * Maps two Rectangle to the quad + * @param rect {Rectangle} the first rectangle + * @param rect2 {Rectangle} the second rectangle + */ Quad.prototype.map = function(rect, rect2) { var x = 0; //rect2.x / rect.width; @@ -86,6 +120,9 @@ this.upload(); }; +/** + * Binds the buffer and uploads the data + */ Quad.prototype.upload = function() { var gl = this.gl; diff --git a/src/core/display/Container.js b/src/core/display/Container.js index 0c2fe16..5b97a75 100644 --- a/src/core/display/Container.js +++ b/src/core/display/Container.js @@ -488,6 +488,12 @@ } }; +/** + * To be overridden by the subclass + * + * @param renderer {WebGLRenderer} The renderer + * @private + */ Container.prototype._renderWebGL = function (renderer) { // this is where content itself gets rendered... diff --git a/src/core/graphics/Graphics.js b/src/core/graphics/Graphics.js index 86cdf2f..66162a9 100644 --- a/src/core/graphics/Graphics.js +++ b/src/core/graphics/Graphics.js @@ -5,7 +5,8 @@ CanvasGraphics = require('../renderers/canvas/utils/CanvasGraphics'), GraphicsData = require('./GraphicsData'), math = require('../math'), - CONST = require('../const'); + CONST = require('../const'), + tempPoint = new math.Point(); /** * The Graphics class contains methods used to draw primitive shapes such as lines, circles and @@ -889,6 +890,40 @@ }; /** +* Tests if a point is inside this graphics object +* +* @param point {Point} the point to test +* @return {boolean} the result of the test +*/ +Graphics.prototype.containsPoint = function( point ) +{ + this.worldTransform.applyInverse(point, tempPoint); + + var graphicsData = this.graphicsData; + + for (var i = 0; i < graphicsData.length; i++) + { + var data = graphicsData[i]; + + if (!data.fill) + { + continue; + } + + // only deal with fills.. + if (data.shape) + { + if ( data.shape.contains( tempPoint.x, tempPoint.y ) ) + { + return true; + } + } + } + + return false; +}; + +/** * Update the bounds of the object * */ diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index fefbeb3..15ce4fe 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -8,7 +8,6 @@ ObjectRenderer = require('./utils/ObjectRenderer'), FXAAFilter = require('./filters/FXAAFilter'), utils = require('../../utils'), - CONST = require('../../const'); /** @@ -19,6 +18,7 @@ * * @class * @memberof PIXI + * @extends SystemRenderer * @param [width=0] {number} the width of the canvas view * @param [height=0] {number} the height of the canvas view * @param [options] {object} The optional renderer parameters @@ -38,6 +38,12 @@ SystemRenderer.call(this, 'WebGL', width, height, options); + /** + * The type of this renderer as a standardised const + * + * @member {number} + * + */ this.type = CONST.RENDERER_TYPE.WEBGL; this.handleContextLost = this.handleContextLost.bind(this); @@ -55,7 +61,20 @@ this.view.addEventListener('webglcontextrestored', this.handleContextRestored, false); //TODO possibility to force FXAA as it may offer better performance? + /** + * Does it use FXAA ? + * + * @member {boolean} + * @private + */ this._useFXAA = false; + + /** + * The fxaa filter + * + * @member {FXAAFilter} + * @private + */ this._FXAAFilter = null; /** @@ -137,6 +156,7 @@ /** * An array of render targets * @member {Array} TODO @alvin + * @private */ this._renderTargetStack = []; } @@ -150,7 +170,7 @@ WebGLRenderer.glContextId = 0; /** - * + * Creates the WebGL context * @private */ WebGLRenderer.prototype._initContext = function () @@ -245,8 +265,8 @@ * Renders a Display Object. * * @param displayObject {DisplayObject} The DisplayObject to render - * @param projection {Point} The projection - * @param buffer {Array} a standard WebGL buffer + * @param renderTarget {Point} TODO @alvin + * */ WebGLRenderer.prototype.renderDisplayObject = function (displayObject, renderTarget)//projection, buffer) { diff --git a/src/core/renderers/webgl/filters/AbstractFilter.js b/src/core/renderers/webgl/filters/AbstractFilter.js index 6d71106..91e874c 100644 --- a/src/core/renderers/webgl/filters/AbstractFilter.js +++ b/src/core/renderers/webgl/filters/AbstractFilter.js @@ -21,6 +21,7 @@ this.passes = [this]; /** + * An array of shaders * @member {Shader[]} * @private */ @@ -32,15 +33,22 @@ this.padding = 0; /** + * The uniforms as an object * @member {object} * @private */ this.uniforms = uniforms || {}; + /** + * The code of the vertex shader + * @member {string[]} + * @private + */ this.vertexSrc = vertexSrc; /** + * The code of the frament shader * @member {string[]} * @private */ diff --git a/src/core/renderers/webgl/managers/StencilManager.js b/src/core/renderers/webgl/managers/StencilManager.js index 7b7de67..4dc4cc3 100644 --- a/src/core/renderers/webgl/managers/StencilManager.js +++ b/src/core/renderers/webgl/managers/StencilManager.js @@ -40,7 +40,7 @@ */ WebGLMaskManager.prototype.pushStencil = function (graphics, webGLData) { - this.renderer.currentRenderTarget.attachStenilBuffer(); + this.renderer.currentRenderTarget.attachStencilBuffer(); var gl = this.renderer.gl, sms = this.stencilMaskStack; diff --git a/src/core/renderers/webgl/utils/ObjectRenderer.js b/src/core/renderers/webgl/utils/ObjectRenderer.js index b90a4d5..9edbd1a 100644 --- a/src/core/renderers/webgl/utils/ObjectRenderer.js +++ b/src/core/renderers/webgl/utils/ObjectRenderer.js @@ -4,6 +4,7 @@ * Base for a common object renderer that can be used as a system renderer plugin. * * @class + * @extends WebGLManager * @memberof PIXI * @param renderer {WebGLRenderer} The renderer this object renderer works for. */ @@ -17,22 +18,38 @@ ObjectRenderer.prototype.constructor = ObjectRenderer; module.exports = ObjectRenderer; +/** + * Starts the renderer and sets the shader + * + */ ObjectRenderer.prototype.start = function () { // set the shader.. }; +/** + * Stops the renderer + * + */ ObjectRenderer.prototype.stop = function () { this.flush(); }; +/** + * flushes + * + */ ObjectRenderer.prototype.flush = function () { // flush! }; -ObjectRenderer.prototype.render = function (/* object */) +/** + * Renders an object + * + */ +ObjectRenderer.prototype.render = function (object) { // render the object }; diff --git a/src/core/renderers/webgl/utils/Quad.js b/src/core/renderers/webgl/utils/Quad.js index c135ec3..ca49ceb 100644 --- a/src/core/renderers/webgl/utils/Quad.js +++ b/src/core/renderers/webgl/utils/Quad.js @@ -1,14 +1,23 @@ /** + * Helper class to create a quad * @class * @memberof PIXI * @param gl {WebGLRenderingContext} The gl context for this quad to use. */ function Quad(gl) { + /* + * @member {WebGLRenderingContext} the current WebGL drawing context + */ this.gl = gl; // this.textures = new TextureUvs(); + /** + * An array of vertices + * + * @member {Float32Array} + */ this.vertices = new Float32Array([ 0,0, 200,0, @@ -16,6 +25,11 @@ 0,200 ]); + /** + * The Uvs of the quad + * + * @member {Float32Array} + */ this.uvs = new Float32Array([ 0,0, 1,0, @@ -25,6 +39,11 @@ // var white = (0xFFFFFF >> 16) + (0xFFFFFF & 0xff00) + ((0xFFFFFF & 0xff) << 16) + (1 * 255 << 24); //TODO convert this to a 32 unsigned int array + /** + * The color components of the triangles + * + * @member {Float32Array} + */ this.colors = new Float32Array([ 1,1,1,1, 1,1,1,1, @@ -32,11 +51,21 @@ 1,1,1,1 ]); + /* + * @member {Uint16Array} An array containing the indices of the vertices + */ this.indices = new Uint16Array([ 0, 1, 2, 0, 3, 2 ]); + /* + * @member {WebGLBuffer} The vertex buffer + */ this.vertexBuffer = gl.createBuffer(); + + /* + * @member {WebGLBuffer} The index buffer + */ this.indexBuffer = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); @@ -50,6 +79,11 @@ Quad.prototype.constructor = Quad; +/** + * Maps two Rectangle to the quad + * @param rect {Rectangle} the first rectangle + * @param rect2 {Rectangle} the second rectangle + */ Quad.prototype.map = function(rect, rect2) { var x = 0; //rect2.x / rect.width; @@ -86,6 +120,9 @@ this.upload(); }; +/** + * Binds the buffer and uploads the data + */ Quad.prototype.upload = function() { var gl = this.gl; diff --git a/src/core/renderers/webgl/utils/RenderTarget.js b/src/core/renderers/webgl/utils/RenderTarget.js index 14f9830..24585ed 100644 --- a/src/core/renderers/webgl/utils/RenderTarget.js +++ b/src/core/renderers/webgl/utils/RenderTarget.js @@ -129,7 +129,7 @@ gl.clear(gl.COLOR_BUFFER_BIT); }; -RenderTarget.prototype.attachStenilBuffer = function() +RenderTarget.prototype.attachStencilBuffer = function() { if ( this.stencilBuffer ) diff --git a/src/core/display/Container.js b/src/core/display/Container.js index 0c2fe16..5b97a75 100644 --- a/src/core/display/Container.js +++ b/src/core/display/Container.js @@ -488,6 +488,12 @@ } }; +/** + * To be overridden by the subclass + * + * @param renderer {WebGLRenderer} The renderer + * @private + */ Container.prototype._renderWebGL = function (renderer) { // this is where content itself gets rendered... diff --git a/src/core/graphics/Graphics.js b/src/core/graphics/Graphics.js index 86cdf2f..66162a9 100644 --- a/src/core/graphics/Graphics.js +++ b/src/core/graphics/Graphics.js @@ -5,7 +5,8 @@ CanvasGraphics = require('../renderers/canvas/utils/CanvasGraphics'), GraphicsData = require('./GraphicsData'), math = require('../math'), - CONST = require('../const'); + CONST = require('../const'), + tempPoint = new math.Point(); /** * The Graphics class contains methods used to draw primitive shapes such as lines, circles and @@ -889,6 +890,40 @@ }; /** +* Tests if a point is inside this graphics object +* +* @param point {Point} the point to test +* @return {boolean} the result of the test +*/ +Graphics.prototype.containsPoint = function( point ) +{ + this.worldTransform.applyInverse(point, tempPoint); + + var graphicsData = this.graphicsData; + + for (var i = 0; i < graphicsData.length; i++) + { + var data = graphicsData[i]; + + if (!data.fill) + { + continue; + } + + // only deal with fills.. + if (data.shape) + { + if ( data.shape.contains( tempPoint.x, tempPoint.y ) ) + { + return true; + } + } + } + + return false; +}; + +/** * Update the bounds of the object * */ diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index fefbeb3..15ce4fe 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -8,7 +8,6 @@ ObjectRenderer = require('./utils/ObjectRenderer'), FXAAFilter = require('./filters/FXAAFilter'), utils = require('../../utils'), - CONST = require('../../const'); /** @@ -19,6 +18,7 @@ * * @class * @memberof PIXI + * @extends SystemRenderer * @param [width=0] {number} the width of the canvas view * @param [height=0] {number} the height of the canvas view * @param [options] {object} The optional renderer parameters @@ -38,6 +38,12 @@ SystemRenderer.call(this, 'WebGL', width, height, options); + /** + * The type of this renderer as a standardised const + * + * @member {number} + * + */ this.type = CONST.RENDERER_TYPE.WEBGL; this.handleContextLost = this.handleContextLost.bind(this); @@ -55,7 +61,20 @@ this.view.addEventListener('webglcontextrestored', this.handleContextRestored, false); //TODO possibility to force FXAA as it may offer better performance? + /** + * Does it use FXAA ? + * + * @member {boolean} + * @private + */ this._useFXAA = false; + + /** + * The fxaa filter + * + * @member {FXAAFilter} + * @private + */ this._FXAAFilter = null; /** @@ -137,6 +156,7 @@ /** * An array of render targets * @member {Array} TODO @alvin + * @private */ this._renderTargetStack = []; } @@ -150,7 +170,7 @@ WebGLRenderer.glContextId = 0; /** - * + * Creates the WebGL context * @private */ WebGLRenderer.prototype._initContext = function () @@ -245,8 +265,8 @@ * Renders a Display Object. * * @param displayObject {DisplayObject} The DisplayObject to render - * @param projection {Point} The projection - * @param buffer {Array} a standard WebGL buffer + * @param renderTarget {Point} TODO @alvin + * */ WebGLRenderer.prototype.renderDisplayObject = function (displayObject, renderTarget)//projection, buffer) { diff --git a/src/core/renderers/webgl/filters/AbstractFilter.js b/src/core/renderers/webgl/filters/AbstractFilter.js index 6d71106..91e874c 100644 --- a/src/core/renderers/webgl/filters/AbstractFilter.js +++ b/src/core/renderers/webgl/filters/AbstractFilter.js @@ -21,6 +21,7 @@ this.passes = [this]; /** + * An array of shaders * @member {Shader[]} * @private */ @@ -32,15 +33,22 @@ this.padding = 0; /** + * The uniforms as an object * @member {object} * @private */ this.uniforms = uniforms || {}; + /** + * The code of the vertex shader + * @member {string[]} + * @private + */ this.vertexSrc = vertexSrc; /** + * The code of the frament shader * @member {string[]} * @private */ diff --git a/src/core/renderers/webgl/managers/StencilManager.js b/src/core/renderers/webgl/managers/StencilManager.js index 7b7de67..4dc4cc3 100644 --- a/src/core/renderers/webgl/managers/StencilManager.js +++ b/src/core/renderers/webgl/managers/StencilManager.js @@ -40,7 +40,7 @@ */ WebGLMaskManager.prototype.pushStencil = function (graphics, webGLData) { - this.renderer.currentRenderTarget.attachStenilBuffer(); + this.renderer.currentRenderTarget.attachStencilBuffer(); var gl = this.renderer.gl, sms = this.stencilMaskStack; diff --git a/src/core/renderers/webgl/utils/ObjectRenderer.js b/src/core/renderers/webgl/utils/ObjectRenderer.js index b90a4d5..9edbd1a 100644 --- a/src/core/renderers/webgl/utils/ObjectRenderer.js +++ b/src/core/renderers/webgl/utils/ObjectRenderer.js @@ -4,6 +4,7 @@ * Base for a common object renderer that can be used as a system renderer plugin. * * @class + * @extends WebGLManager * @memberof PIXI * @param renderer {WebGLRenderer} The renderer this object renderer works for. */ @@ -17,22 +18,38 @@ ObjectRenderer.prototype.constructor = ObjectRenderer; module.exports = ObjectRenderer; +/** + * Starts the renderer and sets the shader + * + */ ObjectRenderer.prototype.start = function () { // set the shader.. }; +/** + * Stops the renderer + * + */ ObjectRenderer.prototype.stop = function () { this.flush(); }; +/** + * flushes + * + */ ObjectRenderer.prototype.flush = function () { // flush! }; -ObjectRenderer.prototype.render = function (/* object */) +/** + * Renders an object + * + */ +ObjectRenderer.prototype.render = function (object) { // render the object }; diff --git a/src/core/renderers/webgl/utils/Quad.js b/src/core/renderers/webgl/utils/Quad.js index c135ec3..ca49ceb 100644 --- a/src/core/renderers/webgl/utils/Quad.js +++ b/src/core/renderers/webgl/utils/Quad.js @@ -1,14 +1,23 @@ /** + * Helper class to create a quad * @class * @memberof PIXI * @param gl {WebGLRenderingContext} The gl context for this quad to use. */ function Quad(gl) { + /* + * @member {WebGLRenderingContext} the current WebGL drawing context + */ this.gl = gl; // this.textures = new TextureUvs(); + /** + * An array of vertices + * + * @member {Float32Array} + */ this.vertices = new Float32Array([ 0,0, 200,0, @@ -16,6 +25,11 @@ 0,200 ]); + /** + * The Uvs of the quad + * + * @member {Float32Array} + */ this.uvs = new Float32Array([ 0,0, 1,0, @@ -25,6 +39,11 @@ // var white = (0xFFFFFF >> 16) + (0xFFFFFF & 0xff00) + ((0xFFFFFF & 0xff) << 16) + (1 * 255 << 24); //TODO convert this to a 32 unsigned int array + /** + * The color components of the triangles + * + * @member {Float32Array} + */ this.colors = new Float32Array([ 1,1,1,1, 1,1,1,1, @@ -32,11 +51,21 @@ 1,1,1,1 ]); + /* + * @member {Uint16Array} An array containing the indices of the vertices + */ this.indices = new Uint16Array([ 0, 1, 2, 0, 3, 2 ]); + /* + * @member {WebGLBuffer} The vertex buffer + */ this.vertexBuffer = gl.createBuffer(); + + /* + * @member {WebGLBuffer} The index buffer + */ this.indexBuffer = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); @@ -50,6 +79,11 @@ Quad.prototype.constructor = Quad; +/** + * Maps two Rectangle to the quad + * @param rect {Rectangle} the first rectangle + * @param rect2 {Rectangle} the second rectangle + */ Quad.prototype.map = function(rect, rect2) { var x = 0; //rect2.x / rect.width; @@ -86,6 +120,9 @@ this.upload(); }; +/** + * Binds the buffer and uploads the data + */ Quad.prototype.upload = function() { var gl = this.gl; diff --git a/src/core/renderers/webgl/utils/RenderTarget.js b/src/core/renderers/webgl/utils/RenderTarget.js index 14f9830..24585ed 100644 --- a/src/core/renderers/webgl/utils/RenderTarget.js +++ b/src/core/renderers/webgl/utils/RenderTarget.js @@ -129,7 +129,7 @@ gl.clear(gl.COLOR_BUFFER_BIT); }; -RenderTarget.prototype.attachStenilBuffer = function() +RenderTarget.prototype.attachStencilBuffer = function() { if ( this.stencilBuffer ) diff --git a/src/core/sprites/Sprite.js b/src/core/sprites/Sprite.js index 75cdd8e..127d3cf 100644 --- a/src/core/sprites/Sprite.js +++ b/src/core/sprites/Sprite.js @@ -3,7 +3,8 @@ Container = require('../display/Container'), CanvasTinter = require('../renderers/canvas/utils/CanvasTinter'), utils = require('../utils'), - CONST = require('../const'); + CONST = require('../const'), + tempPoint = new math.Point(); /** * The Sprite object is the base for all textured objects that are rendered to the screen @@ -11,7 +12,7 @@ * A sprite can be created directly from an image like this: * * ```js - * var sprite = new Sprite.fromImage('assets/image.png'); + * var sprite = new PIXI.Sprite.fromImage('assets/image.png'); * ``` * * @class Sprite @@ -80,6 +81,11 @@ */ this.shader = null; + /** + * An internal cached value of the tint. + * + * @member {number} + */ this.cachedTint = 0xFFFFFF; // call texture setter @@ -322,6 +328,34 @@ }; /** +* Tests if a point is inside this sprite +* +* @param point {Point} the point to test +* @return {boolean} the result of the test +*/ +Sprite.prototype.containsPoint = function( point ) +{ + this.worldTransform.applyInverse(point, tempPoint); + + var width = this._texture._frame.width; + var height = this._texture._frame.height; + var x1 = -width * this.anchor.x; + var y1; + + if ( tempPoint.x > x1 && tempPoint.x < x1 + width ) + { + y1 = -height * this.anchor.y; + + if ( tempPoint.y > y1 && tempPoint.y < y1 + height ) + { + return true; + } + } + + return false; +}; + +/** * Renders the object using the Canvas renderer * * @param renderer {CanvasRenderer} The renderer diff --git a/src/core/display/Container.js b/src/core/display/Container.js index 0c2fe16..5b97a75 100644 --- a/src/core/display/Container.js +++ b/src/core/display/Container.js @@ -488,6 +488,12 @@ } }; +/** + * To be overridden by the subclass + * + * @param renderer {WebGLRenderer} The renderer + * @private + */ Container.prototype._renderWebGL = function (renderer) { // this is where content itself gets rendered... diff --git a/src/core/graphics/Graphics.js b/src/core/graphics/Graphics.js index 86cdf2f..66162a9 100644 --- a/src/core/graphics/Graphics.js +++ b/src/core/graphics/Graphics.js @@ -5,7 +5,8 @@ CanvasGraphics = require('../renderers/canvas/utils/CanvasGraphics'), GraphicsData = require('./GraphicsData'), math = require('../math'), - CONST = require('../const'); + CONST = require('../const'), + tempPoint = new math.Point(); /** * The Graphics class contains methods used to draw primitive shapes such as lines, circles and @@ -889,6 +890,40 @@ }; /** +* Tests if a point is inside this graphics object +* +* @param point {Point} the point to test +* @return {boolean} the result of the test +*/ +Graphics.prototype.containsPoint = function( point ) +{ + this.worldTransform.applyInverse(point, tempPoint); + + var graphicsData = this.graphicsData; + + for (var i = 0; i < graphicsData.length; i++) + { + var data = graphicsData[i]; + + if (!data.fill) + { + continue; + } + + // only deal with fills.. + if (data.shape) + { + if ( data.shape.contains( tempPoint.x, tempPoint.y ) ) + { + return true; + } + } + } + + return false; +}; + +/** * Update the bounds of the object * */ diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index fefbeb3..15ce4fe 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -8,7 +8,6 @@ ObjectRenderer = require('./utils/ObjectRenderer'), FXAAFilter = require('./filters/FXAAFilter'), utils = require('../../utils'), - CONST = require('../../const'); /** @@ -19,6 +18,7 @@ * * @class * @memberof PIXI + * @extends SystemRenderer * @param [width=0] {number} the width of the canvas view * @param [height=0] {number} the height of the canvas view * @param [options] {object} The optional renderer parameters @@ -38,6 +38,12 @@ SystemRenderer.call(this, 'WebGL', width, height, options); + /** + * The type of this renderer as a standardised const + * + * @member {number} + * + */ this.type = CONST.RENDERER_TYPE.WEBGL; this.handleContextLost = this.handleContextLost.bind(this); @@ -55,7 +61,20 @@ this.view.addEventListener('webglcontextrestored', this.handleContextRestored, false); //TODO possibility to force FXAA as it may offer better performance? + /** + * Does it use FXAA ? + * + * @member {boolean} + * @private + */ this._useFXAA = false; + + /** + * The fxaa filter + * + * @member {FXAAFilter} + * @private + */ this._FXAAFilter = null; /** @@ -137,6 +156,7 @@ /** * An array of render targets * @member {Array} TODO @alvin + * @private */ this._renderTargetStack = []; } @@ -150,7 +170,7 @@ WebGLRenderer.glContextId = 0; /** - * + * Creates the WebGL context * @private */ WebGLRenderer.prototype._initContext = function () @@ -245,8 +265,8 @@ * Renders a Display Object. * * @param displayObject {DisplayObject} The DisplayObject to render - * @param projection {Point} The projection - * @param buffer {Array} a standard WebGL buffer + * @param renderTarget {Point} TODO @alvin + * */ WebGLRenderer.prototype.renderDisplayObject = function (displayObject, renderTarget)//projection, buffer) { diff --git a/src/core/renderers/webgl/filters/AbstractFilter.js b/src/core/renderers/webgl/filters/AbstractFilter.js index 6d71106..91e874c 100644 --- a/src/core/renderers/webgl/filters/AbstractFilter.js +++ b/src/core/renderers/webgl/filters/AbstractFilter.js @@ -21,6 +21,7 @@ this.passes = [this]; /** + * An array of shaders * @member {Shader[]} * @private */ @@ -32,15 +33,22 @@ this.padding = 0; /** + * The uniforms as an object * @member {object} * @private */ this.uniforms = uniforms || {}; + /** + * The code of the vertex shader + * @member {string[]} + * @private + */ this.vertexSrc = vertexSrc; /** + * The code of the frament shader * @member {string[]} * @private */ diff --git a/src/core/renderers/webgl/managers/StencilManager.js b/src/core/renderers/webgl/managers/StencilManager.js index 7b7de67..4dc4cc3 100644 --- a/src/core/renderers/webgl/managers/StencilManager.js +++ b/src/core/renderers/webgl/managers/StencilManager.js @@ -40,7 +40,7 @@ */ WebGLMaskManager.prototype.pushStencil = function (graphics, webGLData) { - this.renderer.currentRenderTarget.attachStenilBuffer(); + this.renderer.currentRenderTarget.attachStencilBuffer(); var gl = this.renderer.gl, sms = this.stencilMaskStack; diff --git a/src/core/renderers/webgl/utils/ObjectRenderer.js b/src/core/renderers/webgl/utils/ObjectRenderer.js index b90a4d5..9edbd1a 100644 --- a/src/core/renderers/webgl/utils/ObjectRenderer.js +++ b/src/core/renderers/webgl/utils/ObjectRenderer.js @@ -4,6 +4,7 @@ * Base for a common object renderer that can be used as a system renderer plugin. * * @class + * @extends WebGLManager * @memberof PIXI * @param renderer {WebGLRenderer} The renderer this object renderer works for. */ @@ -17,22 +18,38 @@ ObjectRenderer.prototype.constructor = ObjectRenderer; module.exports = ObjectRenderer; +/** + * Starts the renderer and sets the shader + * + */ ObjectRenderer.prototype.start = function () { // set the shader.. }; +/** + * Stops the renderer + * + */ ObjectRenderer.prototype.stop = function () { this.flush(); }; +/** + * flushes + * + */ ObjectRenderer.prototype.flush = function () { // flush! }; -ObjectRenderer.prototype.render = function (/* object */) +/** + * Renders an object + * + */ +ObjectRenderer.prototype.render = function (object) { // render the object }; diff --git a/src/core/renderers/webgl/utils/Quad.js b/src/core/renderers/webgl/utils/Quad.js index c135ec3..ca49ceb 100644 --- a/src/core/renderers/webgl/utils/Quad.js +++ b/src/core/renderers/webgl/utils/Quad.js @@ -1,14 +1,23 @@ /** + * Helper class to create a quad * @class * @memberof PIXI * @param gl {WebGLRenderingContext} The gl context for this quad to use. */ function Quad(gl) { + /* + * @member {WebGLRenderingContext} the current WebGL drawing context + */ this.gl = gl; // this.textures = new TextureUvs(); + /** + * An array of vertices + * + * @member {Float32Array} + */ this.vertices = new Float32Array([ 0,0, 200,0, @@ -16,6 +25,11 @@ 0,200 ]); + /** + * The Uvs of the quad + * + * @member {Float32Array} + */ this.uvs = new Float32Array([ 0,0, 1,0, @@ -25,6 +39,11 @@ // var white = (0xFFFFFF >> 16) + (0xFFFFFF & 0xff00) + ((0xFFFFFF & 0xff) << 16) + (1 * 255 << 24); //TODO convert this to a 32 unsigned int array + /** + * The color components of the triangles + * + * @member {Float32Array} + */ this.colors = new Float32Array([ 1,1,1,1, 1,1,1,1, @@ -32,11 +51,21 @@ 1,1,1,1 ]); + /* + * @member {Uint16Array} An array containing the indices of the vertices + */ this.indices = new Uint16Array([ 0, 1, 2, 0, 3, 2 ]); + /* + * @member {WebGLBuffer} The vertex buffer + */ this.vertexBuffer = gl.createBuffer(); + + /* + * @member {WebGLBuffer} The index buffer + */ this.indexBuffer = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); @@ -50,6 +79,11 @@ Quad.prototype.constructor = Quad; +/** + * Maps two Rectangle to the quad + * @param rect {Rectangle} the first rectangle + * @param rect2 {Rectangle} the second rectangle + */ Quad.prototype.map = function(rect, rect2) { var x = 0; //rect2.x / rect.width; @@ -86,6 +120,9 @@ this.upload(); }; +/** + * Binds the buffer and uploads the data + */ Quad.prototype.upload = function() { var gl = this.gl; diff --git a/src/core/renderers/webgl/utils/RenderTarget.js b/src/core/renderers/webgl/utils/RenderTarget.js index 14f9830..24585ed 100644 --- a/src/core/renderers/webgl/utils/RenderTarget.js +++ b/src/core/renderers/webgl/utils/RenderTarget.js @@ -129,7 +129,7 @@ gl.clear(gl.COLOR_BUFFER_BIT); }; -RenderTarget.prototype.attachStenilBuffer = function() +RenderTarget.prototype.attachStencilBuffer = function() { if ( this.stencilBuffer ) diff --git a/src/core/sprites/Sprite.js b/src/core/sprites/Sprite.js index 75cdd8e..127d3cf 100644 --- a/src/core/sprites/Sprite.js +++ b/src/core/sprites/Sprite.js @@ -3,7 +3,8 @@ Container = require('../display/Container'), CanvasTinter = require('../renderers/canvas/utils/CanvasTinter'), utils = require('../utils'), - CONST = require('../const'); + CONST = require('../const'), + tempPoint = new math.Point(); /** * The Sprite object is the base for all textured objects that are rendered to the screen @@ -11,7 +12,7 @@ * A sprite can be created directly from an image like this: * * ```js - * var sprite = new Sprite.fromImage('assets/image.png'); + * var sprite = new PIXI.Sprite.fromImage('assets/image.png'); * ``` * * @class Sprite @@ -80,6 +81,11 @@ */ this.shader = null; + /** + * An internal cached value of the tint. + * + * @member {number} + */ this.cachedTint = 0xFFFFFF; // call texture setter @@ -322,6 +328,34 @@ }; /** +* Tests if a point is inside this sprite +* +* @param point {Point} the point to test +* @return {boolean} the result of the test +*/ +Sprite.prototype.containsPoint = function( point ) +{ + this.worldTransform.applyInverse(point, tempPoint); + + var width = this._texture._frame.width; + var height = this._texture._frame.height; + var x1 = -width * this.anchor.x; + var y1; + + if ( tempPoint.x > x1 && tempPoint.x < x1 + width ) + { + y1 = -height * this.anchor.y; + + if ( tempPoint.y > y1 && tempPoint.y < y1 + height ) + { + return true; + } + } + + return false; +}; + +/** * Renders the object using the Canvas renderer * * @param renderer {CanvasRenderer} The renderer diff --git a/src/interaction/interactiveTarget.js b/src/interaction/interactiveTarget.js index 9a0f4fb..96c57f0 100644 --- a/src/interaction/interactiveTarget.js +++ b/src/interaction/interactiveTarget.js @@ -1,6 +1,5 @@ var core = require('../core'); -var tempPoint = new core.math.Point(); core.DisplayObject.prototype.interactive = false; core.DisplayObject.prototype.buttonMode = false; @@ -11,55 +10,10 @@ core.DisplayObject.prototype._over = false; core.DisplayObject.prototype._touchDown = false; -core.Sprite.prototype.hitTest = function( point ) -{ - this.worldTransform.applyInverse(point, tempPoint); - var width = this._texture._frame.width; - var height = this._texture._frame.height; - var x1 = -width * this.anchor.x; - var y1; - - if ( tempPoint.x > x1 && tempPoint.x < x1 + width ) - { - y1 = -height * this.anchor.y; - - if ( tempPoint.y > y1 && tempPoint.y < y1 + height ) - { - return true; - } - } - - return false; -}; +core.Sprite.prototype.hitTest = core.Sprite.prototype.containsPoint; -core.Graphics.prototype.hitTest = function( point ) -{ - this.worldTransform.applyInverse(point, tempPoint); - - var graphicsData = this.graphicsData; - - for (var i = 0; i < graphicsData.length; i++) - { - var data = graphicsData[i]; - - if (!data.fill) - { - continue; - } - - // only deal with fills.. - if (data.shape) - { - if ( data.shape.contains( tempPoint.x, tempPoint.y ) ) - { - return true; - } - } - } - - return false; -}; +core.Graphics.prototype.hitTest = core.Graphics.prototype.containsPoint; module.exports = {}; diff --git a/src/core/display/Container.js b/src/core/display/Container.js index 0c2fe16..5b97a75 100644 --- a/src/core/display/Container.js +++ b/src/core/display/Container.js @@ -488,6 +488,12 @@ } }; +/** + * To be overridden by the subclass + * + * @param renderer {WebGLRenderer} The renderer + * @private + */ Container.prototype._renderWebGL = function (renderer) { // this is where content itself gets rendered... diff --git a/src/core/graphics/Graphics.js b/src/core/graphics/Graphics.js index 86cdf2f..66162a9 100644 --- a/src/core/graphics/Graphics.js +++ b/src/core/graphics/Graphics.js @@ -5,7 +5,8 @@ CanvasGraphics = require('../renderers/canvas/utils/CanvasGraphics'), GraphicsData = require('./GraphicsData'), math = require('../math'), - CONST = require('../const'); + CONST = require('../const'), + tempPoint = new math.Point(); /** * The Graphics class contains methods used to draw primitive shapes such as lines, circles and @@ -889,6 +890,40 @@ }; /** +* Tests if a point is inside this graphics object +* +* @param point {Point} the point to test +* @return {boolean} the result of the test +*/ +Graphics.prototype.containsPoint = function( point ) +{ + this.worldTransform.applyInverse(point, tempPoint); + + var graphicsData = this.graphicsData; + + for (var i = 0; i < graphicsData.length; i++) + { + var data = graphicsData[i]; + + if (!data.fill) + { + continue; + } + + // only deal with fills.. + if (data.shape) + { + if ( data.shape.contains( tempPoint.x, tempPoint.y ) ) + { + return true; + } + } + } + + return false; +}; + +/** * Update the bounds of the object * */ diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index fefbeb3..15ce4fe 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -8,7 +8,6 @@ ObjectRenderer = require('./utils/ObjectRenderer'), FXAAFilter = require('./filters/FXAAFilter'), utils = require('../../utils'), - CONST = require('../../const'); /** @@ -19,6 +18,7 @@ * * @class * @memberof PIXI + * @extends SystemRenderer * @param [width=0] {number} the width of the canvas view * @param [height=0] {number} the height of the canvas view * @param [options] {object} The optional renderer parameters @@ -38,6 +38,12 @@ SystemRenderer.call(this, 'WebGL', width, height, options); + /** + * The type of this renderer as a standardised const + * + * @member {number} + * + */ this.type = CONST.RENDERER_TYPE.WEBGL; this.handleContextLost = this.handleContextLost.bind(this); @@ -55,7 +61,20 @@ this.view.addEventListener('webglcontextrestored', this.handleContextRestored, false); //TODO possibility to force FXAA as it may offer better performance? + /** + * Does it use FXAA ? + * + * @member {boolean} + * @private + */ this._useFXAA = false; + + /** + * The fxaa filter + * + * @member {FXAAFilter} + * @private + */ this._FXAAFilter = null; /** @@ -137,6 +156,7 @@ /** * An array of render targets * @member {Array} TODO @alvin + * @private */ this._renderTargetStack = []; } @@ -150,7 +170,7 @@ WebGLRenderer.glContextId = 0; /** - * + * Creates the WebGL context * @private */ WebGLRenderer.prototype._initContext = function () @@ -245,8 +265,8 @@ * Renders a Display Object. * * @param displayObject {DisplayObject} The DisplayObject to render - * @param projection {Point} The projection - * @param buffer {Array} a standard WebGL buffer + * @param renderTarget {Point} TODO @alvin + * */ WebGLRenderer.prototype.renderDisplayObject = function (displayObject, renderTarget)//projection, buffer) { diff --git a/src/core/renderers/webgl/filters/AbstractFilter.js b/src/core/renderers/webgl/filters/AbstractFilter.js index 6d71106..91e874c 100644 --- a/src/core/renderers/webgl/filters/AbstractFilter.js +++ b/src/core/renderers/webgl/filters/AbstractFilter.js @@ -21,6 +21,7 @@ this.passes = [this]; /** + * An array of shaders * @member {Shader[]} * @private */ @@ -32,15 +33,22 @@ this.padding = 0; /** + * The uniforms as an object * @member {object} * @private */ this.uniforms = uniforms || {}; + /** + * The code of the vertex shader + * @member {string[]} + * @private + */ this.vertexSrc = vertexSrc; /** + * The code of the frament shader * @member {string[]} * @private */ diff --git a/src/core/renderers/webgl/managers/StencilManager.js b/src/core/renderers/webgl/managers/StencilManager.js index 7b7de67..4dc4cc3 100644 --- a/src/core/renderers/webgl/managers/StencilManager.js +++ b/src/core/renderers/webgl/managers/StencilManager.js @@ -40,7 +40,7 @@ */ WebGLMaskManager.prototype.pushStencil = function (graphics, webGLData) { - this.renderer.currentRenderTarget.attachStenilBuffer(); + this.renderer.currentRenderTarget.attachStencilBuffer(); var gl = this.renderer.gl, sms = this.stencilMaskStack; diff --git a/src/core/renderers/webgl/utils/ObjectRenderer.js b/src/core/renderers/webgl/utils/ObjectRenderer.js index b90a4d5..9edbd1a 100644 --- a/src/core/renderers/webgl/utils/ObjectRenderer.js +++ b/src/core/renderers/webgl/utils/ObjectRenderer.js @@ -4,6 +4,7 @@ * Base for a common object renderer that can be used as a system renderer plugin. * * @class + * @extends WebGLManager * @memberof PIXI * @param renderer {WebGLRenderer} The renderer this object renderer works for. */ @@ -17,22 +18,38 @@ ObjectRenderer.prototype.constructor = ObjectRenderer; module.exports = ObjectRenderer; +/** + * Starts the renderer and sets the shader + * + */ ObjectRenderer.prototype.start = function () { // set the shader.. }; +/** + * Stops the renderer + * + */ ObjectRenderer.prototype.stop = function () { this.flush(); }; +/** + * flushes + * + */ ObjectRenderer.prototype.flush = function () { // flush! }; -ObjectRenderer.prototype.render = function (/* object */) +/** + * Renders an object + * + */ +ObjectRenderer.prototype.render = function (object) { // render the object }; diff --git a/src/core/renderers/webgl/utils/Quad.js b/src/core/renderers/webgl/utils/Quad.js index c135ec3..ca49ceb 100644 --- a/src/core/renderers/webgl/utils/Quad.js +++ b/src/core/renderers/webgl/utils/Quad.js @@ -1,14 +1,23 @@ /** + * Helper class to create a quad * @class * @memberof PIXI * @param gl {WebGLRenderingContext} The gl context for this quad to use. */ function Quad(gl) { + /* + * @member {WebGLRenderingContext} the current WebGL drawing context + */ this.gl = gl; // this.textures = new TextureUvs(); + /** + * An array of vertices + * + * @member {Float32Array} + */ this.vertices = new Float32Array([ 0,0, 200,0, @@ -16,6 +25,11 @@ 0,200 ]); + /** + * The Uvs of the quad + * + * @member {Float32Array} + */ this.uvs = new Float32Array([ 0,0, 1,0, @@ -25,6 +39,11 @@ // var white = (0xFFFFFF >> 16) + (0xFFFFFF & 0xff00) + ((0xFFFFFF & 0xff) << 16) + (1 * 255 << 24); //TODO convert this to a 32 unsigned int array + /** + * The color components of the triangles + * + * @member {Float32Array} + */ this.colors = new Float32Array([ 1,1,1,1, 1,1,1,1, @@ -32,11 +51,21 @@ 1,1,1,1 ]); + /* + * @member {Uint16Array} An array containing the indices of the vertices + */ this.indices = new Uint16Array([ 0, 1, 2, 0, 3, 2 ]); + /* + * @member {WebGLBuffer} The vertex buffer + */ this.vertexBuffer = gl.createBuffer(); + + /* + * @member {WebGLBuffer} The index buffer + */ this.indexBuffer = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); @@ -50,6 +79,11 @@ Quad.prototype.constructor = Quad; +/** + * Maps two Rectangle to the quad + * @param rect {Rectangle} the first rectangle + * @param rect2 {Rectangle} the second rectangle + */ Quad.prototype.map = function(rect, rect2) { var x = 0; //rect2.x / rect.width; @@ -86,6 +120,9 @@ this.upload(); }; +/** + * Binds the buffer and uploads the data + */ Quad.prototype.upload = function() { var gl = this.gl; diff --git a/src/core/renderers/webgl/utils/RenderTarget.js b/src/core/renderers/webgl/utils/RenderTarget.js index 14f9830..24585ed 100644 --- a/src/core/renderers/webgl/utils/RenderTarget.js +++ b/src/core/renderers/webgl/utils/RenderTarget.js @@ -129,7 +129,7 @@ gl.clear(gl.COLOR_BUFFER_BIT); }; -RenderTarget.prototype.attachStenilBuffer = function() +RenderTarget.prototype.attachStencilBuffer = function() { if ( this.stencilBuffer ) diff --git a/src/core/sprites/Sprite.js b/src/core/sprites/Sprite.js index 75cdd8e..127d3cf 100644 --- a/src/core/sprites/Sprite.js +++ b/src/core/sprites/Sprite.js @@ -3,7 +3,8 @@ Container = require('../display/Container'), CanvasTinter = require('../renderers/canvas/utils/CanvasTinter'), utils = require('../utils'), - CONST = require('../const'); + CONST = require('../const'), + tempPoint = new math.Point(); /** * The Sprite object is the base for all textured objects that are rendered to the screen @@ -11,7 +12,7 @@ * A sprite can be created directly from an image like this: * * ```js - * var sprite = new Sprite.fromImage('assets/image.png'); + * var sprite = new PIXI.Sprite.fromImage('assets/image.png'); * ``` * * @class Sprite @@ -80,6 +81,11 @@ */ this.shader = null; + /** + * An internal cached value of the tint. + * + * @member {number} + */ this.cachedTint = 0xFFFFFF; // call texture setter @@ -322,6 +328,34 @@ }; /** +* Tests if a point is inside this sprite +* +* @param point {Point} the point to test +* @return {boolean} the result of the test +*/ +Sprite.prototype.containsPoint = function( point ) +{ + this.worldTransform.applyInverse(point, tempPoint); + + var width = this._texture._frame.width; + var height = this._texture._frame.height; + var x1 = -width * this.anchor.x; + var y1; + + if ( tempPoint.x > x1 && tempPoint.x < x1 + width ) + { + y1 = -height * this.anchor.y; + + if ( tempPoint.y > y1 && tempPoint.y < y1 + height ) + { + return true; + } + } + + return false; +}; + +/** * Renders the object using the Canvas renderer * * @param renderer {CanvasRenderer} The renderer diff --git a/src/interaction/interactiveTarget.js b/src/interaction/interactiveTarget.js index 9a0f4fb..96c57f0 100644 --- a/src/interaction/interactiveTarget.js +++ b/src/interaction/interactiveTarget.js @@ -1,6 +1,5 @@ var core = require('../core'); -var tempPoint = new core.math.Point(); core.DisplayObject.prototype.interactive = false; core.DisplayObject.prototype.buttonMode = false; @@ -11,55 +10,10 @@ core.DisplayObject.prototype._over = false; core.DisplayObject.prototype._touchDown = false; -core.Sprite.prototype.hitTest = function( point ) -{ - this.worldTransform.applyInverse(point, tempPoint); - var width = this._texture._frame.width; - var height = this._texture._frame.height; - var x1 = -width * this.anchor.x; - var y1; - - if ( tempPoint.x > x1 && tempPoint.x < x1 + width ) - { - y1 = -height * this.anchor.y; - - if ( tempPoint.y > y1 && tempPoint.y < y1 + height ) - { - return true; - } - } - - return false; -}; +core.Sprite.prototype.hitTest = core.Sprite.prototype.containsPoint; -core.Graphics.prototype.hitTest = function( point ) -{ - this.worldTransform.applyInverse(point, tempPoint); - - var graphicsData = this.graphicsData; - - for (var i = 0; i < graphicsData.length; i++) - { - var data = graphicsData[i]; - - if (!data.fill) - { - continue; - } - - // only deal with fills.. - if (data.shape) - { - if ( data.shape.contains( tempPoint.x, tempPoint.y ) ) - { - return true; - } - } - } - - return false; -}; +core.Graphics.prototype.hitTest = core.Graphics.prototype.containsPoint; module.exports = {}; diff --git a/src/spine/Spine.js b/src/spine/Spine.js index 6636d33..22e799d 100644 --- a/src/spine/Spine.js +++ b/src/spine/Spine.js @@ -24,14 +24,40 @@ throw new Error('The spineData param is required.'); } + /** + * The spineData object + * + * @member {object} + */ this.spineData = spineData; + /** + * A spine Skeleton object + * + * @member {object} + */ this.skeleton = new spine.Skeleton(spineData); this.skeleton.updateWorldTransform(); + /** + * A spine AnimationStateData object created from the spine data passed in the constructor + * + * @member {object} + */ this.stateData = new spine.AnimationStateData(spineData); + + /** + * A spine AnimationState object created from the spine AnimationStateData object + * + * @member {object} + */ this.state = new spine.AnimationState(this.stateData); + /** + * An array of containers + * + * @member {Container[]} + */ this.slotContainers = []; for (var i = 0, n = this.skeleton.drawOrder.length; i < n; i++) @@ -64,6 +90,11 @@ } + /** + * Should the Spine object update its transforms + * + * @member {boolean} + */ this.autoUpdate = true; } @@ -243,7 +274,7 @@ }; /** - * + * Creates a Strip from the spine data * @param slot {spine.Slot} The slot to which the attachment is parented * @param attachment {spine.RegionAttachment} The attachment that the sprite will represent * @private diff --git a/src/core/display/Container.js b/src/core/display/Container.js index 0c2fe16..5b97a75 100644 --- a/src/core/display/Container.js +++ b/src/core/display/Container.js @@ -488,6 +488,12 @@ } }; +/** + * To be overridden by the subclass + * + * @param renderer {WebGLRenderer} The renderer + * @private + */ Container.prototype._renderWebGL = function (renderer) { // this is where content itself gets rendered... diff --git a/src/core/graphics/Graphics.js b/src/core/graphics/Graphics.js index 86cdf2f..66162a9 100644 --- a/src/core/graphics/Graphics.js +++ b/src/core/graphics/Graphics.js @@ -5,7 +5,8 @@ CanvasGraphics = require('../renderers/canvas/utils/CanvasGraphics'), GraphicsData = require('./GraphicsData'), math = require('../math'), - CONST = require('../const'); + CONST = require('../const'), + tempPoint = new math.Point(); /** * The Graphics class contains methods used to draw primitive shapes such as lines, circles and @@ -889,6 +890,40 @@ }; /** +* Tests if a point is inside this graphics object +* +* @param point {Point} the point to test +* @return {boolean} the result of the test +*/ +Graphics.prototype.containsPoint = function( point ) +{ + this.worldTransform.applyInverse(point, tempPoint); + + var graphicsData = this.graphicsData; + + for (var i = 0; i < graphicsData.length; i++) + { + var data = graphicsData[i]; + + if (!data.fill) + { + continue; + } + + // only deal with fills.. + if (data.shape) + { + if ( data.shape.contains( tempPoint.x, tempPoint.y ) ) + { + return true; + } + } + } + + return false; +}; + +/** * Update the bounds of the object * */ diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index fefbeb3..15ce4fe 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -8,7 +8,6 @@ ObjectRenderer = require('./utils/ObjectRenderer'), FXAAFilter = require('./filters/FXAAFilter'), utils = require('../../utils'), - CONST = require('../../const'); /** @@ -19,6 +18,7 @@ * * @class * @memberof PIXI + * @extends SystemRenderer * @param [width=0] {number} the width of the canvas view * @param [height=0] {number} the height of the canvas view * @param [options] {object} The optional renderer parameters @@ -38,6 +38,12 @@ SystemRenderer.call(this, 'WebGL', width, height, options); + /** + * The type of this renderer as a standardised const + * + * @member {number} + * + */ this.type = CONST.RENDERER_TYPE.WEBGL; this.handleContextLost = this.handleContextLost.bind(this); @@ -55,7 +61,20 @@ this.view.addEventListener('webglcontextrestored', this.handleContextRestored, false); //TODO possibility to force FXAA as it may offer better performance? + /** + * Does it use FXAA ? + * + * @member {boolean} + * @private + */ this._useFXAA = false; + + /** + * The fxaa filter + * + * @member {FXAAFilter} + * @private + */ this._FXAAFilter = null; /** @@ -137,6 +156,7 @@ /** * An array of render targets * @member {Array} TODO @alvin + * @private */ this._renderTargetStack = []; } @@ -150,7 +170,7 @@ WebGLRenderer.glContextId = 0; /** - * + * Creates the WebGL context * @private */ WebGLRenderer.prototype._initContext = function () @@ -245,8 +265,8 @@ * Renders a Display Object. * * @param displayObject {DisplayObject} The DisplayObject to render - * @param projection {Point} The projection - * @param buffer {Array} a standard WebGL buffer + * @param renderTarget {Point} TODO @alvin + * */ WebGLRenderer.prototype.renderDisplayObject = function (displayObject, renderTarget)//projection, buffer) { diff --git a/src/core/renderers/webgl/filters/AbstractFilter.js b/src/core/renderers/webgl/filters/AbstractFilter.js index 6d71106..91e874c 100644 --- a/src/core/renderers/webgl/filters/AbstractFilter.js +++ b/src/core/renderers/webgl/filters/AbstractFilter.js @@ -21,6 +21,7 @@ this.passes = [this]; /** + * An array of shaders * @member {Shader[]} * @private */ @@ -32,15 +33,22 @@ this.padding = 0; /** + * The uniforms as an object * @member {object} * @private */ this.uniforms = uniforms || {}; + /** + * The code of the vertex shader + * @member {string[]} + * @private + */ this.vertexSrc = vertexSrc; /** + * The code of the frament shader * @member {string[]} * @private */ diff --git a/src/core/renderers/webgl/managers/StencilManager.js b/src/core/renderers/webgl/managers/StencilManager.js index 7b7de67..4dc4cc3 100644 --- a/src/core/renderers/webgl/managers/StencilManager.js +++ b/src/core/renderers/webgl/managers/StencilManager.js @@ -40,7 +40,7 @@ */ WebGLMaskManager.prototype.pushStencil = function (graphics, webGLData) { - this.renderer.currentRenderTarget.attachStenilBuffer(); + this.renderer.currentRenderTarget.attachStencilBuffer(); var gl = this.renderer.gl, sms = this.stencilMaskStack; diff --git a/src/core/renderers/webgl/utils/ObjectRenderer.js b/src/core/renderers/webgl/utils/ObjectRenderer.js index b90a4d5..9edbd1a 100644 --- a/src/core/renderers/webgl/utils/ObjectRenderer.js +++ b/src/core/renderers/webgl/utils/ObjectRenderer.js @@ -4,6 +4,7 @@ * Base for a common object renderer that can be used as a system renderer plugin. * * @class + * @extends WebGLManager * @memberof PIXI * @param renderer {WebGLRenderer} The renderer this object renderer works for. */ @@ -17,22 +18,38 @@ ObjectRenderer.prototype.constructor = ObjectRenderer; module.exports = ObjectRenderer; +/** + * Starts the renderer and sets the shader + * + */ ObjectRenderer.prototype.start = function () { // set the shader.. }; +/** + * Stops the renderer + * + */ ObjectRenderer.prototype.stop = function () { this.flush(); }; +/** + * flushes + * + */ ObjectRenderer.prototype.flush = function () { // flush! }; -ObjectRenderer.prototype.render = function (/* object */) +/** + * Renders an object + * + */ +ObjectRenderer.prototype.render = function (object) { // render the object }; diff --git a/src/core/renderers/webgl/utils/Quad.js b/src/core/renderers/webgl/utils/Quad.js index c135ec3..ca49ceb 100644 --- a/src/core/renderers/webgl/utils/Quad.js +++ b/src/core/renderers/webgl/utils/Quad.js @@ -1,14 +1,23 @@ /** + * Helper class to create a quad * @class * @memberof PIXI * @param gl {WebGLRenderingContext} The gl context for this quad to use. */ function Quad(gl) { + /* + * @member {WebGLRenderingContext} the current WebGL drawing context + */ this.gl = gl; // this.textures = new TextureUvs(); + /** + * An array of vertices + * + * @member {Float32Array} + */ this.vertices = new Float32Array([ 0,0, 200,0, @@ -16,6 +25,11 @@ 0,200 ]); + /** + * The Uvs of the quad + * + * @member {Float32Array} + */ this.uvs = new Float32Array([ 0,0, 1,0, @@ -25,6 +39,11 @@ // var white = (0xFFFFFF >> 16) + (0xFFFFFF & 0xff00) + ((0xFFFFFF & 0xff) << 16) + (1 * 255 << 24); //TODO convert this to a 32 unsigned int array + /** + * The color components of the triangles + * + * @member {Float32Array} + */ this.colors = new Float32Array([ 1,1,1,1, 1,1,1,1, @@ -32,11 +51,21 @@ 1,1,1,1 ]); + /* + * @member {Uint16Array} An array containing the indices of the vertices + */ this.indices = new Uint16Array([ 0, 1, 2, 0, 3, 2 ]); + /* + * @member {WebGLBuffer} The vertex buffer + */ this.vertexBuffer = gl.createBuffer(); + + /* + * @member {WebGLBuffer} The index buffer + */ this.indexBuffer = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); @@ -50,6 +79,11 @@ Quad.prototype.constructor = Quad; +/** + * Maps two Rectangle to the quad + * @param rect {Rectangle} the first rectangle + * @param rect2 {Rectangle} the second rectangle + */ Quad.prototype.map = function(rect, rect2) { var x = 0; //rect2.x / rect.width; @@ -86,6 +120,9 @@ this.upload(); }; +/** + * Binds the buffer and uploads the data + */ Quad.prototype.upload = function() { var gl = this.gl; diff --git a/src/core/renderers/webgl/utils/RenderTarget.js b/src/core/renderers/webgl/utils/RenderTarget.js index 14f9830..24585ed 100644 --- a/src/core/renderers/webgl/utils/RenderTarget.js +++ b/src/core/renderers/webgl/utils/RenderTarget.js @@ -129,7 +129,7 @@ gl.clear(gl.COLOR_BUFFER_BIT); }; -RenderTarget.prototype.attachStenilBuffer = function() +RenderTarget.prototype.attachStencilBuffer = function() { if ( this.stencilBuffer ) diff --git a/src/core/sprites/Sprite.js b/src/core/sprites/Sprite.js index 75cdd8e..127d3cf 100644 --- a/src/core/sprites/Sprite.js +++ b/src/core/sprites/Sprite.js @@ -3,7 +3,8 @@ Container = require('../display/Container'), CanvasTinter = require('../renderers/canvas/utils/CanvasTinter'), utils = require('../utils'), - CONST = require('../const'); + CONST = require('../const'), + tempPoint = new math.Point(); /** * The Sprite object is the base for all textured objects that are rendered to the screen @@ -11,7 +12,7 @@ * A sprite can be created directly from an image like this: * * ```js - * var sprite = new Sprite.fromImage('assets/image.png'); + * var sprite = new PIXI.Sprite.fromImage('assets/image.png'); * ``` * * @class Sprite @@ -80,6 +81,11 @@ */ this.shader = null; + /** + * An internal cached value of the tint. + * + * @member {number} + */ this.cachedTint = 0xFFFFFF; // call texture setter @@ -322,6 +328,34 @@ }; /** +* Tests if a point is inside this sprite +* +* @param point {Point} the point to test +* @return {boolean} the result of the test +*/ +Sprite.prototype.containsPoint = function( point ) +{ + this.worldTransform.applyInverse(point, tempPoint); + + var width = this._texture._frame.width; + var height = this._texture._frame.height; + var x1 = -width * this.anchor.x; + var y1; + + if ( tempPoint.x > x1 && tempPoint.x < x1 + width ) + { + y1 = -height * this.anchor.y; + + if ( tempPoint.y > y1 && tempPoint.y < y1 + height ) + { + return true; + } + } + + return false; +}; + +/** * Renders the object using the Canvas renderer * * @param renderer {CanvasRenderer} The renderer diff --git a/src/interaction/interactiveTarget.js b/src/interaction/interactiveTarget.js index 9a0f4fb..96c57f0 100644 --- a/src/interaction/interactiveTarget.js +++ b/src/interaction/interactiveTarget.js @@ -1,6 +1,5 @@ var core = require('../core'); -var tempPoint = new core.math.Point(); core.DisplayObject.prototype.interactive = false; core.DisplayObject.prototype.buttonMode = false; @@ -11,55 +10,10 @@ core.DisplayObject.prototype._over = false; core.DisplayObject.prototype._touchDown = false; -core.Sprite.prototype.hitTest = function( point ) -{ - this.worldTransform.applyInverse(point, tempPoint); - var width = this._texture._frame.width; - var height = this._texture._frame.height; - var x1 = -width * this.anchor.x; - var y1; - - if ( tempPoint.x > x1 && tempPoint.x < x1 + width ) - { - y1 = -height * this.anchor.y; - - if ( tempPoint.y > y1 && tempPoint.y < y1 + height ) - { - return true; - } - } - - return false; -}; +core.Sprite.prototype.hitTest = core.Sprite.prototype.containsPoint; -core.Graphics.prototype.hitTest = function( point ) -{ - this.worldTransform.applyInverse(point, tempPoint); - - var graphicsData = this.graphicsData; - - for (var i = 0; i < graphicsData.length; i++) - { - var data = graphicsData[i]; - - if (!data.fill) - { - continue; - } - - // only deal with fills.. - if (data.shape) - { - if ( data.shape.contains( tempPoint.x, tempPoint.y ) ) - { - return true; - } - } - } - - return false; -}; +core.Graphics.prototype.hitTest = core.Graphics.prototype.containsPoint; module.exports = {}; diff --git a/src/spine/Spine.js b/src/spine/Spine.js index 6636d33..22e799d 100644 --- a/src/spine/Spine.js +++ b/src/spine/Spine.js @@ -24,14 +24,40 @@ throw new Error('The spineData param is required.'); } + /** + * The spineData object + * + * @member {object} + */ this.spineData = spineData; + /** + * A spine Skeleton object + * + * @member {object} + */ this.skeleton = new spine.Skeleton(spineData); this.skeleton.updateWorldTransform(); + /** + * A spine AnimationStateData object created from the spine data passed in the constructor + * + * @member {object} + */ this.stateData = new spine.AnimationStateData(spineData); + + /** + * A spine AnimationState object created from the spine AnimationStateData object + * + * @member {object} + */ this.state = new spine.AnimationState(this.stateData); + /** + * An array of containers + * + * @member {Container[]} + */ this.slotContainers = []; for (var i = 0, n = this.skeleton.drawOrder.length; i < n; i++) @@ -64,6 +90,11 @@ } + /** + * Should the Spine object update its transforms + * + * @member {boolean} + */ this.autoUpdate = true; } @@ -243,7 +274,7 @@ }; /** - * + * Creates a Strip from the spine data * @param slot {spine.Slot} The slot to which the attachment is parented * @param attachment {spine.RegionAttachment} The attachment that the sprite will represent * @private diff --git a/src/text/BitmapText.js b/src/text/BitmapText.js index 9ccba8b..7ccde1c 100644 --- a/src/text/BitmapText.js +++ b/src/text/BitmapText.js @@ -4,6 +4,14 @@ * A BitmapText object will create a line or multiple lines of text using bitmap font. To * split a line you can use '\n', '\r' or '\r\n' in your string. You can generate the fnt files using: * + * A BitmapText can only be created when the font is loaded + * + * ```js + * // in this case the font is in a file called 'desyrel.fnt' + * var bitmapText = new PIXI.BitmapText("text using a fancy font!", {font: "35px Desyrel", align: "right"}); + * ``` + * + * * http://www.angelcode.com/products/bmfont/ for windows or * http://www.bmglyph.com/ for mac. * @@ -60,6 +68,13 @@ fontName: null, fontSize: 0 }; + + /** + * Private tracker for the current font. + * + * @member {object} + * @private + */ this.font = style.font; // run font setter /** @@ -114,7 +129,7 @@ }, /** - * The tint of the BitmapText object + * The alignment of the BitmapText object * * @member {string} * @default 'left' @@ -134,7 +149,7 @@ }, /** - * The tint of the BitmapText object + * The font descriptor of the BitmapText object * * @member {Font} * @memberof BitmapText# @@ -196,7 +211,7 @@ var maxLineWidth = 0; var lineWidths = []; var line = 0; - var scale = this.fontSize / data.size; + var scale = this._style.fontSize / data.size; var lastSpace = -1; for (var i = 0; i < this.text.length; i++) diff --git a/src/core/display/Container.js b/src/core/display/Container.js index 0c2fe16..5b97a75 100644 --- a/src/core/display/Container.js +++ b/src/core/display/Container.js @@ -488,6 +488,12 @@ } }; +/** + * To be overridden by the subclass + * + * @param renderer {WebGLRenderer} The renderer + * @private + */ Container.prototype._renderWebGL = function (renderer) { // this is where content itself gets rendered... diff --git a/src/core/graphics/Graphics.js b/src/core/graphics/Graphics.js index 86cdf2f..66162a9 100644 --- a/src/core/graphics/Graphics.js +++ b/src/core/graphics/Graphics.js @@ -5,7 +5,8 @@ CanvasGraphics = require('../renderers/canvas/utils/CanvasGraphics'), GraphicsData = require('./GraphicsData'), math = require('../math'), - CONST = require('../const'); + CONST = require('../const'), + tempPoint = new math.Point(); /** * The Graphics class contains methods used to draw primitive shapes such as lines, circles and @@ -889,6 +890,40 @@ }; /** +* Tests if a point is inside this graphics object +* +* @param point {Point} the point to test +* @return {boolean} the result of the test +*/ +Graphics.prototype.containsPoint = function( point ) +{ + this.worldTransform.applyInverse(point, tempPoint); + + var graphicsData = this.graphicsData; + + for (var i = 0; i < graphicsData.length; i++) + { + var data = graphicsData[i]; + + if (!data.fill) + { + continue; + } + + // only deal with fills.. + if (data.shape) + { + if ( data.shape.contains( tempPoint.x, tempPoint.y ) ) + { + return true; + } + } + } + + return false; +}; + +/** * Update the bounds of the object * */ diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index fefbeb3..15ce4fe 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -8,7 +8,6 @@ ObjectRenderer = require('./utils/ObjectRenderer'), FXAAFilter = require('./filters/FXAAFilter'), utils = require('../../utils'), - CONST = require('../../const'); /** @@ -19,6 +18,7 @@ * * @class * @memberof PIXI + * @extends SystemRenderer * @param [width=0] {number} the width of the canvas view * @param [height=0] {number} the height of the canvas view * @param [options] {object} The optional renderer parameters @@ -38,6 +38,12 @@ SystemRenderer.call(this, 'WebGL', width, height, options); + /** + * The type of this renderer as a standardised const + * + * @member {number} + * + */ this.type = CONST.RENDERER_TYPE.WEBGL; this.handleContextLost = this.handleContextLost.bind(this); @@ -55,7 +61,20 @@ this.view.addEventListener('webglcontextrestored', this.handleContextRestored, false); //TODO possibility to force FXAA as it may offer better performance? + /** + * Does it use FXAA ? + * + * @member {boolean} + * @private + */ this._useFXAA = false; + + /** + * The fxaa filter + * + * @member {FXAAFilter} + * @private + */ this._FXAAFilter = null; /** @@ -137,6 +156,7 @@ /** * An array of render targets * @member {Array} TODO @alvin + * @private */ this._renderTargetStack = []; } @@ -150,7 +170,7 @@ WebGLRenderer.glContextId = 0; /** - * + * Creates the WebGL context * @private */ WebGLRenderer.prototype._initContext = function () @@ -245,8 +265,8 @@ * Renders a Display Object. * * @param displayObject {DisplayObject} The DisplayObject to render - * @param projection {Point} The projection - * @param buffer {Array} a standard WebGL buffer + * @param renderTarget {Point} TODO @alvin + * */ WebGLRenderer.prototype.renderDisplayObject = function (displayObject, renderTarget)//projection, buffer) { diff --git a/src/core/renderers/webgl/filters/AbstractFilter.js b/src/core/renderers/webgl/filters/AbstractFilter.js index 6d71106..91e874c 100644 --- a/src/core/renderers/webgl/filters/AbstractFilter.js +++ b/src/core/renderers/webgl/filters/AbstractFilter.js @@ -21,6 +21,7 @@ this.passes = [this]; /** + * An array of shaders * @member {Shader[]} * @private */ @@ -32,15 +33,22 @@ this.padding = 0; /** + * The uniforms as an object * @member {object} * @private */ this.uniforms = uniforms || {}; + /** + * The code of the vertex shader + * @member {string[]} + * @private + */ this.vertexSrc = vertexSrc; /** + * The code of the frament shader * @member {string[]} * @private */ diff --git a/src/core/renderers/webgl/managers/StencilManager.js b/src/core/renderers/webgl/managers/StencilManager.js index 7b7de67..4dc4cc3 100644 --- a/src/core/renderers/webgl/managers/StencilManager.js +++ b/src/core/renderers/webgl/managers/StencilManager.js @@ -40,7 +40,7 @@ */ WebGLMaskManager.prototype.pushStencil = function (graphics, webGLData) { - this.renderer.currentRenderTarget.attachStenilBuffer(); + this.renderer.currentRenderTarget.attachStencilBuffer(); var gl = this.renderer.gl, sms = this.stencilMaskStack; diff --git a/src/core/renderers/webgl/utils/ObjectRenderer.js b/src/core/renderers/webgl/utils/ObjectRenderer.js index b90a4d5..9edbd1a 100644 --- a/src/core/renderers/webgl/utils/ObjectRenderer.js +++ b/src/core/renderers/webgl/utils/ObjectRenderer.js @@ -4,6 +4,7 @@ * Base for a common object renderer that can be used as a system renderer plugin. * * @class + * @extends WebGLManager * @memberof PIXI * @param renderer {WebGLRenderer} The renderer this object renderer works for. */ @@ -17,22 +18,38 @@ ObjectRenderer.prototype.constructor = ObjectRenderer; module.exports = ObjectRenderer; +/** + * Starts the renderer and sets the shader + * + */ ObjectRenderer.prototype.start = function () { // set the shader.. }; +/** + * Stops the renderer + * + */ ObjectRenderer.prototype.stop = function () { this.flush(); }; +/** + * flushes + * + */ ObjectRenderer.prototype.flush = function () { // flush! }; -ObjectRenderer.prototype.render = function (/* object */) +/** + * Renders an object + * + */ +ObjectRenderer.prototype.render = function (object) { // render the object }; diff --git a/src/core/renderers/webgl/utils/Quad.js b/src/core/renderers/webgl/utils/Quad.js index c135ec3..ca49ceb 100644 --- a/src/core/renderers/webgl/utils/Quad.js +++ b/src/core/renderers/webgl/utils/Quad.js @@ -1,14 +1,23 @@ /** + * Helper class to create a quad * @class * @memberof PIXI * @param gl {WebGLRenderingContext} The gl context for this quad to use. */ function Quad(gl) { + /* + * @member {WebGLRenderingContext} the current WebGL drawing context + */ this.gl = gl; // this.textures = new TextureUvs(); + /** + * An array of vertices + * + * @member {Float32Array} + */ this.vertices = new Float32Array([ 0,0, 200,0, @@ -16,6 +25,11 @@ 0,200 ]); + /** + * The Uvs of the quad + * + * @member {Float32Array} + */ this.uvs = new Float32Array([ 0,0, 1,0, @@ -25,6 +39,11 @@ // var white = (0xFFFFFF >> 16) + (0xFFFFFF & 0xff00) + ((0xFFFFFF & 0xff) << 16) + (1 * 255 << 24); //TODO convert this to a 32 unsigned int array + /** + * The color components of the triangles + * + * @member {Float32Array} + */ this.colors = new Float32Array([ 1,1,1,1, 1,1,1,1, @@ -32,11 +51,21 @@ 1,1,1,1 ]); + /* + * @member {Uint16Array} An array containing the indices of the vertices + */ this.indices = new Uint16Array([ 0, 1, 2, 0, 3, 2 ]); + /* + * @member {WebGLBuffer} The vertex buffer + */ this.vertexBuffer = gl.createBuffer(); + + /* + * @member {WebGLBuffer} The index buffer + */ this.indexBuffer = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); @@ -50,6 +79,11 @@ Quad.prototype.constructor = Quad; +/** + * Maps two Rectangle to the quad + * @param rect {Rectangle} the first rectangle + * @param rect2 {Rectangle} the second rectangle + */ Quad.prototype.map = function(rect, rect2) { var x = 0; //rect2.x / rect.width; @@ -86,6 +120,9 @@ this.upload(); }; +/** + * Binds the buffer and uploads the data + */ Quad.prototype.upload = function() { var gl = this.gl; diff --git a/src/core/renderers/webgl/utils/RenderTarget.js b/src/core/renderers/webgl/utils/RenderTarget.js index 14f9830..24585ed 100644 --- a/src/core/renderers/webgl/utils/RenderTarget.js +++ b/src/core/renderers/webgl/utils/RenderTarget.js @@ -129,7 +129,7 @@ gl.clear(gl.COLOR_BUFFER_BIT); }; -RenderTarget.prototype.attachStenilBuffer = function() +RenderTarget.prototype.attachStencilBuffer = function() { if ( this.stencilBuffer ) diff --git a/src/core/sprites/Sprite.js b/src/core/sprites/Sprite.js index 75cdd8e..127d3cf 100644 --- a/src/core/sprites/Sprite.js +++ b/src/core/sprites/Sprite.js @@ -3,7 +3,8 @@ Container = require('../display/Container'), CanvasTinter = require('../renderers/canvas/utils/CanvasTinter'), utils = require('../utils'), - CONST = require('../const'); + CONST = require('../const'), + tempPoint = new math.Point(); /** * The Sprite object is the base for all textured objects that are rendered to the screen @@ -11,7 +12,7 @@ * A sprite can be created directly from an image like this: * * ```js - * var sprite = new Sprite.fromImage('assets/image.png'); + * var sprite = new PIXI.Sprite.fromImage('assets/image.png'); * ``` * * @class Sprite @@ -80,6 +81,11 @@ */ this.shader = null; + /** + * An internal cached value of the tint. + * + * @member {number} + */ this.cachedTint = 0xFFFFFF; // call texture setter @@ -322,6 +328,34 @@ }; /** +* Tests if a point is inside this sprite +* +* @param point {Point} the point to test +* @return {boolean} the result of the test +*/ +Sprite.prototype.containsPoint = function( point ) +{ + this.worldTransform.applyInverse(point, tempPoint); + + var width = this._texture._frame.width; + var height = this._texture._frame.height; + var x1 = -width * this.anchor.x; + var y1; + + if ( tempPoint.x > x1 && tempPoint.x < x1 + width ) + { + y1 = -height * this.anchor.y; + + if ( tempPoint.y > y1 && tempPoint.y < y1 + height ) + { + return true; + } + } + + return false; +}; + +/** * Renders the object using the Canvas renderer * * @param renderer {CanvasRenderer} The renderer diff --git a/src/interaction/interactiveTarget.js b/src/interaction/interactiveTarget.js index 9a0f4fb..96c57f0 100644 --- a/src/interaction/interactiveTarget.js +++ b/src/interaction/interactiveTarget.js @@ -1,6 +1,5 @@ var core = require('../core'); -var tempPoint = new core.math.Point(); core.DisplayObject.prototype.interactive = false; core.DisplayObject.prototype.buttonMode = false; @@ -11,55 +10,10 @@ core.DisplayObject.prototype._over = false; core.DisplayObject.prototype._touchDown = false; -core.Sprite.prototype.hitTest = function( point ) -{ - this.worldTransform.applyInverse(point, tempPoint); - var width = this._texture._frame.width; - var height = this._texture._frame.height; - var x1 = -width * this.anchor.x; - var y1; - - if ( tempPoint.x > x1 && tempPoint.x < x1 + width ) - { - y1 = -height * this.anchor.y; - - if ( tempPoint.y > y1 && tempPoint.y < y1 + height ) - { - return true; - } - } - - return false; -}; +core.Sprite.prototype.hitTest = core.Sprite.prototype.containsPoint; -core.Graphics.prototype.hitTest = function( point ) -{ - this.worldTransform.applyInverse(point, tempPoint); - - var graphicsData = this.graphicsData; - - for (var i = 0; i < graphicsData.length; i++) - { - var data = graphicsData[i]; - - if (!data.fill) - { - continue; - } - - // only deal with fills.. - if (data.shape) - { - if ( data.shape.contains( tempPoint.x, tempPoint.y ) ) - { - return true; - } - } - } - - return false; -}; +core.Graphics.prototype.hitTest = core.Graphics.prototype.containsPoint; module.exports = {}; diff --git a/src/spine/Spine.js b/src/spine/Spine.js index 6636d33..22e799d 100644 --- a/src/spine/Spine.js +++ b/src/spine/Spine.js @@ -24,14 +24,40 @@ throw new Error('The spineData param is required.'); } + /** + * The spineData object + * + * @member {object} + */ this.spineData = spineData; + /** + * A spine Skeleton object + * + * @member {object} + */ this.skeleton = new spine.Skeleton(spineData); this.skeleton.updateWorldTransform(); + /** + * A spine AnimationStateData object created from the spine data passed in the constructor + * + * @member {object} + */ this.stateData = new spine.AnimationStateData(spineData); + + /** + * A spine AnimationState object created from the spine AnimationStateData object + * + * @member {object} + */ this.state = new spine.AnimationState(this.stateData); + /** + * An array of containers + * + * @member {Container[]} + */ this.slotContainers = []; for (var i = 0, n = this.skeleton.drawOrder.length; i < n; i++) @@ -64,6 +90,11 @@ } + /** + * Should the Spine object update its transforms + * + * @member {boolean} + */ this.autoUpdate = true; } @@ -243,7 +274,7 @@ }; /** - * + * Creates a Strip from the spine data * @param slot {spine.Slot} The slot to which the attachment is parented * @param attachment {spine.RegionAttachment} The attachment that the sprite will represent * @private diff --git a/src/text/BitmapText.js b/src/text/BitmapText.js index 9ccba8b..7ccde1c 100644 --- a/src/text/BitmapText.js +++ b/src/text/BitmapText.js @@ -4,6 +4,14 @@ * A BitmapText object will create a line or multiple lines of text using bitmap font. To * split a line you can use '\n', '\r' or '\r\n' in your string. You can generate the fnt files using: * + * A BitmapText can only be created when the font is loaded + * + * ```js + * // in this case the font is in a file called 'desyrel.fnt' + * var bitmapText = new PIXI.BitmapText("text using a fancy font!", {font: "35px Desyrel", align: "right"}); + * ``` + * + * * http://www.angelcode.com/products/bmfont/ for windows or * http://www.bmglyph.com/ for mac. * @@ -60,6 +68,13 @@ fontName: null, fontSize: 0 }; + + /** + * Private tracker for the current font. + * + * @member {object} + * @private + */ this.font = style.font; // run font setter /** @@ -114,7 +129,7 @@ }, /** - * The tint of the BitmapText object + * The alignment of the BitmapText object * * @member {string} * @default 'left' @@ -134,7 +149,7 @@ }, /** - * The tint of the BitmapText object + * The font descriptor of the BitmapText object * * @member {Font} * @memberof BitmapText# @@ -196,7 +211,7 @@ var maxLineWidth = 0; var lineWidths = []; var line = 0; - var scale = this.fontSize / data.size; + var scale = this._style.fontSize / data.size; var lastSpace = -1; for (var i = 0; i < this.text.length; i++) diff --git a/src/text/Text.js b/src/text/Text.js index 08d9c7f..e306986 100644 --- a/src/text/Text.js +++ b/src/text/Text.js @@ -4,6 +4,12 @@ * A Text Object will create a line or multiple lines of text. To split a line you can use '\n' in your text string, * or add a wordWrap property set to true and and wordWrapWidth property with a value in the style object. * + * A Text can be created directly from a string and a style object + * + * ```js + * var text = new PIXI.Text('This is a pixi text',{font : '24px Arial', fill : 0xff1010, align : 'center'}); + * ``` + * * @class * @extends Sprite * @memberof PIXI.text @@ -16,6 +22,7 @@ * @param [style.strokeThickness=0] {number} A number that represents the thickness of the stroke. Default is 0 (no stroke) * @param [style.wordWrap=false] {boolean} Indicates if word wrap should be used * @param [style.wordWrapWidth=100] {number} The width at which text will wrap, it needs wordWrap to be set to true + * @param [style.lineHeight] {number} The line height, a number that represents the vertical space that a letter uses * @param [style.dropShadow=false] {boolean} Set a drop shadow for the text * @param [style.dropShadowColor='#000000'] {string} A fill style to be used on the dropshadow e.g 'red', '#00FF00' * @param [style.dropShadowAngle=Math.PI/4] {number} Set a angle of the drop shadow @@ -131,6 +138,7 @@ * @param [style.strokeThickness=0] {number} A number that represents the thickness of the stroke. Default is 0 (no stroke) * @param [style.wordWrap=false] {boolean} Indicates if word wrap should be used * @param [style.wordWrapWidth=100] {number} The width at which text will wrap + * @param [style.lineHeight] {number} The line height, a number that represents the vertical space that a letter uses * @param [style.dropShadow=false] {boolean} Set a drop shadow for the text * @param [style.dropShadowColor='#000000'] {string} A fill style to be used on the dropshadow e.g 'red', '#00FF00' * @param [style.dropShadowAngle=Math.PI/6] {number} Set a angle of the drop shadow @@ -199,10 +207,10 @@ // preserve original text var outputText = style.wordWrap ? this.wordWrap(this._text) : this._text; - //split text into lines + // split text into lines var lines = outputText.split(/(?:\r\n|\r|\n)/); - //calculate text width + // calculate text width var lineWidths = new Array(lines.length); var maxLineWidth = 0; var fontProperties = this.determineFontProperties(style.font); @@ -221,8 +229,8 @@ this.canvas.width = ( width + this.context.lineWidth ) * this.resolution; - //calculate text height - var lineHeight = fontProperties.fontSize + style.strokeThickness; + // calculate text height + var lineHeight = this.style.lineHeight || fontProperties.fontSize* + style.strokeThickness; var height = lineHeight * lines.length; if (style.dropShadow) @@ -384,7 +392,7 @@ context.font = fontStyle; - var width = Math.ceil(context.measureText('|M�q').width); + var width = Math.ceil(context.measureText('|MÉq').width); var baseline = Math.ceil(context.measureText('M').width); var height = 2 * baseline; @@ -400,7 +408,7 @@ context.textBaseline = 'alphabetic'; context.fillStyle = '#000'; - context.fillText('|M�q', 0, baseline); + context.fillText('|MÉq', 0, baseline); var imagedata = context.getImageData(0, 0, width, height).data; var pixels = imagedata.length;