| Index: chrome/test/data/third_party/spaceport/js/sprites/renderers/css3dBackground.js
|
| diff --git a/chrome/test/data/third_party/spaceport/js/sprites/renderers/css3dBackground.js b/chrome/test/data/third_party/spaceport/js/sprites/renderers/css3dBackground.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..aed3b939361d0aa9d88dd5f833004ddbadb7368b
|
| --- /dev/null
|
| +++ b/chrome/test/data/third_party/spaceport/js/sprites/renderers/css3dBackground.js
|
| @@ -0,0 +1,83 @@
|
| +define([ 'util/ensureCallback', 'features', 'Modernizr', 'sprites/container' ], function (ensureCallback, features, Modernizr, container) {
|
| + function RenderContext(sourceData, frameData) {
|
| + if (!Modernizr.csstransforms3d) {
|
| + return;
|
| + }
|
| +
|
| + this.sourceData = sourceData;
|
| +
|
| + this.transformData = frameData.map(function (objectTransforms) {
|
| + return objectTransforms.map(function (t) {
|
| + return t.cssTransform3d;
|
| + });
|
| + });
|
| +
|
| + this.elements = frameData[0].map(function () {
|
| + var el = document.createElement('div');
|
| + el.style.position = 'absolute';
|
| + el.style.top = '0';
|
| + el.style.left = '0';
|
| + el.style.display = 'block';
|
| + el.style[features.transformOriginStyleProperty] = '0 0';
|
| + return el;
|
| + });
|
| +
|
| + this.containerElement = container();
|
| + }
|
| +
|
| + RenderContext.prototype.load = function load(callback) {
|
| + callback = ensureCallback(callback);
|
| +
|
| + if (!Modernizr.csstransforms3d) {
|
| + callback(new Error('Not supported'));
|
| + return;
|
| + }
|
| +
|
| + this.elements.forEach(function (element) {
|
| + this.containerElement.appendChild(element);
|
| + }, this);
|
| +
|
| + document.body.appendChild(this.containerElement);
|
| +
|
| + callback(null);
|
| + };
|
| +
|
| + RenderContext.prototype.unload = function unload() {
|
| + this.containerElement.parentNode.removeChild(this.containerElement);
|
| +
|
| + this.elements.forEach(function (element) {
|
| + if (element.parentNode) {
|
| + element.parentNode.removeChild(element);
|
| + }
|
| + });
|
| + };
|
| +
|
| + var transformStyleProperty = features.transformStyleProperty;
|
| +
|
| + RenderContext.prototype.renderFrame = function renderFrame(frameIndex) {
|
| + var transforms = this.transformData[frameIndex];
|
| + var elements = this.elements;
|
| + var count = elements.length;
|
| +
|
| + var frameInfo = this.sourceData.getFrameInfo(frameIndex);
|
| +
|
| + var i;
|
| + for (i = 0; i < count; ++i) {
|
| + var element = elements[i];
|
| + var backgroundImage = 'url(' + frameInfo.sheetImage.src + ')';
|
| + if (element.style.backgroundImage !== backgroundImage) {
|
| + // Chrome has flickering issues without this check
|
| + element.style.backgroundImage = backgroundImage;
|
| + }
|
| +
|
| + element.style[transformStyleProperty] = transforms[i];
|
| + element.style.backgroundPosition = -frameInfo.x + 'px ' + -frameInfo.y + 'px';
|
| + element.style.width = frameInfo.width + 'px';
|
| + element.style.height = frameInfo.height + 'px';
|
| + }
|
| + };
|
| +
|
| + return function (sourceData, frameData) {
|
| + return new RenderContext(sourceData, frameData);
|
| + };
|
| +});
|
|
|