Provide a reference to the layer

This commit is contained in:
Tim Schaub
2014-04-03 10:41:02 -06:00
parent 6c84358619
commit 9d5451b1d6
3 changed files with 37 additions and 4 deletions

View File

@@ -25,7 +25,8 @@ ol.layer.LayerProperty = {
/** /**
* @typedef {{brightness: number, * @typedef {{layer: ol.layer.Layer,
* brightness: number,
* contrast: number, * contrast: number,
* hue: number, * hue: number,
* opacity: number, * opacity: number,
@@ -126,6 +127,7 @@ ol.layer.Base.prototype.getLayerState = function() {
var maxResolution = this.getMaxResolution(); var maxResolution = this.getMaxResolution();
var minResolution = this.getMinResolution(); var minResolution = this.getMinResolution();
return { return {
layer: /** @type {ol.layer.Layer} */ (this),
brightness: goog.isDef(brightness) ? goog.math.clamp(brightness, -1, 1) : 0, brightness: goog.isDef(brightness) ? goog.math.clamp(brightness, -1, 1) : 0,
contrast: goog.isDef(contrast) ? Math.max(contrast, 0) : 1, contrast: goog.isDef(contrast) ? Math.max(contrast, 0) : 1,
hue: goog.isDef(hue) ? hue : 0, hue: goog.isDef(hue) ? hue : 0,

View File

@@ -48,6 +48,7 @@ describe('ol.layer.Layer', function() {
it('provides default layerState', function() { it('provides default layerState', function() {
expect(layer.getLayerState()).to.eql({ expect(layer.getLayerState()).to.eql({
layer: layer,
brightness: 0, brightness: 0,
contrast: 1, contrast: 1,
hue: 0, hue: 0,
@@ -90,6 +91,7 @@ describe('ol.layer.Layer', function() {
expect(layer.getMinResolution()).to.be(0.25); expect(layer.getMinResolution()).to.be(0.25);
expect(layer.get('foo')).to.be(42); expect(layer.get('foo')).to.be(42);
expect(layer.getLayerState()).to.eql({ expect(layer.getLayerState()).to.eql({
layer: layer,
brightness: 0.5, brightness: 0.5,
contrast: 10, contrast: 10,
hue: 180, hue: 180,
@@ -132,6 +134,7 @@ describe('ol.layer.Layer', function() {
layer.setMaxResolution(500); layer.setMaxResolution(500);
layer.setMinResolution(0.25); layer.setMinResolution(0.25);
expect(layer.getLayerState()).to.eql({ expect(layer.getLayerState()).to.eql({
layer: layer,
brightness: -0.7, brightness: -0.7,
contrast: 0.3, contrast: 0.3,
hue: -0.3, hue: -0.3,
@@ -152,6 +155,7 @@ describe('ol.layer.Layer', function() {
layer.setSaturation(-0.7); layer.setSaturation(-0.7);
layer.setVisible(false); layer.setVisible(false);
expect(layer.getLayerState()).to.eql({ expect(layer.getLayerState()).to.eql({
layer: layer,
brightness: 1, brightness: 1,
contrast: 0, contrast: 0,
hue: 42, hue: 42,
@@ -170,6 +174,7 @@ describe('ol.layer.Layer', function() {
layer.setSaturation(42); layer.setSaturation(42);
layer.setVisible(true); layer.setVisible(true);
expect(layer.getLayerState()).to.eql({ expect(layer.getLayerState()).to.eql({
layer: layer,
brightness: -1, brightness: -1,
contrast: 42, contrast: 42,
hue: -100, hue: -100,

View File

@@ -44,6 +44,7 @@ describe('ol.layer.Group', function() {
it('provides default layerState', function() { it('provides default layerState', function() {
expect(layerGroup.getLayerState()).to.eql({ expect(layerGroup.getLayerState()).to.eql({
layer: layerGroup,
brightness: 0, brightness: 0,
contrast: 1, contrast: 1,
hue: 0, hue: 0,
@@ -170,6 +171,7 @@ describe('ol.layer.Group', function() {
expect(layerGroup.getMaxResolution()).to.be(500); expect(layerGroup.getMaxResolution()).to.be(500);
expect(layerGroup.getMinResolution()).to.be(0.25); expect(layerGroup.getMinResolution()).to.be(0.25);
expect(layerGroup.getLayerState()).to.eql({ expect(layerGroup.getLayerState()).to.eql({
layer: layerGroup,
brightness: 0.5, brightness: 0.5,
contrast: 10, contrast: 10,
hue: 180, hue: 180,
@@ -212,6 +214,7 @@ describe('ol.layer.Group', function() {
layerGroup.setMaxResolution(500); layerGroup.setMaxResolution(500);
layerGroup.setMinResolution(0.25); layerGroup.setMinResolution(0.25);
expect(layerGroup.getLayerState()).to.eql({ expect(layerGroup.getLayerState()).to.eql({
layer: layerGroup,
brightness: -0.7, brightness: -0.7,
contrast: 0.3, contrast: 0.3,
hue: -0.3, hue: -0.3,
@@ -232,6 +235,7 @@ describe('ol.layer.Group', function() {
layerGroup.setSaturation(-0.7); layerGroup.setSaturation(-0.7);
layerGroup.setVisible(false); layerGroup.setVisible(false);
expect(layerGroup.getLayerState()).to.eql({ expect(layerGroup.getLayerState()).to.eql({
layer: layerGroup,
brightness: 1, brightness: 1,
contrast: 0, contrast: 0,
hue: 42, hue: 42,
@@ -250,6 +254,7 @@ describe('ol.layer.Group', function() {
layerGroup.setSaturation(42); layerGroup.setSaturation(42);
layerGroup.setVisible(true); layerGroup.setVisible(true);
expect(layerGroup.getLayerState()).to.eql({ expect(layerGroup.getLayerState()).to.eql({
layer: layerGroup,
brightness: -1, brightness: -1,
contrast: 42, contrast: 42,
hue: -100, hue: -100,
@@ -345,7 +350,14 @@ describe('ol.layer.Group', function() {
expect(layerStatesArray).to.be.a(Array); expect(layerStatesArray).to.be.a(Array);
expect(layerStatesArray.length).to.be(2); expect(layerStatesArray.length).to.be(2);
expect(layerStatesArray[0]).to.eql(layer1.getLayerState()); expect(layerStatesArray[0]).to.eql(layer1.getLayerState());
expect(layerStatesArray[0]).to.eql(layerGroup.getLayerState());
// layer state should match except for layer reference
var layerState = goog.object.clone(layerStatesArray[0]);
delete layerState.layer;
var groupState = goog.object.clone(layerGroup.getLayerState());
delete groupState.layer;
expect(layerState).to.eql(groupState);
expect(layerStatesArray[1]).to.eql(layer2.getLayerState()); expect(layerStatesArray[1]).to.eql(layer2.getLayerState());
goog.dispose(layerGroup); goog.dispose(layerGroup);
@@ -367,8 +379,21 @@ describe('ol.layer.Group', function() {
obj = layerGroup.getLayerStatesArray(); obj = layerGroup.getLayerStatesArray();
layersArray = obj.layers; layersArray = obj.layers;
layerStatesArray = obj.layerStates; layerStatesArray = obj.layerStates;
expect(layerStatesArray[0]).to.eql(layerGroup.getLayerState());
expect(layerStatesArray[1]).to.eql({ // compare layer state to group state
var groupState, layerState;
// layer state should match except for layer reference
layerState = goog.object.clone(layerStatesArray[0]);
delete layerState.layer;
groupState = goog.object.clone(layerGroup.getLayerState());
delete groupState.layer;
expect(layerState).to.eql(groupState);
// layer state should be transformed (and we ignore layer reference)
layerState = goog.object.clone(layerStatesArray[1]);
delete layerState.layer;
expect(layerState).to.eql({
brightness: 1, brightness: 1,
contrast: 100, contrast: 100,
hue: 360, hue: 360,
@@ -392,6 +417,7 @@ describe('ol.layer.Group', function() {
goog.require('goog.dispose'); goog.require('goog.dispose');
goog.require('goog.events.EventType'); goog.require('goog.events.EventType');
goog.require('goog.object');
goog.require('ol.ObjectEventType'); goog.require('ol.ObjectEventType');
goog.require('ol.layer.Layer'); goog.require('ol.layer.Layer');
goog.require('ol.layer.Group'); goog.require('ol.layer.Group');