private void MainWindow_Loaded(object sender, EventArgs loadedEvent)
        {
            MainGrid.SizeChanged += MapHost_SizeChanged;

            int pixelWidth  = (int)MainGrid.ActualWidth;
            int pixelHeight = (int)MainGrid.ActualHeight;

            m_mapImage.Init(pixelWidth, pixelHeight, m_oversampleScale);
            MapHost.Source = m_mapImage;
            MapHost.Width  = pixelWidth;
            MapHost.Height = pixelHeight;
            m_mapImage.RespondToResize(pixelWidth, pixelHeight);

            m_mapImage.IsFrontBufferAvailableChanged += OnIsFrontBufferAvailableChanged;
            CompositionTarget.Rendering += CompositionTarget_Rendering;

            MouseLeftButtonDown += (o, e) => { if (m_isInputActive)
                                               {
                                                   m_mapImage.HandlePanStartEvent((int)(e.GetPosition(null).X), (int)(e.GetPosition(null).Y), Keyboard.Modifiers);
                                               }
            };
            PreviewMouseLeftButtonUp += (o, e) => { if (m_isInputActive)
                                                    {
                                                        m_mapImage.HandlePanEndEvent((int)(e.GetPosition(null).X), (int)(e.GetPosition(null).Y), Keyboard.Modifiers);
                                                    }
            };
            MouseRightButtonDown += (o, e) => { if (m_isInputActive)
                                                {
                                                    m_mapImage.HandleRotateStartEvent((int)(e.GetPosition(null).X), (int)(e.GetPosition(null).Y), Keyboard.Modifiers);
                                                }
            };
            PreviewMouseRightButtonUp += (o, e) => { if (m_isInputActive)
                                                     {
                                                         m_mapImage.HandleRotateEndEvent((int)(e.GetPosition(null).X), (int)(e.GetPosition(null).Y), Keyboard.Modifiers);
                                                     }
            };
            MouseWheel += (o, e) => { if (m_isInputActive)
                                      {
                                          m_mapImage.HandleZoomEvent((int)(e.GetPosition(null).X), (int)(e.GetPosition(null).Y), e.Delta, Keyboard.Modifiers);
                                      }
            };
            MouseLeave += (o, e) => { if (m_isInputActive)
                                      {
                                          m_mapImage.SetAllInputEventsToPointerUp((int)(e.GetPosition(null).X), (int)(e.GetPosition(null).Y));
                                      }
            };
            MouseMove += (o, e) => { if (m_isInputActive)
                                     {
                                         m_mapImage.HandleMouseMoveEvent((int)(e.GetPosition(null).X), (int)(e.GetPosition(null).Y), Keyboard.Modifiers);
                                     }
            };

            KeyDown += (o, e) => { m_mapImage.HandleKeyboardDownEvent((int)KeyInterop.VirtualKeyFromKey(e.Key)); };

            MouseDown += MainWindow_MouseDown;
            MouseUp   += MainWindow_MouseUp;

            Dispatcher.Hooks.DispatcherInactive += new EventHandler(DispatcherInactive);
        }
