Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11481)

Unified Diff: chrome/test/data/third_party/spaceport/js/sprites/renderers/canvasDrawImagePartialClearAlign.js

Issue 10134041: Add test data for spaceport benchmark. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/test/data/third_party/spaceport/js/sprites/renderers/canvasDrawImagePartialClearAlign.js
diff --git a/chrome/test/data/third_party/spaceport/js/sprites/renderers/canvasDrawImagePartialClearAlign.js b/chrome/test/data/third_party/spaceport/js/sprites/renderers/canvasDrawImagePartialClearAlign.js
new file mode 100644
index 0000000000000000000000000000000000000000..c4547c06376042082110e2ae0d826c92d8abaa66
--- /dev/null
+++ b/chrome/test/data/third_party/spaceport/js/sprites/renderers/canvasDrawImagePartialClearAlign.js
@@ -0,0 +1,82 @@
+define([ 'util/ensureCallback', 'sprites/canvas' ], function (ensureCallback, canvas) {
+ function RenderContext(sourceData, frameData) {
+ this.sourceData = sourceData;
+ this.frameData = frameData;
+
+ this.previousTransforms = null;
+ this.previousFrameIndex = null;
+
+ this.canvas = canvas();
+
+ this.context = this.canvas.getContext('2d');
+ this.context.globalCompositeOperation = 'source-over';
+ }
+
+ RenderContext.prototype.load = function load(callback) {
+ callback = ensureCallback(callback);
+
+ // Anything not simply translated is disallowed
+ var isValid = this.frameData.every(function (frame) {
+ return frame.every(function (transform) {
+ return transform.matrix[0] === 1
+ && transform.matrix[1] === 0
+ && transform.matrix[3] === 0
+ && transform.matrix[4] === 1;
+ });
+ });
+
+ if (!isValid) {
+ callback(new Error("Not supported"));
+ return;
+ }
+
+ document.body.appendChild(this.canvas);
+
+ callback(null);
+ };
+
+ RenderContext.prototype.unload = function unload() {
+ if (this.canvas.parentNode) {
+ this.canvas.parentNode.removeChild(this.canvas);
+ }
+ };
+
+ RenderContext.prototype.clear = function clear() {
+ this.canvas.width = this.canvas.width;
+ this.previousTransforms = null;
+ };
+
+ RenderContext.prototype.renderFrame = function renderFrame(frameIndex) {
+ var context = this.context;
+ var sourceData = this.sourceData;
+
+ var transforms = this.frameData[frameIndex];
+ var count = transforms.length;
+ var i;
+
+ var previousTransforms = this.previousTransforms;
+ if (previousTransforms) {
+ var frameInfo = sourceData.getFrameInfo(this.previousFrameIndex);
+ var width = frameInfo.width;
+ var height = frameInfo.height;
+ for (i = 0; i < count; ++i) {
+ var transform = previousTransforms[i];
+ context.setTransform(1, 0, 0, 1, Math.floor(transform.x), Math.floor(transform.y));
+ context.clearRect(0, 0, width, height);
+ }
+ }
+
+ for (i = 0; i < count; ++i) {
+ var transform = transforms[i];
+ context.setTransform(1, 0, 0, 1, Math.floor(transform.x), Math.floor(transform.y));
+ sourceData.drawToCanvas(context, 0, 0, frameIndex);
+ }
+
+ this.previousTransforms = transforms;
+ this.previousFrameIndex = frameIndex;
+ };
+
+ return function (element, frameData) {
+ return new RenderContext(element, frameData);
+ };
+});

Powered by Google App Engine
This is Rietveld 408576698