55f4a86b38b8fba5c0800555e19edfdc79401d3a
[WebKit-https.git] / PerformanceTests / Animometer / tests / simple / resources / simple-canvas.js
1
2 function SimpleCanvasStage(element, options, canvasObject)
3 {
4     Stage.call(this, element, 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(-count, count);
28
29     return this._objects.length;
30 }
31 SimpleCanvasStage.prototype.animate = function()
32 {
33     var context = this.context;
34     this._objects.forEach(function(object) {
35         object.draw(context);
36     });
37 }
38
39 function SimpleCanvasAnimator(benchmark, options)
40 {
41     StageAnimator.call(this, benchmark, options);
42     this._context = benchmark._stage.context;
43 }
44
45 SimpleCanvasAnimator.prototype = Object.create(StageAnimator.prototype);
46 SimpleCanvasAnimator.prototype.constructor = SimpleCanvasAnimator;
47 SimpleCanvasAnimator.prototype.animate = function()
48 {
49     this._context.clearRect(0, 0, this._benchmark._stage.size.x, this._benchmark._stage.size.y);
50     return StageAnimator.prototype.animate.call(this, this._options);
51 }
52
53
54 function SimpleCanvasBenchmark(suite, test, options, progressBar) {
55     StageBenchmark.call(this, suite, test, options, progressBar);
56 }
57 SimpleCanvasBenchmark.prototype = Object.create(StageBenchmark.prototype);
58 SimpleCanvasBenchmark.prototype.constructor = SimpleCanvasBenchmark;
59 SimpleCanvasBenchmark.prototype.createAnimator = function() {
60     return new SimpleCanvasAnimator(this, this._options);
61 }
62