public LegendToolItem(Bitmap symbol, string text, bool centered, LegendToolItem parent) { this.centered = centered; this.symbol = symbol; Text = text; this.parent = parent; }
public LegendToolItem AddItem(string text, bool centeredParam) { var newToolItem = new LegendToolItem(null, text, centeredParam, this); items.Add(newToolItem); return(newToolItem); }
public LegendToolItem AddItem(string text) { var newToolItem = new LegendToolItem(null, text, false, this); items.Add(newToolItem); return(newToolItem); }
private static void AddLayerThemeItems(LegendToolItem parent, IEnumerable <ILayer> layers) { foreach (ILayer layer in layers) { if ((!layer.IsVisible) || (!layer.ShowInLegend)) { continue; } if (layer is ILayerGroup) { // add a grouplayer item and then recursively call this function to add all the layers in the grouplayer var newParent = parent.AddItem(Properties.Resources.legendlayergroupsymbol, layer.Name); AddLayerThemeItems(newParent, ((ILayerGroup)layer).Layers); continue; } if (layer is VectorLayer) { AddLayerToLegend(layer as VectorLayer, parent); } else if (layer is WmsLayer) { AddLayerToLegend(layer as WmsLayer, parent); } else if (layer is RegularGridCoverageLayer) { AddLayerToLegend(layer as RegularGridCoverageLayer, parent); } } }
public LegendToolItem AddItem(Bitmap symbolBitmap, string text) { var newToolItem = new LegendToolItem(symbolBitmap, text, false, this); items.Add(newToolItem); return(newToolItem); }
public LegendToolItem(Bitmap symbol, string text, bool centered, LegendToolItem parent) { this.centered = centered; this.symbol = symbol; Text = text; this.parent = parent; }
private static void AddLayerToLegend(VectorLayer layer, LegendToolItem parent) { // Add a legendItem for this layer var layerItem = parent.AddItem(layer.Name); // Use attribute name for layer name layerItem.Text += GetThemeAttributeName(layer.Theme); if (layer.Theme is CustomTheme) { layerItem.Symbol = ((VectorStyle)((CustomTheme)layer.Theme).DefaultStyle).LegendSymbol; } else if (layer.Theme != null && layer.Theme.ThemeItems != null) { var isPointVectorLayer = layer.Style != null && layer.Style.GeometryType == typeof(IPoint); // Add vectorlayer theme items to the legend AddThemeItemsAsLegendItems(layer.Theme.ThemeItems, layerItem, isPointVectorLayer); } else if (layer.Style != null) { layerItem.Symbol = layer.Style.LegendSymbol; return; } }
private static void AddLayerToLegend(VectorLayer layer, LegendToolItem parent) { // Add a legendItem for this layer var layerItem = parent.AddItem(layer.Name); // Use attribute name for layer name var attributeName = layer.Theme == null ? null : layer.Theme.AttributeName; if (!String.IsNullOrEmpty(attributeName) && //not empty !attributeName.Equals((layerItem.Text))) //not duplicate { layerItem.Text += String.Format(" ({0})", attributeName); } if (layer.Theme is CustomTheme) { layerItem.Symbol = ((VectorStyle)((CustomTheme)layer.Theme).DefaultStyle).LegendSymbol; } else if (layer.Theme != null && layer.Theme.ThemeItems != null) { var isPointVectorLayer = layer.Style != null && layer.Style.GeometryType == typeof(IPoint); // Add vectorlayer theme items to the legend AddThemeItemsAsLegendItems(layer.Theme.ThemeItems, layerItem, isPointVectorLayer); } else if (layer.Style != null) { layerItem.Symbol = layer.Style.LegendSymbol; return; } }
private static void AddLayerThemeItems(LegendToolItem parent, IEnumerable <ILayer> layers) { foreach (ILayer layer in layers) { if ((!layer.Visible) || (!layer.ShowInLegend)) { continue; } if (layer is IGroupLayer) { // add a grouplayer item and then recursively call this function to add all the layers in the grouplayer var newParent = parent.AddItem(layerThemeSymbol, layer.Name); AddLayerThemeItems(newParent, ((IGroupLayer)layer).Layers); continue; } if (layer is VectorLayer) { AddLayerToLegend(layer as VectorLayer, parent); } else { AddLayerToLegend(layer, parent); } } }
private static void AddLayerToLegend(WmsLayer layer, LegendToolItem parent) { var title = layer.RootLayer.Name; var layerItem = parent.AddItem(title); if (layer.Theme != null && layer.Theme.ThemeItems != null) { AddThemeItemsAsLegendItems(layer.Theme.ThemeItems, layerItem, false); } }
public LegendToolItem InsertItem(LegendToolItem predecessor, string itemText) { var newToolItem = new LegendToolItem(null, itemText, false, this); int index = items.IndexOf(predecessor); if ((index + 1) < items.Count) { items.Insert(index + 1, newToolItem); } else { items.Add(newToolItem); } return(newToolItem); }
public override void Render(Graphics graphics, Map mapBox) { if (Visible) { if (!initScreenPosition) { initScreenPosition = SetInitialScreenLocation(); } // create root item var root = new LegendToolItem { Padding = Padding, Font = legendFont, Graphics = graphics }; var rootToolItem = root.AddItem("Legend", true); DateTime?currentTime = GetLayersTime(); AddLayerThemeItems(root, Map.Layers); if (currentTime != null) { root.InsertItem(rootToolItem, string.Format("Time {0}", currentTime)); } SizeF rootSize = root.Size; // HACK : this compensates for the indent in DrawLegendItem function rootSize.Width += Indent * 3; Size newSize = new Size((int)rootSize.Width, (int)rootSize.Height); // Paint a semi-transparent background graphics.FillRectangle(new SolidBrush(Color.FromArgb(125, 255, 255, 255)), new Rectangle(screenLocation, newSize)); // Paint a black border graphics.DrawRectangle(Pens.Black, new Rectangle(screenLocation, newSize)); // draw root item DrawLegendItem(graphics, root, screenLocation.X, screenLocation.Y); // Store our own new size (used by the component for dragging, etc.) calculatedSize = newSize; } base.Render(graphics, mapBox); }
private void DrawLegendItem(Graphics graphics, LegendToolItem toolItem, float x, float y) { float curX = x; bool hasSymbol = toolItem.Symbol != null; bool hasText = toolItem.Text != null; if (hasSymbol) { var deltaY = (toolItem.InternalSize.Height - toolItem.Symbol.Height) / 2; graphics.DrawImage(toolItem.Symbol, curX, y + deltaY); curX += toolItem.Symbol.Width; } if (hasText) { curX += (hasSymbol) ? padding.Width : 0; var deltaY = (toolItem.InternalSize.Height - graphics.MeasureString(toolItem.Text, toolItem.Font).Height) / 2; graphics.DrawString(toolItem.Text, toolItem.Font, Brushes.Black, curX, y + deltaY); } if (hasText || hasSymbol) { y += toolItem.InternalSize.Height; } foreach (var subItem in toolItem.Items) { float deltaX = padding.Width + Indent; if (subItem.Centered && subItem.Symbol == null) { float textWidth = graphics.MeasureString(subItem.Text, toolItem.Font).Width; deltaX = (toolItem.Root.Size.Width - textWidth) / 2; } DrawLegendItem(graphics, subItem, x + deltaX, y + padding.Height); y += subItem.Size.Height; } }
private static void AddLayerThemeItems(LegendToolItem parent, IEnumerable<ILayer> layers) { foreach (ILayer layer in layers) { if ((!layer.Visible) || (!layer.ShowInLegend)) continue; if (layer is IGroupLayer) { // add a grouplayer item and then recursively call this function to add all the layers in the grouplayer var newParent = parent.AddItem(layerThemeSymbol, layer.Name); AddLayerThemeItems(newParent, ((IGroupLayer) layer).Layers); continue; } if (layer is VectorLayer) { AddLayerToLegend(layer as VectorLayer, parent); } else { AddLayerToLegend(layer, parent); } } }
public LegendToolItem InsertItem(LegendToolItem predecessor, string itemText) { var newToolItem = new LegendToolItem(null, itemText, false, this); int index = items.IndexOf(predecessor); if ((index + 1) < items.Count) { items.Insert(index + 1, newToolItem); } else { items.Add(newToolItem); } return newToolItem; }
private static void AddLayerToLegend(VectorLayer layer, LegendToolItem parent) { // Add a legendItem for this layer var layerItem = parent.AddItem(layer.Name); // Use attribute name for layer name var attributeName = layer.Theme == null ? null : layer.Theme.AttributeName; if (!String.IsNullOrEmpty(attributeName) //not empty && !attributeName.Equals((layerItem.Text))) //not duplicate { layerItem.Text += String.Format(" ({0})", attributeName); } if (layer.Theme is CustomTheme) { layerItem.Symbol = ((VectorStyle) ((CustomTheme) layer.Theme).DefaultStyle).LegendSymbol; } else if (layer.Theme != null && layer.Theme.ThemeItems != null) { var isPointVectorLayer = layer.Style != null && layer.Style.GeometryType == typeof(IPoint); // Add vectorlayer theme items to the legend AddThemeItemsAsLegendItems(layer.Theme.ThemeItems, layerItem, isPointVectorLayer); } else if (layer.Style != null) { layerItem.Symbol = layer.Style.LegendSymbol; return; } }
private static void AddThemeItemsAsLegendItems(IEnumerable <IThemeItem> themeItems, LegendToolItem rootItem, bool isPointVectorLayer) { foreach (var themeItem in themeItems) { var legendItemLabel = themeItem.Label; if (!isPointVectorLayer) { if (themeItem.Style is VectorStyle) { rootItem.AddItem((themeItem.Style as VectorStyle).LegendSymbol, legendItemLabel); } } else { rootItem.AddItem(themeItem.Symbol, themeItem.Label); } } }
private static void AddLayerToLegend(WmsLayer layer, LegendToolItem parent) { var title = layer.RootLayer.Name; var layerItem = parent.AddItem(title); if (layer.Theme != null && layer.Theme.ThemeItems != null) { AddThemeItemsAsLegendItems(layer.Theme.ThemeItems, layerItem, false); } }
private static void AddLayerThemeItems(LegendToolItem parent, IEnumerable<ILayer> layers) { foreach (ILayer layer in layers) { if ((!layer.IsVisible) || (!layer.ShowInLegend)) continue; if (layer is ILayerGroup) { // add a grouplayer item and then recursively call this function to add all the layers in the grouplayer var newParent = parent.AddItem(Properties.Resources.legendlayergroupsymbol, layer.Name); AddLayerThemeItems(newParent, ((ILayerGroup) layer).Layers); continue; } if (layer is VectorLayer) { AddLayerToLegend(layer as VectorLayer, parent); } else if (layer is WmsLayer) { AddLayerToLegend(layer as WmsLayer, parent); } else if (layer is RegularGridCoverageLayer) { AddLayerToLegend(layer as RegularGridCoverageLayer, parent); } } }
private static void AddThemeItemsAsLegendItems(IEnumerable<IThemeItem> themeItems, LegendToolItem rootItem, bool isPointVectorLayer) { foreach (var themeItem in themeItems) { var legendItemLabel = themeItem.Label; if (!isPointVectorLayer) { if (themeItem.Style is VectorStyle) { rootItem.AddItem((themeItem.Style as VectorStyle).LegendSymbol, legendItemLabel); } } else { rootItem.AddItem(themeItem.Symbol, themeItem.Label); } } }
private static void AddLayerToLegend(VectorLayer layer, LegendToolItem parent) { // Add a legendItem for this layer var layerItem = parent.AddItem(layer.Name); // Use attribute name for layer name layerItem.Text += GetThemeAttributeName(layer.Theme); if (layer.Theme is CustomTheme) { layerItem.Symbol = ((VectorStyle) ((CustomTheme) layer.Theme).DefaultStyle).LegendSymbol; } else if (layer.Theme != null && layer.Theme.ThemeItems != null) { var isPointVectorLayer = layer.Style != null && layer.Style.GeometryType == typeof(IPoint); // Add vectorlayer theme items to the legend AddThemeItemsAsLegendItems(layer.Theme.ThemeItems, layerItem, isPointVectorLayer); } else if (layer.Style != null) { layerItem.Symbol = layer.Style.LegendSymbol; return; } }
public override void Render(Graphics graphics, Map mapBox) { if (Visible) { if (!initScreenPosition) { initScreenPosition = SetInitialScreenLocation(); } // create root item var root = new LegendToolItem {Padding = Padding, Font = legendFont, Graphics = graphics}; var rootToolItem = root.AddItem("Legend", true); DateTime? currentTime = GetLayersTime(); AddLayerThemeItems(root, Map.Layers); if (currentTime != null) { root.InsertItem(rootToolItem, string.Format("Time {0}", currentTime)); } SizeF rootSize = root.Size; // HACK : this compensates for the indent in DrawLegendItem function rootSize.Width += Indent*3; Size newSize = new Size((int) rootSize.Width, (int) rootSize.Height); // Paint a semi-transparent background graphics.FillRectangle(new SolidBrush(Color.FromArgb(125, 255, 255, 255)), new Rectangle(screenLocation, newSize)); // Paint a black border graphics.DrawRectangle(Pens.Black, new Rectangle(screenLocation, newSize)); // draw root item DrawLegendItem(graphics, root, screenLocation.X, screenLocation.Y); // Store our own new size (used by the component for dragging, etc.) calculatedSize = newSize; } base.Render(graphics, mapBox); }
private void DrawLegendItem(Graphics graphics, LegendToolItem toolItem, float x, float y) { float curX = x; bool hasSymbol = toolItem.Symbol != null; bool hasText = toolItem.Text != null; if (hasSymbol) { var deltaY = (toolItem.InternalSize.Height - toolItem.Symbol.Height)/2; graphics.DrawImage(toolItem.Symbol, curX, y + deltaY); curX += toolItem.Symbol.Width; } if (hasText) { curX += (hasSymbol) ? padding.Width : 0; var deltaY = (toolItem.InternalSize.Height - graphics.MeasureString(toolItem.Text, toolItem.Font).Height)/ 2; graphics.DrawString(toolItem.Text, toolItem.Font, Brushes.Black, curX, y + deltaY); } if (hasText || hasSymbol) { y += toolItem.InternalSize.Height; } foreach (var subItem in toolItem.Items) { float deltaX = padding.Width + Indent; if (subItem.Centered && subItem.Symbol == null) { float textWidth = graphics.MeasureString(subItem.Text, toolItem.Font).Width; deltaX = (toolItem.Root.Size.Width - textWidth)/2; } DrawLegendItem(graphics, subItem, x + deltaX, y + padding.Height); y += subItem.Size.Height; } }
public LegendToolItem AddItem(string text) { var newToolItem = new LegendToolItem(null, text, false, this); items.Add(newToolItem); return newToolItem; }
public LegendToolItem AddItem(string text, bool centeredParam) { var newToolItem = new LegendToolItem(null, text, centeredParam, this); items.Add(newToolItem); return newToolItem; }
public LegendToolItem AddItem(Bitmap symbolBitmap, string text) { var newToolItem = new LegendToolItem(symbolBitmap, text, false, this); items.Add(newToolItem); return newToolItem; }