Ejemplo n.º 2
0
        private void MainWindow_Loaded(object sender, EventArgs loadedEvent)
        {
            MainGrid.SizeChanged += MapHost_SizeChanged;

            int pixelWidth  = (int)MainGrid.ActualWidth;
            int pixelHeight = (int)MainGrid.ActualHeight;

            bool hasNativeTouchInput = HasTouchInput();
            int  maxDeviceTouchCount = GetMaxDeviceTouchCount();

            m_mapImage.Init(pixelWidth, pixelHeight, m_oversampleScale, hasNativeTouchInput, maxDeviceTouchCount);
            MapHost.Source = m_mapImage;
            MapHost.Width  = pixelWidth;
            MapHost.Height = pixelHeight;
            m_mapImage.RespondToResize(pixelWidth, pixelHeight);

            m_mapImage.IsFrontBufferAvailableChanged += OnIsFrontBufferAvailableChanged;
            CompositionTarget.Rendering += CompositionTarget_Rendering;

            if (m_mapImage.IsInKioskMode())
            {
                Application.Current.Resources.Source = new Uri("KioskStyle.xaml", UriKind.RelativeOrAbsolute);
            }

            if (m_mapImage.ShouldStartFullscreen())
            {
                SetFullScreen(true);
            }

            MouseLeftButtonDown += (o, e) => { if (m_isMouseInputActive)
                                               {
                                                   m_mapImage.HandlePanStartEvent((int)(e.GetPosition(null).X), (int)(e.GetPosition(null).Y), Keyboard.Modifiers);
                                               }
            };
            PreviewMouseLeftButtonUp += (o, e) => { if (m_isMouseInputActive)
                                                    {
                                                        m_mapImage.HandlePanEndEvent((int)(e.GetPosition(null).X), (int)(e.GetPosition(null).Y), Keyboard.Modifiers);
                                                    }
            };
            MouseRightButtonDown += (o, e) => { if (m_isMouseInputActive)
                                                {
                                                    m_mapImage.HandleRotateStartEvent((int)(e.GetPosition(null).X), (int)(e.GetPosition(null).Y), Keyboard.Modifiers);
                                                }
            };
            PreviewMouseRightButtonUp += (o, e) => { if (m_isMouseInputActive)
                                                     {
                                                         m_mapImage.HandleRotateEndEvent((int)(e.GetPosition(null).X), (int)(e.GetPosition(null).Y), Keyboard.Modifiers);
                                                     }
            };
            MouseWheel += (o, e) =>
            {
                if (m_isMouseInputActive)
                {
                    m_mapImage.HandleZoomEvent((int)(e.GetPosition(null).X), (int)(e.GetPosition(null).Y), e.Delta, Keyboard.Modifiers);
                }
                else
                {
                    m_mapImage.SaveInputTime();
                }
            };
            MouseLeave += (o, e) =>
            {
                if (m_isMouseInputActive)
                {
                    m_mapImage.SetAllInputEventsToPointerUp((int)(e.GetPosition(null).X), (int)(e.GetPosition(null).Y));
                }
                else
                {
                    m_mapImage.SaveInputTime();
                }
            };
            MouseMove += (o, e) =>
            {
                var position = e.GetPosition(null);
                if (position != m_lastMovePosition)
                {
                    if (m_isMouseInputActive)
                    {
                        m_lastMovePosition = e.GetPosition(null);
                        m_mapImage.HandleMouseMoveEvent((int)position.X, (int)position.Y, Keyboard.Modifiers);
                    }
                    else
                    {
                        m_mapImage.SaveInputTime();
                    }
                }
            };
            MouseEnter += (o, e) =>
            {
                if (m_isMouseInputActive)
                {
                    EnableInput();
                }
                else
                {
                    m_mapImage.SaveInputTime();
                }
            };

            KeyDown += OnKeyDown;

            MouseDown        += MainWindow_MouseDown;
            PreviewMouseDown += (o, e) =>
            {
                m_mapImage.HandlePreviewMouseDown((int)e.GetPosition(null).X, (int)e.GetPosition(null).Y, Keyboard.Modifiers);
                m_buttonsDown++;
            };
            PreviewMouseUp += (o, e) =>
            {
                m_buttonsDown--;
            };
            PreviewMouseWheel += (o, e) =>
            {
                m_mapImage.SaveInputTime();
            };

            MouseUp += MainWindow_MouseUp;

            TouchDown  += OnTouchDown;
            TouchUp    += OnTouchUp;
            TouchMove  += OnTouchMove;
            TouchLeave += (o, e) =>
            {
                if (m_isTouchInputActive)
                {
                    m_mapImage.SetTouchInputEventToPointerUp(CheckAndGetZeroIndexedId(e.TouchDevice.Id));
                    RemoveTouchId(e.TouchDevice.Id);
                }
                else
                {
                    m_mapImage.SaveInputTime();
                }
            };

            Dispatcher.Hooks.DispatcherInactive += new EventHandler(DispatcherInactive);
        }