Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 'use strict'; | 5 'use strict'; |
| 6 | 6 |
| 7 /** | 7 /** |
| 8 * The overlay displaying the image. | 8 * The overlay displaying the image. |
| 9 * | 9 * |
| 10 * @param {HTMLElement} container The container element. | 10 * @param {HTMLElement} container The container element. |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 94 * @override | 94 * @override |
| 95 */ | 95 */ |
| 96 ImageView.prototype.getZIndex = function() { return -1; }; | 96 ImageView.prototype.getZIndex = function() { return -1; }; |
| 97 | 97 |
| 98 /** | 98 /** |
| 99 * @override | 99 * @override |
| 100 */ | 100 */ |
| 101 ImageView.prototype.draw = function() { | 101 ImageView.prototype.draw = function() { |
| 102 if (!this.contentCanvas_) // Do nothing if the image content is not set. | 102 if (!this.contentCanvas_) // Do nothing if the image content is not set. |
| 103 return; | 103 return; |
| 104 | 104 if (this.setupDeviceBuffer(this.screenImage_) || |
| 105 var forceRepaint = false; | |
| 106 var deviceBounds = this.viewport_.getDeviceBounds(); | |
| 107 if (deviceBounds.width != this.screenImage_.width || | |
| 108 deviceBounds.height != this.screenImage_.height) { | |
| 109 this.setupDeviceBuffer(this.screenImage_); | |
| 110 forceRepaint = true; | |
| 111 } | |
| 112 | |
| 113 if (forceRepaint || | |
| 114 this.displayedContentGeneration_ !== this.contentGeneration_) { | 105 this.displayedContentGeneration_ !== this.contentGeneration_) { |
| 115 this.displayedContentGeneration_ = this.contentGeneration_; | 106 this.displayedContentGeneration_ = this.contentGeneration_; |
| 116 ImageUtil.trace.resetTimer('paint'); | 107 ImageUtil.trace.resetTimer('paint'); |
| 117 this.paintDeviceRect(this.contentCanvas_, new Rect(this.contentCanvas_)); | 108 this.paintDeviceRect(this.contentCanvas_, new Rect(this.contentCanvas_)); |
| 118 ImageUtil.trace.reportTimer('paint'); | 109 ImageUtil.trace.reportTimer('paint'); |
| 119 } | 110 } |
| 120 }; | 111 }; |
| 121 | 112 |
| 122 /** | 113 /** |
| 123 * Applies the viewport change that does not affect the screen cache size (zoom | 114 * Applies the viewport change that does not affect the screen cache size (zoom |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 208 }; | 199 }; |
| 209 | 200 |
| 210 /** | 201 /** |
| 211 * Sets up the canvas as a buffer in the device resolution. | 202 * Sets up the canvas as a buffer in the device resolution. |
| 212 * | 203 * |
| 213 * @param {HTMLCanvasElement} canvas The buffer canvas. | 204 * @param {HTMLCanvasElement} canvas The buffer canvas. |
| 214 */ | 205 */ |
| 215 ImageView.prototype.setupDeviceBuffer = function(canvas) { | 206 ImageView.prototype.setupDeviceBuffer = function(canvas) { |
| 216 // Set the canvas position and size in device pixels. | 207 // Set the canvas position and size in device pixels. |
| 217 var deviceRect = this.viewport_.getDeviceBounds(); | 208 var deviceRect = this.viewport_.getDeviceBounds(); |
| 218 if (canvas.width !== deviceRect.width) | 209 var needRepaint = false; |
| 210 if (canvas.width !== deviceRect.width) { | |
| 219 canvas.width = deviceRect.width; | 211 canvas.width = deviceRect.width; |
| 220 if (canvas.height !== deviceRect.height) | 212 needRepaint = true; |
| 213 } | |
| 214 if (canvas.height !== deviceRect.height) { | |
| 221 canvas.height = deviceRect.height; | 215 canvas.height = deviceRect.height; |
| 216 needRepaint = true; | |
| 217 } | |
| 222 | 218 |
| 223 // Center the image. | 219 // Center the image. |
| 224 var imageBoudns = this.viewport_.getImageElementBoundsOnScreen(); | 220 var imageBoudns = this.viewport_.getImageElementBoundsOnScreen(); |
|
fukino
2014/07/22 05:32:18
nit: imageBounds?
hirono
2014/07/22 06:51:28
Yes, renamed.
| |
| 225 canvas.style.left = imageBoudns.left + 'px'; | 221 canvas.style.left = imageBoudns.left + 'px'; |
| 226 canvas.style.top = imageBoudns.top + 'px'; | 222 canvas.style.top = imageBoudns.top + 'px'; |
| 223 canvas.style.width = imageBoudns.width + 'px'; | |
| 224 canvas.style.height = imageBoudns.height + 'px'; | |
| 227 | 225 |
| 228 // Scale the canvas down to screen pixels. | |
| 229 this.setTransform(canvas); | 226 this.setTransform(canvas); |
| 227 | |
| 228 return needRepaint; | |
|
fukino
2014/07/22 05:32:18
nit: Please write a comment for return value.
hirono
2014/07/22 06:51:28
Done.
| |
| 230 }; | 229 }; |
| 231 | 230 |
| 232 /** | 231 /** |
| 233 * @return {ImageData} A new ImageData object with a copy of the content. | 232 * @return {ImageData} A new ImageData object with a copy of the content. |
| 234 */ | 233 */ |
| 235 ImageView.prototype.copyScreenImageData = function() { | 234 ImageView.prototype.copyScreenImageData = function() { |
| 236 return this.screenImage_.getContext('2d').getImageData( | 235 return this.screenImage_.getContext('2d').getImageData( |
| 237 0, 0, this.screenImage_.width, this.screenImage_.height); | 236 0, 0, this.screenImage_.width, this.screenImage_.height); |
| 238 }; | 237 }; |
| 239 | 238 |
| (...skipping 580 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 820 * Obtains the CSS transformation string of the effect. | 819 * Obtains the CSS transformation string of the effect. |
| 821 * @param {DOMCanvas} element Canvas element to be applied the transforamtion. | 820 * @param {DOMCanvas} element Canvas element to be applied the transforamtion. |
| 822 * @param {Viewport} viewport Current viewport. | 821 * @param {Viewport} viewport Current viewport. |
| 823 * @return CSS transformation description. | 822 * @return CSS transformation description. |
| 824 */ | 823 */ |
| 825 ImageView.Effect.prototype.transform = function(element, viewport) { | 824 ImageView.Effect.prototype.transform = function(element, viewport) { |
| 826 throw new Error('Not implemented.'); | 825 throw new Error('Not implemented.'); |
| 827 }; | 826 }; |
| 828 | 827 |
| 829 /** | 828 /** |
| 830 * Default effect. It is not a no-op as it needs to adjust a canvas scale | 829 * Default effect. |
| 831 * for devicePixelRatio. | |
| 832 * | 830 * |
| 833 * @constructor | 831 * @constructor |
| 834 * @extends {ImageView.Effect} | 832 * @extends {ImageView.Effect} |
| 835 */ | 833 */ |
| 836 ImageView.Effect.None = function() { | 834 ImageView.Effect.None = function() { |
| 837 ImageView.Effect.call(this, 0, 'easy-out'); | 835 ImageView.Effect.call(this, 0, 'easy-out'); |
| 838 }; | 836 }; |
| 839 | 837 |
| 840 /** | 838 /** |
| 841 * Inherits from ImageView.Effect. | 839 * Inherits from ImageView.Effect. |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 881 /** | 879 /** |
| 882 * @override | 880 * @override |
| 883 */ | 881 */ |
| 884 ImageView.Effect.Slide.prototype.transform = function(element, viewport) { | 882 ImageView.Effect.Slide.prototype.transform = function(element, viewport) { |
| 885 return viewport.getShiftTransformation(this.shift_); | 883 return viewport.getShiftTransformation(this.shift_); |
| 886 }; | 884 }; |
| 887 | 885 |
| 888 /** | 886 /** |
| 889 * Zoom effect. | 887 * Zoom effect. |
| 890 * | 888 * |
| 891 * Animates the original rectangle to the target rectangle. Both parameters | 889 * Animates the original rectangle to the target rectangle. |
| 892 * should be given in device coordinates (accounting for devicePixelRatio). | |
| 893 * | 890 * |
| 894 * @param {number} previousImageWidth Width of the full resolution image. | 891 * @param {number} previousImageWidth Width of the full resolution image. |
| 895 * @param {number} previousImageHeight Hieght of the full resolution image. | 892 * @param {number} previousImageHeight Hieght of the full resolution image. |
| 896 * @param {Rect} imageCropRect Crop rectangle in the full resolution image. | 893 * @param {Rect} imageCropRect Crop rectangle in the full resolution image. |
| 897 * @param {number=} opt_duration Duration of the effect. | 894 * @param {number=} opt_duration Duration of the effect. |
| 898 * @constructor | 895 * @constructor |
| 899 * @extends {ImageView.Effect} | 896 * @extends {ImageView.Effect} |
| 900 */ | 897 */ |
| 901 ImageView.Effect.Zoom = function( | 898 ImageView.Effect.Zoom = function( |
| 902 previousImageWidth, previousImageHeight, imageCropRect, opt_duration) { | 899 previousImageWidth, previousImageHeight, imageCropRect, opt_duration) { |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 956 }; | 953 }; |
| 957 | 954 |
| 958 ImageView.Effect.Rotate.prototype = { __proto__: ImageView.Effect.prototype }; | 955 ImageView.Effect.Rotate.prototype = { __proto__: ImageView.Effect.prototype }; |
| 959 | 956 |
| 960 /** | 957 /** |
| 961 * @override | 958 * @override |
| 962 */ | 959 */ |
| 963 ImageView.Effect.Rotate.prototype.transform = function(element, viewport) { | 960 ImageView.Effect.Rotate.prototype.transform = function(element, viewport) { |
| 964 return viewport.getInverseTransformForRotatedImage(this.orientation_); | 961 return viewport.getInverseTransformForRotatedImage(this.orientation_); |
| 965 }; | 962 }; |
| OLD | NEW |