public override ILegendItem Create(ILegendSettings legend, object item) { var lc = (LayerCollection)item; if (lc.Count == 0) { return(null); } var res = base.Create(legend, item); var lrs = new ILayer[lc.Count]; lc.CopyTo(lrs, 0); Array.Reverse(lrs); foreach (var layer in lrs) { var li = Factory[layer].Create(legend, layer); if (li != null) { res.SubItems.Add(li); } } res.Expanded = res.SubItems.Count > 0; res.Indentation = legend.Indentation; return(res); }
public override ILegendItem Create(ILegendSettings legend, object item) { if (item == null) throw new ArgumentNullException("item"); if (!(item is VectorLayer)) throw new ArgumentException("Item is not a vector layer", "item"); var vl = (VectorLayer)item; ILegendItem res = null; if (vl.Theme != null) { res = Factory[vl.Theme].Create(legend, vl.Theme) ?? new LegendItem(); res.Label = vl.LayerName + res.Label ?? string.Empty; } else { res = Factory[vl.Style].Create(legend, vl.Style) ?? new LegendItem(); res.Label = vl.LayerName; } res.Item = item; res.LabelFont = legend.ItemFont; res.LabelBrush = legend.ForeColor; res.Padding = legend.Padding; res.Exclude = !vl.Enabled; res.Expanded = res.SubItems.Count > 0; return res; }
/// <summary> /// Method to create the legend item /// </summary> /// <param name="settings">The legend settings</param> /// <param name="item">The item to create a legend item for</param> /// <returns>The legend item, if one could be created, otherwise <c>null</c></returns> public virtual ILegendItem Create(ILegendSettings settings, object item) { if (settings == null) { throw new ArgumentNullException("settings"); } if (item == null) { throw new ArgumentNullException("item"); } CheckType(item); var res = new LegendItem { Label = CreateLabel(item), Item = item, Symbol = CreateSymbol(settings.SymbolSize, item), LabelFont = settings.ItemFont, LabelBrush = settings.ForeColor, Padding = settings.Padding, Exclude = CheckExclude(item) }; res.Expanded = CheckExpanded(res); return(res); }
public ILegendItem Create(ILegendSettings legend, object item) { if (item == null) { throw new ArgumentNullException("item"); } if (!(item is LabelLayer)) { throw new ArgumentException("Item is not a label layer", "item"); } var vl = (LabelLayer)item; ILegendItem res = null; if (vl.Theme != null) { res = Factory[vl.Theme].Create(legend, vl.Theme) ?? new LegendItem(); res.Label = vl.LayerName + res.Label ?? string.Empty; } else { res = Factory[vl.Style].Create(legend, vl.Style) ?? new LegendItem(); res.Label = vl.LayerName; } res.LabelFont = legend.ItemFont; res.LabelBrush = legend.ForeColor; res.Padding = legend.Padding; res.Exclude = !vl.Enabled; res.Expanded = res.SubItems.Count > 0; res.Item = item; return(res); }
private ILegendItem CreateCategoryThemeLegendItem <T>(ILegendSettings settings, CategoryTheme <T> ct) where T : IComparable <T> { var res = new LegendItem { Label = " (" + ct.ColumnName + ")", LabelFont = settings.ItemFont, LabelBrush = settings.ForeColor, Indentation = settings.SymbolSize.Width }; var defaultItem = Factory[ct.Default.Style].Create(settings, ct.Default.Style); defaultItem.Label = "(" + ct.Default.Title + ")"; defaultItem.LabelBrush = settings.ForeColor; defaultItem.LabelFont = settings.ItemFont; defaultItem.Parent = res; res.SubItems.Add(defaultItem); foreach (var element in ct.ItemsAsReadOnly()) { var style = element.Style; var item = Factory[style].Create(settings, style); item.Label = element.Title; item.LabelFont = settings.ItemFont; item.LabelBrush = settings.ForeColor; item.Parent = res; item.Item = style; res.SubItems.Add(item); } return(res); }
public override ILegendItem Create(ILegendSettings settings, object item) { if (item == null) throw new ArgumentNullException("item"); if (!(item is LayerGroup)) throw new ArgumentException("Not of valid type", "item"); var layerGroup = (LayerGroup) item; var res = new LayerGroupLegendItem { Label = layerGroup.LayerName, LabelFont = settings.ItemFont, LabelBrush = settings.ForeColor, Item = item }; var lrs = new Layer[layerGroup.Layers.Count]; layerGroup.Layers.CopyTo(lrs, 0); Array.Reverse(lrs); foreach (var layer in lrs) { var lif = Factory[layer]; if (lif != null) { var nli = lif.Create(settings, layer); nli.Parent = res; res.SubItems.Add(nli); } } return res; }
private static ILegendItem CreateSymbolizerLegendItem(ILegendSettings settings, Image symbol) { return(new LegendItem { Symbol = symbol, LabelFont = settings.ItemFont }); }
public Legend(Map map, ILegendFactory factory = null, ILegendSettings settings = null) { _map = map; _factory = factory ?? new LegendFactory(); _settings = settings ?? new LegendSettings(); //Regenerate(); }
public ILegendItem Create(ILegendSettings settings, object item) { if (item == null) { throw new ArgumentNullException("item"); } if (!(item is ISymbolizer)) { throw new ArgumentException("item is not a ISymbolizer class"); } var sym = (ISymbolizer)item; var res = new LegendItem(); if (IsPointSymbolizer(sym)) { var nli = CreateSymbolizerLegendItem(settings, CreatePuntalSymbol(settings.SymbolSize, sym)); nli.Parent = res; nli.Item = sym; res.SubItems.Add(nli); } if (IsLineSymbolizer(sym)) { var nli = CreateSymbolizerLegendItem(settings, CreateLinealSymbol(settings.SymbolSize, sym)); nli.Parent = res; nli.Item = sym; res.SubItems.Add(nli); } if (IsPolygonSymbolizer(sym)) { var nli = CreateSymbolizerLegendItem(settings, CreatePolygonalSymbol(settings.SymbolSize, sym)); nli.Parent = res; nli.Item = sym; res.SubItems.Add(nli); } if (res.SubItems.Count == 0) { return(new LegendItem()); } if (res.SubItems.Count == 1) { return(res.SubItems.First()); } res.Expanded = true; res.Padding = settings.Padding; res.Indentation = settings.SymbolSize.Width; return(res); }
public override ILegendItem Create(ILegendSettings settings, object item) { if (item == null) { throw new ArgumentNullException("item"); } if (!(item is VectorStyle)) { throw new ArgumentException("item is not a VectorStyle", "item"); } var vs = (VectorStyle)item; var lis = new List <ILegendItem>(3); if (HasPuntalStyle(vs)) { lis.Add(CreatePuntalStyleLegendItem(Factory, settings, vs)); } if (HasLinealStyle(vs)) { lis.Add(CreateLinealStyleLegendItem(Factory, settings, vs)); } if (HasPolygonalStyle(vs)) { lis.Add(CreatePolygonalStyleLegendItem(Factory, settings, vs)); } if (lis.Count < 1) { return(new LegendItem()); } if (lis.Count == 1) { return(lis[0]); } var res = new LegendItem(); res.Indentation = settings.SymbolSize.Width; res.Item = item; foreach (var li in lis) { { li.Parent = res; li.Item = vs; res.SubItems.Add(li); } } return(res); }
public override ILegendItem Create(ILegendSettings legend, object item) { var res = base.Create(legend, item); var map = (Map) item; var scale = string.Format("1:{0:N0}", map.MapScale); res.SubItems.Add(Factory[scale].Create(legend, scale)); res.SubItems.Add(Factory[map.BackgroundLayer].Create(legend, map.VariableLayers)); res.SubItems.Add(Factory[map.BackgroundLayer].Create(legend, map.Layers)); res.SubItems.Add(Factory[map.BackgroundLayer].Create(legend, map.BackgroundLayer)); return res; }
public override ILegendItem Create(ILegendSettings legend, object item) { var res = base.Create(legend, item); var map = (Map)item; var scale = string.Format("1:{0:N0}", map.MapScale); res.SubItems.Add(Factory[scale].Create(legend, scale)); res.SubItems.Add(Factory[map.BackgroundLayer].Create(legend, map.VariableLayers)); res.SubItems.Add(Factory[map.BackgroundLayer].Create(legend, map.Layers)); res.SubItems.Add(Factory[map.BackgroundLayer].Create(legend, map.BackgroundLayer)); return(res); }
/// <summary> /// Creates an instance of this class /// </summary> public LegendFactory(ILegendSettings settings) { LegendSettings = settings; Register(new DefaultTextLegendItemFactory()); Register(new DefaultImageLegendItemFactory()); Register(new DefaultMapLegendItemFactory()); Register(new DefaultLayerGroupLegendItemFactory()); Register(new DefaultLayerCollectionLegendItemFactory()); Register(new DefaultVectorLayerLegendItemFactory()); Register(new DefaultVectorStyleLegendItemFactory()); Register(new DefaultThemeLegendItemFactory()); Register(new DefaultSymbolizerLegendItemFactory()); Register(new DefaultSymbolizerLayerLegendItemFactory()); Register(new DefaultLayerLegendItemFactory()); }
/// <summary> /// Method to create a legend <see cref="IMapDecoration"/> for the provided map /// </summary> /// <param name="map">The map</param> /// <param name="settings"></param> /// <returns>A legend map decoration</returns> public virtual ILegend Create(Map map, ILegendSettings settings = null) { settings = settings ?? LegendSettings; var res = new Legend(map, this, settings) { Root = new LegendItem { Label = "Map", LabelFont = settings.HeaderFont, LabelBrush = settings.ForeColor, Item = map, Expanded = true } }; var lif = ((ILegendFactory)this)[map.Layers]; if (map.VariableLayers.Count > 0) { var itm = lif.Create(LegendSettings, map.VariableLayers); itm.Parent = res.Root; res.Root.SubItems.Add(itm); } if (map.Layers.Count > 0) { var itm = lif.Create(LegendSettings, map.Layers); itm.Parent = res.Root; res.Root.SubItems.Add(itm); } if (map.BackgroundLayer.Count > 0) { var itm = lif.Create(LegendSettings, map.BackgroundLayer); itm.Parent = res.Root; res.Root.SubItems.Add(itm); } res.BorderColor = Color.Tomato; res.BorderMargin = new Size(5, 5); res.BorderWidth = 2; res.RoundedEdges = true; res.BackgroundColor = Color.LightBlue; return(res); }
/// <summary> /// Method to create a legend item for a layer /// </summary> /// <param name="settings">The legend settings</param> /// <param name="layer">The layer to create an item for</param> /// <returns>A legend item</returns> protected virtual ILegendItem Create(ILegendSettings settings, ILayer layer) { var factory = LookUpFactory(layer.GetType()); if (factory != null) { return(factory.Create(settings, layer)); } return(new LegendItem { Label = layer.LayerName, LabelFont = LegendSettings.ItemFont, LabelBrush = LegendSettings.ForeColor, Symbol = CreateGenericSymbol(layer), Exclude = !layer.Enabled, Indentation = LegendSettings.Indentation, Padding = LegendSettings.Padding, Expanded = true }); }
public ILegendItem Create(ILegendSettings settings, object item) { if (item == null) throw new ArgumentNullException("item"); if (!(item is ISymbolizer)) throw new ArgumentException("item is not a ISymbolizer class"); var sym = (ISymbolizer) item; var res = new LegendItem(); if (IsPointSymbolizer(sym)) { var nli = CreateSymbolizerLegendItem(settings, CreatePuntalSymbol(settings.SymbolSize, sym)); nli.Parent = res; nli.Item = sym; res.SubItems.Add(nli); } if (IsLineSymbolizer(sym)) { var nli = CreateSymbolizerLegendItem(settings, CreateLinealSymbol(settings.SymbolSize, sym)); nli.Parent = res; nli.Item = sym; res.SubItems.Add(nli); } if (IsPolygonSymbolizer(sym)) { var nli = CreateSymbolizerLegendItem(settings, CreatePolygonalSymbol(settings.SymbolSize, sym)); nli.Parent = res; nli.Item = sym; res.SubItems.Add(nli); } if (res.SubItems.Count == 0) return new LegendItem(); if (res.SubItems.Count == 1) return res.SubItems.First(); res.Expanded = true; res.Padding = settings.Padding; res.Indentation = settings.SymbolSize.Width; return res; }
public ILegendItem Create(ILegendSettings legend, object item) { if (item == null) { throw new ArgumentNullException("item"); } if (!(item is ITheme)) { throw new ArgumentException("Item is not a theme", "item"); } if (item is GradientTheme) { return(CreateGradientThemeLegendItems(legend, (GradientTheme)item)); } else if (item is UniqueValuesTheme <string> ) { return(CreateUniqueValuesLegendItems <string>(legend, (UniqueValuesTheme <string>)item)); } else if (item is UniqueValuesTheme <double> ) { return(CreateUniqueValuesLegendItems <double>(legend, (UniqueValuesTheme <double>)item)); } else if (item is UniqueValuesTheme <int> ) { return(CreateUniqueValuesLegendItems <int>(legend, (UniqueValuesTheme <int>)item)); } else if (item is CategoryTheme <string> ) { return(CreateCategoryThemeLegendItem <string>(legend, (CategoryTheme <string>)item)); } else if (item is CategoryTheme <double> ) { return(CreateCategoryThemeLegendItem <double>(legend, (CategoryTheme <double>)item)); } else if (item is CategoryTheme <int> ) { return(CreateCategoryThemeLegendItem <int>(legend, (CategoryTheme <int>)item)); } return(null); }
public override ILegendItem Create(ILegendSettings settings, object item) { if (item == null) { throw new ArgumentNullException("item"); } if (!(item is LayerGroup)) { throw new ArgumentException("Not of valid type", "item"); } var layerGroup = (LayerGroup)item; var res = new LayerGroupLegendItem { Label = layerGroup.LayerName, LabelFont = settings.ItemFont, LabelBrush = settings.ForeColor, Item = item }; var lrs = new Layer[layerGroup.Layers.Count]; layerGroup.Layers.CopyTo(lrs, 0); Array.Reverse(lrs); foreach (var layer in lrs) { var lif = Factory[layer]; if (lif != null) { var nli = lif.Create(settings, layer); nli.Parent = res; res.SubItems.Add(nli); } } return(res); }
ILegendItem CreateUniqueValuesLegendItems <T>(ILegendSettings settings, UniqueValuesTheme <T> uvt) where T : IConvertible { var res = new LegendItem { Label = " (" + uvt.AttributeName + ")", LabelFont = settings.ItemFont, LabelBrush = settings.ForeColor, Indentation = settings.SymbolSize.Width }; var defaultItem = Factory[uvt.DefaultStyle].Create(settings, uvt.DefaultStyle); defaultItem.Label = "(default)"; defaultItem.LabelBrush = settings.ForeColor; defaultItem.LabelFont = settings.ItemFont; defaultItem.Parent = res; defaultItem.Item = uvt.DefaultStyle; res.SubItems.Add(defaultItem); using (var fdt = CreateTable(uvt.AttributeName, typeof(T))) { for (var i = 0; i < uvt.UniqueValues.Length; i++) { var row = fdt.NewRow(); T val = default(T); row[0] = Convert.ChangeType(uvt.UniqueValues[i], val.GetTypeCode()); var style = uvt.GetStyle(row); var item = Factory[style].Create(settings, style); item.Label = uvt.UniqueValues[i]; item.LabelFont = settings.ItemFont; item.LabelBrush = settings.ForeColor; item.Parent = res; item.Item = style; res.SubItems.Add(item); } } return(res); }
public ILegendItem Create(ILegendSettings legend, object item) { if (item == null) { throw new ArgumentNullException("item"); } if (!(item is AnyGeometryVectorLayer || item is PuntalVectorLayer || item is LinealVectorLayer || item is PolygonalVectorLayer)) { throw new ArgumentException("Item is not a vector layer", "item"); } var sym = GetSymbolizer(item); ILegendItem res = null; var symFac = Factory[sym]; if (symFac != null) { res = symFac.Create(legend, sym) ?? new LegendItem(); } else { res = new LegendItem(); } res.Item = item; res.Label = ((ILayer)item).LayerName; res.LabelFont = legend.ItemFont; res.LabelBrush = legend.ForeColor; res.Padding = legend.Padding; res.Exclude = !((ILayer)item).Enabled; res.Expanded = res.SubItems.Count > 0; return(res); }
public override ILegendItem Create(ILegendSettings legend, object item) { var lc = (LayerCollection)item; if (lc.Count == 0) return null; var res = base.Create(legend, item); var lrs = new ILayer[lc.Count]; lc.CopyTo(lrs, 0); Array.Reverse(lrs); foreach (var layer in lrs) { var li = Factory[layer].Create(legend, layer); if (li != null) { res.SubItems.Add(li); } } res.Expanded = res.SubItems.Count > 0; res.Indentation = legend.Indentation; return res; }
/// <summary> /// Method to create a legend item for a layer collection /// </summary> /// <param name="settings">The legend</param> /// <param name="title">The title</param> /// <param name="layerCollection">The layer collection</param> /// <returns>The created legend item</returns> protected virtual ILegendItem Create(ILegendSettings settings, string title, LayerCollection layerCollection) { var res = new LegendItem { Indentation = LegendSettings.Indentation, Label = title, LabelFont = LegendSettings.HeaderFont, LabelBrush = LegendSettings.ForeColor, Expanded = true, Padding = LegendSettings.Padding, //Parent = legend.Root, Item = layerCollection }; for (var i = layerCollection.Count - 1; i >= 0; i--) { var layer = layerCollection[i]; var item = Create(settings, layer); res.SubItems.Add(item); } return(res); }
/// <summary> /// Method to create the legend item /// </summary> /// <param name="settings">The legend settings</param> /// <param name="item">The item to create a legend item for</param> /// <returns>The legend item, if one could be created, otherwise <c>null</c></returns> public virtual ILegendItem Create(ILegendSettings settings, object item) { if (settings == null) throw new ArgumentNullException("settings"); if (item == null) throw new ArgumentNullException("item"); CheckType(item); var res = new LegendItem { Label = CreateLabel(item), Item = item, Symbol = CreateSymbol(settings.SymbolSize, item), LabelFont = settings.ItemFont, LabelBrush = settings.ForeColor, Padding = settings.Padding, Exclude = CheckExclude(item) }; res.Expanded = CheckExpanded(res); return res; }
ILegendItem CreateGradientThemeLegendItems(ILegendSettings settings, GradientTheme gt) { var res = new LegendItem { Label = " (" + gt.ColumnName + ")", Indentation = settings.SymbolSize.Width }; var fcb = gt.FillColorBlend; var lcb = gt.LineColorBlend; var tcb = gt.TextColorBlend; for (var i = 0; i < fcb.Positions.Length; i++) { var tmp = gt.Min + fcb.Positions[i] * (gt.Max - gt.Min); var sl = new LegendItem { Label = tmp.ToString("N"), LabelFont = settings.ItemFont, LabelBrush = tcb != null ? new SolidBrush(tcb.Colors[i]) : settings.ForeColor, Symbol = CreateSymbol(settings.SymbolSize, fcb.Colors[i], lcb != null ? lcb.Colors[i] : Color.Transparent), Parent = res, Item = i }; res.SubItems.Add(sl); } return(res); }
public ILegendItem Create(ILegendSettings legend, object item) { if (item == null) throw new ArgumentNullException("item"); if (!(item is AnyGeometryVectorLayer || item is PuntalVectorLayer || item is LinealVectorLayer || item is PolygonalVectorLayer)) throw new ArgumentException("Item is not a vector layer", "item"); var sym = GetSymbolizer(item); ILegendItem res = null; var symFac = Factory[sym]; if (symFac != null) res = symFac.Create(legend, sym) ?? new LegendItem(); else res = new LegendItem(); res.Item = item; res.Label = ((ILayer) item).LayerName; res.LabelFont = legend.ItemFont; res.LabelBrush = legend.ForeColor; res.Padding = legend.Padding; res.Exclude = !((ILayer)item).Enabled; res.Expanded = res.SubItems.Count > 0; return res; }
/// <summary> /// Method to create a legend item for a layer /// </summary> /// <param name="settings">The legend settings</param> /// <param name="layer">The layer to create an item for</param> /// <returns>A legend item</returns> protected virtual ILegendItem Create(ILegendSettings settings, ILayer layer) { var factory = LookUpFactory(layer.GetType()); if (factory != null) return factory.Create(settings, layer); return new LegendItem { Label = layer.LayerName, LabelFont = LegendSettings.ItemFont, LabelBrush = LegendSettings.ForeColor, Symbol = CreateGenericSymbol(layer), Exclude = !layer.Enabled, Indentation = LegendSettings.Indentation, Padding = LegendSettings.Padding, Expanded = true }; }
protected virtual ILegendItem CreatePolygonalStyleLegendItem(ILegendFactory factory, ILegendSettings settings, VectorStyle vs) { return(new LegendItem { Symbol = CreatePolygonSymbol(factory, settings.SymbolSize, vs) }); }
private static ILegendItem CreateSymbolizerLegendItem(ILegendSettings settings, Image symbol) { return new LegendItem { Symbol = symbol, LabelFont = settings.ItemFont }; }
/// <summary> /// Method to create a legend item for a layer collection /// </summary> /// <param name="settings">The legend</param> /// <param name="title">The title</param> /// <param name="layerCollection">The layer collection</param> /// <returns>The created legend item</returns> protected virtual ILegendItem Create(ILegendSettings settings, string title, LayerCollection layerCollection) { var res = new LegendItem { Indentation = LegendSettings.Indentation, Label = title, LabelFont = LegendSettings.HeaderFont, LabelBrush = LegendSettings.ForeColor, Expanded = true, Padding = LegendSettings.Padding, //Parent = legend.Root, Item = layerCollection }; for (var i = layerCollection.Count-1; i >= 0; i--) { var layer = layerCollection[i]; var item = Create(settings, layer); res.SubItems.Add(item); } return res; }
/// <summary> /// Method to create a legend <see cref="IMapDecoration"/> for the provided map /// </summary> /// <param name="map">The map</param> /// <param name="settings"></param> /// <returns>A legend map decoration</returns> public virtual ILegend Create(Map map, ILegendSettings settings = null) { settings = settings ?? LegendSettings; var res = new Legend(map, this, settings) { Root = new LegendItem { Label = "Map", LabelFont = settings.HeaderFont, LabelBrush = settings.ForeColor, Item = map, Expanded = true } }; var lif = ((ILegendFactory) this)[ map.Layers]; if (map.VariableLayers.Count > 0) res.Root.SubItems.Add(lif.Create(LegendSettings, map.VariableLayers)); if (map.Layers.Count > 0) res.Root.SubItems.Add(lif.Create(LegendSettings, map.Layers)); if (map.BackgroundLayer.Count > 0) res.Root.SubItems.Add(lif.Create(LegendSettings, map.BackgroundLayer)); res.BorderColor = Color.Tomato; res.BorderMargin = new Size(5, 5); res.BorderWidth = 2; res.RoundedEdges = true; res.BackgroundColor = Color.LightBlue; return res; }