Пример #1
0
        static Vector2 Round(Vector2 raw, SnapSetting snapSetting)
        {
            double multiple;

            if (snapSetting == SnapSetting.None)
            {
                return(raw);
            }
            else if (snapSetting == SnapSetting.Half)
            {
                multiple = 0.5;
            }
            else if (snapSetting == SnapSetting.Tenth)
            {
                multiple = 0.1;
            }
            else if (snapSetting == SnapSetting.Hundredth)
            {
                multiple = 0.01;
            }
            else
            {
                throw new InvalidOperationException("Internal error: Invalid snap settings.");
            }
            return(new Vector2(RoundDownToMultiple(raw.x, multiple), RoundDownToMultiple(raw.y, multiple)));
        }
Пример #2
0
 private void mapControl_OP_OnMouseMove(object sender, IMapControlEvents2_OnMouseMoveEvent e)
 {
     if (m_currentButton == 1 || m_currentButton == 2 || m_currentButton == 3)
     {
         var pt = mapControl_OP.ActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(e.x, e.y);
         SnapSetting.getSnapPoint(pt);
     }
 }
Пример #3
0
 /// <summary>
 /// Will consume the event and declare the GUI changed. Uses given delta instead of the event's.
 /// </summary>
 public void UpdateDrag(Event e, Rect rect, Vector2 delta, SnapSetting snapSetting)
 {
     if (dragHandler.IsDragging(e, rect))
     {
         e.Use();
         rawPosition    += delta;
         marker.Position = Round(rawPosition, snapSetting);
         GUI.changed     = true;
     }
 }
Пример #4
0
        public override void OnMouseMove(int Button, int Shift, int X, int Y)
        {
            IPoint pPoint = m_mapControl.ActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(X, Y);

            pPoint = SnapSetting.getSnapPoint(pPoint);
            if (Button == 1)
            {
                if (m_rotateTracker != null)
                {
                    m_rotateTracker.OnMouseMove(pPoint);
                }
            }
        }
Пример #5
0
        void Load()
        {
            var save = ChartEditorSave.Load();

            if (save != null)
            {
                chart                     = save.chart;
                customPalette             = save.palette;
                scale                     = save.scale;
                showGrids                 = save.showGrids;
                snapSetting               = save.snapSetting;
                panelChartFoldout         = save.panelChartFoldout;
                panelEditorOptionsFoldout = save.panelEditorOptionsFoldout;
                panelMarkerOptionsFoldout = save.panelMarkerOptionsFoldout;
            }
        }
Пример #6
0
 public override void OnMouseDown(int Button, int Shift, int X, int Y)
 {
     if (Button == 1)
     {
         //if (m_engineEditor.SelectionCount == 0) return;
         m_rotateTracker.Display = m_mapControl.ActiveView.ScreenDisplay;
         //以所有选择要素的的中心点为旋转支点
         var pEnumFeature = m_hookHelper.ActiveView.Selection as IEnumFeature;
         //pEnumFeature = m_engineEditor.EditSelection;
         pEnumFeature.Reset();
         var pFeature = pEnumFeature.Next();
         if (pFeature == null)
         {
             return;
         }
         IEnvelope pSelEnvelope = pFeature.Extent;   //选择要素集的Envelope
         pFeature = pEnumFeature.Next();
         while (pFeature != null)
         {
             if (pFeature.Extent.IsEmpty == false)
             {
                 pSelEnvelope.Union(pFeature.Extent);
             }
             pFeature = pEnumFeature.Next();
         }
         IPoint pPt = new PointClass();
         pPt.PutCoords((pSelEnvelope.XMin + pSelEnvelope.XMax) / 2, (pSelEnvelope.YMin + pSelEnvelope.YMax) / 2);
         //设置要旋转的几何要素
         SetTrackGeometry(pPt);
         IPoint pStartPoint = m_mapControl.ActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(X, Y);
         pStartPoint = SnapSetting.getSnapPoint(pStartPoint);
         if (m_rotateTracker != null)
         {
             m_rotateTracker.OnMouseMove(pStartPoint);
             m_rotateTracker.OnMouseDown();
         }
     }
 }
Пример #7
0
        private void mapControl_OP_OnMouseDown(object sender, IMapControlEvents2_OnMouseDownEvent e)
        {
            if (e.button == 1 && m_currentButton > 0)
            {
                //弹出右键菜单
                //DataEditCommon.contextMenu.PopupMenu(e.x, e.y, this.mapControl_OP.hWnd);
                var pt = mapControl_OP.ActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(e.x, e.y);
                pt = SnapSetting.getSnapPoint(pt);
                switch (m_currentButton)
                {
                case 1:
                    var gasPressureInfoEnteringForm = new GasPressureInfoEntering {
                        GasPressurePoint = pt
                    };
                    gasPressureInfoEnteringForm.ShowDialog(); //绘制瓦斯压力点
                    m_currentButton = 0;                      //解除当前按钮
                    break;

                case 2:
                    var gasContentInfoEnteringForm = new GasContentInfoEntering {
                        GasContentPoint = pt
                    };
                    gasContentInfoEnteringForm.ShowDialog(); //绘制瓦斯含量点
                    m_currentButton = 0;                     //解除当前按钮
                    break;

                case 3:
                    var gasGushQuantityInfoEnteringForm = new GasGushQuantityInfoEntering
                    {
                        GasGushQuantityPoint = pt
                    };
                    gasGushQuantityInfoEnteringForm.ShowDialog(); //绘制瓦斯涌出量点
                    m_currentButton = 0;                          //解除当前按钮
                    break;
                }
            }
        }
Пример #8
0
        void DrawSnapSetting()
        {
            var snapLabel = new GUIContent("Snap Setting", "How should the markers be snapped to the grid?");

            snapSetting = (SnapSetting)EditorGUILayout.EnumPopup(snapLabel, snapSetting);
        }