/// <summary> /// Merges the given newProperties with this one. /// </summary> /// <param name="newProperties"></param> /// <returns></returns> internal MapCSSRuleProperties Merge(MapCSSRuleProperties newProperties) { // determine the tightest zoom. int minZoom = this.MinZoom; int maxZoom = this.MaxZoom; if (this.MinZoom < newProperties.MinZoom) { minZoom = newProperties.MinZoom; } if (this.MaxZoom > newProperties.MaxZoom) { maxZoom = newProperties.MaxZoom; } // create a new rule and merge properties from both. var rule = new MapCSSRuleProperties(minZoom, maxZoom); foreach (var key in this.GetKeys()) { object value; this.TryGetProperty(key, out value); rule.AddProperty(key, value); } foreach (var key in newProperties.GetKeys()) { object value; newProperties.TryGetProperty(key, out value); rule.AddProperty(key, value); } return(rule); }