| 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. |
| 11 * @param {Viewport} viewport The viewport. | 11 * @param {Viewport} viewport The viewport. |
| 12 * @constructor | 12 * @constructor |
| 13 * @extends {ImageBuffer.Overlay} |
| 13 */ | 14 */ |
| 14 function ImageView(container, viewport) { | 15 function ImageView(container, viewport) { |
| 16 ImageBuffer.Overlay.call(this); |
| 17 |
| 15 this.container_ = container; | 18 this.container_ = container; |
| 16 this.viewport_ = viewport; | 19 this.viewport_ = viewport; |
| 17 this.document_ = container.ownerDocument; | 20 this.document_ = container.ownerDocument; |
| 18 this.contentGeneration_ = 0; | 21 this.contentGeneration_ = 0; |
| 19 this.displayedContentGeneration_ = 0; | 22 this.displayedContentGeneration_ = 0; |
| 20 this.displayedViewportGeneration_ = 0; | 23 this.displayedViewportGeneration_ = 0; |
| 21 | 24 |
| 22 this.imageLoader_ = new ImageUtil.ImageLoader(this.document_); | 25 this.imageLoader_ = new ImageUtil.ImageLoader(this.document_); |
| 23 // We have a separate image loader for prefetch which does not get cancelled | 26 // We have a separate image loader for prefetch which does not get cancelled |
| 24 // when the selection changes. | 27 // when the selection changes. |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 82 ImageView.LOAD_TYPE_OFFLINE = 4; | 85 ImageView.LOAD_TYPE_OFFLINE = 4; |
| 83 | 86 |
| 84 /** | 87 /** |
| 85 * The total number of load types. | 88 * The total number of load types. |
| 86 */ | 89 */ |
| 87 ImageView.LOAD_TYPE_TOTAL = 5; | 90 ImageView.LOAD_TYPE_TOTAL = 5; |
| 88 | 91 |
| 89 ImageView.prototype = {__proto__: ImageBuffer.Overlay.prototype}; | 92 ImageView.prototype = {__proto__: ImageBuffer.Overlay.prototype}; |
| 90 | 93 |
| 91 /** | 94 /** |
| 92 * Draws below overlays with the default zIndex. | 95 * @override |
| 93 * @return {number} Z-index. | |
| 94 */ | 96 */ |
| 95 ImageView.prototype.getZIndex = function() { return -1; }; | 97 ImageView.prototype.getZIndex = function() { return -1; }; |
| 96 | 98 |
| 97 /** | 99 /** |
| 98 * Draws the image on screen. | 100 * @override |
| 99 */ | 101 */ |
| 100 ImageView.prototype.draw = function() { | 102 ImageView.prototype.draw = function() { |
| 101 if (!this.contentCanvas_) // Do nothing if the image content is not set. | 103 if (!this.contentCanvas_) // Do nothing if the image content is not set. |
| 102 return; | 104 return; |
| 103 | 105 |
| 104 var forceRepaint = false; | 106 var forceRepaint = false; |
| 105 | 107 |
| 106 if (this.displayedViewportGeneration_ !== | 108 if (this.displayedViewportGeneration_ !== |
| 107 this.viewport_.getCacheGeneration()) { | 109 this.viewport_.getCacheGeneration()) { |
| 108 this.displayedViewportGeneration_ = this.viewport_.getCacheGeneration(); | 110 this.displayedViewportGeneration_ = this.viewport_.getCacheGeneration(); |
| 109 | 111 |
| 110 this.setupDeviceBuffer(this.screenImage_); | 112 this.setupDeviceBuffer(this.screenImage_); |
| 111 | 113 |
| 112 forceRepaint = true; | 114 forceRepaint = true; |
| 113 } | 115 } |
| 114 | 116 |
| 115 if (forceRepaint || | 117 if (forceRepaint || |
| 116 this.displayedContentGeneration_ !== this.contentGeneration_) { | 118 this.displayedContentGeneration_ !== this.contentGeneration_) { |
| 117 this.displayedContentGeneration_ = this.contentGeneration_; | 119 this.displayedContentGeneration_ = this.contentGeneration_; |
| 118 | 120 |
| 119 ImageUtil.trace.resetTimer('paint'); | 121 ImageUtil.trace.resetTimer('paint'); |
| 120 this.paintDeviceRect(this.viewport_.getDeviceClipped(), | 122 this.paintDeviceRect(this.viewport_.getDeviceClipped(), |
| 121 this.contentCanvas_, this.viewport_.getImageClipped()); | 123 this.contentCanvas_, this.viewport_.getImageClipped()); |
| 122 ImageUtil.trace.reportTimer('paint'); | 124 ImageUtil.trace.reportTimer('paint'); |
| 123 } | 125 } |
| 124 }; | 126 }; |
| 125 | 127 |
| 126 /** | 128 /** |
| 127 * @param {number} x X pointer position. | |
| 128 * @param {number} y Y pointer position. | |
| 129 * @param {boolean} mouseDown True if mouse is down. | |
| 130 * @return {string} CSS cursor style. | |
| 131 */ | |
| 132 ImageView.prototype.getCursorStyle = function(x, y, mouseDown) { | |
| 133 // Indicate that the image is draggable. | |
| 134 if (this.viewport_.isClipped() && | |
| 135 this.viewport_.getScreenClipped().inside(x, y)) | |
| 136 return 'move'; | |
| 137 | |
| 138 return null; | |
| 139 }; | |
| 140 | |
| 141 /** | |
| 142 * @param {number} x X pointer position. | |
| 143 * @param {number} y Y pointer position. | |
| 144 * @return {function} The closure to call on drag. | |
| 145 */ | |
| 146 ImageView.prototype.getDragHandler = function(x, y) { | |
| 147 var cursor = this.getCursorStyle(x, y); | |
| 148 if (cursor === 'move') { | |
| 149 // Return the handler that drags the entire image. | |
| 150 return this.viewport_.createOffsetSetter(x, y); | |
| 151 } | |
| 152 | |
| 153 return null; | |
| 154 }; | |
| 155 | |
| 156 /** | |
| 157 * @return {number} The cache generation. | 129 * @return {number} The cache generation. |
| 158 */ | 130 */ |
| 159 ImageView.prototype.getCacheGeneration = function() { | 131 ImageView.prototype.getCacheGeneration = function() { |
| 160 return this.contentGeneration_; | 132 return this.contentGeneration_; |
| 161 }; | 133 }; |
| 162 | 134 |
| 163 /** | 135 /** |
| 164 * Invalidates the caches to force redrawing the screen canvas. | 136 * Invalidates the caches to force redrawing the screen canvas. |
| 165 */ | 137 */ |
| 166 ImageView.prototype.invalidateCaches = function() { | 138 ImageView.prototype.invalidateCaches = function() { |
| (...skipping 812 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 979 }; | 951 }; |
| 980 | 952 |
| 981 ImageView.Effect.Rotate.prototype = { __proto__: ImageView.Effect.prototype }; | 953 ImageView.Effect.Rotate.prototype = { __proto__: ImageView.Effect.prototype }; |
| 982 | 954 |
| 983 /** | 955 /** |
| 984 * @override | 956 * @override |
| 985 */ | 957 */ |
| 986 ImageView.Effect.Rotate.prototype.transform = function(element, viewport) { | 958 ImageView.Effect.Rotate.prototype.transform = function(element, viewport) { |
| 987 return viewport.getInverseTransformForRotatedImage(this.orientation_); | 959 return viewport.getInverseTransformForRotatedImage(this.orientation_); |
| 988 }; | 960 }; |
| OLD | NEW |