public Point GetCornerPoint(FoldPosition corner, RelativeTo relativeTo)
        {
            Point point;

            switch (corner)
            {
            case FoldPosition.TopLeft:
                point = relativeTo == RelativeTo.Book ? new Point(-1.0 * (this.book.ActualWidth / 2.0), 0.0) : new Point(0.0, 0.0);
                break;

            case FoldPosition.TopRight:
                point = relativeTo == RelativeTo.Book ? new Point(this.book.ActualWidth, 0.0) : new Point(this.book.ActualWidth / 2.0, 0.0);
                break;

            case FoldPosition.BottomRight:
                point = relativeTo == RelativeTo.Book ? new Point(this.book.ActualWidth, this.book.ActualHeight) : new Point(this.book.ActualWidth / 2.0, this.book.ActualHeight);
                break;

            case FoldPosition.BottomLeft:
                point = relativeTo == RelativeTo.Book ? new Point(-1.0 * (this.book.ActualWidth / 2.0), this.book.ActualHeight) : new Point(0.0, this.book.ActualHeight);
                break;

            default:
                point = new Point();
                break;
            }
            return(point);
        }
 public PendingTurn(FoldPosition from, FoldPosition to, int newIndex, int oldIndex)
 {
     this.From     = from;
     this.To       = to;
     this.NewIndex = newIndex;
     this.OldIndex = oldIndex;
 }
        private static FoldPosition GetOppositeCorner(FoldPosition corner)
        {
            FoldPosition foldPosition;

            switch (corner)
            {
            case FoldPosition.TopLeft:
                foldPosition = FoldPosition.TopRight;
                break;

            case FoldPosition.TopRight:
                foldPosition = FoldPosition.TopLeft;
                break;

            case FoldPosition.BottomRight:
                foldPosition = FoldPosition.BottomLeft;
                break;

            case FoldPosition.BottomLeft:
                foldPosition = FoldPosition.BottomRight;
                break;

            default:
                foldPosition = FoldPosition.None;
                break;
            }
            return(foldPosition);
        }
 private void RaiseCornerLeave(FoldPosition exitedCorner)
 {
     if (exitedCorner != this.lastEnteredCorner || this.foldMouseLeave == null)
     {
         return;
     }
     this.foldMouseLeave((object)this, new CornerEventArgs(this.mousePoint, exitedCorner));
 }
 private void RadBookItem_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
 {
     if (!this.CanBeTurned)
     {
         return;
     }
     this.mousePoint = e.GetPosition((IInputElement)this);
     if (!FoldHelper.MouseWithinFoldAreas(this.mousePoint, this) && this.FoldSize != new Size(0.0, 0.0))
     {
         return;
     }
     this.draggedCorner = FoldHelper.GetQuadrant(this.mousePoint, this);
     this.targetCorner  = RadBookItem.GetOppositeCorner(this.draggedCorner);
     this.UpdatePageFold();
     if (this.doubleClickMode && this.PageFlipMode == PageFlipMode.DoubleClick)
     {
         if (this.mouseDoubleClick != null)
         {
             this.mouseDoubleClick((object)this, new MouseClickEventArgs(this.targetCorner));
         }
         this.doubleClickMode = false;
         this.doubleClickTimer.Stop();
     }
     else
     {
         this.singleClickMode = this.PageFlipMode == PageFlipMode.SingleClick;
         this.doubleClickMode = this.PageFlipMode == PageFlipMode.DoubleClick;
         this.dragStarted     = true;
         if (this.PageFlipMode == PageFlipMode.SingleClick)
         {
             this.singleClickTimer.Start();
         }
         else if (this.PageFlipMode == PageFlipMode.DoubleClick)
         {
             this.doubleClickTimer.Start();
         }
         else
         {
             this.singleClickTimer.Stop();
             this.doubleClickTimer.Stop();
         }
         if (this.mouseDragStart == null)
         {
             return;
         }
         this.mouseDragStart((object)this, new DragStartedEventArgs(this.draggedCorner, this.mousePoint));
     }
 }
        private void RaiseCornerEnterMove(FoldPosition corner, double offsetX, double offsetY)
        {
            Point mousePoint = new Point(this.mousePoint.X + offsetX, this.mousePoint.Y + offsetY);

            if (corner != this.lastEnteredCorner)
            {
                if (this.foldMouseEnter == null)
                {
                    return;
                }
                this.foldMouseEnter((object)this, new CornerEventArgs(mousePoint, corner));
            }
            else
            {
                if (this.foldMouseMove == null)
                {
                    return;
                }
                this.foldMouseMove((object)this, new CornerEventArgs(mousePoint, corner));
            }
        }
 private void UpdatePageFold()
 {
     if (this.Position == PagePosition.Right)
     {
         if (FoldHelper.MouseWithinTopRightFoldArea(this.mousePoint, this.FoldSize, this.ActualWidth))
         {
             this.RaiseCornerEnterMove(FoldPosition.TopRight, 0.0, 0.0);
             this.lastEnteredCorner = FoldPosition.TopRight;
         }
         else if (FoldHelper.MouseWithinBottomRightFoldArea(this.mousePoint, this.FoldSize, this.ActualWidth, this.ActualHeight))
         {
             this.RaiseCornerEnterMove(FoldPosition.BottomRight, 0.0, 0.0);
             this.lastEnteredCorner = FoldPosition.BottomRight;
         }
         else
         {
             this.RaiseCornerLeave(FoldHelper.GetQuadrant(this.mousePoint, this));
             this.lastEnteredCorner = FoldPosition.None;
         }
     }
     else if (FoldHelper.MouseWithinTopLeftFoldArea(this.mousePoint, this.FoldSize))
     {
         this.RaiseCornerEnterMove(FoldPosition.TopLeft, 0.0, 0.0);
         this.lastEnteredCorner = FoldPosition.TopLeft;
     }
     else if (FoldHelper.MouseWithinBottomLeftFoldArea(this.mousePoint, this.FoldSize, this.ActualHeight))
     {
         this.RaiseCornerEnterMove(FoldPosition.BottomLeft, 0.0, 0.0);
         this.lastEnteredCorner = FoldPosition.BottomLeft;
     }
     else
     {
         this.RaiseCornerLeave(FoldHelper.GetQuadrant(this.mousePoint, this));
         this.lastEnteredCorner = FoldPosition.None;
     }
 }
        public void TurnPage(Point from, FoldPosition to, RelativeTo relativeTo)
        {
            Point cornerPoint = this.GetCornerPoint(to, relativeTo);

            this.TurnPage(from, cornerPoint);
        }
 public void TurnPage(FoldPosition from, FoldPosition to, RelativeTo cornerFromRelativeness, RelativeTo cornerToRelativeness)
 {
     this.TurnPage(this.GetCornerPoint(from, cornerFromRelativeness), this.GetCornerPoint(to, cornerToRelativeness));
 }
