Ejemplo n.º 1
0
 public LegendToolItem(Bitmap symbol, string text, bool centered, LegendToolItem parent)
 {
     this.centered = centered;
     this.symbol = symbol;
     Text = text;
     this.parent = parent;
 }
Ejemplo n.º 2
0
        public LegendToolItem AddItem(string text, bool centeredParam)
        {
            var newToolItem = new LegendToolItem(null, text, centeredParam, this);

            items.Add(newToolItem);
            return(newToolItem);
        }
Ejemplo n.º 3
0
        public LegendToolItem AddItem(string text)
        {
            var newToolItem = new LegendToolItem(null, text, false, this);

            items.Add(newToolItem);
            return(newToolItem);
        }
Ejemplo n.º 4
0
        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);
                }
            }
        }
Ejemplo n.º 5
0
        public LegendToolItem AddItem(Bitmap symbolBitmap, string text)
        {
            var newToolItem = new LegendToolItem(symbolBitmap, text, false, this);

            items.Add(newToolItem);
            return(newToolItem);
        }
Ejemplo n.º 6
0
 public LegendToolItem(Bitmap symbol, string text, bool centered, LegendToolItem parent)
 {
     this.centered = centered;
     this.symbol   = symbol;
     Text          = text;
     this.parent   = parent;
 }
Ejemplo n.º 7
0
        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;
            }
        }
Ejemplo n.º 8
0
        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;
            }
        }
Ejemplo n.º 9
0
        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);
                }
            }
        }
Ejemplo n.º 10
0
        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);
            }
        }
Ejemplo n.º 11
0
        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);
        }
Ejemplo n.º 12
0
        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);
        }
Ejemplo n.º 13
0
        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;
            }
        }
Ejemplo n.º 14
0
        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);
                }
            }
        }
Ejemplo n.º 15
0
 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;
 }
Ejemplo n.º 16
0
        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;
            }
        }
Ejemplo n.º 17
0
        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);
                }
            }
        }
Ejemplo n.º 18
0
 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);
     }
 }
Ejemplo n.º 19
0
        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);
                }
            }
        }
Ejemplo n.º 20
0
        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);
                }
            }
        }
Ejemplo n.º 21
0
        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;
            }
        }
Ejemplo n.º 22
0
        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);
        }
Ejemplo n.º 23
0
        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;
            }
        }
Ejemplo n.º 24
0
 public LegendToolItem AddItem(string text)
 {
     var newToolItem = new LegendToolItem(null, text, false, this);
     items.Add(newToolItem);
     return newToolItem;
 }
Ejemplo n.º 25
0
 public LegendToolItem AddItem(string text, bool centeredParam)
 {
     var newToolItem = new LegendToolItem(null, text, centeredParam, this);
     items.Add(newToolItem);
     return newToolItem;
 }
Ejemplo n.º 26
0
 public LegendToolItem AddItem(Bitmap symbolBitmap, string text)
 {
     var newToolItem = new LegendToolItem(symbolBitmap, text, false, this);
     items.Add(newToolItem);
     return newToolItem;
 }