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

View File

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

View File

@@ -44,6 +44,7 @@ describe('ol.layer.Group', function() {
it('provides default layerState', function() {
expect(layerGroup.getLayerState()).to.eql({
layer: layerGroup,
brightness: 0,
contrast: 1,
hue: 0,
@@ -170,6 +171,7 @@ describe('ol.layer.Group', function() {
expect(layerGroup.getMaxResolution()).to.be(500);
expect(layerGroup.getMinResolution()).to.be(0.25);
expect(layerGroup.getLayerState()).to.eql({
layer: layerGroup,
brightness: 0.5,
contrast: 10,
hue: 180,
@@ -212,6 +214,7 @@ describe('ol.layer.Group', function() {
layerGroup.setMaxResolution(500);
layerGroup.setMinResolution(0.25);
expect(layerGroup.getLayerState()).to.eql({
layer: layerGroup,
brightness: -0.7,
contrast: 0.3,
hue: -0.3,
@@ -232,6 +235,7 @@ describe('ol.layer.Group', function() {
layerGroup.setSaturation(-0.7);
layerGroup.setVisible(false);
expect(layerGroup.getLayerState()).to.eql({
layer: layerGroup,
brightness: 1,
contrast: 0,
hue: 42,
@@ -250,6 +254,7 @@ describe('ol.layer.Group', function() {
layerGroup.setSaturation(42);
layerGroup.setVisible(true);
expect(layerGroup.getLayerState()).to.eql({
layer: layerGroup,
brightness: -1,
contrast: 42,
hue: -100,
@@ -345,7 +350,14 @@ describe('ol.layer.Group', function() {
expect(layerStatesArray).to.be.a(Array);
expect(layerStatesArray.length).to.be(2);
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());
goog.dispose(layerGroup);
@@ -367,8 +379,21 @@ describe('ol.layer.Group', function() {
obj = layerGroup.getLayerStatesArray();
layersArray = obj.layers;
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,
contrast: 100,
hue: 360,
@@ -392,6 +417,7 @@ describe('ol.layer.Group', function() {
goog.require('goog.dispose');
goog.require('goog.events.EventType');
goog.require('goog.object');
goog.require('ol.ObjectEventType');
goog.require('ol.layer.Layer');
goog.require('ol.layer.Group');