| 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 * @param {Element} container Content container. | 8 * @param {Element} container Content container. |
| 9 * @param {cr.ui.ArrayDataModel} dataModel Data model. | 9 * @param {cr.ui.ArrayDataModel} dataModel Data model. |
| 10 * @param {cr.ui.ListSelectionModel} selectionModel Selection model. | 10 * @param {cr.ui.ListSelectionModel} selectionModel Selection model. |
| (...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 251 | 251 |
| 252 /** | 252 /** |
| 253 * @return {Mosaic.Tile} Selected tile or undefined if no selection. | 253 * @return {Mosaic.Tile} Selected tile or undefined if no selection. |
| 254 */ | 254 */ |
| 255 Mosaic.prototype.getSelectedTile = function() { | 255 Mosaic.prototype.getSelectedTile = function() { |
| 256 return this.tiles_ && this.tiles_[this.selectionModel_.selectedIndex]; | 256 return this.tiles_ && this.tiles_[this.selectionModel_.selectedIndex]; |
| 257 }; | 257 }; |
| 258 | 258 |
| 259 /** | 259 /** |
| 260 * @param {number} index Tile index. | 260 * @param {number} index Tile index. |
| 261 * @return {Rect} Tile's image rectangle. | 261 * @return {ImageRect} Tile's image rectangle. |
| 262 */ | 262 */ |
| 263 Mosaic.prototype.getTileRect = function(index) { | 263 Mosaic.prototype.getTileRect = function(index) { |
| 264 var tile = this.tiles_[index]; | 264 var tile = this.tiles_[index]; |
| 265 return tile && tile.getImageRect(); | 265 return tile && tile.getImageRect(); |
| 266 }; | 266 }; |
| 267 | 267 |
| 268 /** | 268 /** |
| 269 * @param {number} index Tile index. | 269 * @param {number} index Tile index. |
| 270 * Scroll the given tile into the viewport. | 270 * Scroll the given tile into the viewport. |
| 271 */ | 271 */ |
| (...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 546 | 546 |
| 547 this.loadVisibleTilesSuppressed_ = true; | 547 this.loadVisibleTilesSuppressed_ = true; |
| 548 this.loadVisibleTilesScheduled_ = false; | 548 this.loadVisibleTilesScheduled_ = false; |
| 549 setTimeout(function() { | 549 setTimeout(function() { |
| 550 this.loadVisibleTilesSuppressed_ = false; | 550 this.loadVisibleTilesSuppressed_ = false; |
| 551 if (this.loadVisibleTilesScheduled_) | 551 if (this.loadVisibleTilesScheduled_) |
| 552 this.loadVisibleTiles_(); | 552 this.loadVisibleTiles_(); |
| 553 }.bind(this), 100); | 553 }.bind(this), 100); |
| 554 | 554 |
| 555 // Tiles only in the viewport (visible). | 555 // Tiles only in the viewport (visible). |
| 556 var visibleRect = new Rect(0, | 556 var visibleRect = new ImageRect( |
| 557 0, | 557 0, 0, this.clientWidth, this.clientHeight); |
| 558 this.clientWidth, | |
| 559 this.clientHeight); | |
| 560 | 558 |
| 561 // Tiles in the viewport and also some distance on the left and right. | 559 // Tiles in the viewport and also some distance on the left and right. |
| 562 var renderableRect = new Rect(-this.clientWidth, | 560 var renderableRect = new ImageRect( |
| 563 0, | 561 -this.clientWidth, |
| 564 3 * this.clientWidth, | 562 0, |
| 565 this.clientHeight); | 563 3 * this.clientWidth, |
| 564 this.clientHeight); |
| 566 | 565 |
| 567 // Unload tiles out of scope. | 566 // Unload tiles out of scope. |
| 568 for (var index = 0; index < this.tiles_.length; index++) { | 567 for (var index = 0; index < this.tiles_.length; index++) { |
| 569 var tile = this.tiles_[index]; | 568 var tile = this.tiles_[index]; |
| 570 var imageRect = tile.getImageRect(); | 569 var imageRect = tile.getImageRect(); |
| 571 // Unload a thumbnail. | 570 // Unload a thumbnail. |
| 572 if (imageRect && !imageRect.intersects(renderableRect)) | 571 if (imageRect && !imageRect.intersects(renderableRect)) |
| 573 tile.unload(); | 572 tile.unload(); |
| 574 } | 573 } |
| 575 | 574 |
| (...skipping 23 matching lines...) Expand all Loading... |
| 599 imageRect.intersects(renderableRect)) { | 598 imageRect.intersects(renderableRect)) { |
| 600 tile.load(Mosaic.Tile.LoadMode.LOW_DPI, function() {}); | 599 tile.load(Mosaic.Tile.LoadMode.LOW_DPI, function() {}); |
| 601 } | 600 } |
| 602 } | 601 } |
| 603 } | 602 } |
| 604 }; | 603 }; |
| 605 | 604 |
| 606 /** | 605 /** |
| 607 * Applies reset the zoom transform. | 606 * Applies reset the zoom transform. |
| 608 * | 607 * |
| 609 * @param {Rect} tileRect Tile rectangle. Reset the transform if null. | 608 * @param {ImageRect} tileRect Tile rectangle. Reset the transform if null. |
| 610 * @param {Rect} imageRect Large image rectangle. Reset the transform if null. | 609 * @param {ImageRect} imageRect Large image rectangle. Reset the transform if |
| 610 * null. |
| 611 * @param {boolean=} opt_instant True of the transition should be instant. | 611 * @param {boolean=} opt_instant True of the transition should be instant. |
| 612 */ | 612 */ |
| 613 Mosaic.prototype.transform = function(tileRect, imageRect, opt_instant) { | 613 Mosaic.prototype.transform = function(tileRect, imageRect, opt_instant) { |
| 614 if (opt_instant) { | 614 if (opt_instant) { |
| 615 this.style.webkitTransitionDuration = '0'; | 615 this.style.webkitTransitionDuration = '0'; |
| 616 } else { | 616 } else { |
| 617 this.style.webkitTransitionDuration = | 617 this.style.webkitTransitionDuration = |
| 618 ImageView.MODE_TRANSITION_DURATION + 'ms'; | 618 ImageView.MODE_TRANSITION_DURATION + 'ms'; |
| 619 } | 619 } |
| 620 | 620 |
| (...skipping 1340 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1961 | 1961 |
| 1962 if (targetPosition) { | 1962 if (targetPosition) { |
| 1963 if (opt_animated === false) | 1963 if (opt_animated === false) |
| 1964 this.container_.scrollLeft = targetPosition; | 1964 this.container_.scrollLeft = targetPosition; |
| 1965 else | 1965 else |
| 1966 this.container_.animatedScrollTo(targetPosition); | 1966 this.container_.animatedScrollTo(targetPosition); |
| 1967 } | 1967 } |
| 1968 }; | 1968 }; |
| 1969 | 1969 |
| 1970 /** | 1970 /** |
| 1971 * @return {Rect} Rectangle occupied by the tile's image, | 1971 * @return {ImageRect} Rectangle occupied by the tile's image, |
| 1972 * relative to the viewport. | 1972 * relative to the viewport. |
| 1973 */ | 1973 */ |
| 1974 Mosaic.Tile.prototype.getImageRect = function() { | 1974 Mosaic.Tile.prototype.getImageRect = function() { |
| 1975 if (this.left_ === null) // Not laid out. | 1975 if (this.left_ === null) // Not laid out. |
| 1976 return null; | 1976 return null; |
| 1977 | 1977 |
| 1978 var margin = Mosaic.Layout.SPACING / 2; | 1978 var margin = Mosaic.Layout.SPACING / 2; |
| 1979 return new Rect(this.left_ - this.container_.scrollLeft, this.top_, | 1979 return new ImageRect(this.left_ - this.container_.scrollLeft, this.top_, |
| 1980 this.width_, this.height_).inflate(-margin, -margin); | 1980 this.width_, this.height_).inflate(-margin, -margin); |
| 1981 }; | 1981 }; |
| 1982 | 1982 |
| 1983 /** | 1983 /** |
| 1984 * @return {number} X coordinate of the tile center. | 1984 * @return {number} X coordinate of the tile center. |
| 1985 */ | 1985 */ |
| 1986 Mosaic.Tile.prototype.getCenterX = function() { | 1986 Mosaic.Tile.prototype.getCenterX = function() { |
| 1987 return this.left_ + Math.round(this.width_ / 2); | 1987 return this.left_ + Math.round(this.width_ / 2); |
| 1988 }; | 1988 }; |
| OLD | NEW |