[mapguide-commits] r7055 - branches/2.4/MgDev/Desktop/MapViewer

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Mon Oct 1 05:15:14 PDT 2012


Author: jng
Date: 2012-10-01 05:15:14 -0700 (Mon, 01 Oct 2012)
New Revision: 7055

Modified:
   branches/2.4/MgDev/Desktop/MapViewer/MgLegendControlPresenter.cs
Log:
mg-desktop: Backport r7053

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgLegendControlPresenter.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgLegendControlPresenter.cs	2012-10-01 12:02:18 UTC (rev 7054)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgLegendControlPresenter.cs	2012-10-01 12:15:14 UTC (rev 7055)
@@ -179,6 +179,9 @@
                                 GeometryType = geomType
                             };
 
+                            if (layerMeta.CategoryExists(themeCat))
+                                continue;
+
                             int catIndex = 0;
                             XmlNodeList typeStyle = scaleRange.GetElementsByTagName(typeStyles[geomType]);
                             for (int st = 0; st < typeStyle.Count; st++)
@@ -209,44 +212,50 @@
                                         }
                                     }
                                 }
-                                else if (!layerMeta.HasDefaultIconsAt(_map.ViewScale))
+                                else
                                 {
-                                    try
+                                    if (LayerNodeMetadata.ScaleIsApplicable(_map.ViewScale, themeCat))
                                     {
-                                        MgByteReader layerIcon = _provider.GenerateLegendImage(layer.LayerDefinition,
-                                                                                                   _map.ViewScale,
-                                                                                                   16,
-                                                                                                   16,
-                                                                                                   "PNG", //NOXLATE
-                                                                                                   -1,
-                                                                                                   -1);
-                                        legendCallCount++;
-                                        if (layerIcon != null)
+                                        if (!layerMeta.HasDefaultIconsAt(_map.ViewScale))
                                         {
                                             try
                                             {
-                                                byte[] b = new byte[layerIcon.GetLength()];
-                                                layerIcon.Read(b, b.Length);
-                                                using (var ms = new MemoryStream(b))
+                                                MgByteReader layerIcon = _provider.GenerateLegendImage(layer.LayerDefinition,
+                                                                                                           _map.ViewScale,
+                                                                                                           16,
+                                                                                                           16,
+                                                                                                           "PNG", //NOXLATE
+                                                                                                           -1,
+                                                                                                           -1);
+                                                legendCallCount++;
+                                                if (layerIcon != null)
                                                 {
-                                                    layerMeta.SetDefaultIcon(themeCat, Image.FromStream(ms));
-                                                    node.ToolTipText = string.Format(Strings.DefaultLayerTooltip, Environment.NewLine, layer.Name, layer.FeatureSourceId, layer.FeatureClassName);
+                                                    try
+                                                    {
+                                                        byte[] b = new byte[layerIcon.GetLength()];
+                                                        layerIcon.Read(b, b.Length);
+                                                        using (var ms = new MemoryStream(b))
+                                                        {
+                                                            layerMeta.SetDefaultIcon(themeCat, Image.FromStream(ms));
+                                                            node.ToolTipText = string.Format(Strings.DefaultLayerTooltip, Environment.NewLine, layer.Name, layer.FeatureSourceId, layer.FeatureClassName);
+                                                        }
+                                                    }
+                                                    finally
+                                                    {
+                                                        layerIcon.Dispose();
+                                                    }
                                                 }
+                                                else
+                                                {
+                                                    layerMeta.SetDefaultIcon(themeCat, Properties.Resources.lc_broken);
+                                                }
                                             }
-                                            finally
+                                            catch
                                             {
-                                                layerIcon.Dispose();
+                                                layerMeta.SetDefaultIcon(themeCat, Properties.Resources.lc_broken);
                                             }
                                         }
-                                        else
-                                        {
-                                            layerMeta.SetDefaultIcon(themeCat, Properties.Resources.lc_broken);
-                                        }
                                     }
-                                    catch
-                                    {
-                                        layerMeta.SetDefaultIcon(themeCat, Properties.Resources.lc_broken);
-                                    }
                                 }
                             }
                         }
@@ -984,7 +993,7 @@
                 return nodes.ToArray();
             }
 
-            private static bool ScaleIsApplicable(double scale, ThemeCategory cat)
+            internal static bool ScaleIsApplicable(double scale, ThemeCategory cat)
             {
                 bool bApplicable = false;
 
@@ -1042,6 +1051,11 @@
                 }
                 return false;
             }
+
+            internal bool CategoryExists(ThemeCategory themeCat)
+            {
+                return _themeNodes.ContainsKey(themeCat);
+            }
         }
     }
 }



More information about the mapguide-commits mailing list