/// <summary> /// Static constructor for Globals class /// </summary> static Globals() { LayerColors = new ColorSchemes(ColorSchemeType.Layer); XmlDocument doc = new XmlDocument(); doc.LoadXml(Properties.Resources.colorschemes); LayerColors.LoadXML(doc); }
/// <summary> /// Generate label categories for the given set of shapefile categories /// </summary> /// <param name="mapWin">The reference to MapWindow</param> /// <param name="layerHandle">The handle of the layer</param> internal static void GenerateCategories(LegendControl.Legend legend, int layerHandle) { Layer lyr = legend.GetLayer(layerHandle); Shapefile sf = lyr.GetObject() as MapWinGIS.Shapefile; Labels lb = sf.Labels; sf.Labels.ClearCategories(); for (int i = 0; i < sf.Categories.Count; i++) { ShapefileCategory cat = sf.Categories.get_Item(i); LabelCategory labelCat = lb.AddCategory(cat.Name); labelCat.Expression = cat.Expression; } SymbologySettings settings = Globals.get_LayerSettings(layerHandle); ColorBlend blend = (ColorBlend)settings.LabelsScheme; if (blend != null) { ColorScheme scheme = ColorSchemes.ColorBlend2ColorScheme(blend); if (settings.LabelsRandomColors) { lb.ApplyColorScheme(tkColorSchemeType.ctSchemeRandom, scheme); } else { lb.ApplyColorScheme(tkColorSchemeType.ctSchemeGraduated, scheme); } } if (settings.LabelsVariableSize) { for (int i = 0; i < lb.NumCategories; i++) { lb.get_Category(i).FontSize = (int)((double)sf.Labels.FontSize + (double)settings.LabelsSizeRange / ((double)lb.NumCategories - 1) * (double)i); } } // Expressions aren't supported by labels yet, therefore we need to copy indices from the symbology for (int i = 0; i < lb.Count; i++) { MapWinGIS.Label label = lb.get_Label(i, 0); label.Category = sf.get_ShapeCategory(i); } }
/// <summary> /// Reads the list of color schemes /// </summary> public void ReadFromXML() { this.List.Clear(); XmlDocument xmlDoc = new XmlDocument(); string filename = this.GetFilename(); // reading from the file if (System.IO.File.Exists(filename)) { xmlDoc.Load(filename); this.LoadXML(xmlDoc); } // creating default ones if (this.List.Count == 0) { ColorBlend blend = null; if (_type == ColorSchemeType.Layer) { // dummy single color blend must be always the first for shapefile blend = new ColorBlend(2); blend.Colors[0] = Color.White; blend.Positions[0] = 0.0f; blend.Colors[1] = Color.White; blend.Positions[1] = 1.0f; this.List.Add(blend); blend = new ColorBlend(2); blend.Colors[0] = Color.LightBlue; blend.Positions[0] = 0.0f; blend.Colors[1] = Color.Orange; blend.Positions[1] = 1.0f; this.List.Add(blend); blend = new ColorBlend(2); blend.Colors[0] = Color.Yellow; blend.Positions[0] = 0.0f; blend.Colors[1] = Color.Orange; blend.Positions[1] = 1.0f; this.List.Add(blend); for (int i = 0; i < 2; i++) { MapWinGIS.ColorScheme sch = new ColorScheme(); if (i == 0) { sch.SetColors4(PredefinedColorScheme.FallLeaves); } if (i == 1) { sch.SetColors4(PredefinedColorScheme.DeadSea); } blend = ColorSchemes.ColorScheme2ColorBlend(sch); this.List.Add(blend); } // adding to 2 color schemes, as there can be none in the list blend = new ColorBlend(7); blend.Colors[0] = Color.Red; blend.Positions[0] = 0.0f; blend.Colors[1] = Color.Orange; blend.Positions[1] = 1.0f / 6.0f; blend.Colors[2] = Color.Yellow; blend.Positions[2] = 2.0f / 6.0f; blend.Colors[3] = Color.LightGreen; blend.Positions[3] = 3.0f / 6.0f; blend.Colors[4] = Color.LightBlue; blend.Positions[4] = 4.0f / 6.0f; blend.Colors[5] = Color.Blue; blend.Positions[5] = 5.0f / 6.0f; blend.Colors[6] = Color.BlueViolet; blend.Positions[6] = 1.0f; this.List.Add(blend); blend = new ColorBlend(2); blend.Colors[0] = Color.LightGray; blend.Positions[0] = 0.0f; blend.Colors[1] = Color.Gray; blend.Positions[1] = 1.0f; this.List.Add(blend); blend = new ColorBlend(2); blend.Colors[0] = Color.Pink; blend.Positions[0] = 0.0f; blend.Colors[1] = Color.LightYellow; blend.Positions[1] = 1.0f; this.List.Add(blend); } else if (_type == ColorSchemeType.Charts) { blend = new ColorBlend(2); blend.Colors[0] = Color.Yellow; blend.Positions[0] = 0.0f; blend.Colors[1] = Color.Orange; blend.Positions[1] = 1.0f; this.List.Add(blend); blend = new ColorBlend(2); blend.Colors[0] = Color.LightBlue; blend.Positions[0] = 0.0f; blend.Colors[1] = Color.Pink; blend.Positions[1] = 1.0f; this.List.Add(blend); blend = new ColorBlend(2); blend.Colors[0] = Color.LightGreen; blend.Positions[0] = 0.0f; blend.Colors[1] = Color.Yellow; blend.Positions[1] = 1.0f; this.List.Add(blend); } } }