<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[196224] trunk/PerformanceTests</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/196224">196224</a></dd>
<dt>Author</dt> <dd>jonlee@apple.com</dd>
<dt>Date</dt> <dd>2016-02-06 15:31:51 -0800 (Sat, 06 Feb 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Refactor helper methods for getting random values for a stage.

Instead of requiring a Stage instance, just attach it to the Stage object.

* Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js:
* Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js:
* Animometer/tests/bouncing-particles/resources/bouncing-particles.js:
* Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js:
* Animometer/tests/master/resources/canvas-tests.js:
* Animometer/tests/master/resources/particles.js:
* Animometer/tests/misc/resources/canvas-electrons.js:
* Animometer/tests/misc/resources/canvas-stars.js:
* Animometer/tests/misc/resources/compositing-transforms.js:
* Animometer/tests/resources/main.js:
* Animometer/tests/simple/resources/simple-canvas-paths.js:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkPerformanceTestsAnimometertestsbouncingparticlesresourcesbouncingcanvasshapesjs">trunk/PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js</a></li>
<li><a href="#trunkPerformanceTestsAnimometertestsbouncingparticlesresourcesbouncingcssshapesjs">trunk/PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js</a></li>
<li><a href="#trunkPerformanceTestsAnimometertestsbouncingparticlesresourcesbouncingparticlesjs">trunk/PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-particles.js</a></li>
<li><a href="#trunkPerformanceTestsAnimometertestsbouncingparticlesresourcesbouncingsvgshapesjs">trunk/PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js</a></li>
<li><a href="#trunkPerformanceTestsAnimometertestsmasterresourcescanvastestsjs">trunk/PerformanceTests/Animometer/tests/master/resources/canvas-tests.js</a></li>
<li><a href="#trunkPerformanceTestsAnimometertestsmasterresourcesparticlesjs">trunk/PerformanceTests/Animometer/tests/master/resources/particles.js</a></li>
<li><a href="#trunkPerformanceTestsAnimometertestsmiscresourcescanvaselectronsjs">trunk/PerformanceTests/Animometer/tests/misc/resources/canvas-electrons.js</a></li>
<li><a href="#trunkPerformanceTestsAnimometertestsmiscresourcescanvasstarsjs">trunk/PerformanceTests/Animometer/tests/misc/resources/canvas-stars.js</a></li>
<li><a href="#trunkPerformanceTestsAnimometertestsmiscresourcescompositingtransformsjs">trunk/PerformanceTests/Animometer/tests/misc/resources/compositing-transforms.js</a></li>
<li><a href="#trunkPerformanceTestsAnimometertestsresourcesmainjs">trunk/PerformanceTests/Animometer/tests/resources/main.js</a></li>
<li><a href="#trunkPerformanceTestsAnimometertestssimpleresourcessimplecanvaspathsjs">trunk/PerformanceTests/Animometer/tests/simple/resources/simple-canvas-paths.js</a></li>
<li><a href="#trunkPerformanceTestsChangeLog">trunk/PerformanceTests/ChangeLog</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkPerformanceTestsAnimometertestsbouncingparticlesresourcesbouncingcanvasshapesjs"></a>
<div class="modfile"><h4>Modified: trunk/PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js (196223 => 196224)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js        2016-02-06 23:18:47 UTC (rev 196223)
+++ trunk/PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js        2016-02-06 23:31:51 UTC (rev 196224)
</span><span class="lines">@@ -5,8 +5,8 @@
</span><span class="cx">     {
</span><span class="cx">         BouncingCanvasParticle.call(this, stage, stage.shape);
</span><span class="cx">         this._fill = stage.fill;
</span><del>-        this._color0 = stage.randomColor();
-        this._color1 = stage.randomColor();
</del><ins>+        this._color0 = Stage.randomColor();
+        this._color1 = Stage.randomColor();
</ins><span class="cx">     }, {
</span><span class="cx"> 
</span><span class="cx">     _applyFill: function()
</span></span></pre></div>
<a id="trunkPerformanceTestsAnimometertestsbouncingparticlesresourcesbouncingcssshapesjs"></a>
<div class="modfile"><h4>Modified: trunk/PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js (196223 => 196224)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js        2016-02-06 23:18:47 UTC (rev 196223)
+++ trunk/PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js        2016-02-06 23:31:51 UTC (rev 196224)
</span><span class="lines">@@ -10,11 +10,11 @@
</span><span class="cx">         switch (stage.fill) {
</span><span class="cx">         case &quot;solid&quot;:
</span><span class="cx">         default:
</span><del>-            this.element.style.backgroundColor = stage.randomColor();
</del><ins>+            this.element.style.backgroundColor = Stage.randomColor();
</ins><span class="cx">             break;
</span><span class="cx"> 
</span><span class="cx">         case &quot;gradient&quot;:
</span><del>-            this.element.style.background = &quot;linear-gradient(&quot; + stage.randomColor() + &quot;, &quot; + stage.randomColor() + &quot;)&quot;;
</del><ins>+            this.element.style.background = &quot;linear-gradient(&quot; + Stage.randomColor() + &quot;, &quot; + Stage.randomColor() + &quot;)&quot;;
</ins><span class="cx">             break;
</span><span class="cx">         }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkPerformanceTestsAnimometertestsbouncingparticlesresourcesbouncingparticlesjs"></a>
<div class="modfile"><h4>Modified: trunk/PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-particles.js (196223 => 196224)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-particles.js        2016-02-06 23:18:47 UTC (rev 196223)
+++ trunk/PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-particles.js        2016-02-06 23:31:51 UTC (rev 196224)
</span><span class="lines">@@ -3,10 +3,10 @@
</span><span class="cx">     this._stageSize = stage.size;
</span><span class="cx">     this.size = stage.particleSize;
</span><span class="cx"> 
</span><del>-    this.position = stage.randomPosition(stage.size.subtract(stage.particleSize));
-    this._angle = stage.randomAngle();
-    this._velocity = stage.randomVelocity(stage.maxVelocity);
-    this.rotater = stage.randomRotater();
</del><ins>+    this.position = Stage.randomPosition(stage.size.subtract(stage.particleSize));
+    this._angle = Stage.randomAngle();
+    this._velocity = Stage.randomVelocity(stage.maxVelocity);
+    this.rotater = Stage.randomRotater();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> BouncingParticle.prototype =
</span></span></pre></div>
<a id="trunkPerformanceTestsAnimometertestsbouncingparticlesresourcesbouncingsvgshapesjs"></a>
<div class="modfile"><h4>Modified: trunk/PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js (196223 => 196224)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js        2016-02-06 23:18:47 UTC (rev 196223)
+++ trunk/PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js        2016-02-06 23:31:51 UTC (rev 196224)
</span><span class="lines">@@ -39,7 +39,7 @@
</span><span class="cx"> 
</span><span class="cx">         case &quot;solid&quot;:
</span><span class="cx">         default:
</span><del>-            this.element.setAttribute(&quot;fill&quot;, stage.randomColor());
</del><ins>+            this.element.setAttribute(&quot;fill&quot;, Stage.randomColor());
</ins><span class="cx">             break;
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="lines">@@ -64,7 +64,7 @@
</span><span class="cx">         var gradient = DocumentExtension.createSvgElement(&quot;linearGradient&quot;, attrs, {}, this._ensureDefsIsCreated());
</span><span class="cx"> 
</span><span class="cx">         for (var i = 0; i &lt; stops; ++i) {
</span><del>-            attrs = { offset: i * 100 / stops + &quot;%&quot;, 'stop-color': this.randomColor() };
</del><ins>+            attrs = { offset: i * 100 / stops + &quot;%&quot;, 'stop-color': Stage.randomColor() };
</ins><span class="cx">             DocumentExtension.createSvgElement(&quot;stop&quot;, attrs, {}, gradient);
</span><span class="cx">         }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkPerformanceTestsAnimometertestsmasterresourcescanvastestsjs"></a>
<div class="modfile"><h4>Modified: trunk/PerformanceTests/Animometer/tests/master/resources/canvas-tests.js (196223 => 196224)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/PerformanceTests/Animometer/tests/master/resources/canvas-tests.js        2016-02-06 23:18:47 UTC (rev 196223)
+++ trunk/PerformanceTests/Animometer/tests/master/resources/canvas-tests.js        2016-02-06 23:31:51 UTC (rev 196224)
</span><span class="lines">@@ -4,11 +4,11 @@
</span><span class="cx"> 
</span><span class="cx"> function CanvasLineSegment(stage)
</span><span class="cx"> {
</span><del>-    var circle = stage.randomInt(0, 2);
</del><ins>+    var circle = Stage.randomInt(0, 2);
</ins><span class="cx">     this._color = [&quot;#e01040&quot;, &quot;#10c030&quot;, &quot;#e05010&quot;][circle];
</span><span class="cx">     this._lineWidth = Math.pow(Math.random(), 12) * 20 + 3;
</span><span class="cx">     this._omega = Math.random() * 3 + 0.2;
</span><del>-    var theta = stage.randomAngle();
</del><ins>+    var theta = Stage.randomAngle();
</ins><span class="cx">     this._cosTheta = Math.cos(theta);
</span><span class="cx">     this._sinTheta = Math.sin(theta);
</span><span class="cx">     this._startX = stage.circleRadius * this._cosTheta + (0.5 + circle) / 3 * stage.size.x;
</span><span class="lines">@@ -36,21 +36,21 @@
</span><span class="cx">     var maxX = 6, maxY = 3;
</span><span class="cx">     var distanceX = stage.size.x / maxX;
</span><span class="cx">     var distanceY = stage.size.y / (maxY + 1);
</span><del>-    var randY = stage.randomInt(0, maxY);
-    var randX = stage.randomInt(0, maxX - 1 * (randY % 2));
</del><ins>+    var randY = Stage.randomInt(0, maxY);
+    var randX = Stage.randomInt(0, maxX - 1 * (randY % 2));
</ins><span class="cx"> 
</span><span class="cx">     this._point = new Point(distanceX * (randX + (randY % 2) / 2), distanceY * (randY + .5));
</span><span class="cx"> 
</span><span class="cx">     this._radius = 20 + Math.pow(Math.random(), 5) * (Math.min(distanceX, distanceY) / 1.8);
</span><del>-    this._startAngle = stage.randomAngle();
-    this._endAngle = stage.randomAngle();
</del><ins>+    this._startAngle = Stage.randomAngle();
+    this._endAngle = Stage.randomAngle();
</ins><span class="cx">     this._omega = (Math.random() - 0.5) * 0.3;
</span><del>-    this._counterclockwise = stage.randomBool();
</del><ins>+    this._counterclockwise = Stage.randomBool();
</ins><span class="cx">     var colors = [&quot;#101010&quot;, &quot;#808080&quot;, &quot;#c0c0c0&quot;];
</span><span class="cx">     colors.push([&quot;#e01040&quot;, &quot;#10c030&quot;, &quot;#e05010&quot;][(randX + Math.ceil(randY / 2)) % 3]);
</span><span class="cx">     this._color = colors[Math.floor(Math.random() * colors.length)];
</span><span class="cx">     this._lineWidth = 1 + Math.pow(Math.random(), 5) * 30;
</span><del>-    this._doStroke = stage.randomInt(0, 3) != 0;
</del><ins>+    this._doStroke = Stage.randomInt(0, 3) != 0;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> CanvasArc.prototype.draw = function(context)
</span></span></pre></div>
<a id="trunkPerformanceTestsAnimometertestsmasterresourcesparticlesjs"></a>
<div class="modfile"><h4>Modified: trunk/PerformanceTests/Animometer/tests/master/resources/particles.js (196223 => 196224)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/PerformanceTests/Animometer/tests/master/resources/particles.js        2016-02-06 23:18:47 UTC (rev 196223)
+++ trunk/PerformanceTests/Animometer/tests/master/resources/particles.js        2016-02-06 23:31:51 UTC (rev 196224)
</span><span class="lines">@@ -1,7 +1,7 @@
</span><span class="cx"> function Particle(stage)
</span><span class="cx"> {
</span><span class="cx">     this.stage = stage;
</span><del>-    this.rotater = this.stage.randomRotater();
</del><ins>+    this.rotater = Stage.randomRotater();
</ins><span class="cx">     this.reset();
</span><span class="cx">     this.move();
</span><span class="cx"> }
</span><span class="lines">@@ -15,9 +15,9 @@
</span><span class="cx">         this.maxPosition = this.stage.size.subtract(this.size);
</span><span class="cx">         this.position = new Point(this.stage.size.x / 2, this.stage.size.y / 4);
</span><span class="cx"> 
</span><del>-        var angle = this.stage.randomInt(0, this.stage.emitSteps) / this.stage.emitSteps * Math.PI * 2 + Date.now()/1000*this.stage.emissionSpin;
</del><ins>+        var angle = Stage.randomInt(0, this.stage.emitSteps) / this.stage.emitSteps * Math.PI * 2 + Date.now()/1000*this.stage.emissionSpin;
</ins><span class="cx">         this._velocity = new Point(Math.sin(angle), Math.cos(angle))
</span><del>-            .multiply(this.stage.random(.8, 1.2));
</del><ins>+            .multiply(Stage.random(.8, 1.2));
</ins><span class="cx">     },
</span><span class="cx"> 
</span><span class="cx">     animate: function(timeDelta)
</span><span class="lines">@@ -81,8 +81,8 @@
</span><span class="cx">     initialize: function(benchmark)
</span><span class="cx">     {
</span><span class="cx">         Stage.prototype.initialize.call(this, benchmark);
</span><del>-        this.emissionSpin = this.random(0, 3);
-        this.emitSteps = this.randomInt(4, 6);
</del><ins>+        this.emissionSpin = Stage.random(0, 3);
+        this.emitSteps = Stage.randomInt(4, 6);
</ins><span class="cx">     },
</span><span class="cx"> 
</span><span class="cx">     animate: function(timeDelta)
</span></span></pre></div>
<a id="trunkPerformanceTestsAnimometertestsmiscresourcescanvaselectronsjs"></a>
<div class="modfile"><h4>Modified: trunk/PerformanceTests/Animometer/tests/misc/resources/canvas-electrons.js (196223 => 196224)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/PerformanceTests/Animometer/tests/misc/resources/canvas-electrons.js        2016-02-06 23:18:47 UTC (rev 196223)
+++ trunk/PerformanceTests/Animometer/tests/misc/resources/canvas-electrons.js        2016-02-06 23:31:51 UTC (rev 196224)
</span><span class="lines">@@ -6,15 +6,15 @@
</span><span class="cx">     this._stageSize = stage.size;
</span><span class="cx"> 
</span><span class="cx">     var minSide = Math.min(this._stageSize.width, this._stageSize.height);
</span><del>-    var radiusX = stage.random(minSide / 8, 7 * minSide / 16);
-    var radiusY = stage.random(minSide / 8, 3 * radiusX / 4);
</del><ins>+    var radiusX = Stage.random(minSide / 8, 7 * minSide / 16);
+    var radiusY = Stage.random(minSide / 8, 3 * radiusX / 4);
</ins><span class="cx">     this._orbitRadiuses = new Point(radiusX, radiusY);
</span><del>-    this._radius = stage.random(5, 15);
-    this._direction = stage.randomInt(0, 2);
-    this._angle = stage.randomInt(0, 360);
-    this._color = stage.randomColor();
-    this._rotater = stage.randomRotater();
-    this._rotater.next(stage.random(0, this._rotater.interval));
</del><ins>+    this._radius = Stage.random(5, 15);
+    this._direction = Stage.randomInt(0, 2);
+    this._angle = Stage.randomInt(0, 360);
+    this._color = Stage.randomColor();
+    this._rotater = Stage.randomRotater();
+    this._rotater.next(Stage.random(0, this._rotater.interval));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> CanvasElectron.prototype = {
</span></span></pre></div>
<a id="trunkPerformanceTestsAnimometertestsmiscresourcescanvasstarsjs"></a>
<div class="modfile"><h4>Modified: trunk/PerformanceTests/Animometer/tests/misc/resources/canvas-stars.js (196223 => 196224)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/PerformanceTests/Animometer/tests/misc/resources/canvas-stars.js        2016-02-06 23:18:47 UTC (rev 196223)
+++ trunk/PerformanceTests/Animometer/tests/misc/resources/canvas-stars.js        2016-02-06 23:31:51 UTC (rev 196224)
</span><span class="lines">@@ -4,10 +4,10 @@
</span><span class="cx"> {
</span><span class="cx">     this._context = stage.context;
</span><span class="cx"> 
</span><del>-    this._size = stage.randomSquareSize(5, 20);
-    this._center = stage.randomPosition(stage.size.subtract(this._size)).add(this._size.center);
</del><ins>+    this._size = Stage.randomSquareSize(5, 20);
+    this._center = Stage.randomPosition(stage.size.subtract(this._size)).add(this._size.center);
</ins><span class="cx">     this._rotateX = 0;
</span><del>-    this._rotateDeltaX = stage.random(0.3, 0.7);
</del><ins>+    this._rotateDeltaX = Stage.random(0.3, 0.7);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> CanvasStar.prototype = {
</span></span></pre></div>
<a id="trunkPerformanceTestsAnimometertestsmiscresourcescompositingtransformsjs"></a>
<div class="modfile"><h4>Modified: trunk/PerformanceTests/Animometer/tests/misc/resources/compositing-transforms.js (196223 => 196224)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/PerformanceTests/Animometer/tests/misc/resources/compositing-transforms.js        2016-02-06 23:18:47 UTC (rev 196223)
+++ trunk/PerformanceTests/Animometer/tests/misc/resources/compositing-transforms.js        2016-02-06 23:31:51 UTC (rev 196224)
</span><span class="lines">@@ -11,7 +11,7 @@
</span><span class="cx">         this.element.setAttribute(&quot;src&quot;, stage.imageSrc);
</span><span class="cx"> 
</span><span class="cx">         if (stage.useFilters)
</span><del>-            this.element.style.filter = &quot;hue-rotate(&quot; + stage.randomAngle() + &quot;rad)&quot;;
</del><ins>+            this.element.style.filter = &quot;hue-rotate(&quot; + Stage.randomAngle() + &quot;rad)&quot;;
</ins><span class="cx"> 
</span><span class="cx">         stage.element.appendChild(this.element);
</span><span class="cx">         this._move();
</span></span></pre></div>
<a id="trunkPerformanceTestsAnimometertestsresourcesmainjs"></a>
<div class="modfile"><h4>Modified: trunk/PerformanceTests/Animometer/tests/resources/main.js (196223 => 196224)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/PerformanceTests/Animometer/tests/resources/main.js        2016-02-06 23:18:47 UTC (rev 196223)
+++ trunk/PerformanceTests/Animometer/tests/resources/main.js        2016-02-06 23:31:51 UTC (rev 196224)
</span><span class="lines">@@ -82,35 +82,9 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-
</del><span class="cx"> function Stage() {}
</span><span class="cx"> 
</span><del>-Stage.prototype =
-{
-    initialize: function(benchmark)
-    {
-        this._benchmark = benchmark;
-        this._element = document.getElementById(&quot;stage&quot;);
-        this._element.setAttribute(&quot;width&quot;, document.body.offsetWidth);
-        this._element.setAttribute(&quot;height&quot;, document.body.offsetHeight);
-        this._size = Point.elementClientSize(this._element).subtract(Insets.elementPadding(this._element).size);
-    },
-
-    get element()
-    {
-        return this._element;
-    },
-
-    get size()
-    {
-        return this._size;
-    },
-
-    complexity: function()
-    {
-        return 0;
-    },
-
</del><ins>+Utilities.extendObject(Stage, {
</ins><span class="cx">     random: function(min, max)
</span><span class="cx">     {
</span><span class="cx">         return (Math.random() * (max - min)) + min;
</span><span class="lines">@@ -160,8 +134,35 @@
</span><span class="cx">     randomRotater: function()
</span><span class="cx">     {
</span><span class="cx">         return new Rotater(this.random(1000, 10000));
</span><ins>+    }
+});
+
+Stage.prototype =
+{
+    initialize: function(benchmark)
+    {
+        this._benchmark = benchmark;
+        this._element = document.getElementById(&quot;stage&quot;);
+        this._element.setAttribute(&quot;width&quot;, document.body.offsetWidth);
+        this._element.setAttribute(&quot;height&quot;, document.body.offsetHeight);
+        this._size = Point.elementClientSize(this._element).subtract(Insets.elementPadding(this._element).size);
</ins><span class="cx">     },
</span><span class="cx"> 
</span><ins>+    get element()
+    {
+        return this._element;
+    },
+
+    get size()
+    {
+        return this._size;
+    },
+
+    complexity: function()
+    {
+        return 0;
+    },
+
</ins><span class="cx">     tune: function()
</span><span class="cx">     {
</span><span class="cx">         throw &quot;Not implemented&quot;;
</span></span></pre></div>
<a id="trunkPerformanceTestsAnimometertestssimpleresourcessimplecanvaspathsjs"></a>
<div class="modfile"><h4>Modified: trunk/PerformanceTests/Animometer/tests/simple/resources/simple-canvas-paths.js (196223 => 196224)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/PerformanceTests/Animometer/tests/simple/resources/simple-canvas-paths.js        2016-02-06 23:18:47 UTC (rev 196223)
+++ trunk/PerformanceTests/Animometer/tests/simple/resources/simple-canvas-paths.js        2016-02-06 23:31:51 UTC (rev 196224)
</span><span class="lines">@@ -3,14 +3,14 @@
</span><span class="cx"> // === PAINT OBJECTS ===
</span><span class="cx"> 
</span><span class="cx"> function CanvasLineSegment(stage) {
</span><del>-    var radius = stage.randomInt(10, 100);
-    var center = stage.randomPosition(stage.size);
-    var delta = Point.pointOnCircle(stage.randomAngle(), radius/2);
</del><ins>+    var radius = Stage.randomInt(10, 100);
+    var center = Stage.randomPosition(stage.size);
+    var delta = Point.pointOnCircle(Stage.randomAngle(), radius/2);
</ins><span class="cx"> 
</span><span class="cx">     this._point1 = center.add(delta);
</span><span class="cx">     this._point2 = center.subtract(delta);
</span><del>-    this._color = stage.randomColor();
-    this._lineWidth = stage.randomInt(1, 100);
</del><ins>+    this._color = Stage.randomColor();
+    this._lineWidth = Stage.randomInt(1, 100);
</ins><span class="cx"> }
</span><span class="cx"> CanvasLineSegment.prototype.draw = function(context) {
</span><span class="cx">     context.strokeStyle = this._color;
</span><span class="lines">@@ -23,21 +23,21 @@
</span><span class="cx"> 
</span><span class="cx"> function CanvasLinePoint(stage, coordinateMaximumFactor) {
</span><span class="cx">     var pointMaximum = new Point(Math.min(stage.size.x, coordinateMaximumFactor * stage.size.x), Math.min(stage.size.y, coordinateMaximumFactor * stage.size.y));
</span><del>-    this._point = stage.randomPosition(pointMaximum).add(new Point((stage.size.x - pointMaximum.x) / 2, (stage.size.y - pointMaximum.y) / 2));
</del><ins>+    this._point = Stage.randomPosition(pointMaximum).add(new Point((stage.size.x - pointMaximum.x) / 2, (stage.size.y - pointMaximum.y) / 2));
</ins><span class="cx"> }
</span><span class="cx"> CanvasLinePoint.prototype.draw = function(context) {
</span><span class="cx">     context.lineTo(this._point.x, this._point.y);
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> function CanvasQuadraticSegment(stage) {
</span><del>-    var maxSize = stage.randomInt(20, 200);
-    var toCenter = stage.randomPosition(stage.size).subtract(new Point(maxSize/2, maxSize/2));
</del><ins>+    var maxSize = Stage.randomInt(20, 200);
+    var toCenter = Stage.randomPosition(stage.size).subtract(new Point(maxSize/2, maxSize/2));
</ins><span class="cx"> 
</span><del>-    this._point1 = stage.randomPosition(new Point(maxSize, maxSize)).add(toCenter);
-    this._point2 = stage.randomPosition(new Point(maxSize, maxSize)).add(toCenter);
-    this._point3 = stage.randomPosition(new Point(maxSize, maxSize)).add(toCenter);
-    this._color = stage.randomColor();
-    this._lineWidth = stage.randomInt(1, 50);
</del><ins>+    this._point1 = Stage.randomPosition(new Point(maxSize, maxSize)).add(toCenter);
+    this._point2 = Stage.randomPosition(new Point(maxSize, maxSize)).add(toCenter);
+    this._point3 = Stage.randomPosition(new Point(maxSize, maxSize)).add(toCenter);
+    this._color = Stage.randomColor();
+    this._lineWidth = Stage.randomInt(1, 50);
</ins><span class="cx"> };
</span><span class="cx"> CanvasQuadraticSegment.prototype.draw = function(context) {
</span><span class="cx">     context.strokeStyle = this._color;
</span><span class="lines">@@ -49,24 +49,24 @@
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> function CanvasQuadraticPoint(stage, coordinateMaximumFactor) {
</span><del>-    var pointMaximum = stage.randomPosition(new Point(Math.min(stage.size.x, coordinateMaximumFactor * stage.size.x), Math.min(stage.size.y, coordinateMaximumFactor * stage.size.y)));
-    this._point1 = stage.randomPosition(pointMaximum).add(new Point((stage.size.x - pointMaximum.x) / 2, (stage.size.y - pointMaximum.y) / 2));
-    this._point2 = stage.randomPosition(pointMaximum).add(new Point((stage.size.x - pointMaximum.x) / 2, (stage.size.y - pointMaximum.y) / 2));
</del><ins>+    var pointMaximum = Stage.randomPosition(new Point(Math.min(stage.size.x, coordinateMaximumFactor * stage.size.x), Math.min(stage.size.y, coordinateMaximumFactor * stage.size.y)));
+    this._point1 = Stage.randomPosition(pointMaximum).add(new Point((stage.size.x - pointMaximum.x) / 2, (stage.size.y - pointMaximum.y) / 2));
+    this._point2 = Stage.randomPosition(pointMaximum).add(new Point((stage.size.x - pointMaximum.x) / 2, (stage.size.y - pointMaximum.y) / 2));
</ins><span class="cx"> };
</span><span class="cx"> CanvasQuadraticPoint.prototype.draw = function(context) {
</span><span class="cx">     context.quadraticCurveTo(this._point1.x, this._point1.y, this._point2.x, this._point2.y);
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> function CanvasBezierSegment(stage) {
</span><del>-    var maxSize = stage.randomInt(20, 200);
-    var toCenter = stage.randomPosition(stage.size).subtract(new Point(maxSize/2, maxSize/2));
</del><ins>+    var maxSize = Stage.randomInt(20, 200);
+    var toCenter = Stage.randomPosition(stage.size).subtract(new Point(maxSize/2, maxSize/2));
</ins><span class="cx"> 
</span><del>-    this._point1 = stage.randomPosition(new Point(maxSize, maxSize)).add(toCenter);
-    this._point2 = stage.randomPosition(new Point(maxSize, maxSize)).add(toCenter);
-    this._point3 = stage.randomPosition(new Point(maxSize, maxSize)).add(toCenter);
-    this._point4 = stage.randomPosition(new Point(maxSize, maxSize)).add(toCenter);
-    this._color = stage.randomColor();
-    this._lineWidth = stage.randomInt(1, 50);
</del><ins>+    this._point1 = Stage.randomPosition(new Point(maxSize, maxSize)).add(toCenter);
+    this._point2 = Stage.randomPosition(new Point(maxSize, maxSize)).add(toCenter);
+    this._point3 = Stage.randomPosition(new Point(maxSize, maxSize)).add(toCenter);
+    this._point4 = Stage.randomPosition(new Point(maxSize, maxSize)).add(toCenter);
+    this._color = Stage.randomColor();
+    this._lineWidth = Stage.randomInt(1, 50);
</ins><span class="cx"> };
</span><span class="cx"> CanvasBezierSegment.prototype.draw = function(context) {
</span><span class="cx">     context.strokeStyle = this._color;
</span><span class="lines">@@ -78,25 +78,25 @@
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> function CanvasBezierPoint(stage, coordinateMaximumFactor) {
</span><del>-    var pointMaximum = stage.randomPosition(new Point(Math.min(stage.size.x, coordinateMaximumFactor * stage.size.x), Math.min(stage.size.y, coordinateMaximumFactor * stage.size.y)));
-    this._point1 = stage.randomPosition(pointMaximum).add(new Point((stage.size.x - pointMaximum.x) / 2, (stage.size.y - pointMaximum.y) / 2));
-    this._point2 = stage.randomPosition(pointMaximum).add(new Point((stage.size.x - pointMaximum.x) / 2, (stage.size.y - pointMaximum.y) / 2));
-    this._point3 = stage.randomPosition(pointMaximum).add(new Point((stage.size.x - pointMaximum.x) / 2, (stage.size.y - pointMaximum.y) / 2));
</del><ins>+    var pointMaximum = Stage.randomPosition(new Point(Math.min(stage.size.x, coordinateMaximumFactor * stage.size.x), Math.min(stage.size.y, coordinateMaximumFactor * stage.size.y)));
+    this._point1 = Stage.randomPosition(pointMaximum).add(new Point((stage.size.x - pointMaximum.x) / 2, (stage.size.y - pointMaximum.y) / 2));
+    this._point2 = Stage.randomPosition(pointMaximum).add(new Point((stage.size.x - pointMaximum.x) / 2, (stage.size.y - pointMaximum.y) / 2));
+    this._point3 = Stage.randomPosition(pointMaximum).add(new Point((stage.size.x - pointMaximum.x) / 2, (stage.size.y - pointMaximum.y) / 2));
</ins><span class="cx"> };
</span><span class="cx"> CanvasBezierPoint.prototype.draw = function(context) {
</span><span class="cx">     context.bezierCurveTo(this._point1.x, this._point1.y, this._point2.x, this._point2.y, this._point3.x, this._point3.y);
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> function CanvasArcToSegment(stage) {
</span><del>-    var maxSize = stage.randomInt(20, 200);
-    var toCenter = stage.randomPosition(stage.size).subtract(new Point(maxSize/2, maxSize/2));
</del><ins>+    var maxSize = Stage.randomInt(20, 200);
+    var toCenter = Stage.randomPosition(stage.size).subtract(new Point(maxSize/2, maxSize/2));
</ins><span class="cx"> 
</span><del>-    this._point1 = stage.randomPosition(new Point(maxSize, maxSize)).add(toCenter);
-    this._point2 = stage.randomPosition(new Point(maxSize, maxSize)).add(toCenter);
-    this._point3 = stage.randomPosition(new Point(maxSize, maxSize)).add(toCenter);
-    this._radius = stage.randomInt(20, 200);
-    this._color = stage.randomColor();
-    this._lineWidth = stage.randomInt(1, 50);
</del><ins>+    this._point1 = Stage.randomPosition(new Point(maxSize, maxSize)).add(toCenter);
+    this._point2 = Stage.randomPosition(new Point(maxSize, maxSize)).add(toCenter);
+    this._point3 = Stage.randomPosition(new Point(maxSize, maxSize)).add(toCenter);
+    this._radius = Stage.randomInt(20, 200);
+    this._color = Stage.randomColor();
+    this._lineWidth = Stage.randomInt(1, 50);
</ins><span class="cx"> };
</span><span class="cx"> CanvasArcToSegment.prototype.draw = function(context) {
</span><span class="cx">     context.strokeStyle = this._color;
</span><span class="lines">@@ -119,16 +119,16 @@
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> function CanvasArcSegment(stage) {
</span><del>-    var maxSize = stage.randomInt(20, 200);
-    var toCenter = stage.randomPosition(stage.size).subtract(new Point(maxSize/2, maxSize/2));
</del><ins>+    var maxSize = Stage.randomInt(20, 200);
+    var toCenter = Stage.randomPosition(stage.size).subtract(new Point(maxSize/2, maxSize/2));
</ins><span class="cx"> 
</span><del>-    this._point = stage.randomPosition(new Point(maxSize, maxSize)).add(toCenter);
-    this._radius = stage.randomInt(20, 200);
-    this._startAngle = stage.randomAngle();
-    this._endAngle = stage.randomAngle();
-    this._counterclockwise = stage.randomBool();
-    this._color = stage.randomColor();
-    this._lineWidth = stage.randomInt(1, 50);
</del><ins>+    this._point = Stage.randomPosition(new Point(maxSize, maxSize)).add(toCenter);
+    this._radius = Stage.randomInt(20, 200);
+    this._startAngle = Stage.randomAngle();
+    this._endAngle = Stage.randomAngle();
+    this._counterclockwise = Stage.randomBool();
+    this._color = Stage.randomColor();
+    this._lineWidth = Stage.randomInt(1, 50);
</ins><span class="cx"> };
</span><span class="cx"> CanvasArcSegment.prototype.draw = function(context) {
</span><span class="cx">     context.strokeStyle = this._color;
</span><span class="lines">@@ -149,11 +149,11 @@
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> function CanvasRect(stage) {
</span><del>-    this._width = stage.randomInt(20, 200);
-    this._height = stage.randomInt(20, 200);
-    this._point = stage.randomPosition(stage.size).subtract(new Point(this._width/2, this._height/2));
-    this._color = stage.randomColor();
-    this._lineWidth = stage.randomInt(1, 20);
</del><ins>+    this._width = Stage.randomInt(20, 200);
+    this._height = Stage.randomInt(20, 200);
+    this._point = Stage.randomPosition(stage.size).subtract(new Point(this._width/2, this._height/2));
+    this._color = Stage.randomColor();
+    this._lineWidth = Stage.randomInt(1, 20);
</ins><span class="cx"> }
</span><span class="cx"> CanvasRect.prototype.draw = function(context) {
</span><span class="cx">     context.strokeStyle = this._color;
</span><span class="lines">@@ -184,8 +184,8 @@
</span><span class="cx">     {
</span><span class="cx">         var context = this.context;
</span><span class="cx">         context.clearRect(0, 0, this.size.x, this.size.y);
</span><del>-        context.lineWidth = this.randomInt(1, 20);
-        context.strokeStyle = this.randomColor();
</del><ins>+        context.lineWidth = Stage.randomInt(1, 20);
+        context.strokeStyle = Stage.randomColor();
</ins><span class="cx">         context.beginPath();
</span><span class="cx">         context.moveTo(this.size.x / 2, this.size.y / 2);
</span><span class="cx">         this.objects.forEach(function(object) {
</span><span class="lines">@@ -204,7 +204,7 @@
</span><span class="cx">     {
</span><span class="cx">         var context = this.context;
</span><span class="cx">         context.clearRect(0, 0, this.size.x, this.size.y);
</span><del>-        context.fillStyle = this.randomColor();
</del><ins>+        context.fillStyle = Stage.randomColor();
</ins><span class="cx">         context.beginPath();
</span><span class="cx">         context.moveTo(this.size.x / 2, this.size.y / 2);
</span><span class="cx">         this.objects.forEach(function(object) {
</span></span></pre></div>
<a id="trunkPerformanceTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/PerformanceTests/ChangeLog (196223 => 196224)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/PerformanceTests/ChangeLog        2016-02-06 23:18:47 UTC (rev 196223)
+++ trunk/PerformanceTests/ChangeLog        2016-02-06 23:31:51 UTC (rev 196224)
</span><span class="lines">@@ -1,3 +1,21 @@
</span><ins>+2016-02-06  Jon Lee  &lt;jonlee@apple.com&gt;
+
+        Refactor helper methods for getting random values for a stage.
+
+        Instead of requiring a Stage instance, just attach it to the Stage object.
+
+        * Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js:
+        * Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js:
+        * Animometer/tests/bouncing-particles/resources/bouncing-particles.js:
+        * Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js:
+        * Animometer/tests/master/resources/canvas-tests.js:
+        * Animometer/tests/master/resources/particles.js:
+        * Animometer/tests/misc/resources/canvas-electrons.js:
+        * Animometer/tests/misc/resources/canvas-stars.js:
+        * Animometer/tests/misc/resources/compositing-transforms.js:
+        * Animometer/tests/resources/main.js:
+        * Animometer/tests/simple/resources/simple-canvas-paths.js:
+
</ins><span class="cx"> 2016-02-05  Said Abou-Hallawa  &lt;sabouhallawa@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Add a new graphics test for CanvasRenderingContext2D functions: getImageData and putImageData
</span></span></pre>
</div>
</div>

</body>
</html>