Provide layer states array in frame state
This commit is contained in:
@@ -72,6 +72,10 @@ oli.FrameState.prototype.layersArray;
|
|||||||
oli.FrameState.prototype.layerStates;
|
oli.FrameState.prototype.layerStates;
|
||||||
|
|
||||||
|
|
||||||
|
/** @type {Array.<ol.layer.LayerState>} */
|
||||||
|
oli.FrameState.prototype.layerStatesArray;
|
||||||
|
|
||||||
|
|
||||||
/** @type {Object.<string, string>} */
|
/** @type {Object.<string, string>} */
|
||||||
oli.FrameState.prototype.logos;
|
oli.FrameState.prototype.logos;
|
||||||
|
|
||||||
|
|||||||
@@ -1226,6 +1226,7 @@ ol.Map.prototype.renderFrame_ = function(time) {
|
|||||||
index: this.frameIndex_++,
|
index: this.frameIndex_++,
|
||||||
layersArray: layersArray,
|
layersArray: layersArray,
|
||||||
layerStates: layerStates,
|
layerStates: layerStates,
|
||||||
|
layerStatesArray: layerStatesArray,
|
||||||
logos: {},
|
logos: {},
|
||||||
pixelRatio: this.pixelRatio_,
|
pixelRatio: this.pixelRatio_,
|
||||||
pixelToCoordinateMatrix: this.pixelToCoordinateMatrix_,
|
pixelToCoordinateMatrix: this.pixelToCoordinateMatrix_,
|
||||||
|
|||||||
@@ -151,15 +151,14 @@ ol.renderer.canvas.Map.prototype.renderFrame = function(frameState) {
|
|||||||
|
|
||||||
this.dispatchComposeEvent_(ol.render.EventType.PRECOMPOSE, frameState);
|
this.dispatchComposeEvent_(ol.render.EventType.PRECOMPOSE, frameState);
|
||||||
|
|
||||||
var layerStates = frameState.layerStates;
|
var layerStatesArray = frameState.layerStatesArray;
|
||||||
var layersArray = frameState.layersArray;
|
|
||||||
var viewResolution = frameState.view2DState.resolution;
|
var viewResolution = frameState.view2DState.resolution;
|
||||||
var i, ii, layer, layerRenderer, layerState;
|
var i, ii, layer, layerRenderer, layerState;
|
||||||
for (i = 0, ii = layersArray.length; i < ii; ++i) {
|
for (i = 0, ii = layerStatesArray.length; i < ii; ++i) {
|
||||||
layer = layersArray[i];
|
layerState = layerStatesArray[i];
|
||||||
|
layer = layerState.layer;
|
||||||
layerRenderer = this.getLayerRenderer(layer);
|
layerRenderer = this.getLayerRenderer(layer);
|
||||||
goog.asserts.assertInstanceof(layerRenderer, ol.renderer.canvas.Layer);
|
goog.asserts.assertInstanceof(layerRenderer, ol.renderer.canvas.Layer);
|
||||||
layerState = layerStates[goog.getUid(layer)];
|
|
||||||
if (!layerState.visible ||
|
if (!layerState.visible ||
|
||||||
layerState.sourceState != ol.source.State.READY ||
|
layerState.sourceState != ol.source.State.READY ||
|
||||||
viewResolution >= layerState.maxResolution ||
|
viewResolution >= layerState.maxResolution ||
|
||||||
|
|||||||
@@ -117,21 +117,21 @@ ol.renderer.dom.Map.prototype.renderFrame = function(frameState) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
var layerStates = frameState.layerStates;
|
var layerStatesArray = frameState.layerStatesArray;
|
||||||
var layersArray = frameState.layersArray;
|
|
||||||
var i, ii, layer, layerRenderer, layerState;
|
var i, ii, layer, layerRenderer, layerState;
|
||||||
for (i = 0, ii = layersArray.length; i < ii; ++i) {
|
for (i = 0, ii = layerStatesArray.length; i < ii; ++i) {
|
||||||
layer = layersArray[i];
|
layerState = layerStatesArray[i];
|
||||||
|
layer = layerState.layer;
|
||||||
layerRenderer = /** @type {ol.renderer.dom.Layer} */ (
|
layerRenderer = /** @type {ol.renderer.dom.Layer} */ (
|
||||||
this.getLayerRenderer(layer));
|
this.getLayerRenderer(layer));
|
||||||
goog.asserts.assertInstanceof(layerRenderer, ol.renderer.dom.Layer);
|
goog.asserts.assertInstanceof(layerRenderer, ol.renderer.dom.Layer);
|
||||||
addChild.call(this, layerRenderer.getTarget(), i);
|
addChild.call(this, layerRenderer.getTarget(), i);
|
||||||
layerState = frameState.layerStates[goog.getUid(layer)];
|
|
||||||
if (layerState.sourceState == ol.source.State.READY) {
|
if (layerState.sourceState == ol.source.State.READY) {
|
||||||
layerRenderer.prepareFrame(frameState, layerState);
|
layerRenderer.prepareFrame(frameState, layerState);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var layerStates = frameState.layerStates;
|
||||||
var layerKey;
|
var layerKey;
|
||||||
for (layerKey in this.getLayerRenderers()) {
|
for (layerKey in this.getLayerRenderers()) {
|
||||||
if (!(layerKey in layerStates)) {
|
if (!(layerKey in layerStates)) {
|
||||||
|
|||||||
@@ -441,27 +441,26 @@ ol.renderer.webgl.Map.prototype.renderFrame = function(frameState) {
|
|||||||
this.textureCache_.set((-frameState.index).toString(), null);
|
this.textureCache_.set((-frameState.index).toString(), null);
|
||||||
++this.textureCacheFrameMarkerCount_;
|
++this.textureCacheFrameMarkerCount_;
|
||||||
|
|
||||||
/** @type {Array.<ol.layer.Layer>} */
|
/** @type {Array.<ol.layer.LayerState>} */
|
||||||
var layersToDraw = [];
|
var layerStatesToDraw = [];
|
||||||
var layersArray = frameState.layersArray;
|
var layerStatesArray = frameState.layerStatesArray;
|
||||||
var viewResolution = frameState.view2DState.resolution;
|
var viewResolution = frameState.view2DState.resolution;
|
||||||
var i, ii, layer, layerRenderer, layerState;
|
var i, ii, layerState;
|
||||||
for (i = 0, ii = layersArray.length; i < ii; ++i) {
|
for (i = 0, ii = layerStatesArray.length; i < ii; ++i) {
|
||||||
layer = layersArray[i];
|
layerState = layerStatesArray[i];
|
||||||
layerState = frameState.layerStates[goog.getUid(layer)];
|
|
||||||
if (layerState.visible &&
|
if (layerState.visible &&
|
||||||
layerState.sourceState == ol.source.State.READY &&
|
layerState.sourceState == ol.source.State.READY &&
|
||||||
viewResolution < layerState.maxResolution &&
|
viewResolution < layerState.maxResolution &&
|
||||||
viewResolution >= layerState.minResolution) {
|
viewResolution >= layerState.minResolution) {
|
||||||
layersToDraw.push(layer);
|
layerStatesToDraw.push(layerState);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0, ii = layersToDraw.length; i < ii; ++i) {
|
var layerRenderer;
|
||||||
layer = layersToDraw[i];
|
for (i = 0, ii = layerStatesToDraw.length; i < ii; ++i) {
|
||||||
layerRenderer = this.getLayerRenderer(layer);
|
layerState = layerStatesToDraw[i];
|
||||||
|
layerRenderer = this.getLayerRenderer(layerState.layer);
|
||||||
goog.asserts.assertInstanceof(layerRenderer, ol.renderer.webgl.Layer);
|
goog.asserts.assertInstanceof(layerRenderer, ol.renderer.webgl.Layer);
|
||||||
layerState = frameState.layerStates[goog.getUid(layer)];
|
|
||||||
layerRenderer.prepareFrame(frameState, layerState);
|
layerRenderer.prepareFrame(frameState, layerState);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -481,10 +480,9 @@ ol.renderer.webgl.Map.prototype.renderFrame = function(frameState) {
|
|||||||
|
|
||||||
this.dispatchComposeEvent_(ol.render.EventType.PRECOMPOSE, frameState);
|
this.dispatchComposeEvent_(ol.render.EventType.PRECOMPOSE, frameState);
|
||||||
|
|
||||||
for (i = 0, ii = layersToDraw.length; i < ii; ++i) {
|
for (i = 0, ii = layerStatesToDraw.length; i < ii; ++i) {
|
||||||
layer = layersToDraw[i];
|
layerState = layerStatesToDraw[i];
|
||||||
layerState = frameState.layerStates[goog.getUid(layer)];
|
layerRenderer = this.getLayerRenderer(layerState.layer);
|
||||||
layerRenderer = this.getLayerRenderer(layer);
|
|
||||||
goog.asserts.assertInstanceof(layerRenderer, ol.renderer.webgl.Layer);
|
goog.asserts.assertInstanceof(layerRenderer, ol.renderer.webgl.Layer);
|
||||||
layerRenderer.composeFrame(frameState, layerState, context);
|
layerRenderer.composeFrame(frameState, layerState, context);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user