From 18dca7aee11f6619d9068450cd494d051e179807 Mon Sep 17 00:00:00 2001 From: Mat Groves Date: Wed, 20 Feb 2013 19:05:51 +0000 Subject: [PATCH] Documentation update --- README.md | 9 +- bin/pixi.js | 28 +- build/PixiBuild.xml | 20 +- docs/api.js | 29 + docs/assets/css/external-small.png | Bin 0 -> 491 bytes docs/assets/css/logo.png | Bin 0 -> 6308 bytes docs/assets/css/main.css | 782 +++++++ docs/assets/favicon.png | Bin 0 -> 740 bytes docs/assets/img/spinner.gif | Bin 0 -> 2685 bytes docs/assets/index.html | 10 + docs/assets/js/api-filter.js | 52 + docs/assets/js/api-list.js | 251 +++ docs/assets/js/api-search.js | 98 + docs/assets/js/apidocs.js | 365 ++++ docs/assets/js/yui-prettify.js | 17 + docs/assets/vendor/prettify/CHANGES.html | 130 ++ docs/assets/vendor/prettify/COPYING | 202 ++ docs/assets/vendor/prettify/README.html | 203 ++ docs/assets/vendor/prettify/prettify-min.css | 1 + docs/assets/vendor/prettify/prettify-min.js | 1 + docs/classes/AssetLoader.html | 353 ++++ docs/classes/BaseTexture.html | 504 +++++ docs/classes/CanvasRenderer.html | 525 +++++ docs/classes/DisplayObject.html | 756 +++++++ docs/classes/DisplayObjectContainer.html | 973 +++++++++ docs/classes/MovieClip.html | 826 ++++++++ docs/classes/Point.html | 515 +++++ docs/classes/Rectangle.html | 663 ++++++ docs/classes/Sprite.html | 1579 ++++++++++++++ docs/classes/SpriteSheetLoader.html | 290 +++ docs/classes/Stage.html | 1144 +++++++++++ docs/classes/Texture.html | 966 +++++++++ docs/classes/WebGLBatch.html | 1013 +++++++++ docs/classes/WebGLRenderer.html | 416 ++++ docs/classes/index.html | 10 + docs/data.json | 1821 +++++++++++++++++ docs/files/index.html | 10 + docs/files/pixi_DisplayObject.js.html | 241 +++ .../files/pixi_DisplayObjectContainer.js.html | 275 +++ docs/files/pixi_MovieClip.js.html | 234 +++ docs/files/pixi_Pixi.js.html | 144 ++ docs/files/pixi_Point.js.html | 176 ++ docs/files/pixi_Rectangle.js.html | 192 ++ docs/files/pixi_Sprite.js.html | 277 +++ docs/files/pixi_Stage.js.html | 215 ++ docs/files/pixi_extras_Rope.js.html | 311 +++ docs/files/pixi_extras_Strip.js.html | 225 ++ docs/files/pixi_loaders_AssetLoader.js.html | 262 +++ .../pixi_loaders_SpriteSheetLoader.js.html | 236 +++ .../pixi_renderers_CanvasRenderer.js.html | 400 ++++ docs/files/pixi_renderers_WebGLBatch.js.html | 693 +++++++ .../pixi_renderers_WebGLRenderer.js.html | 823 ++++++++ .../files/pixi_renderers_WebGLShaders.js.html | 204 ++ docs/files/pixi_textures_BaseTexture.js.html | 206 ++ docs/files/pixi_textures_Texture.js.html | 285 +++ docs/files/pixi_utils_Detector.js.html | 166 ++ docs/files/pixi_utils_EventTarget.js.html | 184 ++ docs/files/pixi_utils_Utils.js.html | 182 ++ docs/index.html | 150 ++ docs/modules/PIXI.html | 251 +++ docs/modules/index.html | 10 + examples/bunny benchmark/css/main.css | 13 + examples/bunny benchmark/index.html | 3 +- examples/bunny benchmark/js/bunnyBenchMark.js | 28 +- examples/bunny benchmark/js/pixi.js | 110 + examples/bunny benchmark/js/pixi.min.js | 84 - logo.png | Bin 0 -> 28802 bytes src/pixi/DisplayObject.js | 18 +- src/pixi/DisplayObjectContainer.js | 24 +- src/pixi/MovieClip.js | 21 +- src/pixi/Pixi.js | 8 + src/pixi/Point.js | 21 +- src/pixi/Rectangle.js | 36 +- src/pixi/Sprite.js | 43 +- src/pixi/Stage.js | 23 +- src/pixi/extras/Rope.js | 3 +- src/pixi/extras/Strip.js | 2 - src/pixi/loaders/AssetLoader.js | 12 +- src/pixi/loaders/SpriteSheetLoader.js | 19 +- src/pixi/renderers/CanvasRenderer.js | 43 +- src/pixi/renderers/WebGLBatch.js | 50 +- src/pixi/renderers/WebGLRenderer.js | 109 +- src/pixi/renderers/WebGLShaders.js | 1 - src/pixi/textures/BaseTexture.js | 23 +- src/pixi/textures/Texture.js | 44 +- src/pixi/utils/Detector.js | 8 +- src/pixi/utils/EventTarget.js | 1 - src/yuidoc.json | 9 + 88 files changed, 21329 insertions(+), 331 deletions(-) create mode 100644 docs/api.js create mode 100644 docs/assets/css/external-small.png create mode 100644 docs/assets/css/logo.png create mode 100644 docs/assets/css/main.css create mode 100644 docs/assets/favicon.png create mode 100644 docs/assets/img/spinner.gif create mode 100644 docs/assets/index.html create mode 100644 docs/assets/js/api-filter.js create mode 100644 docs/assets/js/api-list.js create mode 100644 docs/assets/js/api-search.js create mode 100644 docs/assets/js/apidocs.js create mode 100644 docs/assets/js/yui-prettify.js create mode 100644 docs/assets/vendor/prettify/CHANGES.html create mode 100644 docs/assets/vendor/prettify/COPYING create mode 100644 docs/assets/vendor/prettify/README.html create mode 100644 docs/assets/vendor/prettify/prettify-min.css create mode 100644 docs/assets/vendor/prettify/prettify-min.js create mode 100644 docs/classes/AssetLoader.html create mode 100644 docs/classes/BaseTexture.html create mode 100644 docs/classes/CanvasRenderer.html create mode 100644 docs/classes/DisplayObject.html create mode 100644 docs/classes/DisplayObjectContainer.html create mode 100644 docs/classes/MovieClip.html create mode 100644 docs/classes/Point.html create mode 100644 docs/classes/Rectangle.html create mode 100644 docs/classes/Sprite.html create mode 100644 docs/classes/SpriteSheetLoader.html create mode 100644 docs/classes/Stage.html create mode 100644 docs/classes/Texture.html create mode 100644 docs/classes/WebGLBatch.html create mode 100644 docs/classes/WebGLRenderer.html create mode 100644 docs/classes/index.html create mode 100644 docs/data.json create mode 100644 docs/files/index.html create mode 100644 docs/files/pixi_DisplayObject.js.html create mode 100644 docs/files/pixi_DisplayObjectContainer.js.html create mode 100644 docs/files/pixi_MovieClip.js.html create mode 100644 docs/files/pixi_Pixi.js.html create mode 100644 docs/files/pixi_Point.js.html create mode 100644 docs/files/pixi_Rectangle.js.html create mode 100644 docs/files/pixi_Sprite.js.html create mode 100644 docs/files/pixi_Stage.js.html create mode 100644 docs/files/pixi_extras_Rope.js.html create mode 100644 docs/files/pixi_extras_Strip.js.html create mode 100644 docs/files/pixi_loaders_AssetLoader.js.html create mode 100644 docs/files/pixi_loaders_SpriteSheetLoader.js.html create mode 100644 docs/files/pixi_renderers_CanvasRenderer.js.html create mode 100644 docs/files/pixi_renderers_WebGLBatch.js.html create mode 100644 docs/files/pixi_renderers_WebGLRenderer.js.html create mode 100644 docs/files/pixi_renderers_WebGLShaders.js.html create mode 100644 docs/files/pixi_textures_BaseTexture.js.html create mode 100644 docs/files/pixi_textures_Texture.js.html create mode 100644 docs/files/pixi_utils_Detector.js.html create mode 100644 docs/files/pixi_utils_EventTarget.js.html create mode 100644 docs/files/pixi_utils_Utils.js.html create mode 100644 docs/index.html create mode 100644 docs/modules/PIXI.html create mode 100644 docs/modules/index.html create mode 100644 examples/bunny benchmark/js/pixi.js delete mode 100644 examples/bunny benchmark/js/pixi.min.js create mode 100644 logo.png create mode 100644 src/pixi/Pixi.js create mode 100644 src/yuidoc.json diff --git a/README.md b/README.md index d012149..0dd6b82 100644 --- a/README.md +++ b/README.md @@ -14,13 +14,12 @@ Also its fast. ### Current features ### - webGL renderer (with automatic smart batching allowing for REALLY fast performance) -- canvas renderer +- canvas renderer - full scene graph -- super easy to use API (similar to the flash display list API) +- super easy to use API (similar to twhe flash display list API) - support for texture atlas's - asset loader / sprite sheet loader - auto detect which renderer should be used -- handles device context loss ### Coming soon ### @@ -48,8 +47,8 @@ Also its fast. var stage = new PIXI.Stage; - var bunnyTexture = new PIXI.Texture("bunny.png"); - var bunny = new PIXI.Sprite(rabbitTexture); + var bunnyTexture = new PIXI.Texture.fromImage("bunny.png"); + var bunny = new PIXI.Sprite(bunnyTexture); bunny.position.x = 400; bunny.position.y = 300; diff --git a/bin/pixi.js b/bin/pixi.js index df5858d..65add09 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,4 +1,4 @@ -window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; +var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI=PIXI||{};PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Point.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; var k=null;f();var l={create:function(a){var d=new k(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,j){var b=new k(3);b[0]=a;b[1]=d;b[2]=j;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,j){if(!j||a===j)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;j[0]=a[0]+d[0];j[1]=a[1]+d[1];j[2]=a[2]+d[2];return j},subtract:function(a, d,j){if(!j||a===j)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;j[0]=a[0]-d[0];j[1]=a[1]-d[1];j[2]=a[2]-d[2];return j},multiply:function(a,d,j){if(!j||a===j)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;j[0]=a[0]*d[0];j[1]=a[1]*d[1];j[2]=a[2]*d[2];return j},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,j){if(!j||a===j)return a[0]*=d,a[1]*=d,a[2]*=d,a;j[0]=a[0]*d;j[1]=a[1]*d;j[2]=a[2]*d;return j},normalize:function(a,d){d||(d=a);var j=a[0],b=a[1],c=a[2],e=Math.sqrt(j* j+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=j,d[1]=b,d[2]=c,d;e=1/e;d[0]=j*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,j){j||(j=a);var b=a[0],c=a[1];a=a[2];var e=d[0],n=d[1];d=d[2];j[0]=c*d-a*n;j[1]=a*e-b*d;j[2]=b*n-c*e;return j},length:function(a){var d=a[0],j=a[1];a=a[2];return Math.sqrt(d*d+j*j+a*a)},squaredLength:function(a){var d=a[0],j=a[1];a=a[2];return d*d+j*j+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,j){j||(j=a);var b= @@ -45,7 +45,7 @@ b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return (b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=k,b.MatrixArray=k,b.setMatrixArrayType=c,b.determineMatrixArrayType= f,b.glMath=e,b.vec2=M,b.vec3=l,b.vec4=N,b.mat2=L,b.mat3=x,b.mat4=t,b.quat4=m);return{glMatrixArrayType:k,MatrixArray:k,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:M,vec3:l,vec4:N,mat2:L,mat3:x,mat4:t,quat4:m}});PIXI=PIXI||{};PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var k=b.length,l=1;l - + - + + + + - - - - + + + + + + + + + diff --git a/docs/api.js b/docs/api.js new file mode 100644 index 0000000..ac07693 --- /dev/null +++ b/docs/api.js @@ -0,0 +1,29 @@ +YUI.add("yuidoc-meta", function(Y) { + Y.YUIDoc = { meta: { + "classes": [ + "AssetLoader", + "BaseTexture", + "CanvasRenderer", + "DisplayObject", + "DisplayObjectContainer", + "MovieClip", + "Point", + "Rectangle", + "Sprite", + "SpriteSheetLoader", + "Stage", + "Texture", + "WebGLBatch", + "WebGLRenderer" + ], + "modules": [ + "PIXI" + ], + "allModules": [ + { + "displayName": "PIXI", + "name": "PIXI" + } + ] +} }; +}); \ No newline at end of file diff --git a/docs/assets/css/external-small.png b/docs/assets/css/external-small.png new file mode 100644 index 0000000000000000000000000000000000000000..759a1cdcb5b1697e5be290d98b830e279cd71f3c GIT binary patch literal 491 zcmVDs{zR1^XE?tfB*h@ASKHAa7wwn{MEbP z7_^nS7{V*>+A}bS;P%45fB%Ai|Neasi2rl3{=EO;!w318%8Ovl7jArHc=P5Brfr~D z0AYimtss2w$hlYlfd>7*aO3TNzw875LBK0xAD9Np|A(oEVYnB*eE9~V6wP%78SXuL z&#-X)Er#`zY#Ce)^8hM>B_8 literal 0 HcmV?d00001 diff --git a/docs/assets/css/logo.png b/docs/assets/css/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..609b336c7cc5ef0c787a0068d221d9b8d69b1241 GIT binary patch literal 6308 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 a0R{k+kX}`<%LV)Z0000