Merge pull request #5313 from ahocevar/rastersource-framestate-extent

Rastersource framestate extent
This commit is contained in:
Andreas Hocevar
2016-05-10 14:35:25 +02:00
2 changed files with 10 additions and 8 deletions
+3 -2
View File
@@ -1283,6 +1283,7 @@ ol.Map.prototype.renderFrame_ = function(time) {
var size = this.getSize(); var size = this.getSize();
var view = this.getView(); var view = this.getView();
var extent = ol.extent.createEmpty();
/** @type {?olx.FrameState} */ /** @type {?olx.FrameState} */
var frameState = null; var frameState = null;
if (size !== undefined && ol.size.hasArea(size) && view && view.isDef()) { if (size !== undefined && ol.size.hasArea(size) && view && view.isDef()) {
@@ -1297,7 +1298,7 @@ ol.Map.prototype.renderFrame_ = function(time) {
animate: false, animate: false,
attributions: {}, attributions: {},
coordinateToPixelMatrix: this.coordinateToPixelMatrix_, coordinateToPixelMatrix: this.coordinateToPixelMatrix_,
extent: null, extent: extent,
focus: !this.focus_ ? viewState.center : this.focus_, focus: !this.focus_ ? viewState.center : this.focus_,
index: this.frameIndex_++, index: this.frameIndex_++,
layerStates: layerStates, layerStates: layerStates,
@@ -1329,7 +1330,7 @@ ol.Map.prototype.renderFrame_ = function(time) {
preRenderFunctions.length = n; preRenderFunctions.length = n;
frameState.extent = ol.extent.getForViewAndSize(viewState.center, frameState.extent = ol.extent.getForViewAndSize(viewState.center,
viewState.resolution, viewState.rotation, frameState.size); viewState.resolution, viewState.rotation, frameState.size, extent);
} }
this.frameState_ = frameState; this.frameState_ = frameState;
+7 -6
View File
@@ -219,15 +219,16 @@ ol.source.Raster.prototype.getImage = function(extent, resolution, pixelRatio, p
return null; return null;
} }
if (!this.isDirty_(extent, resolution)) { var currentExtent = extent.slice();
if (!this.isDirty_(currentExtent, resolution)) {
return this.renderedImageCanvas_; return this.renderedImageCanvas_;
} }
var context = this.canvasContext_; var context = this.canvasContext_;
var canvas = context.canvas; var canvas = context.canvas;
var width = Math.round(ol.extent.getWidth(extent) / resolution); var width = Math.round(ol.extent.getWidth(currentExtent) / resolution);
var height = Math.round(ol.extent.getHeight(extent) / resolution); var height = Math.round(ol.extent.getHeight(currentExtent) / resolution);
if (width !== canvas.width || if (width !== canvas.width ||
height !== canvas.height) { height !== canvas.height) {
@@ -235,16 +236,16 @@ ol.source.Raster.prototype.getImage = function(extent, resolution, pixelRatio, p
canvas.height = height; canvas.height = height;
} }
var frameState = this.updateFrameState_(extent, resolution, projection); var frameState = this.updateFrameState_(currentExtent, resolution, projection);
var imageCanvas = new ol.ImageCanvas( var imageCanvas = new ol.ImageCanvas(
extent, resolution, 1, this.getAttributions(), canvas, currentExtent, resolution, 1, this.getAttributions(), canvas,
this.composeFrame_.bind(this, frameState)); this.composeFrame_.bind(this, frameState));
this.renderedImageCanvas_ = imageCanvas; this.renderedImageCanvas_ = imageCanvas;
this.renderedState_ = { this.renderedState_ = {
extent: extent, extent: currentExtent,
resolution: resolution, resolution: resolution,
revision: this.getRevision() revision: this.getRevision()
}; };