Skip to content
This repository
Browse code

Renames the Actor's "draw" function to "render."

  • Loading branch information...
commit c617d72f768208297bf84ac7740c98dbc6d94a30 1 parent 244370b
Jeremy Kahn authored May 21, 2012

Showing 44 changed files with 80 additions and 75 deletions. Show diff stats Hide diff stats

  1. 2  demo/bargraph.html
  2. 2  demo/bubbles.html
  3. 2  demo/pie.html
  4. 12  dist/rekapi.bundle.min.js
  5. 14  dist/rekapi.js
  6. 10  dist/rekapi.min.js
  7. 2  docs/api.kapi.md
  8. 8  docs/api.kapi_actor.md
  9. 2  docs/examples/actor.html
  10. 2  docs/examples/actor_count.html
  11. 2  docs/examples/add_actor.html
  12. 2  docs/examples/animation_length.html
  13. 2  docs/examples/bind.html
  14. 4  docs/examples/calculate_actor_positions.html
  15. 2  docs/examples/draw.html
  16. 2  docs/examples/export_timeline.html
  17. 2  docs/examples/framerate.html
  18. 2  docs/examples/get_actor.html
  19. 2  docs/examples/get_actor_ids.html
  20. 2  docs/examples/get_all_actors.html
  21. 2  docs/examples/is_playing.html
  22. 2  docs/examples/last_position_rendered.html
  23. 4  docs/examples/move_actor_to_layer.html
  24. 2  docs/examples/pause.html
  25. 2  docs/examples/play.html
  26. 2  docs/examples/play_from.html
  27. 2  docs/examples/play_from_current.html
  28. 2  docs/examples/redraw.html
  29. 2  docs/examples/remove_actor.html
  30. 2  docs/examples/render.html
  31. 4  docs/examples/set_order_function.html
  32. 2  docs/examples/stop.html
  33. 2  docs/examples/unbind.html
  34. 4  docs/examples/unset_order_function.html
  35. 12  docs/getting_started.md
  36. 6  docs/upgrading.md
  37. 4  ext/canvas/README.md
  38. 8  ext/dom/rekapi.dom.actor.js
  39. 2  lib/ease.js
  40. 2  sandbox.html
  41. 2  src/rekapi.actor.js
  42. 2  src/rekapi.core.js
  43. 3  tests/test.doesitlookright.html
  44. 2  version.txt
2  demo/bargraph.html
@@ -22,7 +22,7 @@
22 22
             'val': val
23 23
           });
24 24
         }
