コード例 #1
0
        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;
        }