static NodeLabelingWindow() { LabelModels.Add(LABEL_MODEL_INTERIOR, new InteriorLabelModel()); LabelModels.Add(LABEL_MODEL_EXTERIOR, new ExteriorLabelModel() { Insets = new InsetsD(10) }); LabelModels.Add(LABEL_MODEL_FREENODE, new FreeNodeLabelModel()); LabelModels.Add(LABEL_MODEL_SANDWICH, new SandwichLabelModel() { YOffset = 10 }); IList <ILabelModelParameter> list = new List <ILabelModelParameter>(); var model = new ExteriorLabelModel() { Insets = new InsetsD(5) }; list.Add(model.CreateParameter(ExteriorLabelModel.Position.North)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.NorthEast)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.NorthWest)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.South)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.SouthEast)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.SouthWest)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.East)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.West)); model = new ExteriorLabelModel() { Insets = new InsetsD(10) }; list.Add(model.CreateParameter(ExteriorLabelModel.Position.North)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.NorthEast)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.NorthWest)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.South)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.SouthEast)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.SouthWest)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.East)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.West)); model = new ExteriorLabelModel() { Insets = new InsetsD(15) }; list.Add(model.CreateParameter(ExteriorLabelModel.Position.North)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.NorthEast)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.NorthWest)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.South)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.SouthEast)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.SouthWest)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.East)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.West)); var genericLabelModel = new GenericLabelModel(list[0]); foreach (var labelModelParameter in list) { // set different profits for various insets var insets = ((ExteriorLabelModel)labelModelParameter.Model).Insets.Top; double profit = insets < 10 ? 1.0 : insets < 15 ? 0.9 : 0.8; genericLabelModel.AddParameter(labelModelParameter, new LabelCandidateDescriptor { Profit = profit }); } LabelModels.Add(LABEL_MODEL_THREE_DISTANCE, genericLabelModel); }
/// <summary> /// Populates the ToolStrip's LabelModel combobox /// </summary> private void SetupOptions() { const string LABEL_MODEL_INTERIOR = "Interior"; const string LABEL_MODEL_EXTERIOR = "Exterior"; const string LABEL_MODEL_FREENODE = "Free Node"; const string LABEL_MODEL_SANDWICH = "Sandwich"; const string LABEL_MODEL_THREE_DISTANCE = "Three Distances"; LabelModels.Add(LABEL_MODEL_INTERIOR, new InteriorLabelModel()); LabelModels.Add(LABEL_MODEL_EXTERIOR, new ExteriorLabelModel() { Insets = new InsetsD(10) }); LabelModels.Add(LABEL_MODEL_FREENODE, new FreeNodeLabelModel()); LabelModels.Add(LABEL_MODEL_SANDWICH, new SandwichLabelModel() { YOffset = 10 }); IList <ILabelModelParameter> list = new List <ILabelModelParameter>(); var model = new ExteriorLabelModel() { Insets = new InsetsD(5) }; list.Add(model.CreateParameter(ExteriorLabelModel.Position.North)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.NorthEast)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.NorthWest)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.South)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.SouthEast)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.SouthWest)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.East)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.West)); model = new ExteriorLabelModel() { Insets = new InsetsD(10) }; list.Add(model.CreateParameter(ExteriorLabelModel.Position.North)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.NorthEast)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.NorthWest)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.South)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.SouthEast)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.SouthWest)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.East)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.West)); model = new ExteriorLabelModel() { Insets = new InsetsD(15) }; list.Add(model.CreateParameter(ExteriorLabelModel.Position.North)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.NorthEast)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.NorthWest)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.South)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.SouthEast)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.SouthWest)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.East)); list.Add(model.CreateParameter(ExteriorLabelModel.Position.West)); var genericLabelModel = new GenericLabelModel(list[0]); foreach (var labelModelParameter in list) { // set different profits for various insets var insets = ((ExteriorLabelModel)labelModelParameter.Model).Insets.Top; double profit = insets < 10 ? 1.0 : insets < 15 ? 0.9 : 0.8; genericLabelModel.AddParameter(labelModelParameter, new LabelCandidateDescriptor { Profit = profit }); } LabelModels.Add(LABEL_MODEL_THREE_DISTANCE, genericLabelModel); // create the options foreach (var key in LabelModels.Keys) { labelModelComboBox.Items.Add(key); } labelModelComboBox.SelectedItem = LABEL_MODEL_EXTERIOR; }