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

View File

@@ -1283,6 +1283,7 @@ ol.Map.prototype.renderFrame_ = function(time) {
var size = this.getSize();
var view = this.getView();
var extent = ol.extent.createEmpty();
/** @type {?olx.FrameState} */
var frameState = null;
if (size !== undefined && ol.size.hasArea(size) && view && view.isDef()) {
@@ -1297,7 +1298,7 @@ ol.Map.prototype.renderFrame_ = function(time) {
animate: false,
attributions: {},
coordinateToPixelMatrix: this.coordinateToPixelMatrix_,
extent: null,
extent: extent,
focus: !this.focus_ ? viewState.center : this.focus_,
index: this.frameIndex_++,
layerStates: layerStates,
@@ -1329,7 +1330,7 @@ ol.Map.prototype.renderFrame_ = function(time) {
preRenderFunctions.length = n;
frameState.extent = ol.extent.getForViewAndSize(viewState.center,
viewState.resolution, viewState.rotation, frameState.size);
viewState.resolution, viewState.rotation, frameState.size, extent);
}
this.frameState_ = frameState;

View File

@@ -219,15 +219,16 @@ ol.source.Raster.prototype.getImage = function(extent, resolution, pixelRatio, p
return null;
}
if (!this.isDirty_(extent, resolution)) {
var currentExtent = extent.slice();
if (!this.isDirty_(currentExtent, resolution)) {
return this.renderedImageCanvas_;
}
var context = this.canvasContext_;
var canvas = context.canvas;
var width = Math.round(ol.extent.getWidth(extent) / resolution);
var height = Math.round(ol.extent.getHeight(extent) / resolution);
var width = Math.round(ol.extent.getWidth(currentExtent) / resolution);
var height = Math.round(ol.extent.getHeight(currentExtent) / resolution);
if (width !== canvas.width ||
height !== canvas.height) {
@@ -235,16 +236,16 @@ ol.source.Raster.prototype.getImage = function(extent, resolution, pixelRatio, p
canvas.height = height;
}
var frameState = this.updateFrameState_(extent, resolution, projection);
var frameState = this.updateFrameState_(currentExtent, resolution, projection);
var imageCanvas = new ol.ImageCanvas(
extent, resolution, 1, this.getAttributions(), canvas,
currentExtent, resolution, 1, this.getAttributions(), canvas,
this.composeFrame_.bind(this, frameState));
this.renderedImageCanvas_ = imageCanvas;
this.renderedState_ = {
extent: extent,
extent: currentExtent,
resolution: resolution,
revision: this.getRevision()
};