25  
-        ,'draw': function (context, state) {
  25
+        ,'render': function (context, state) {
26 26
           context.beginPath();
27 27
           context.lineWidth = 20;
28 28
           context.moveTo(state.x, state.y);
2  demo/bubbles.html
@@ -17,7 +17,7 @@
17 17
 
18 18
     function makeBubble () {
19 19
       return new Kapi.CanvasActor({
20  
-        'draw': function (canvas_context, state) {
  20
+        'render': function (canvas_context, state) {
21 21
           canvas_context.beginPath();
22 22
           canvas_context.arc(
23 23
             state.x || 0,
2  demo/pie.html
@@ -60,7 +60,7 @@
60 60
 
61 61
     function getActor (basePercentage, color, previousPiece) {
62 62
       var actor = new Kapi.CanvasActor({
63  
-        'draw': function (canvas_context, state) {
  63
+        'render': function (canvas_context, state) {
64 64
           var percent = basePercentage
65 65
               ,previousSum = getStartRad(this)
66 66
               ,x ,y
12  dist/rekapi.bundle.min.js
... ...
@@ -1,5 +1,5 @@
1 1
 /**
2  
- * Rekapi - Rewritten Kapi. v0.8.0
  2
+ * Rekapi - Rewritten Kapi. v0.8.1
3 3
  *   By Jeremy Kahn - jeremyckahn@gmail.com
4 4
  *   https://github.com/jeremyckahn/rekapi
5 5
  *
@@ -47,7 +47,7 @@ arguments);return u(this._wrapped,this._chain)}});j(["concat","join","slice"],fu
47 47
  */
48 48
 (function(){var a;(function(b){function f(a,b){var c;for(c in a)a.hasOwnProperty(c)&&b(a,c)}function g(a,b){return f(b,function(b,c){a[c]=b[c]}),a}function h(a,b){return f(b,function(b,c){typeof a[c]=="undefined"&&(a[c]=b[c])}),a}function i(a,b,c){var d,f;f=(a-b.timestamp)/b.duration;for(d in c.current)c.current.hasOwnProperty(d)&&b.to.hasOwnProperty(d)&&(c.current[d]=j(b.originalState[d],b.to[d],e[b.easing[d]],f));return c.current}function j(a,b,c,d){return a+(b-a)*c(d)}function k(a,b){return setTimeout(a,1e3/b)}function l(a,b,c,d){var e;for(e=0;e<b[a].length;e++)b[a][e].apply(c,d)}function m(b,c,d){f(a.prototype.filter,function(a,e){a[e][b]&&a[e][b].apply(c,d)})}function n(a,b){var d=a.timestamp+a.duration,e=Math.min(c(),d),f=e>=d;b.isTweening&&(f||(b.loopId=k(function(){n(a,b)},a.owner.fps)),m("beforeTween",a.owner,[b.current,a.originalState,a.to,a.easing]),i(e,a,b),m("afterTween",a.owner,[b.current,a.originalState,a.to,a.easing]),a.hook.step&&l("step",a.hook,a.owner,[b.current]),a.step&&a.step.call(b.current,b.current)),(f||!b.isTweening)&&a.owner.stop(!0)}function o(a,b){var c;return c={},typeof b=="string"?f(a,function(a,d){c[d]=b}):f(a,function(a,e){c[e]||(c[e]=b[e]||d)}),c}var c,d="linear",e;typeof SHIFTY_DEBUG_NOW=="function"?c=SHIFTY_DEBUG_NOW:c=function(){return+(new Date)},typeof SHIFTY_DEBUG_NOW=="function"&&(b.timeoutHandler=n),a=function(a){return a=a||{},this._hook={},this._tweenParams={owner:this,hook:this._hook,data:{}},this._state={},this._state.current=a.initialState||{},this.fps=a.fps||30,this.easing=a.easing||d,this.duration=a.duration||500,this},a.prototype.tween=function(a,b,d,e,f){var i,j,k;if(this._state.isTweening)return;return i=this,j=this._tweenParams,k=this._state,this._state.loopId=0,this._state.pausedAtTime=null,b?(j.to=b||{},j.duration=d||this.duration,j.callback=e,j.easing=f||this.easing,k.current=a||{}):(j.step=a.step,j.callback=a.callback,j.to=a.to||a.target||{},j.duration=a.duration||this.duration,j.easing=a.easing||this.easing,k.current=a.from||{}),j.timestamp=c(),h(k.current,j.to),h(j.to,k.current),j.easing=o(k.current,j.easing),j.originalState=g({},k.current),m("tweenCreated",j.owner,[k.current,j.originalState,j.to,j.easing]),k.isTweening=!0,this.resume(),a.start&&a.start(),this},a.prototype.to=function(b,c,d,e){return arguments.length===1?"to"in b?(b.from=this.get(),this.tween(b)):this.tween(this.get(),b):this.tween(this.get(),b,c,d,e),this},a.prototype.get=function(){return this._state.current},a.prototype.set=function(a){return this._state.current=a||{},this},a.prototype.stop=function(a){return clearTimeout(this._state.loopId),this._state.isTweening=!1,a&&(g(this._state.current,this._tweenParams.to),m("afterTweenEnd",this,[this._state.current,this._tweenParams.originalState,this._tweenParams.to,this._tweenParams.easing]),this._tweenParams.callback&&this._tweenParams.callback.call(this._state.current,this._state.current)),this},a.prototype.pause=function(){return clearTimeout(this._state.loopId),this._state.pausedAtTime=c(),this._state.isPaused=!0,this},a.prototype.resume=function(){var a;return a=this,this._state.isPaused&&(this._tweenParams.timestamp+=c()-this._state.pausedAtTime),n(a._tweenParams,a._state),this},a.prototype.hookAdd=function(a,b){this._hook.hasOwnProperty(a)||(this._hook[a]=[]),this._hook[a].push(b)},a.prototype.hookRemove=function(a,b){var c;if(!this._hook.hasOwnProperty(a))return;if(!b){this._hook[a]=[];return}for(c=this._hook[a].length;c>=0;c++)this._hook[a][c]===b&&this._hook[a].splice(c,1)},a.prototype.filter={},a.util={now:c,each:f,tweenProps:i,tweenProp:j,applyFilter:m,simpleCopy:g,weakCopy:h,composeEasingObject:o},e=a.prototype.formula={linear:function(a){return a}},typeof exports=="object"?module.exports=a:typeof define=="function"&&define.amd?define(function(){return a}):typeof b.Tweenable=="undefined"&&(b.Tweenable=a)})(this),function(){a.util.simpleCopy(a.prototype.formula,{easeInQuad:function(a){return Math.pow(a,2)},easeOutQuad:function(a){return-(Math.pow(a-1,2)-1)},easeInOutQuad:function(a){return(a/=.5)<1?.5*Math.pow(a,2):-0.5*((a-=2)*a-2)},easeInCubic:function(a){return Math.pow(a,3)},easeOutCubic:function(a){return Math.pow(a-1,3)+1},easeInOutCubic:function(a){return(a/=.5)<1?.5*Math.pow(a,3):.5*(Math.pow(a-2,3)+2)},easeInQuart:function(a){return Math.pow(a,4)},easeOutQuart:function(a){return-(Math.pow(a-1,4)-1)},easeInOutQuart:function(a){return(a/=.5)<1?.5*Math.pow(a,4):-0.5*((a-=2)*Math.pow(a,3)-2)},easeInQuint:function(a){return Math.pow(a,5)},easeOutQuint:function(a){return Math.pow(a-1,5)+1},easeInOutQuint:function(a){return(a/=.5)<1?.5*Math.pow(a,5):.5*(Math.pow(a-2,5)+2)},easeInSine:function(a){return-Math.cos(a*(Math.PI/2))+1},easeOutSine:function(a){return Math.sin(a*(Math.PI/2))},easeInOutSine:function(a){return-0.5*(Math.cos(Math.PI*a)-1)},easeInExpo:function(a){return a==0?0:Math.pow(2,10*(a-1))},easeOutExpo:function(a){return a==1?1:-Math.pow(2,-10*a)+1},easeInOutExpo:function(a){return a==0?0:a==1?1:(a/=.5)<1?.5*Math.pow(2,10*(a-1)):.5*(-Math.pow(2,-10*--a)+2)},easeInCirc:function(a){return-(Math.sqrt(1-a*a)-1)},easeOutCirc:function(a){return Math.sqrt(1-Math.pow(a-1,2))},easeInOutCirc:function(a){return(a/=.5)<1?-0.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)},easeOutBounce:function(a){return a<1/2.75?7.5625*a*a:a<2/2.75?7.5625*(a-=1.5/2.75)*a+.75:a<2.5/2.75?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},easeInBack:function(a){var b=1.70158;return a*a*((b+1)*a-b)},easeOutBack:function(a){var b=1.70158;return(a-=1)*a*((b+1)*a+b)+1},easeInOutBack:function(a){var b=1.70158;return(a/=.5)<1?.5*a*a*(((b*=1.525)+1)*a-b):.5*((a-=2)*a*(((b*=1.525)+1)*a+b)+2)},elastic:function(a){return-1*Math.pow(4,-8*a)*Math.sin((a*6-1)*2*Math.PI/2)+1},swingFromTo:function(a){var b=1.70158;return(a/=.5)<1?.5*a*a*(((b*=1.525)+1)*a-b):.5*((a-=2)*a*(((b*=1.525)+1)*a+b)+2)},swingFrom:function(a){var b=1.70158;return a*a*((b+1)*a-b)},swingTo:function(a){var b=1.70158;return(a-=1)*a*((b+1)*a+b)+1},bounce:function(a){return a<1/2.75?7.5625*a*a:a<2/2.75?7.5625*(a-=1.5/2.75)*a+.75:a<2.5/2.75?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},bouncePast:function(a){return a<1/2.75?7.5625*a*a:a<2/2.75?2-(7.5625*(a-=1.5/2.75)*a+.75):a<2.5/2.75?2-(7.5625*(a-=2.25/2.75)*a+.9375):2-(7.5625*(a-=2.625/2.75)*a+.984375)},easeFromTo:function(a){return(a/=.5)<1?.5*Math.pow(a,4):-0.5*((a-=2)*Math.pow(a,3)-2)},easeFrom:function(a){return Math.pow(a,4)},easeTo:function(a){return Math.pow(a,.25)}})}(),function(){function c(a){a.shift(),a.length?a[0]():a.running=!1}function d(a,b){return function(){a(),c(b)}}function e(a,b,c,d,e,f){return function(){c?a.tween(b,c,d,e,f):(b.callback=e,b.from?a.tween(b):a.to(b))}}var b=function(){};a.prototype.queue=function(a,c,f,g,h){var i;return this._tweenQueue||(this._tweenQueue=[]),g=g||a.callback||b,i=d(g,this._tweenQueue),this._tweenQueue.push(e(this,a,c,f,i,h)),this},a.prototype.queueStart=function(){return!this._tweenQueue.running&&this._tweenQueue.length>0&&(this._tweenQueue[0](),this._tweenQueue.running=!0),this},a.prototype.queueShift=function(){return this._tweenQueue.shift(),this},a.prototype.queuePop=function(){return this._tweenQueue.pop(),this},a.prototype.queueEmpty=function(){return this._tweenQueue.length=0,this},a.prototype.queueLength=function(){return this._tweenQueue.length}}(),function(){function b(b,c,d,e,f){return a.util.tweenProps(e,{originalState:b,to:d,timestamp:0,duration:1,easing:f},{current:c})}function c(b,c){var d=c;return typeof c=="string"&&(d={},a.util.each(b,function(a,b){d[b]=a[b]})),d}a.util.interpolate=function(c,d,e,f){var g,h,i;c&&c.from&&(d=c.to,e=c.position,f=c.easing,c=c.from),i=new a,i._tweenParams.easing=f||"linear",g=a.util.simpleCopy({},c);var j=a.util.composeEasingObject(c,i._tweenParams.easing);return a.util.applyFilter("tweenCreated",i,[g,c,d,j]),a.util.applyFilter("beforeTween",i,[g,c,d,j]),h=b(c,g,d,e,j),a.util.applyFilter("afterTween",i,[h,c,d,j]),h},a.prototype.interpolate=function(b,c,d){var e;return e=a.util.interpolate(this.get(),b,c,d),this.set(e),e}}(),function(){var b=!1;a.util.enableRounding=function(){b=!0},a.util.disableRounding=function(){b=!1},a.util.isRoundingEnabled=function(){return b},a.prototype.filter.round={afterTween:function(c,d,e){b&&a.util.each(c,function(a,b){a[b].replace||(a[b]=Math.round(a[b]))})}}}(),function(a){function i(a,b){var c=a.length,d,e=[];for(d=0;d<c;d++)e.push("_"+b+"_"+d);return e}function j(a){var b=a.match(c);return b.length===1&&b.unshift(""),b.join(h)}function k(b){a.util.each(b,function(a,c){var d=a[c];typeof d=="string"&&d.match(g)&&(b[c]=l(d))})}function l(a){return p(g,a,m)}function m(a){var b=n(a);return"rgb("+b[0]+","+b[1]+","+b[2]+")"}function n(a){return a=a.replace(/#/,""),a.length===3&&(a=a.split(""),a=a[0]+a[0]+a[1]+a[1]+a[2]+a[2]),[o(a.substr(0,2)),o(a.substr(2,2)),o(a.substr(4,2))]}function o(a){return parseInt(a,16)}function p(a,b,c){var d=b.match(a),e=b.replace(a,h);if(d){var f=d.length,g;for(var i=0;i<f;i++)g=d.shift(),e=e.replace(h,c(g))}return e}function q(a){return p(e,a,r)}function r(a){var b=a.match(d),c=b.length,e=a.match(f)[0];for(var g=0;g<c;g++)e+=parseInt(b[g],10)+",";return e=e.slice(0,-1)+")",e}function s(b){var c={};return a.util.each(b,function(a,b){var d=a[b];if(typeof d=="string"){var e=y(d);c[b]={formatString:j(d),chunkNames:i(e,b)}}}),c}function t(b,c){a.util.each(c,function(a,d){var e=b[d],f=y(e),g=f.length;for(var h=0;h<g;h++)b[c[d].chunkNames[h]]=+f[h];delete b[d]})}function u(b,c){a.util.each(c,function(a,d){var e=b[d],f=v(b,c[d].chunkNames),g=w(f,c[d].chunkNames);e=x(c[d].formatString,g),b[d]=q(e)})}function v(a,b){var c={},d,e=b.length;for(var f=0;f<e;f++)d=b[f],c[d]=a[d],delete a[d];return c}function w(a,b){var c=[],d=b.length;for(var e=0;e<d;e++)c.push(a[b[e]]);return c}function x(a,b){var c=a,d=b.length;for(var e=0;e<d;e++)c=c.replace(h,+b[e].toFixed(4));return c}function y(a){return a.match(d)}function z(b,c){a.util.each(c,function(a,c){var d=a[c],e=d.chunkNames,f=e.length,g=b[c].split(" "),h=g[g.length-1];for(var i=0;i<f;i++)b[e[i]]=g[i]||h;delete b[c]})}function A(b,c){a.util.each(c,function(a,c){var d=a[c],e=d.chunkNames,f=e.length,g="";for(var h=0;h<f;h++)g+=" "+b[e[h]],delete b[e[h]];g=g.substr(1),b[c]=g})}var b,c=/([^-0-9]+)/g,d=/[0-9.-]+/g,e=new RegExp("rgb\\("+d.source+",s*"+d.source+",s*"+d.source+"\\)","g"),f=/^.*\(/,g=/#([0-9]|[a-f]){3,6}/g,h="VAL";a.prototype.filter.token={tweenCreated:function(a,b,c,d){k(a),k(b),k(c),this._tokenData=s(a)},beforeTween:function(a,b,c,d){z(d,this._tokenData),t(a,this._tokenData),t(b,this._tokenData),t(c,this._tokenData)},afterTween:function(a,b,c,d){u(a,this._tokenData),u(b,this._tokenData),u(c,this._tokenData),A(d,this._tokenData)}}}(a)})();
49 49
 /**
50  
- * Rekapi - Rewritten Kapi. v0.8.0
  50
+ * Rekapi - Rewritten Kapi. v0.8.1
51 51
  *   By Jeremy Kahn - jeremyckahn@gmail.com
52 52
  *   https://github.com/jeremyckahn/rekapi
53 53
  *
@@ -64,12 +64,12 @@ this._drawOrder=a.without(this._drawOrder,d.id);d.teardown();this._recalculateAn
64 64
 this._loopTimestamp=g()-a;return this};h.prototype.playFromCurrent=function(a){return this.playFrom(this._lastRenderedMillisecond,a)};h.prototype.pause=function(){if("paused"===this._playState)return this;this._playState="paused";this._cancelUpdate.call(window,this._loopId);this._pausedAtTime=g();a.each(this._actors,function(a){a._state.isTweening&&a.pause()});o(this,"onPlayStateChange");o(this,"onPause");return this};h.prototype.stop=function(){this._playState="stopped";this._cancelUpdate.call(window,
65 65
 this._loopId);a.each(this._actors,function(a){a.stop()});o(this,"onPlayStateChange");o(this,"onStop");return this};h.prototype.isPlaying=function(){return"playing"===this._playState};h.prototype.animationLength=function(){return this._animationLength};h.prototype.lastPositionRendered=function(){return this._lastRenderedMillisecond/this._animationLength};h.prototype.actorCount=function(){return this._drawOrder.length};h.prototype.framerate=function(a){if(a)this.config.fps=a,this._scheduleUpdate=i(this.config.fps),
66 66
 this._cancelUpdate=s(this.config.fps);return this.config.fps};h.prototype.render=function(a){this.calculateActorPositions(a);this.draw();this._lastRenderedMillisecond=a;o(this,"onFrameRender");return this};h.prototype.redraw=function(){this.render(this._lastRenderedMillisecond);return this};h.prototype.calculateActorPositions=function(a){var g,h,k;k=b.util.isRoundingEnabled();this.config.doRoundNumbers?b.util.enableRounding():b.util.disableRounding();h=this._drawOrder.length;for(g=0;g<h;g++)this._actors[this._drawOrder[g]].calculatePosition(a);
67  
-!0===k?b.util.enableRounding():b.util.disableRounding();return this};h.prototype.draw=function(){var d,b,g,h,k;o(this,"onBeforeDraw");b=this._drawOrder.length;this._drawOrderSorter?(d=a.sortBy(this._actors,this._drawOrderSorter),k=a.pluck(d,"id")):k=this._drawOrder;for(d=0;d<b;d++)g=this._actors[k[d]],g.isShowing()&&(h=g.context(),g.draw(h,g.get()));return this};h.prototype.moveActorToLayer=function(d,b){if(b<this._drawOrder.length)return this._drawOrder=a.without(this._drawOrder,d.id),this._drawOrder.splice(b,
  67
+!0===k?b.util.enableRounding():b.util.disableRounding();return this};h.prototype.draw=function(){var d,b,g,h,k;o(this,"onBeforeDraw");b=this._drawOrder.length;this._drawOrderSorter?(d=a.sortBy(this._actors,this._drawOrderSorter),k=a.pluck(d,"id")):k=this._drawOrder;for(d=0;d<b;d++)g=this._actors[k[d]],g.isShowing()&&(h=g.context(),g.render(h,g.get()));return this};h.prototype.moveActorToLayer=function(d,b){if(b<this._drawOrder.length)return this._drawOrder=a.without(this._drawOrder,d.id),this._drawOrder.splice(b,
68 68
 0,d.id),d};h.prototype.bind=function(a,b){if(this._events[a])return this._events[a].push(b),this};h.prototype.unbind=function(d,b){if(this._events[d])return this._events[d]=b?a.without(this._events[d],b):[],this};h.prototype.setOrderFunction=function(a){this._drawOrderSorter=a;return this};h.prototype.unsetOrderFunction=function(){this._drawOrderSorter=null;return this};h.prototype.exportTimeline=function(){var b={duration:this._animationLength,actorOrder:this._drawOrder.slice(0),actors:{}};a.each(this._drawOrder,
69 69
 function(a){b.actors[a]=this._actors[a].exportTimeline()},this);return b};h.util={};a.extend(h.util,{noop:function(){},sortNumerically:f,calculateLoopPosition:m,calculateTimeSinceStart:n});if("undefined"!==typeof KAPI_DEBUG&&!0===KAPI_DEBUG)h._private={sortNumerically:f,calculateLoopPosition:m,renderCurrentMillisecond:e,tick:r,determineCurrentLoopIteration:l,calculateTimeSinceStart:n,isAnimationComplete:p,updatePlayState:q};j.Kapi=h},A=function(j,c){function f(a,b){var g,k,h;h=a._timelinePropertyCacheIndex;
70 70
 k=h.length;for(g=1;g<k;g++)if(h[g]>=b)return g-1;return-1}function l(a){i.each(a._propertyTracks,function(b,g){a._propertyTracks[g]=i.sortBy(a._propertyTracks[g],function(a){return a.millisecond})})}function n(a){i.each(a._timelinePropertyCaches,function(b,g){var k={};i.each(a._propertyTracks,function(a,b){var e=null;i.find(a,function(a){a.millisecond>g&&(k[b]=e);e=a;return!!k[b]})});i.defaults(b,k)})}function p(a){i.each(a._propertyTracks,function(a){i.each(a,function(g,k){g.linkToNext(a[k+1])})})}
71 71
 function q(a,b,g){return i.find(a._propertyTracks[b],function(a){return a.millisecond===g})}function m(a,b,g,k){var h=i.keys(a._propertyTracks),d=i.keys(b),h=i.difference(h,d),e={};i.each(h,function(b){var d;d=a._propertyTracks[b].slice(0).reverse();i.each(d,function(a){a.millisecond<k&&!e[b]&&(e[b]={value:a.value,easing:a.easing})})});i.each(e,function(a,d){b[d]=a.value;g[d]=a.easing})}var e,r,o,i=c&&c.underscore?c.underscore:j._,s=c&&c.Tweenable?c.Tweenable:j.Tweenable;e=j.Kapi;r=0;e.Actor=function(a){a=
72  
-a||{};this.constructor.call(this);i.extend(this,{_data:{},_propertyTracks:{},_timelinePropertyCaches:{},_timelinePropertyCacheIndex:[],_keyframeProperties:{},_isShowing:!1,_isPersisting:!1,id:r++,setup:a.setup||e.util.noop,draw:a.draw||e.util.noop,teardown:a.teardown||e.util.noop});a.context&&this.context(opt_context);return this};o=function(){};o.prototype=s.prototype;e.Actor.prototype=new o;e.Actor.prototype.context=function(a){if(a)this._context=a;return this._context};e.Actor.prototype.keyframe=
  72
+a||{};this.constructor.call(this);i.extend(this,{_data:{},_propertyTracks:{},_timelinePropertyCaches:{},_timelinePropertyCacheIndex:[],_keyframeProperties:{},_isShowing:!1,_isPersisting:!1,id:r++,setup:a.setup||e.util.noop,render:a.render||e.util.noop,teardown:a.teardown||e.util.noop});a.context&&this.context(opt_context);return this};o=function(){};o.prototype=s.prototype;e.Actor.prototype=new o;e.Actor.prototype.context=function(a){if(a)this._context=a;return this._context};e.Actor.prototype.keyframe=
73 73
 function(a,b,g){var k,g=g||"linear";"string"===typeof g&&(k=g,g={},i.each(b,function(a,b){g[b]=k}));i.each(b,function(a,b){g[b]=g[b]||"linear"});m(this,b,g,a);i.each(b,function(b,d){var k;k=new e.KeyframeProperty(this,a,d,b,g[d]);this._keyframeProperties[k.id]=k;this._propertyTracks[d]||(this._propertyTracks[d]=[]);this._propertyTracks[d].push(k);l(this)},this);this.kapi._recalculateAnimationLength();this.invalidatePropertyCache();return this};e.Actor.prototype.getKeyframeProperty=function(a,b){if(this._propertyTracks[a]&&
74 74
 this._propertyTracks[a][b])return this._propertyTracks[a][b]};e.Actor.prototype.modifyKeyframeProperty=function(a,b,g){this._propertyTracks[a]&&this._propertyTracks[a][b]&&this._propertyTracks[a][b].modifyWith(g);l(this);this.invalidatePropertyCache();return this};e.Actor.prototype.getTrackNames=function(){return i.keys(this._propertyTracks)};e.Actor.prototype.getTrackLength=function(a){return!this._propertyTracks[a]?void 0:this._propertyTracks[a].length};e.Actor.prototype.copyProperties=function(a,
75 75
 b){var g,k;g={};k={};i.each(this._propertyTracks,function(a,d){var e;if(e=q(this,d,b))g[d]=e.value,k[d]=e.easing},this);this.keyframe(a,g,k);return this};e.Actor.prototype.wait=function(a){var b=this.getEnd();if(a<=b)return this;this.copyProperties(a,b);return this};e.Actor.prototype.getStart=function(){var a=[];i.each(this._propertyTracks,function(b){b.length&&a.push(b[0].millisecond)});0===a.length&&(a=[0]);return Math.min.apply(Math,a)};e.Actor.prototype.getEnd=function(){var a=0;i.each(this._propertyTracks,
@@ -82,8 +82,8 @@ function(c,f,m,e,j){this.id=l.uniqueId("keyframeProperty_");this.ownerActor=c;th
82 82
 m,e;f={};m={};this.nextProperty?(f[this.name]=this.value,m[this.name]=this.nextProperty.value,e=this.nextProperty.millisecond-this.millisecond,c=(c-this.millisecond)/e,f=n.util.interpolate(f,m,c,this.nextProperty.easing)[this.name]):f=null;return f};f.KeyframeProperty.prototype.exportPropertyData=function(){return{id:this.id,millisecond:this.millisecond,name:this.name,value:this.value,easing:this.easing}}},u=function(j,c){function f(c,f,e){"undefined"!==typeof e&&(c[f]=e,c.style[f]=e+"px");return c[f]}
83 83
 function l(){this.config.clearOnUpdate&&this.canvasClear()}var n=j.Kapi,p=c&&c.underscore?c.underscore:j._;n.prototype._contextInitHook.canvas=function(){this.config.context&&"CANVAS"===this.config.context.nodeName&&(p.each(["Height","Width"],function(c){var f=c.toLowerCase();this.config[f]&&(this["canvas"+c](this.config[f]),delete this.config[c])},this),this.bind("onBeforeDraw",p.bind(l,this)))};n.prototype.canvasHeight=function(c){return f(this.context,"height",c)};n.prototype.canvasWidth=function(c){return f(this.context,
84 84
 "width",c)};n.prototype.canvasClear=function(){this.canvasContext().clearRect(0,0,this.canvasWidth(),this.canvasHeight());return this};n.prototype.canvasContext=function(){return this.context.getContext("2d")}},v=function(j){function c(){}var f=j.Kapi;c.prototype=f.Actor.prototype;f.CanvasActor=function(c){f.Actor.call(this,c);return this};f.CanvasActor.prototype=new c;f.CanvasActor.prototype.context=function(c){if(c)this._context=c;return this._context&&this._context.getContext("2d")}},w=function(j,
85  
-c){function f(){}var l=j.Kapi,n=c&&c.underscore?c.underscore:j._,p=["transform","webkitTransform","MozTransform","oTransform","msTransform"];l.DOMActor=function(c){l.Actor.call(this);this._context=c;this._context.classList.add(this.getCSSName());delete this.draw;this.show=function(c){l.Actor.prototype.show.call(this,c);this._context.style.display="block"};this.hide=function(c){l.Actor.prototype.hide.call(this,c);this._context.style.display="none"};return this};f.prototype=l.Actor.prototype;l.DOMActor.prototype=
86  
-new f;f.prototype.draw=function(c,f){var e;e=!1;n.each(f,function(f,j){e=!0;"transform"===j?n.each(p,function(e){c.style[e]=f},this):c.style[j]=f},this);e?this.show():this.hide()};f.prototype.getCSSName=function(){return"actor-"+this.id}},x=function(j,c,f){function l(c){var a=["{"],b;e.each(c.get(),function(c,e){b=c;var f=e;"transform"===e&&(f=q);a.push(f+":"+b+";")});a.push("}");return a.join("")}function n(c,a,b){var b=b||["w3"],g=[];e.each(b,function(b){b=i(r,[m[b],a,c]).replace(RegExp(q,"g"),
  85
+c){function f(){}var l=j.Kapi,n=c&&c.underscore?c.underscore:j._,p=["transform","webkitTransform","MozTransform","oTransform","msTransform"];l.DOMActor=function(c){l.Actor.call(this);this._context=c;this._context.classList.add(this.getCSSName());delete this.render;this.show=function(c){l.Actor.prototype.show.call(this,c);this._context.style.display="block"};this.hide=function(c){l.Actor.prototype.hide.call(this,c);this._context.style.display="none"};return this};f.prototype=l.Actor.prototype;l.DOMActor.prototype=
  86
+new f;f.prototype.render=function(c,f){var e;e=!1;n.each(f,function(f,j){e=!0;"transform"===j?n.each(p,function(e){c.style[e]=f},this):c.style[j]=f},this);e?this.show():this.hide()};f.prototype.getCSSName=function(){return"actor-"+this.id}},x=function(j,c,f){function l(c){var a=["{"],b;e.each(c.get(),function(c,e){b=c;var f=e;"transform"===e&&(f=q);a.push(f+":"+b+";")});a.push("}");return a.join("")}function n(c,a,b){var b=b||["w3"],g=[];e.each(b,function(b){b=i(r,[m[b],a,c]).replace(RegExp(q,"g"),
87 87
 m[b]+"transform");g.push(b)});return g.join("\n")}function p(c,a){var a=a||["w3"],b=[],g;e.each(a,function(a){var e=[],a=m[a],d=c.getStart(),f=c.getEnd()-d,f=i("  %sanimation-duration: %sms;",[a,f]);e.push(f);f=i("  %sanimation-name: %s;",[a,c.getCSSName()+"-keyframes"]);e.push(f);d=i("  %sanimation-delay: %sms;",[a,d]);e.push(d);a=i("  %sanimation-fill-mode: forwards;",[a]);e.push(a);g=e.join("\n");b.push(g)});return i(o,[c.getCSSName(),b.join("\n")])}var q="TRANSFORM",m=j.util.VENDOR_PREFIXES={microsoft:"-ms-",
88 88
 mozilla:"-moz-",opera:"-o-",w3:"",webkit:"-webkit-"},e=f&&f.underscore?f.underscore:c._,r="@%skeyframes %s-keyframes {\n%s\n}",o=".%s {\n  position: absolute;\n%s\n}";c.Kapi.prototype.toCSS=function(c){var c=c||{},a=[],b=this.getActorIds();e.each(b,function(b){a.push(this.getActor(b).toCSS(c))},this);return a.join("\n")};c.Kapi.Actor.prototype.toCSS=function(c){var c=c||{},a=[],b=c.granularity||100,e=p(this,c.vendors);a.push(e);var e=this.getLength(),f=this.getStart(),h=[],d,b=e/b,i=e/100,j=f+b,m=
89 89
 e+f-b;this.calculatePosition(f);for(h.push("  from "+l(this));j<=m;j+=b)this.calculatePosition(j),d=(j-f)/i,d=+d.toFixed(2),d+="% ",h.push("  "+d+l(this));this.calculatePosition(e+f);h.push("  to "+l(this));e=h.join("\n");c=n(e,this.getCSSName(),c.vendors);a.push(c);return a.join("\n")};var i=j.util.printf=function(c,a){var b=c;e.each(a,function(a){b=b.replace("%s",a)});return b}},y=function(j,c){var f=c?{}:j;z(f,c);A(f,c);B(f,c);"function"===typeof w&&w(f,c);"function"===typeof x&&x(f.Kapi,f,c);
14  dist/rekapi.js
... ...
@@ -1,5 +1,5 @@
1 1
 /**
2  
- * Rekapi - Rewritten Kapi. v0.8.0
  2
+ * Rekapi - Rewritten Kapi. v0.8.1
3 3
  *   By Jeremy Kahn - jeremyckahn@gmail.com
4 4
  *   https://github.com/jeremyckahn/rekapi
5 5
  *
@@ -576,7 +576,7 @@ var rekapiCore = function (global, deps) {
576 576
       currentActor = this._actors[drawOrder[i]];
577 577
       if (currentActor.isShowing()) {
578 578
         canvas_context = currentActor.context();
579  
-        currentActor.draw(canvas_context, currentActor.get());
  579
+        currentActor.render(canvas_context, currentActor.get());
580 580
       }
581 581
     }
582 582
 
@@ -879,7 +879,7 @@ var rekapiActor = function (global, deps) {
879 879
       ,'_isPersisting': false
880 880
       ,'id': getUniqueActorId()
881 881
       ,'setup': opt_config.setup || gk.util.noop
882  
-      ,'draw': opt_config.draw || gk.util.noop
  882
+      ,'render': opt_config.render || gk.util.noop
883 883
       ,'teardown': opt_config.teardown || gk.util.noop
884 884
     });
885 885
 
@@ -1589,9 +1589,9 @@ var rekapiDOM = function (global, deps) {
1589 1589
     this._context = element;
1590 1590
     this._context.classList.add(this.getCSSName());
1591 1591
 
1592  
-    // Remove the instance's draw method to allow the
1593  
-    // ActorMethods.prototype.draw method to be accessible.
1594  
-    delete this.draw;
  1592
+    // Remove the instance's render method to allow the
  1593
+    // ActorMethods.prototype.render method to be accessible.
  1594
+    delete this.render;
1595 1595
 
1596 1596
     this.show = function (alsoPersist) {
1597 1597
       gk.Actor.prototype.show.call(this, alsoPersist);
@@ -1616,7 +1616,7 @@ var rekapiDOM = function (global, deps) {
1616 1616
    * @param {HTMLElement} context
1617 1617
    * @param {Object} state
1618 1618
    */
1619  
-  DOMActorMethods.prototype.draw = function (context, state) {
  1619
+  DOMActorMethods.prototype.render = function (context, state) {
1620 1620
     var isShowing;
1621 1621
 
1622 1622
     isShowing = false;
10  dist/rekapi.min.js
... ...
@@ -1,5 +1,5 @@
1 1
 /**
2  
- * Rekapi - Rewritten Kapi. v0.8.0
  2
+ * Rekapi - Rewritten Kapi. v0.8.1
3 3
  *   By Jeremy Kahn - jeremyckahn@gmail.com
4 4
  *   https://github.com/jeremyckahn/rekapi
5 5
  *
@@ -16,12 +16,12 @@ this._drawOrder=a.without(this._drawOrder,d.id);d.teardown();this._recalculateAn
16 16
 this._loopTimestamp=g()-a;return this};h.prototype.playFromCurrent=function(a){return this.playFrom(this._lastRenderedMillisecond,a)};h.prototype.pause=function(){if("paused"===this._playState)return this;this._playState="paused";this._cancelUpdate.call(window,this._loopId);this._pausedAtTime=g();a.each(this._actors,function(a){a._state.isTweening&&a.pause()});o(this,"onPlayStateChange");o(this,"onPause");return this};h.prototype.stop=function(){this._playState="stopped";this._cancelUpdate.call(window,
17 17
 this._loopId);a.each(this._actors,function(a){a.stop()});o(this,"onPlayStateChange");o(this,"onStop");return this};h.prototype.isPlaying=function(){return"playing"===this._playState};h.prototype.animationLength=function(){return this._animationLength};h.prototype.lastPositionRendered=function(){return this._lastRenderedMillisecond/this._animationLength};h.prototype.actorCount=function(){return this._drawOrder.length};h.prototype.framerate=function(a){if(a)this.config.fps=a,this._scheduleUpdate=i(this.config.fps),
18 18
 this._cancelUpdate=s(this.config.fps);return this.config.fps};h.prototype.render=function(a){this.calculateActorPositions(a);this.draw();this._lastRenderedMillisecond=a;o(this,"onFrameRender");return this};h.prototype.redraw=function(){this.render(this._lastRenderedMillisecond);return this};h.prototype.calculateActorPositions=function(a){var g,h,k;k=b.util.isRoundingEnabled();this.config.doRoundNumbers?b.util.enableRounding():b.util.disableRounding();h=this._drawOrder.length;for(g=0;g<h;g++)this._actors[this._drawOrder[g]].calculatePosition(a);
19  
-!0===k?b.util.enableRounding():b.util.disableRounding();return this};h.prototype.draw=function(){var d,b,g,h,k;o(this,"onBeforeDraw");b=this._drawOrder.length;this._drawOrderSorter?(d=a.sortBy(this._actors,this._drawOrderSorter),k=a.pluck(d,"id")):k=this._drawOrder;for(d=0;d<b;d++)g=this._actors[k[d]],g.isShowing()&&(h=g.context(),g.draw(h,g.get()));return this};h.prototype.moveActorToLayer=function(d,b){if(b<this._drawOrder.length)return this._drawOrder=a.without(this._drawOrder,d.id),this._drawOrder.splice(b,
  19
+!0===k?b.util.enableRounding():b.util.disableRounding();return this};h.prototype.draw=function(){var d,b,g,h,k;o(this,"onBeforeDraw");b=this._drawOrder.length;this._drawOrderSorter?(d=a.sortBy(this._actors,this._drawOrderSorter),k=a.pluck(d,"id")):k=this._drawOrder;for(d=0;d<b;d++)g=this._actors[k[d]],g.isShowing()&&(h=g.context(),g.render(h,g.get()));return this};h.prototype.moveActorToLayer=function(d,b){if(b<this._drawOrder.length)return this._drawOrder=a.without(this._drawOrder,d.id),this._drawOrder.splice(b,
20 20
 0,d.id),d};h.prototype.bind=function(a,b){if(this._events[a])return this._events[a].push(b),this};h.prototype.unbind=function(d,b){if(this._events[d])return this._events[d]=b?a.without(this._events[d],b):[],this};h.prototype.setOrderFunction=function(a){this._drawOrderSorter=a;return this};h.prototype.unsetOrderFunction=function(){this._drawOrderSorter=null;return this};h.prototype.exportTimeline=function(){var b={duration:this._animationLength,actorOrder:this._drawOrder.slice(0),actors:{}};a.each(this._drawOrder,
21 21
 function(a){b.actors[a]=this._actors[a].exportTimeline()},this);return b};h.util={};a.extend(h.util,{noop:function(){},sortNumerically:f,calculateLoopPosition:m,calculateTimeSinceStart:n});if("undefined"!==typeof KAPI_DEBUG&&!0===KAPI_DEBUG)h._private={sortNumerically:f,calculateLoopPosition:m,renderCurrentMillisecond:e,tick:r,determineCurrentLoopIteration:l,calculateTimeSinceStart:n,isAnimationComplete:p,updatePlayState:q};j.Kapi=h},A=function(j,c){function f(a,b){var g,k,h;h=a._timelinePropertyCacheIndex;
22 22
 k=h.length;for(g=1;g<k;g++)if(h[g]>=b)return g-1;return-1}function l(a){i.each(a._propertyTracks,function(b,g){a._propertyTracks[g]=i.sortBy(a._propertyTracks[g],function(a){return a.millisecond})})}function n(a){i.each(a._timelinePropertyCaches,function(b,g){var k={};i.each(a._propertyTracks,function(a,b){var e=null;i.find(a,function(a){a.millisecond>g&&(k[b]=e);e=a;return!!k[b]})});i.defaults(b,k)})}function p(a){i.each(a._propertyTracks,function(a){i.each(a,function(g,k){g.linkToNext(a[k+1])})})}
23 23
 function q(a,b,g){return i.find(a._propertyTracks[b],function(a){return a.millisecond===g})}function m(a,b,g,k){var h=i.keys(a._propertyTracks),d=i.keys(b),h=i.difference(h,d),e={};i.each(h,function(b){var d;d=a._propertyTracks[b].slice(0).reverse();i.each(d,function(a){a.millisecond<k&&!e[b]&&(e[b]={value:a.value,easing:a.easing})})});i.each(e,function(a,d){b[d]=a.value;g[d]=a.easing})}var e,r,o,i=c&&c.underscore?c.underscore:j._,s=c&&c.Tweenable?c.Tweenable:j.Tweenable;e=j.Kapi;r=0;e.Actor=function(a){a=
24  
-a||{};this.constructor.call(this);i.extend(this,{_data:{},_propertyTracks:{},_timelinePropertyCaches:{},_timelinePropertyCacheIndex:[],_keyframeProperties:{},_isShowing:!1,_isPersisting:!1,id:r++,setup:a.setup||e.util.noop,draw:a.draw||e.util.noop,teardown:a.teardown||e.util.noop});a.context&&this.context(opt_context);return this};o=function(){};o.prototype=s.prototype;e.Actor.prototype=new o;e.Actor.prototype.context=function(a){if(a)this._context=a;return this._context};e.Actor.prototype.keyframe=
  24
+a||{};this.constructor.call(this);i.extend(this,{_data:{},_propertyTracks:{},_timelinePropertyCaches:{},_timelinePropertyCacheIndex:[],_keyframeProperties:{},_isShowing:!1,_isPersisting:!1,id:r++,setup:a.setup||e.util.noop,render:a.render||e.util.noop,teardown:a.teardown||e.util.noop});a.context&&this.context(opt_context);return this};o=function(){};o.prototype=s.prototype;e.Actor.prototype=new o;e.Actor.prototype.context=function(a){if(a)this._context=a;return this._context};e.Actor.prototype.keyframe=
25 25
 function(a,b,g){var k,g=g||"linear";"string"===typeof g&&(k=g,g={},i.each(b,function(a,b){g[b]=k}));i.each(b,function(a,b){g[b]=g[b]||"linear"});m(this,b,g,a);i.each(b,function(b,d){var k;k=new e.KeyframeProperty(this,a,d,b,g[d]);this._keyframeProperties[k.id]=k;this._propertyTracks[d]||(this._propertyTracks[d]=[]);this._propertyTracks[d].push(k);l(this)},this);this.kapi._recalculateAnimationLength();this.invalidatePropertyCache();return this};e.Actor.prototype.getKeyframeProperty=function(a,b){if(this._propertyTracks[a]&&
26 26
 this._propertyTracks[a][b])return this._propertyTracks[a][b]};e.Actor.prototype.modifyKeyframeProperty=function(a,b,g){this._propertyTracks[a]&&this._propertyTracks[a][b]&&this._propertyTracks[a][b].modifyWith(g);l(this);this.invalidatePropertyCache();return this};e.Actor.prototype.getTrackNames=function(){return i.keys(this._propertyTracks)};e.Actor.prototype.getTrackLength=function(a){return!this._propertyTracks[a]?void 0:this._propertyTracks[a].length};e.Actor.prototype.copyProperties=function(a,
27 27
 b){var g,k;g={};k={};i.each(this._propertyTracks,function(a,d){var e;if(e=q(this,d,b))g[d]=e.value,k[d]=e.easing},this);this.keyframe(a,g,k);return this};e.Actor.prototype.wait=function(a){var b=this.getEnd();if(a<=b)return this;this.copyProperties(a,b);return this};e.Actor.prototype.getStart=function(){var a=[];i.each(this._propertyTracks,function(b){b.length&&a.push(b[0].millisecond)});0===a.length&&(a=[0]);return Math.min.apply(Math,a)};e.Actor.prototype.getEnd=function(){var a=0;i.each(this._propertyTracks,
@@ -34,8 +34,8 @@ function(c,f,m,e,j){this.id=l.uniqueId("keyframeProperty_");this.ownerActor=c;th
34 34
 m,e;f={};m={};this.nextProperty?(f[this.name]=this.value,m[this.name]=this.nextProperty.value,e=this.nextProperty.millisecond-this.millisecond,c=(c-this.millisecond)/e,f=n.util.interpolate(f,m,c,this.nextProperty.easing)[this.name]):f=null;return f};f.KeyframeProperty.prototype.exportPropertyData=function(){return{id:this.id,millisecond:this.millisecond,name:this.name,value:this.value,easing:this.easing}}},u=function(j,c){function f(c,f,e){"undefined"!==typeof e&&(c[f]=e,c.style[f]=e+"px");return c[f]}
35 35
 function l(){this.config.clearOnUpdate&&this.canvasClear()}var n=j.Kapi,p=c&&c.underscore?c.underscore:j._;n.prototype._contextInitHook.canvas=function(){this.config.context&&"CANVAS"===this.config.context.nodeName&&(p.each(["Height","Width"],function(c){var f=c.toLowerCase();this.config[f]&&(this["canvas"+c](this.config[f]),delete this.config[c])},this),this.bind("onBeforeDraw",p.bind(l,this)))};n.prototype.canvasHeight=function(c){return f(this.context,"height",c)};n.prototype.canvasWidth=function(c){return f(this.context,
36 36
 "width",c)};n.prototype.canvasClear=function(){this.canvasContext().clearRect(0,0,this.canvasWidth(),this.canvasHeight());return this};n.prototype.canvasContext=function(){return this.context.getContext("2d")}},v=function(j){function c(){}var f=j.Kapi;c.prototype=f.Actor.prototype;f.CanvasActor=function(c){f.Actor.call(this,c);return this};f.CanvasActor.prototype=new c;f.CanvasActor.prototype.context=function(c){if(c)this._context=c;return this._context&&this._context.getContext("2d")}},w=function(j,
37  
-c){function f(){}var l=j.Kapi,n=c&&c.underscore?c.underscore:j._,p=["transform","webkitTransform","MozTransform","oTransform","msTransform"];l.DOMActor=function(c){l.Actor.call(this);this._context=c;this._context.classList.add(this.getCSSName());delete this.draw;this.show=function(c){l.Actor.prototype.show.call(this,c);this._context.style.display="block"};this.hide=function(c){l.Actor.prototype.hide.call(this,c);this._context.style.display="none"};return this};f.prototype=l.Actor.prototype;l.DOMActor.prototype=
38  
-new f;f.prototype.draw=function(c,f){var e;e=!1;n.each(f,function(f,j){e=!0;"transform"===j?n.each(p,function(e){c.style[e]=f},this):c.style[j]=f},this);e?this.show():this.hide()};f.prototype.getCSSName=function(){return"actor-"+this.id}},x=function(j,c,f){function l(c){var a=["{"],b;e.each(c.get(),function(c,e){b=c;var f=e;"transform"===e&&(f=q);a.push(f+":"+b+";")});a.push("}");return a.join("")}function n(c,a,b){var b=b||["w3"],g=[];e.each(b,function(b){b=i(r,[m[b],a,c]).replace(RegExp(q,"g"),
  37
+c){function f(){}var l=j.Kapi,n=c&&c.underscore?c.underscore:j._,p=["transform","webkitTransform","MozTransform","oTransform","msTransform"];l.DOMActor=function(c){l.Actor.call(this);this._context=c;this._context.classList.add(this.getCSSName());delete this.render;this.show=function(c){l.Actor.prototype.show.call(this,c);this._context.style.display="block"};this.hide=function(c){l.Actor.prototype.hide.call(this,c);this._context.style.display="none"};return this};f.prototype=l.Actor.prototype;l.DOMActor.prototype=
  38
+new f;f.prototype.render=function(c,f){var e;e=!1;n.each(f,function(f,j){e=!0;"transform"===j?n.each(p,function(e){c.style[e]=f},this):c.style[j]=f},this);e?this.show():this.hide()};f.prototype.getCSSName=function(){return"actor-"+this.id}},x=function(j,c,f){function l(c){var a=["{"],b;e.each(c.get(),function(c,e){b=c;var f=e;"transform"===e&&(f=q);a.push(f+":"+b+";")});a.push("}");return a.join("")}function n(c,a,b){var b=b||["w3"],g=[];e.each(b,function(b){b=i(r,[m[b],a,c]).replace(RegExp(q,"g"),
39 39
 m[b]+"transform");g.push(b)});return g.join("\n")}function p(c,a){var a=a||["w3"],b=[],g;e.each(a,function(a){var e=[],a=m[a],d=c.getStart(),f=c.getEnd()-d,f=i("  %sanimation-duration: %sms;",[a,f]);e.push(f);f=i("  %sanimation-name: %s;",[a,c.getCSSName()+"-keyframes"]);e.push(f);d=i("  %sanimation-delay: %sms;",[a,d]);e.push(d);a=i("  %sanimation-fill-mode: forwards;",[a]);e.push(a);g=e.join("\n");b.push(g)});return i(o,[c.getCSSName(),b.join("\n")])}var q="TRANSFORM",m=j.util.VENDOR_PREFIXES={microsoft:"-ms-",
40 40
 mozilla:"-moz-",opera:"-o-",w3:"",webkit:"-webkit-"},e=f&&f.underscore?f.underscore:c._,r="@%skeyframes %s-keyframes {\n%s\n}",o=".%s {\n  position: absolute;\n%s\n}";c.Kapi.prototype.toCSS=function(c){var c=c||{},a=[],b=this.getActorIds();e.each(b,function(b){a.push(this.getActor(b).toCSS(c))},this);return a.join("\n")};c.Kapi.Actor.prototype.toCSS=function(c){var c=c||{},a=[],b=c.granularity||100,e=p(this,c.vendors);a.push(e);var e=this.getLength(),f=this.getStart(),h=[],d,b=e/b,i=e/100,j=f+b,m=
41 41
 e+f-b;this.calculatePosition(f);for(h.push("  from "+l(this));j<=m;j+=b)this.calculatePosition(j),d=(j-f)/i,d=+d.toFixed(2),d+="% ",h.push("  "+d+l(this));this.calculatePosition(e+f);h.push("  to "+l(this));e=h.join("\n");c=n(e,this.getCSSName(),c.vendors);a.push(c);return a.join("\n")};var i=j.util.printf=function(c,a){var b=c;e.each(a,function(a){b=b.replace("%s",a)});return b}},y=function(j,c){var f=c?{}:j;z(f,c);A(f,c);B(f,c);"function"===typeof w&&w(f,c);"function"===typeof x&&x(f.Kapi,f,c);
2  docs/api.kapi.md
Source Rendered
@@ -178,7 +178,7 @@ __[Example](examples/framerate.html)__
178 178
 Kapi.prototype.render (millisecond)
179 179
 ````
180 180
 
181  
-Calculate the positions for all `Actor`s at `millisecond`, and then draw them.  You can define any millisecond in the animation to render, so long as it is less than the length of the animation (see `animationLength`).
  181
+Calculate the positions for all `Actor`s at `millisecond`, and then render them.  You can define any millisecond in the animation to render, so long as it is less than the length of the animation (see `animationLength`).
182 182
 
183 183
 __[Example](examples/render.html)__
184 184
 
8  docs/api.kapi_actor.md
Source Rendered
@@ -5,7 +5,7 @@
5 5
  * @param {Object=} opt_config
6 6
  *   @param {Object=} context
7 7
  *   @param {function=} setup
8  
- *   @param {function(Object, Object)=} draw
  8
+ *   @param {function(Object, Object)=} render
9 9
  *   @param {function=} teardown
10 10
  * @constructor
11 11
  */
@@ -18,7 +18,7 @@ Valid properties of `opt_config` (you can omit the ones you don't need):
18 18
 
19 19
 * __context__: The context that this Actor gets rendered to.  If omitted, this Actor gets the `Kapi` instance's rendering context when it is added to an animation.
20 20
 * __setup__: A function that gets called when the `Actor` is added to a `Kapi` instance (with `addActor()`).
21  
-* __draw__: A function that gets called every frame that the actor is rendered in.  It receives two parameters:  A reference to a `<canvas>` context, and an Object containing the current state properties.  _This method should render the state properties to the screen with the `<canvas>` context._
  21
+* __render__: A function that gets called every frame that the actor is rendered in.  It receives two parameters:  A reference to a `<canvas>` context, and an Object containing the current state properties.  _This method should render the state properties to the screen with the `<canvas>` context._
22 22
 * __teardown__: A function that gets called when the `Actor` is removed from the animation (with `removeActor()`).
23 23
 
24 24
 `Kapi.Actor` does _not_ render to any context.  It is a base class.  Use the [`Kapi.CanvasActor`](../ext/canvas) [`Kapi.DOMActor`](../ext/dom) subclasses to render to the screen.
@@ -300,7 +300,7 @@ Move this `Actor` to a different layer in the `Kapi` instance that it belongs to
300 300
 Kapi.Actor.prototype.show (alsoPersist)
301 301
 ````
302 302
 
303  
-Tell the `Actor` to draw itself for the next rendered frame.  If `alsoPersist` is true, it continues to draw for every frame until `hide(true)` is called.
  303
+Tell the `Actor` to render itself for the next rendered frame.  If `alsoPersist` is true, it continues to render for every frame until `hide(true)` is called.
304 304
 
305 305
 
306 306
 ### hide
@@ -313,7 +313,7 @@ Tell the `Actor` to draw itself for the next rendered frame.  If `alsoPersist` i
313 313
 Kapi.Actor.prototype.hide (alsoUnpersist)
314 314
 ````
315 315
 
316  
-Tell the `Actor` not to draw itself for the next frame.  If `alsoUnpersist` is true, this undoes the persistence effect of `show(true)`.
  316
+Tell the `Actor` not to render itself for the next frame.  If `alsoUnpersist` is true, this undoes the persistence effect of `show(true)`.
317 317
 
318 318
 
319 319
 ### isShowing
2  docs/examples/actor.html
@@ -23,7 +23,7 @@
23 23
             'Hello!  I will be called when the actor is added to the animation!');
24 24
         },
25 25
 
26  
-        'draw': function (canvas_context, state) {
  26
+        'render': function (canvas_context, state) {
27 27
           canvas_context.beginPath();
28 28
             canvas_context.arc(
29 29
               state.x || 0,
2  docs/examples/actor_count.html
@@ -19,7 +19,7 @@
19 19
 
20 20
       function getActorInstance () {
21 21
         return new Kapi.CanvasActor({
22  
-          'draw': function (canvas_context, state) {
  22
+          'render': function (canvas_context, state) {
23 23
             canvas_context.beginPath();
24 24
               canvas_context.arc(
25 25
                 state.x || 0,
2  docs/examples/add_actor.html
@@ -18,7 +18,7 @@
18 18
       });
19 19
 
20 20
       var actor = new Kapi.CanvasActor({
21  
-        'draw': function (canvas_context, state) {
  21
+        'render': function (canvas_context, state) {
22 22
           canvas_context.beginPath();
23 23
             canvas_context.arc(
24 24
               state.x || 0,
2  docs/examples/animation_length.html
@@ -18,7 +18,7 @@
18 18
       });
19 19
 
20 20
       var actor = new Kapi.CanvasActor({
21  
-        'draw': function (canvas_context, state) {
  21
+        'render': function (canvas_context, state) {
22 22
           canvas_context.beginPath();
23 23
             canvas_context.arc(
24 24
               state.x || 0,
2  docs/examples/bind.html
@@ -18,7 +18,7 @@
18 18
       });
19 19
 
20 20
       var actor = new Kapi.CanvasActor({
21  
-        'draw': function (canvas_context, state) {
  21
+        'render': function (canvas_context, state) {
22 22
           canvas_context.beginPath();
23 23
             canvas_context.arc(
24 24
               state.x || 0,
4  docs/examples/calculate_actor_positions.html
@@ -18,7 +18,7 @@
18 18
       });
19 19
 
20 20
       var actor = new Kapi.CanvasActor({
21  
-        'draw': function (canvas_context, state) {
  21
+        'render': function (canvas_context, state) {
22 22
           canvas_context.beginPath();
23 23
             canvas_context.arc(
24 24
               state.x || 0,
@@ -40,7 +40,7 @@
40 40
         .keyframe(0,    { x: 50,  y: 50 })
41 41
         .keyframe(1000, { x: 200, y: 150 });
42 42
 
43  
-      // This operation doesn't actually draw anything.  It just calls
  43
+      // This operation doesn't actually render anything.  It just calls
44 44
       // calculatePosition on all of the actors.
45 45
       kapi.calculateActorPositions(500);
46 46
     </script>
2  docs/examples/draw.html
@@ -18,7 +18,7 @@
18 18
       });
19 19
 
20 20
       var actor = new Kapi.CanvasActor({
21  
-        'draw': function (canvas_context, state) {
  21
+        'render': function (canvas_context, state) {
22 22
           canvas_context.beginPath();
23 23
             canvas_context.arc(
24 24
               state.x || 0,
2  docs/examples/export_timeline.html
@@ -18,7 +18,7 @@
18 18
       });
19 19
 
20 20
       var actor = new Kapi.CanvasActor({
21  
-        'draw': function (canvas_context, state) {
  21
+        'render': function (canvas_context, state) {
22 22
           canvas_context.beginPath();
23 23
             canvas_context.arc(
24 24
               state.x || 0,
2  docs/examples/framerate.html
@@ -18,7 +18,7 @@
18 18
       });
19 19
 
20 20
       var actor = new Kapi.CanvasActor({
21  
-        'draw': function (canvas_context, state) {
  21
+        'render': function (canvas_context, state) {
22 22
           canvas_context.beginPath();
23 23
             canvas_context.arc(
24 24
               state.x || 0,
2  docs/examples/get_actor.html
@@ -18,7 +18,7 @@
18 18
       });
19 19
 
20 20
       var actor = new Kapi.CanvasActor({
21  
-        'draw': function (canvas_context, state) {
  21
+        'render': function (canvas_context, state) {
22 22
           canvas_context.beginPath();
23 23
             canvas_context.arc(
24 24
               state.x || 0,
2  docs/examples/get_actor_ids.html
@@ -18,7 +18,7 @@
18 18
       });
19 19
 
20 20
       var actor = new Kapi.CanvasActor({
21  
-        'draw': function (canvas_context, state) {
  21
+        'render': function (canvas_context, state) {
22 22
           canvas_context.beginPath();
23 23
             canvas_context.arc(
24 24
               state.x || 0,
2  docs/examples/get_all_actors.html
@@ -18,7 +18,7 @@
18 18
       });
19 19
 
20 20
       var actor = new Kapi.CanvasActor({
21  
-        'draw': function (canvas_context, state) {
  21
+        'render': function (canvas_context, state) {
22 22
           canvas_context.beginPath();
23 23
             canvas_context.arc(
24 24
               state.x || 0,
2  docs/examples/is_playing.html
@@ -18,7 +18,7 @@
18 18
       });
19 19
 
20 20
       var actor = new Kapi.CanvasActor({
21  
-        'draw': function (canvas_context, state) {
  21
+        'render': function (canvas_context, state) {
22 22
           canvas_context.beginPath();
23 23
             canvas_context.arc(
24 24
               state.x || 0,
2  docs/examples/last_position_rendered.html
@@ -18,7 +18,7 @@
18 18
       });
19 19
 
20 20
       var actor = new Kapi.CanvasActor({
21  
-        'draw': function (canvas_context, state) {
  21
+        'render': function (canvas_context, state) {
22 22
           canvas_context.beginPath();
23 23
             canvas_context.arc(
24 24
               state.x || 0,
4  docs/examples/move_actor_to_layer.html
@@ -18,7 +18,7 @@
18 18
       });
19 19
 
20 20
       var actor1 = new Kapi.CanvasActor({
21  
-        'draw': function (canvas_context, state) {
  21
+        'render': function (canvas_context, state) {
22 22
           canvas_context.beginPath();
23 23
             canvas_context.arc(
24 24
               state.x || 0,
@@ -36,7 +36,7 @@
36 36
       });
37 37
 
38 38
       var actor2 = new Kapi.CanvasActor({
39  
-        'draw': function (canvas_context, state) {
  39
+        'render': function (canvas_context, state) {
40 40
           canvas_context.beginPath();
41 41
             canvas_context.arc(
42 42
               state.x || 0,
2  docs/examples/pause.html
@@ -18,7 +18,7 @@
18 18
       });
19 19
 
20 20
       var actor = new Kapi.CanvasActor({
21  
-        'draw': function (canvas_context, state) {
  21
+        'render': function (canvas_context, state) {
22 22
           canvas_context.beginPath();
23 23
             canvas_context.arc(
24 24
               state.x || 0,
2  docs/examples/play.html
@@ -18,7 +18,7 @@
18 18
       });
19 19
 
20 20
       var actor = new Kapi.CanvasActor({
21  
-        'draw': function (canvas_context, state) {
  21
+        'render': function (canvas_context, state) {
22 22
           canvas_context.beginPath();
23 23
             canvas_context.arc(
24 24
               state.x || 0,
2  docs/examples/play_from.html
@@ -18,7 +18,7 @@
18 18
       });
19 19
 
20 20
       var actor = new Kapi.CanvasActor({
21  
-        'draw': function (canvas_context, state) {
  21
+        'render': function (canvas_context, state) {
22 22
           canvas_context.beginPath();
23 23
             canvas_context.arc(
24 24
               state.x || 0,
2  docs/examples/play_from_current.html
@@ -18,7 +18,7 @@
18 18
       });
19 19
 
20 20
       var actor = new Kapi.CanvasActor({
21  
-        'draw': function (canvas_context, state) {
  21
+        'render': function (canvas_context, state) {
22 22
           canvas_context.beginPath();
23 23
             canvas_context.arc(
24 24
               state.x || 0,
2  docs/examples/redraw.html
@@ -18,7 +18,7 @@
18 18
       });
19 19
 
20 20
       var actor = new Kapi.CanvasActor({
21  
-        'draw': function (canvas_context, state) {
  21
+        'render': function (canvas_context, state) {
22 22
           canvas_context.beginPath();
23 23
             canvas_context.arc(
24 24
               state.x || 0,
2  docs/examples/remove_actor.html
@@ -18,7 +18,7 @@
18 18
       });
19 19
 
20 20
       var actor = new Kapi.CanvasActor({
21  
-        'draw': function (canvas_context, state) {
  21
+        'render': function (canvas_context, state) {
22 22
           canvas_context.beginPath();
23 23
             canvas_context.arc(
24 24
               state.x || 0,
2  docs/examples/render.html
@@ -18,7 +18,7 @@
18 18
       });
19 19
 
20 20
       var actor = new Kapi.CanvasActor({
21  
-        'draw': function (canvas_context, state) {
  21
+        'render': function (canvas_context, state) {
22 22
           canvas_context.beginPath();
23 23
             canvas_context.arc(
24 24
               state.x || 0,
4  docs/examples/set_order_function.html
@@ -18,7 +18,7 @@
18 18
       });
19 19
 
20 20
       var actor1 = new Kapi.CanvasActor({
21  
-        'draw': function (canvas_context, state) {
  21
+        'render': function (canvas_context, state) {
22 22
           canvas_context.beginPath();
23 23
             canvas_context.arc(
24 24
               state.x || 0,
@@ -36,7 +36,7 @@
36 36
       });
37 37
 
38 38
       var actor2 = new Kapi.CanvasActor({
39  
-        'draw': function (canvas_context, state) {
  39
+        'render': function (canvas_context, state) {
40 40
           canvas_context.beginPath();
41 41
             canvas_context.arc(
42 42
               state.x || 0,
2  docs/examples/stop.html
@@ -18,7 +18,7 @@
18 18
       });
19 19
 
20 20
       var actor = new Kapi.CanvasActor({
21  
-        'draw': function (canvas_context, state) {
  21
+        'render': function (canvas_context, state) {
22 22
           canvas_context.beginPath();
23 23
             canvas_context.arc(
24 24
               state.x || 0,
2  docs/examples/unbind.html
@@ -18,7 +18,7 @@
18 18
       });
19 19
 
20 20
       var actor = new Kapi.CanvasActor({
21  
-        'draw': function (canvas_context, state) {
  21
+        'render': function (canvas_context, state) {
22 22
           canvas_context.beginPath();
23 23
             canvas_context.arc(
24 24
               state.x || 0,
4  docs/examples/unset_order_function.html
@@ -18,7 +18,7 @@
18 18
       });
19 19
 
20 20
       var actor1 = new Kapi.CanvasActor({
21  
-        'draw': function (canvas_context, state) {
  21
+        'render': function (canvas_context, state) {
22 22
           canvas_context.beginPath();
23 23
             canvas_context.arc(
24 24
               state.x || 0,
@@ -36,7 +36,7 @@
36 36
       });
37 37
 
38 38
       var actor2 = new Kapi.CanvasActor({
39  
-        'draw': function (canvas_context, state) {
  39
+        'render': function (canvas_context, state) {
40 40
           canvas_context.beginPath();
41 41
             canvas_context.arc(
42 42
               state.x || 0,
12  docs/getting_started.md
Source Rendered
@@ -28,7 +28,7 @@ var actor = new Kapi.CanvasActor({
28 28
 
29 29
   // Called every frame.  Receives a reference to the canvas context, and the
30 30
   // Actor's state.
31  
-  'draw': function (context, state) {
  31
+  'render': function (context, state) {
32 32
 
33 33
   },
34 34
 
@@ -40,7 +40,7 @@ var actor = new Kapi.CanvasActor({
40 40
 ````
41 41
 
42 42
 All of the methods described above are optional, but you should at least have a
43  
-`draw` method.  Continuing from before, here's a simple implementation for a
  43
+`render` method.  Continuing from before, here's a simple implementation for a
44 44
 canvas actor that we can use as an example:
45 45
 
46 46
 ````javascript
@@ -51,7 +51,7 @@ var canvas = document.getElementsByTagName('canvas')[0],
51 51
 
52 52
 var actor = new Kapi.CanvasActor({
53 53
   // Draws a circle.
54  
-  'draw': function (context, state) {
  54
+  'render': function (context, state) {
55 55
     context.beginPath();
56 56
     context.arc(
57 57
       state.x || 50,
@@ -67,9 +67,9 @@ var actor = new Kapi.CanvasActor({
67 67
 });
68 68
 ````
69 69
 
70  
-The Actor's `draw` method can do whatever you want it to, really.  The idea is
  70
+The Actor's `render` method can do whatever you want it to, really.  The idea is
71 71
 that the `context` and `state` parameters are computed by the `Kapi` Model, and
72  
-then expressed visually on the `<canvas>` by the Actor's `draw` method.
  72
+then expressed visually on the `<canvas>` by the Actor's `render` method.
73 73
 `setup` and `teardown` are methods that get called when the Actor is added and
74 74
 removed from the Kapi instance.
75 75
 
@@ -167,7 +167,7 @@ Copy/paste/save this onto your machine to see a simple Rekapi animation:
167 167
 
168 168
   var actor = new Kapi.CanvasActor({
169 169
     // Draws a circle.
170  
-    'draw': function (context, state) {
  170
+    'render': function (context, state) {
171 171
       context.beginPath();
172 172
       context.arc(
173 173
         state.x || 50,
6  docs/upgrading.md
Source Rendered
... ...
@@ -1,3 +1,9 @@
  1
+# Upgrading to Rekapi 0.8.1
  2
+
  3
+The `draw` method that gets passed into the `Kapi.Actor` constructor (and its
  4
+subclasses) is now called `render`.  __Using `draw` instead of `render` will
  5
+break.__
  6
+
1 7
 # Upgrading to Rekapi 0.8.0
2 8
 
3 9
 The API changed a bit for 0.8.0, as a result of issue #9.  Upgrading shouldn't
4  ext/canvas/README.md
Source Rendered
@@ -7,7 +7,7 @@ You can use Rekapi to render to `<canvas>`.
7 7
  * @param {Object=} opt_config
8 8
  *   @param {Object=} context
9 9
  *   @param {function=} setup
10  
- *   @param {function(CanvasRenderingContext2D, Object)=} draw
  10
+ *   @param {function(CanvasRenderingContext2D, Object)=} render
11 11
  *   @param {function=} teardown
12 12
  * @constructor
13 13
  * @extends Kapi.Actor
@@ -27,7 +27,7 @@ Kapi.prototype.canvasContext ()
27 27
 ````
28 28
 
29 29
 Return the 2d context of the `<canvas>`.  This is needed for any and all cavnas
30  
-drawing operations - it is also provided to an `Actor`'s `draw` method.  See
  30
+rendering operations - it is also provided to an `Actor`'s `render` method.  See
31 31
 the [MDN](https://developer.mozilla.org/en/Drawing_Graphics_with_Canvas) for
32 32
 more info on the `<canvas>` context.
33 33
 
8  ext/dom/rekapi.dom.actor.js
@@ -33,9 +33,9 @@ var rekapiDOM = function (global, deps) {
33 33
     this._context = element;
34 34
     this._context.classList.add(this.getCSSName());
35 35
 
36  
-    // Remove the instance's draw method to allow the
37  
-    // ActorMethods.prototype.draw method to be accessible.
38  
-    delete this.draw;
  36
+    // Remove the instance's render method to allow the
  37
+    // ActorMethods.prototype.render method to be accessible.
  38
+    delete this.render;
39 39
 
40 40
     this.show = function (alsoPersist) {
41 41
       gk.Actor.prototype.show.call(this, alsoPersist);
@@ -60,7 +60,7 @@ var rekapiDOM = function (global, deps) {
60 60
    * @param {HTMLElement} context
61 61
    * @param {Object} state
62 62
    */
63  
-  DOMActorMethods.prototype.draw = function (context, state) {
  63
+  DOMActorMethods.prototype.render = function (context, state) {
64 64
     var isShowing;
65 65
 
66 66
     isShowing = false;
2  lib/ease.js
@@ -131,7 +131,7 @@ $(function () {
131 131
       ,'width': 500
132 132
     })
133 133
     ,circle = new Kapi.CanvasActor({
134  
-      'draw': function (canvas_context, state) {
  134
+      'render': function (canvas_context, state) {
135 135
 
136 136
         if (isPathShowing && prerenderedPath) {
137 137
           canvas_context.drawImage(prerenderedPath, 0, 0);
2  sandbox.html
@@ -69,7 +69,7 @@
69 69
           ,'width': 400
70 70
         })
71 71
       ,actor = new Kapi.CanvasActor({
72  
-        'draw': function (canvas_context, state) {
  72
+        'render': function (canvas_context, state) {
73 73
           canvas_context.beginPath();
74 74
             canvas_context.arc(
75 75
               state.x || 0,
2  src/rekapi.actor.js
@@ -174,7 +174,7 @@ var rekapiActor = function (global, deps) {
174 174
       ,'_isPersisting': false
175 175
       ,'id': getUniqueActorId()
176 176
       ,'setup': opt_config.setup || gk.util.noop
177  
-      ,'draw': opt_config.draw || gk.util.noop
  177
+      ,'render': opt_config.render || gk.util.noop
178 178
       ,'teardown': opt_config.teardown || gk.util.noop
179 179
     });
180 180
 
2  src/rekapi.core.js
@@ -565,7 +565,7 @@ var rekapiCore = function (global, deps) {
565 565
       currentActor = this._actors[drawOrder[i]];
566 566
       if (currentActor.isShowing()) {
567 567
         canvas_context = currentActor.context();
568  
-        currentActor.draw(canvas_context, currentActor.get());
  568
+        currentActor.render(canvas_context, currentActor.get());
569 569
       }
570 570
     }
571 571
 
3  tests/test.doesitlookright.html
@@ -9,7 +9,6 @@
9 9
   <script src="../src/rekapi.core.js"></script>
10 10
   <script src="../src/rekapi.actor.js"></script>
11 11
   <script src="../src/rekapi.keyframeprops.js"></script>
12  
-  <script src="../ext/dom/rekapi.dom.js"></script>
13 12
   <script src="../ext/canvas/rekapi.canvas.context.js"></script>
14 13
   <script src="../ext/canvas/rekapi.canvas.actor.js"></script>
15 14
   <script src="../src/rekapi.init.js"></script>
@@ -26,7 +25,7 @@
26 25
     var actor;
27 26
 
28 27
     actor = new Kapi.CanvasActor({
29  
-      'draw': function (canvas_context, state) {
  28
+      'render': function (canvas_context, state) {
30 29
         canvas_context.beginPath();
31 30
           canvas_context.arc(
32 31
             state.x || 0,
2  version.txt
... ...
@@ -1 +1 @@
1  
-0.8.0
  1
+0.8.1

0 notes on commit c617d72

Please sign in to comment.
Something went wrong with that request. Please try again.