private void PerformLayout(object sender, RoutedEventArgs e)
        {
            Point  currentPosition = RenderTransform.Transform(new Point(0.0, 0.0));
            double onScreenState   = (currentPosition.Y - m_yPosInactive) / (m_yPosActive - m_yPosInactive);

            MainWindow mainWindow   = (MainWindow)Application.Current.MainWindow;
            double     screenHeight = mainWindow.ActualHeight;
            double     screenWidth  = mainWindow.ActualWidth;
            double     viewHeight   = ActualHeight;
            double     viewWidth    = ActualWidth;

            m_yPosActive   = screenHeight * 0.5 - (viewHeight * 0.5 + ConversionHelpers.AndroidToWindowsDip(16));
            m_yPosInactive = screenHeight * 0.5 + viewHeight * 0.5;
            double layoutY = m_yPosInactive;

            if (!m_isFirstLayout)
            {
                layoutY = onScreenState * (m_yPosActive - m_yPosInactive) + m_yPosInactive;
            }

            m_isFirstLayout = false;

            var transform = new TranslateTransform(
                -(viewWidth * 0.5 + ConversionHelpers.AndroidToWindowsDip(32)),
                layoutY);

            RenderTransform = transform;
        }
Пример #2
0
        private void PerformLayout(object sender, RoutedEventArgs e)
        {
            Point currentPosition = RenderTransform.Transform(new Point(0.0, 0.0));

            MainWindow mainWindow   = (MainWindow)Application.Current.MainWindow;
            double     screenHeight = mainWindow.MainGrid.ActualHeight;
            double     screenWidth  = mainWindow.MainGrid.ActualWidth;

            double viewHeight = ActualHeight;
            double viewWidth  = ActualWidth;

            double pointWidth  = m_compassPoint.Width;
            double pointHeight = m_compassPoint.Height;

            m_compassPointOffsetX = (viewWidth) * 0.5;
            m_compassPointOffsetY = (viewHeight) * 0.5;

            const double margin = 23.0;

            m_yPosActive   = screenHeight * 0.5 - (viewHeight * 0.5) - (margin);
            m_yPosInactive = screenHeight * 0.5 + viewHeight * 0.5;

            var transform = new TranslateTransform(currentPosition.X, m_isActive ? m_yPosActive : m_yPosInactive);

            RenderTransform = transform;
        }
Пример #3
0
        /// <inheritdoc />
        protected override Size ArrangeOverride(Size finalSize)
        {
            if (_visualCollection != null)
            {
                var padding = 2.0;
                var adornedElementHeight = AdornedFeatures.ActualHeight;
                var adornedElementWidth  = AdornedFeatures.ActualWidth;
                var x             = 0.0;
                var y             = adornedElementHeight + padding; // by default, appear below target attributes to edit
                var adornerOrigin = RenderTransform.Transform(new Point(0, 0));
                if ((adornerOrigin.X != 0) || (adornerOrigin.Y != 0))
                {
                    // Ensure we position so we're visible, if possible.
                    var adornerLeftEdge   = adornerOrigin.X;
                    var adornerRightEdge  = adornerLeftEdge + _layoutRoot.DesiredSize.Width;
                    var adornerTopEdge    = adornerOrigin.Y + y;
                    var adornerBottomEdge = adornerTopEdge + _layoutRoot.DesiredSize.Height;

                    if (adornerRightEdge > _layer.ActualWidth)
                    {
                        // Nudge to the left enough to keep visible.
                        x = _layer.ActualWidth - adornerRightEdge - padding;
                    }
                    if (adornerBottomEdge > _layer.ActualHeight)
                    {
                        // Place above the adorned element.
                        y = -_layoutRoot.DesiredSize.Height - padding;
                    }
                }

                Rect elementRect = new Rect(x, y, _layoutRoot.DesiredSize.Width, _layoutRoot.DesiredSize.Height);
                _layoutRoot.Arrange(elementRect);
            }
            return(finalSize);
        }
