/// <summary> /// returns a random VectorStyle with symbols. /// </summary> /// <returns></returns> public IVectorStyle RandomVectorStyle() { IVectorStyle vs = RandomStyle.RandomVectorStyleNoSymbols(); vs.Symbol = RandomSymbol(); return(vs); }
public ExplodeThemeDialog(IEditorService editor, IVectorScaleRange parentRange, IVectorStyle style, ILayerDefinition parentLayer) : this() { if (style.StyleType == StyleType.Composite) { throw new NotSupportedException(Strings.ErrorExplodingCompositeStyleNotSupported); } _editor = editor; _style = style; _parentRange = parentRange; _parentLayer = parentLayer; txtLayersCreate.Text = style.RuleCount.ToString(CultureInfo.InvariantCulture); txtLayerNameFormat.Text = "{0} - {1} - {2}"; //NOXLATE EvaluateStates(); if (!_editor.IsNew) { txtLayerPrefix.Text = ResourceIdentifier.GetName(_editor.ResourceID); } else { txtLayerPrefix.Text = "Theme"; //NOXLATE } }
public void Init(IEditorService edSvc, IVectorScaleRange parentRange, IVectorStyle style) { try { _init = true; _edSvc = edSvc; _style = style; var p2 = style as IPointVectorStyle2; var l2 = style as ILineVectorStyle2; var a2 = style as IAreaVectorStyle2; var c2 = style as ICompositeTypeStyle2; btnShowInLegend.Visible = !(p2 == null && l2 == null && a2 == null && c2 == null); if (btnShowInLegend.Visible) { if (p2 != null) { btnShowInLegend.Checked = p2.ShowInLegend; } else if (l2 != null) { btnShowInLegend.Checked = l2.ShowInLegend; } else if (a2 != null) { btnShowInLegend.Checked = a2.ShowInLegend; } else if (c2 != null) { btnShowInLegend.Checked = c2.ShowInLegend; } } var pts = style as IPointVectorStyle; if (pts != null) { btnAllowOverpost.Checked = pts.AllowOverpost; btnDisplayAsText.Checked = pts.DisplayAsText; } else { btnAllowOverpost.Visible = btnDisplayAsText.Visible = false; } InitGrid(style is ICompositeTypeStyle); _editedLayer = (ILayerDefinition)_edSvc.GetEditedResource(); _parentScaleRange = parentRange; ReSyncRulesToBindingList(style); } finally { _init = false; } }
private void ReSyncRulesToBindingList(IVectorStyle style) { _rules.Clear(); if (style != null) { switch (style.StyleType) { case StyleType.Point: { for (int i = 0; i < style.RuleCount; i++) { IPointRule pr = (IPointRule)style.GetRuleAt(i); _rules.Add(new PointRuleModel(pr, i)); } } break; case StyleType.Line: { for (int i = 0; i < style.RuleCount; i++) { ILineRule lr = (ILineRule)style.GetRuleAt(i); _rules.Add(new LineRuleModel(lr, i)); } } break; case StyleType.Area: { for (int i = 0; i < style.RuleCount; i++) { IAreaRule ar = (IAreaRule)style.GetRuleAt(i); _rules.Add(new AreaRuleModel(ar, i)); } } break; case StyleType.Composite: { for (int i = 0; i < style.RuleCount; i++) { ICompositeRule cr = (ICompositeRule)style.GetRuleAt(i); _rules.Add(new CompositeRuleModel(cr, i)); } } break; } } else { _rules.Clear(); } }
public ExplodeThemeDialog(IEditorService editor, IVectorScaleRange parentRange, IVectorStyle style, ILayerDefinition parentLayer) : this() { if (style.StyleType == StyleType.Composite) throw new NotSupportedException(Strings.ErrorExplodingCompositeStyleNotSupported); _editor = editor; _style = style; _parentRange = parentRange; _parentLayer = parentLayer; txtLayersCreate.Text = style.RuleCount.ToString(CultureInfo.InvariantCulture); txtLayerNameFormat.Text = "{0} - {1} - {2}"; //NOXLATE EvaluateStates(); if (!_editor.IsNew) { txtLayerPrefix.Text = ResourceIdentifier.GetName(_editor.ResourceID); } else { txtLayerPrefix.Text = "Theme"; //NOXLATE } }
private void ReSyncBindingListToRules(IVectorStyle style) { if (style != null) { switch (style.StyleType) { case StyleType.Point: { IPointVectorStyle pts = style as IPointVectorStyle; pts.RemoveAllRules(); for (int i = 0; i < _rules.Count; i++) { ILabeledRuleModel rule = (ILabeledRuleModel)_rules[i]; IPointRule pr = (IPointRule)rule.UnwrapRule(); pts.AddRule(pr); rule.SetIndex(i); } } break; case StyleType.Line: { ILineVectorStyle lts = style as ILineVectorStyle; lts.RemoveAllRules(); for (int i = 0; i < _rules.Count; i++) { ILabeledRuleModel rule = (ILabeledRuleModel)_rules[i]; ILineRule lr = (ILineRule)rule.UnwrapRule(); lts.AddRule(lr); rule.SetIndex(i); } } break; case StyleType.Area: { IAreaVectorStyle ats = style as IAreaVectorStyle; ats.RemoveAllRules(); for (int i = 0; i < _rules.Count; i++) { ILabeledRuleModel rule = (ILabeledRuleModel)_rules[i]; IAreaRule ar = (IAreaRule)rule.UnwrapRule(); ats.AddRule(ar); rule.SetIndex(i); } } break; case StyleType.Composite: { ICompositeTypeStyle cts = style as ICompositeTypeStyle; cts.RemoveAllRules(); for (int i = 0; i < _rules.Count; i++) { IRuleModel rule = (IRuleModel)_rules[i]; ICompositeRule cr = (ICompositeRule)rule.UnwrapRule(); cts.AddCompositeRule(cr); rule.SetIndex(i); } } break; } } }
private void CreateThemeButton_Click(object sender, EventArgs e) { try { IVectorStyle owner = null; if (m_point != null) { owner = m_point; } else if (m_line != null) { owner = m_line; } else if (m_area != null) { owner = m_area; } else if (m_comp != null) { owner = m_comp; } if (owner is ICompositeTypeStyle) { MessageBox.Show(Strings.CannotCreateThemeForCompositeStyleClassicEditor); return; } ILayerDefinition layer = (ILayerDefinition)m_owner.Editor.GetEditedResource(); IVectorLayerDefinition vl = (IVectorLayerDefinition)layer.SubLayer; if (string.IsNullOrEmpty(vl.FeatureName)) { MessageBox.Show(Strings.NoFeatureClassAssigned); return; } var cls = m_owner.Editor.CurrentConnection.FeatureService.GetClassDefinition(vl.ResourceId, vl.FeatureName); if (cls == null) { MessageBox.Show(string.Format(Strings.FeatureClassNotFound, vl.FeatureName)); return; } ThemeCreator dlg = new ThemeCreator( m_owner.Editor, layer, m_owner.SelectedClass, owner); if (dlg.ShowDialog(this) == DialogResult.OK) { var area = owner as IAreaVectorStyle; var point = owner as IPointVectorStyle; var line = owner as ILineVectorStyle; if (area != null) { SetItem(m_parent, area); } else if (point != null) { SetItem(m_parent, point); } else if (line != null) { SetItem(m_parent, line); } m_owner.HasChanged(); m_owner.UpdateDisplay(); } } catch (Exception ex) { string msg = NestedExceptionMessageProcessor.GetFullMessage(ex); m_owner.SetLastException(ex); MessageBox.Show(this, string.Format(Strings.GenericError, msg), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public void RenderLayer(IVectorLayer layer, Map map, System.Drawing.Graphics g) { if (map.Center == null) { throw (new ApplicationException("Cannot render map. View center not specified")); } g.SmoothingMode = layer.SmoothingMode; SharpMap.Geometries.BoundingBox envelope = map.Envelope; //View to render if (layer.CoordinateTransformation != null) { envelope = GeometryTransform.TransformBox( envelope, layer.CoordinateTransformation.MathTransform.Inverse()); } //List<SharpMap.Geometries.Geometry> features = this.DataSource.GetGeometriesInView(map.Envelope); if (layer.DataSource == null) { throw (new ApplicationException("DataSource property not set on layer '" + layer.LayerName + "'")); } //If thematics is enabled, we use a slighty different rendering approach if (layer.Theme != null) { SharpMap.Data.FeatureDataSet ds = new SharpMap.Data.FeatureDataSet(); layer.DataSource.Open(); layer.DataSource.ExecuteIntersectionQuery(envelope, ds); layer.DataSource.Close(); FeatureDataTable features = (FeatureDataTable)ds.Tables[0]; if (layer.CoordinateTransformation != null) { for (int i = 0; i < features.Count; i++) { features[i].Geometry = GeometryTransform.TransformGeometry(features[i].Geometry, layer.CoordinateTransformation.MathTransform); } } //Linestring outlines is drawn by drawing the layer once with a thicker line //before drawing the "inline" on top. if (layer.Style.EnableOutline) { //foreach (SharpMap.Geometries.Geometry feature in features) for (int i = 0; i < features.Count; i++) { SharpMap.Data.FeatureDataRow feature = features[i]; //Draw background of all line-outlines first if (feature.Geometry is SharpMap.Geometries.LineString) { IVectorStyle outlinestyle1 = layer.Theme.GetStyle(feature); if (outlinestyle1.Enabled && outlinestyle1.EnableOutline) { SharpMap.Rendering.VectorRenderer.DrawLineString(g, feature.Geometry as LineString, outlinestyle1.Outline, map); } } else if (feature.Geometry is SharpMap.Geometries.MultiLineString) { IVectorStyle outlinestyle2 = layer.Theme.GetStyle(feature); if (outlinestyle2.Enabled && outlinestyle2.EnableOutline) { SharpMap.Rendering.VectorRenderer.DrawMultiLineString(g, feature.Geometry as MultiLineString, outlinestyle2.Outline, map); } } } } for (int i = 0; i < features.Count; i++) { SharpMap.Data.FeatureDataRow feature = features[i]; IVectorStyle style = layer.Theme.GetStyle(feature); RenderGeometry(g, map, layer.ClippingEnabled, feature.Geometry, style); } } else { layer.DataSource.Open(); Collection <Geometry> geoms = layer.DataSource.GetGeometriesInView(envelope); layer.DataSource.Close(); if (layer.CoordinateTransformation != null) { for (int i = 0; i < geoms.Count; i++) { geoms[i] = GeometryTransform.TransformGeometry(geoms[i], layer.CoordinateTransformation.MathTransform); } } //Linestring outlines is drawn by drawing the layer once with a thicker line //before drawing the "inline" on top. if (layer.Style.EnableOutline) { foreach (SharpMap.Geometries.Geometry geom in geoms) { if (geom != null) { //Draw background of all line-outlines first switch (geom.GetType().FullName) { case "SharpMap.Geometries.LineString": SharpMap.Rendering.VectorRenderer.DrawLineString(g, geom as LineString, layer.Style.Outline, map); break; case "SharpMap.Geometries.MultiLineString": SharpMap.Rendering.VectorRenderer.DrawMultiLineString(g, geom as MultiLineString, layer.Style.Outline, map); break; default: break; } } } } for (int i = 0; i < geoms.Count; i++) { if (geoms[i] != null) { RenderGeometry(g, map, layer.ClippingEnabled, geoms[i], layer.Style); } } } //base.Render(g, map); }
private void RenderGeometry(System.Drawing.Graphics g, Map map, bool clipLayer, Geometry feature, IVectorStyle style) { switch (feature.GetType().FullName) { case "SharpMap.Geometries.Polygon": if (style.EnableOutline) { SharpMap.Rendering.VectorRenderer.DrawPolygon(g, (Polygon)feature, style.Fill, style.Outline, clipLayer, map); } else { SharpMap.Rendering.VectorRenderer.DrawPolygon(g, (Polygon)feature, style.Fill, null, clipLayer, map); } break; case "SharpMap.Geometries.MultiPolygon": if (style.EnableOutline) { SharpMap.Rendering.VectorRenderer.DrawMultiPolygon(g, (MultiPolygon)feature, style.Fill, style.Outline, clipLayer, map); } else { SharpMap.Rendering.VectorRenderer.DrawMultiPolygon(g, (MultiPolygon)feature, style.Fill, null, clipLayer, map); } break; case "SharpMap.Geometries.LineString": SharpMap.Rendering.VectorRenderer.DrawLineString(g, (LineString)feature, style.Line, map); break; case "SharpMap.Geometries.MultiLineString": SharpMap.Rendering.VectorRenderer.DrawMultiLineString(g, (MultiLineString)feature, style.Line, map); break; case "SharpMap.Geometries.Point": SharpMap.Rendering.VectorRenderer.DrawPoint(g, (Point)feature, style.Symbol, style.SymbolScale, style.SymbolOffset, style.SymbolRotation, map); break; case "SharpMap.Geometries.MultiPoint": SharpMap.Rendering.VectorRenderer.DrawMultiPoint(g, (MultiPoint)feature, style.Symbol, style.SymbolScale, style.SymbolOffset, style.SymbolRotation, map); break; case "SharpMap.Geometries.GeometryCollection": foreach (Geometries.Geometry geom in (GeometryCollection)feature) { RenderGeometry(g, map, clipLayer, geom, style); } break; default: break; } }