private bool ValidateLegendItem(LegendImporterItemViewModel tmpItem) { return(tmpItem.Style != null && tmpItem.AllowToAdd && !(tmpItem.Style is CompositeStyle) && !(tmpItem.Style is ValueStyle) && !(tmpItem.Style is ClassBreakStyle) //&& !(tmpItem.Style is FilterStyle) && !(tmpItem.Style is RegexStyle)); }
private LegendImporterItemViewModel GenerateComponentSytleItem(LayerListItem layerListItem) { var style = layerListItem.ConcreteObject as CompositeStyle; var zoomLevelImporterItem = new LegendImporterItemViewModel(); zoomLevelImporterItem.PropertyChanged += LayerLegendImporterItemPropertyChanged; zoomLevelImporterItem.Text = layerListItem.Name; var styleItem = layerListItem as StyleLayerListItem; if (styleItem != null) { zoomLevelImporterItem.Text += styleItem.ZoomLevelRange; } zoomLevelImporterItem.IconSource = layerListItem.PreviewImage.Source; zoomLevelImporterItem.CheckBoxVisibility = Visibility.Visible; zoomLevelImporterItem.Style = style; zoomLevelImporterItem.Level = 1; return(zoomLevelImporterItem); }
private void LayerLegendImporterItemPropertyChanged(object sender, PropertyChangedEventArgs e) { LegendImporterItemViewModel itemViewModel = sender as LegendImporterItemViewModel; if (e.PropertyName.Equals("AllowToAdd") && itemViewModel != null) { var indexOf = legendImporterItems.IndexOf(itemViewModel); for (int i = indexOf + 1; i < legendImporterItems.Count; i++) { if (legendImporterItems[i].Level > itemViewModel.Level) { legendImporterItems[i].AllowToAdd = itemViewModel.AllowToAdd; } else { break; } } } }
private LegendImporterItemViewModel GenerateLayerItem(FeatureLayer featureLayer) { SimpleShapeType shpType = SimpleShapeType.Area; var featureLayerPlugin = GisEditor.LayerManager.GetLayerPlugins(featureLayer.GetType()).FirstOrDefault() as FeatureLayerPlugin; if (featureLayerPlugin != null) { featureLayerPlugin.GetFeatureSimpleShapeType(featureLayer); } ImageSource imageSource = GetIconSource("pointShp.png"); switch (shpType) { case SimpleShapeType.Line: imageSource = GetIconSource("lineShp.png"); break; case SimpleShapeType.Area: imageSource = GetIconSource("areaShp.png"); break; default: break; } LegendImporterItemViewModel layerLegendImporterItem = new LegendImporterItemViewModel { Text = featureLayer.Name, IconSource = imageSource, Level = 0 }; layerLegendImporterItem.PropertyChanged += LayerLegendImporterItemPropertyChanged; return(layerLegendImporterItem); }
private IEnumerable <LegendImporterItemViewModel> GenerateStyleItems(Styles.Style style, int level) { if (style is AreaStyle || style is PointStyle || style is LineStyle) { LegendImporterItemViewModel styleLegendItem = new LegendImporterItemViewModel { Text = style.Name, CheckBoxVisibility = Visibility.Visible, Level = level, LeftPaddingLevel = level, Style = style }; using (Bitmap nativeImage = new Bitmap(iconSize, iconSize)) { var geoCanvas = new PlatformGeoCanvas(); var drawingShape = new RectangleShape(-10, 10, 10, -10); geoCanvas.BeginDrawing(nativeImage, drawingShape, GeographyUnit.Meter); style.DrawSample(geoCanvas, new DrawingRectangleF(geoCanvas.Width * .5f, geoCanvas.Height * .5f, geoCanvas.Width, geoCanvas.Height)); geoCanvas.EndDrawing(); var streamSource = new MemoryStream(); nativeImage.Save(streamSource, ImageFormat.Png); var imageSource = new BitmapImage(); imageSource.BeginInit(); imageSource.StreamSource = streamSource; imageSource.EndInit(); imageSource.Freeze(); styleLegendItem.IconSource = imageSource; } yield return(styleLegendItem); } else if (style is ClassBreakStyle || style is RegexStyle || style is ValueStyle || style is FilterStyle) { var clonedStyle = style.CloneDeep(); var classBreakStyle = clonedStyle as ClassBreakStyle; var regexStyle = clonedStyle as RegexStyle; var valueStyle = clonedStyle as ValueStyle; var filterStyle = clonedStyle as FilterStyle; IEnumerable <Styles.Style> subStyles = new Collection <Styles.Style>(); if (classBreakStyle != null) { subStyles = classBreakStyle.ClassBreaks.SelectMany(classBreakItem => { foreach (var item in classBreakItem.CustomStyles) { item.Name = ClassBreakSubItem.GetClassBreakStyleName(classBreakItem.Value); } return(classBreakItem.CustomStyles); }); } else if (regexStyle != null) { subStyles = regexStyle.RegexItems.SelectMany(regexItem => regexItem.CustomStyles); } else if (filterStyle != null) { subStyles = new Collection <Styles.Style>();//filterStyle.Styles; } else { subStyles = valueStyle.ValueItems.SelectMany(valueItem => { foreach (var item in valueItem.CustomStyles) { item.Name = valueItem.Value; } return(valueItem.CustomStyles); }); } LegendImporterItemViewModel styleLegendItem = new LegendImporterItemViewModel { Text = style.Name, CheckBoxVisibility = Visibility.Visible, Level = level, Style = style }; styleLegendItem.PropertyChanged += LayerLegendImporterItemPropertyChanged; using (Bitmap nativeImage = new Bitmap(iconSize, iconSize)) { var geoCanvas = new PlatformGeoCanvas(); var drawingShape = new RectangleShape(-10, 10, 10, -10); geoCanvas.BeginDrawing(nativeImage, drawingShape, GeographyUnit.Meter); style.DrawSample(geoCanvas, new DrawingRectangleF(geoCanvas.Width * .5f, geoCanvas.Height * .5f, geoCanvas.Width, geoCanvas.Height)); geoCanvas.EndDrawing(); var streamSource = new MemoryStream(); nativeImage.Save(streamSource, ImageFormat.Png); BitmapImage imageSource = new BitmapImage(); imageSource.BeginInit(); imageSource.StreamSource = streamSource; imageSource.EndInit(); imageSource.Freeze(); styleLegendItem.IconSource = imageSource; } yield return(styleLegendItem); foreach (var itemStyle in subStyles) { foreach (var tmpItem in GenerateStyleItems(itemStyle, level + 3)) { yield return(tmpItem); } } } else { var componentStyle = style as CompositeStyle; if (componentStyle != null) { if (componentStyle.Styles.Count > 1) { LegendImporterItemViewModel styleLegendItem = new LegendImporterItemViewModel { Text = style.Name, CheckBoxVisibility = Visibility.Visible, Level = level, IconSource = new BitmapImage() }; yield return(styleLegendItem); foreach (var innerStyle in componentStyle.Styles.Reverse()) { foreach (var tmpItem in GenerateStyleItems(innerStyle, level + 3)) { yield return(tmpItem); } } } else { foreach (var tmpItem in GenerateStyleItems(componentStyle.Styles.FirstOrDefault(), level)) { yield return(tmpItem); } } } else { LegendImporterItemViewModel styleLegendItem = new LegendImporterItemViewModel { Text = style.Name, CheckBoxVisibility = Visibility.Collapsed, Level = level, IconSource = new BitmapImage() }; yield return(styleLegendItem); } } }