Пример #4
0
        public void Component_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.LeftButton == MouseButtonState.Pressed)
            {
                if (ParentCircuit.ParentWindow.SelectedTool == "SELECT")
                {
                    if (DragStarted)
                    {
                        Point newPosition = new Point(e.GetPosition(this).X - moveOrigin.X, e.GetPosition(this).Y - moveOrigin.Y);
                        newPosition = RenderTransform.Transform(newPosition);
                        newPosition = new Point(newPosition.X + ComponentPosition.X, newPosition.Y + ComponentPosition.Y);
                        Point snappedPosition = Util.snap(newPosition, Constants.ScaleFactor);
                        ComponentPosition = snappedPosition;
                        Canvas.SetLeft(this, ComponentPosition.X);
                        Canvas.SetTop(this, ComponentPosition.Y);
                    }
                }
            }
            //The below statements handle the case that the mouse is moved over a component
            //while a wire or leaded component is beign placed
            if (Breadboard.StartedWire)
            {
                Point       actualCoord = e.GetPosition(ParentCircuit.ParentWindow.DrawArea);
                Orientation o           = Util.getBestOrientation(Breadboard.WirePointA, actualCoord);
                int         length      = 0;
                if (o == Orientation.Horizontal)
                {
                    length = (int)((actualCoord.X - Breadboard.WirePointA.X) / Constants.ScaleFactor);
                }
                else
                {
                    length = (int)((actualCoord.Y - Breadboard.WirePointA.Y) / Constants.ScaleFactor);
                }
                Breadboard.NewWire.Length          = length;
                Breadboard.NewWire.WireOrientation = o;
                Breadboard.NewWire.Render();
            }
            else if (Breadboard.StartedLeadedComponent)
            {
                Point       actualCoord = e.GetPosition(ParentCircuit.ParentWindow.DrawArea);
                Orientation o           = Util.getBestOrientation(Breadboard.ComponentPointA, actualCoord);
                int         length      = 0;
                if (o == Orientation.Horizontal)
                {
                    length = (int)((actualCoord.X - Breadboard.ComponentPointA.X) / Constants.ScaleFactor);
                }
                else
                {
                    length = (int)((actualCoord.Y - Breadboard.ComponentPointA.Y) / Constants.ScaleFactor);
                }

                Breadboard.NewLeadedComponent.Length      = length;
                Breadboard.NewLeadedComponent.orientation = o;
                Breadboard.NewLeadedComponent.Render();
            }
        }
        protected override HitTestResult HitTestCore(PointHitTestParameters hitTestParameters)
        {
            var bounds = LayoutInformation.GetLayoutSlot(this);

            if (bounds.Contains(RenderTransform.Transform(hitTestParameters.HitPoint)))
            {
                return(new PointHitTestResult(this, hitTestParameters.HitPoint));
            }
            return(null);
        }
Пример #6
0
        public void AnimateToIntermediateOnScreenState(float onScreenState)
        {
            Point  currentPosition = RenderTransform.Transform(new Point(0.0, 0.0));
            double viewY           = currentPosition.Y;
            double newY            = m_yPosInactive + (m_yPosActive - m_yPosInactive) * onScreenState;

            if (viewY != newY)
            {
                RenderTransform = new TranslateTransform(currentPosition.X, newY);
            }
        }
        public void UpdateScreenLocation(float x, float y)
        {
            Point currentPosition = RenderTransform.Transform(new Point(0.0, 0.0));

            MainWindow mainWindow   = (MainWindow)Application.Current.MainWindow;
            double     screenHeight = mainWindow.MainGrid.ActualHeight;
            double     screenWidth  = mainWindow.MainGrid.ActualWidth;
            double     marginX      = 25;

            TranslateTransform transform = new TranslateTransform(x - (screenWidth * 0.5f) + (ActualWidth * 0.5f) + marginX,
                                                                  y - (screenHeight * 0.5f));

            RenderTransform = transform;
        }
        void Sprite_ManipulationDelta(object sender, System.Windows.Input.ManipulationDeltaEventArgs e)
        {
            GeneralTransform gt = TransformToVisual(e.ManipulationContainer).Inverse;

            if (e.PinchManipulation != null)
            {
                if (isnewmanipul)
                {
                    tx           = CT.TranslateX;
                    ty           = CT.TranslateY;
                    r            = CT.Rotation;
                    isnewmanipul = false;
                }
                Point originalCenter = RenderTransform.Transform(gt.Transform(e.PinchManipulation.Original.Center));
                Point newCenter      = RenderTransform.Transform(gt.Transform(e.PinchManipulation.Current.Center));

                CT.TranslateX = tx + newCenter.X - originalCenter.X;
                CT.TranslateY = ty + newCenter.Y - originalCenter.Y;
                CT.Rotation   = r + angleBetween2Lines(
                    gt.Transform(e.PinchManipulation.Current.PrimaryContact),
                    gt.Transform(e.PinchManipulation.Current.SecondaryContact),
                    gt.Transform(e.PinchManipulation.Original.PrimaryContact),
                    gt.Transform(e.PinchManipulation.Original.SecondaryContact)) * (CT.ScaleX * CT.ScaleY > 0 ? 1 : -1);

                //CT.ScaleX=CT.ScaleY*= e.PinchManipulation.DeltaScale;
                double k = e.PinchManipulation.DeltaScale;
                if (firstManipuletion)
                {
                    firstWidth        = Width;
                    firstHeight       = Height;
                    firstManipuletion = false;
                }

                Width  = Math.Min(Width * k, firstWidth * maxZC);
                Height = Math.Min(Height * k, firstHeight * maxZC);
            }
            else
            {
                Point start = RenderTransform.Transform(gt.Transform(new Point(0, 0)));
                Point end   = RenderTransform.Transform(gt.Transform(e.DeltaManipulation.Translation));
                CT.TranslateX += end.X - start.X;
                CT.TranslateY += end.Y - start.Y;
                isnewmanipul   = true;
            }
            e.Handled = true;

            //SetTransform();
            Dispatcher.BeginInvoke(SetTransform);
        }