Example #10
0
        public static RotateTransform GetRotateTransform(Point hoverPoint, double pageWidth, double pageHeight, FoldPosition draggedCorner, PagePosition position)
        {
            RotateTransform rotateTransform = new RotateTransform();
            double          num1            = draggedCorner == FoldPosition.TopRight || draggedCorner == FoldPosition.BottomRight ? pageWidth - hoverPoint.X : hoverPoint.X;
            double          y     = hoverPoint.Y;
            double          curlY = CurlCalculator.GetCurlY(num1, y);

            if (position == PagePosition.Left)
            {
                double num2 = 0.0;
                double num3 = hoverPoint.Y > 0.0 ? 0.0 : pageHeight;
                double d    = Math.Atan2(num1, curlY - y) * 180.0 / Math.PI;
                if (double.IsNaN(d) || double.IsInfinity(d) || d < 0.0)
                {
                    d = 0.0;
                }
                rotateTransform.CenterY = num3;
                rotateTransform.CenterX = num2;
                rotateTransform.Angle   = hoverPoint.Y >= 0.0 ? -d : 180.0 - d;
            }
            else
            {
                double num2 = pageWidth;
                double num3 = hoverPoint.Y > 0.0 ? 0.0 : pageHeight;
                double d    = Math.Atan2(num1, curlY - y) * 180.0 / Math.PI;
                if (double.IsNaN(d) || double.IsInfinity(d) || d < 0.0)
                {
                    d = 0.0;
                }
                rotateTransform.CenterY = num3;
                rotateTransform.CenterX = num2;
                rotateTransform.Angle   = hoverPoint.Y >= 0.0 ? d : d - 180.0;
            }
            return(rotateTransform);
        }
Example #11
0
 public static TranslateTransform GetTranslateTransform(Point hoverPoint, double pageWidth, FoldPosition draggedCorner)
 {
     return(new TranslateTransform()
     {
         X = draggedCorner == FoldPosition.TopLeft || draggedCorner == FoldPosition.BottomLeft ? -2.0 * pageWidth + hoverPoint.X : hoverPoint.X + pageWidth,
         Y = hoverPoint.Y
     });
 }
Example #12
0
 public MouseClickEventArgs(FoldPosition targetCorner)
 {
     this.TargetCorner = targetCorner;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="T:Telerik.Windows.Controls.Book.DragStartedEventArgs"/> class.
 ///
 /// </summary>
 /// <param name="draggedCorner">The dragged corner.</param><param name="mousePosition">The mouse position.</param>
 public DragStartedEventArgs(FoldPosition draggedCorner, Point mousePosition)
 {
     this.DraggedCorner = draggedCorner;
     this.MousePoint    = mousePosition;
 }
Example #14
0
 public CornerEventArgs(Point mousePoint, FoldPosition corner)
 {
     this.MousePoint = mousePoint;
     this.Corner     = corner;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="T:Telerik.Windows.Controls.FoldEventArgs"/> class.
 ///
 /// </summary>
 public FoldEventArgs(object source, FoldPosition position, RoutedEvent routedEvent)
     : base(routedEvent, source)
 {
     this.Position = position;
 }
 public void TurnPage(FoldPosition from, Point to, RelativeTo relativeTo)
 {
     this.TurnPage(this.GetCornerPoint(from, relativeTo), to);
 }
 public void TurnPage(FoldPosition to, RelativeTo relativeTo)
 {
     this.TurnPage(this.GetCornerPoint(to, relativeTo));
 }
 private void RadBook_FoldActivated(object sender, Telerik.Windows.Controls.FoldEventArgs e)
 {
     FoldPosition position = e.Position;
 }
 public DragEndedEventArgs(bool dragEndedOutsidePage, FoldPosition targetCorner)
 {
     this.DragEndedOutsideOfPage = dragEndedOutsidePage;
     this.TargetCorner           = targetCorner;
 }
 internal void Reset()
 {
     this.lastEnteredCorner = FoldPosition.None;
 }