Implement view hints architecture

This commit is contained in:
Tom Payne
2013-01-12 16:51:17 +01:00
parent 2a08e7add2
commit 5d31a44c12
4 changed files with 39 additions and 1 deletions

View File

@@ -23,7 +23,8 @@ goog.require('ol.layer.LayerState');
* size: ol.Size, * size: ol.Size,
* tileQueue: ol.TileQueue, * tileQueue: ol.TileQueue,
* time: number, * time: number,
* view2DState: ol.View2DState}} * view2DState: ol.View2DState,
* viewHints: Array.<number>}}
*/ */
ol.FrameState; ol.FrameState;

View File

@@ -6,6 +6,7 @@ goog.require('goog.asserts');
goog.require('ol.Coordinate'); goog.require('ol.Coordinate');
goog.require('ol.MapBrowserEvent'); goog.require('ol.MapBrowserEvent');
goog.require('ol.View2D'); goog.require('ol.View2D');
goog.require('ol.ViewHint');
goog.require('ol.interaction.ConditionType'); goog.require('ol.interaction.ConditionType');
goog.require('ol.interaction.Drag'); goog.require('ol.interaction.Drag');

View File

@@ -585,6 +585,7 @@ ol.Map.prototype.renderFrame_ = function(time) {
if (goog.isDef(layersArray) && goog.isDef(size) && goog.isDef(view2D) && if (goog.isDef(layersArray) && goog.isDef(size) && goog.isDef(view2D) &&
view2D.isDef()) { view2D.isDef()) {
var backgroundColor = this.getBackgroundColor(); var backgroundColor = this.getBackgroundColor();
var viewHints = view.getHints();
var layerStates = {}; var layerStates = {};
goog.array.forEach(layersArray, function(layer) { goog.array.forEach(layersArray, function(layer) {
layerStates[goog.getUid(layer)] = layer.getLayerState(); layerStates[goog.getUid(layer)] = layer.getLayerState();
@@ -601,6 +602,7 @@ ol.Map.prototype.renderFrame_ = function(time) {
size: size, size: size,
tileQueue: this.tileQueue_, tileQueue: this.tileQueue_,
view2DState: view2DState, view2DState: view2DState,
viewHints: viewHints,
time: time time: time
}; };
} }

View File

@@ -1,10 +1,19 @@
goog.provide('ol.View'); goog.provide('ol.View');
goog.provide('ol.ViewHint');
goog.require('ol.IView'); goog.require('ol.IView');
goog.require('ol.IView2D'); goog.require('ol.IView2D');
goog.require('ol.IView3D'); goog.require('ol.IView3D');
/**
* @enum {number}
*/
ol.ViewHint = {
PANNING: 0
};
/** /**
* @constructor * @constructor
@@ -12,10 +21,25 @@ goog.require('ol.IView3D');
* @extends {ol.Object} * @extends {ol.Object}
*/ */
ol.View = function() { ol.View = function() {
/**
* @private
* @type {Array.<number>}
*/
this.hints_ = [0];
}; };
goog.inherits(ol.View, ol.Object); goog.inherits(ol.View, ol.Object);
/**
* @return {Array.<number>} Hint.
*/
ol.View.prototype.getHints = function() {
return this.hints_;
};
/** /**
* @inheritDoc * @inheritDoc
*/ */
@@ -27,3 +51,13 @@ ol.View.prototype.getView2D = goog.abstractMethod;
*/ */
ol.View.prototype.getView3D = goog.abstractMethod; ol.View.prototype.getView3D = goog.abstractMethod;
/**
* @param {ol.ViewHint} hint Hint.
* @param {number} delta Delta.
*/
ol.View.prototype.setHint = function(hint, delta) {
goog.asserts.assert(0 <= hint && hint < this.hints_.length);
this.hints_[hint] += delta;
goog.asserts.assert(this.hints_[hint] >= 0);
};