Пример #9
0
        public void AnimateViewToY(double y)
        {
            var currentPosition = RenderTransform.Transform(new Point(0.0, 0.0));
            var animation       = new DoubleAnimation();

            animation.From           = currentPosition.Y;
            animation.To             = y;
            animation.Duration       = new Duration(TimeSpan.FromMilliseconds(m_stateChangeAnimationTimeMilliseconds));
            animation.EasingFunction = new SineEase();

            var transform = new TranslateTransform(currentPosition.X, currentPosition.Y);

            RenderTransform = transform;
            transform.BeginAnimation(TranslateTransform.YProperty, animation);
        }
 private void dispatcherTimer_Tick(object sender, EventArgs e)
 {
     if (!onBlur)
     {
         return;
     }
     try
     {
         Point zero          = new Point(0, 0);
         Point relativePoint = TransformToAncestor(Window).Transform(new Point(0, 0));
         //l.Content = Math.Round(-RenderTransform.Transform(zero).X * 2 + relativePoint.X).ToString();
         blur.Margin = new Thickness((-RenderTransform.Transform(zero).X * 2 + relativePoint.X), -relativePoint.Y, 0, 0);
     }
     catch (InvalidOperationException)
     {
     }
 }
Пример #11
0
        private void OnLayoutChanged(object sender, RoutedEventArgs e)
        {
            Point currentPosition = RenderTransform.Transform(new Point(0.0, 0.0));

            MainWindow mainWindow   = (MainWindow)Application.Current.MainWindow;
            double     screenHeight = mainWindow.MainGrid.ActualHeight;
            double     screenWidth  = mainWindow.MainGrid.ActualWidth;

            double viewHeight = ActualHeight;
            double viewWidth  = ActualWidth;

            const double margin = 23.0;

            m_yPosActive   = screenHeight * 0.5 - (viewHeight * 0.5) - (margin);
            m_yPosInactive = screenHeight * 0.5 + viewHeight * 0.5;

            var transform = new TranslateTransform((screenWidth * 0.5) - (ActualWidth * 0.5), m_isActive ? m_yPosActive : m_yPosInactive);

            RenderTransform = transform;
        }
        public void OnBlur()
        {
            BlurEffect blurBackEffect = blur.Effect as BlurEffect;

            SetBlur(Obj, (int)blurBackEffect.Radius, Window);
            SolidColorBrush c = new SolidColorBrush(Color.FromRgb(7, 8, 31));

            blurB.Background = c;
            onBlur           = true;
            try
            {
                Point zero          = new Point(0, 0);
                Point relativePoint = TransformToAncestor(Window).Transform(new Point(0, 0));
                //l.Content = Math.Round(-RenderTransform.Transform(zero).X * 2 + relativePoint.X).ToString();
                blur.Margin = new Thickness((-RenderTransform.Transform(zero).X * 2 + relativePoint.X), -relativePoint.Y, 0, 0);
            }
            catch (ArgumentNullException)
            {
            }
        }
        private void PerformLayout(object sender, RoutedEventArgs e)
        {
            Point currentPosition = RenderTransform.Transform(new Point(0.0, 0.0));

            MainWindow   mainWindow   = (MainWindow)Application.Current.MainWindow;
            double       screenHeight = mainWindow.MainGrid.ActualHeight;
            double       screenWidth  = mainWindow.MainGrid.ActualWidth;
            double       viewHeight   = ActualHeight;
            double       viewWidth    = ActualWidth;
            const double margin       = 23.0;

            m_yPosActive   = screenHeight * 0.5 - (viewHeight * 0.5) - (margin);
            m_yPosInactive = screenHeight * 0.5 + viewHeight * 0.5;

            var transform = new TranslateTransform(
                ConversionHelpers.AndroidToWindowsDip((double)Application.Current.Resources["PinCreationButtonMarginToCentre"]) + viewWidth * 0.5,
                m_isActive ? m_yPosActive : m_yPosInactive);

            RenderTransform = transform;
        }
Пример #14
0
        void DragThumb_DragDelta(object sender, DragDeltaEventArgs e)
        {
            FrameworkElement item = _controlledItem;

            if (item != null)
            {
                Point dragDelta = new Point(e.HorizontalChange, e.VerticalChange);

                dragDelta = RenderTransform.Transform(dragDelta);

                double left = Canvas.GetLeft(item);
                double top  = Canvas.GetTop(item);

                left = double.IsNaN(left) ? 0 : left;
                top  = double.IsNaN(top) ? 0 : top;

                double x = left + dragDelta.X;
                double y = top + dragDelta.Y;

                EditorHelper.SetDependencyProperty(item, Canvas.LeftProperty, x);
                EditorHelper.SetDependencyProperty(item, Canvas.TopProperty, y);
            }
            e.Handled = false;
        }
Пример #15
0
 /// <inheritdoc/>
 protected override Point PtvMercatorToCanvas(Point mercatorPoint)
 {
     return(RenderTransform == canvasTransform
         ? new Point(mercatorPoint.X, -mercatorPoint.Y)
         : RenderTransform.Transform(canvasTransform.Inverse.Transform(new Point(mercatorPoint.X, -mercatorPoint.Y))));
 }
Пример #16
0
 public Point ToViewCoordinates(Point point)
 {
     return(RenderTransform.Transform(point));
 }