cee8fca5cca44cf330d151a2c82ed49799947871
[WebKit-https.git] / PerformanceTests / Animometer / tests / master / resources / canvas-stage.js
1 function SimpleCanvasStage(element, options, canvasObject)
2 {
3     Stage.call(this, element, options);
4     this.options = options;
5     this.context = this.element.getContext("2d");
6     this.canvasObject = canvasObject;
7     this._objects = [];
8 }
9 SimpleCanvasStage.prototype = Object.create(Stage.prototype);
10 SimpleCanvasStage.prototype.constructor = SimpleCanvasStage;
11 SimpleCanvasStage.prototype.tune = function(count)
12 {
13     if (count == 0)
14         return this._objects.length;
15
16     if (count > 0) {
17         // For path-based tests, use the object length as a maximum coordinate value
18         // to make it easier to see what the test is doing
19         var coordinateMaximum = Math.max(this._objects.length, 200);
20         for (var i = 0; i < count; ++i) {
21             this._objects.push(new this.canvasObject(this, coordinateMaximum));
22         }
23         return this._objects.length;
24     }
25
26     count = Math.min(-count, this._objects.length);
27     this._objects.splice(0, count);
28     return this._objects.length;
29 }
30 SimpleCanvasStage.prototype.animate = function()
31 {
32     var context = this.context;
33     this._objects.forEach(function(object) {
34         object.draw(context);
35     });
36 }
37
38 function SimpleCanvasAnimator(benchmark, options)
39 {
40     StageAnimator.call(this, benchmark, options);
41     this._context = benchmark._stage.context;
42 }
43
44 SimpleCanvasAnimator.prototype = Object.create(StageAnimator.prototype);
45 SimpleCanvasAnimator.prototype.constructor = SimpleCanvasAnimator;
46 SimpleCanvasAnimator.prototype.animate = function()
47 {
48     this._context.clearRect(0, 0, this._benchmark._stage.size.x, this._benchmark._stage.size.y);
49     return StageAnimator.prototype.animate.call(this, this._options);
50 }
51
52
53 function SimpleCanvasBenchmark(suite, test, options, progressBar) {
54     StageBenchmark.call(this, suite, test, options, progressBar);
55 }
56 SimpleCanvasBenchmark.prototype = Object.create(StageBenchmark.prototype);
57 SimpleCanvasBenchmark.prototype.constructor = SimpleCanvasBenchmark;
58 SimpleCanvasBenchmark.prototype.createAnimator = function() {
59     return new SimpleCanvasAnimator(this, this._options);
60 }
61