private void OnMouseDragStart(object sender, MouseDragEventArgs e) { Point position = e.GetPosition(this); int index = this.CurrentPage - this.PagePosition(this.CurrentPage); if (((this.Orientation == System.Windows.Controls.Orientation.Horizontal) && (position.X > (base.RenderSize.Width / 2.0))) || ((this.Orientation == null) && (position.Y > (base.RenderSize.Height / 2.0)))) { index++; } this._dragged = base.ItemContainerGenerator.ContainerFromIndex(index) as BookItem; if (this._dragged != null) { BookItem item = this.Back(this._dragged); if (item == null) { this._dragged = null; } else { this.InstantUndoFold(); this._dragged.TransitionFront = false; item.TransitionFront = true; this._dragged.DragStart = item.DragStart = this._dragged.DragCurrent = item.DragCurrent = new Vector2(position) / base.RenderSize; this.SortPages(this.PagePosition(index) == 1); this.BeginRendering(); if (this.DragPageStarted != null) { this.DragPageStarted(this, EventArgs.Empty); } } } }
private void OnMouseDragEnd(object sender, MouseDragEventArgs e) { if (this._dragged != null) { BookItem item = this.Back(this._dragged); Vector2 dragStart = this._dragged.DragStart; Vector2 vector2 = new Vector2(e.GetPosition(this)) / base.RenderSize; Vector2 vector3 = new Vector2(0.5, 0.5); if (((this.Orientation == System.Windows.Controls.Orientation.Horizontal) && (Math.Sign((double)(vector2.X - vector3.X)) != Math.Sign((double)(this._dragged.DragStart.X - vector3.X)))) || ((this.Orientation == null) && (Math.Sign((double)(vector2.Y - vector3.Y)) != Math.Sign((double)(this._dragged.DragStart.Y - vector3.Y))))) { dragStart = VectorHelper.Symmetry(new Size(1.0, 1.0), item.Direction, dragStart); dragStart = VectorHelper.Flip(new Size(1.0, 1.0), this._dragged.Direction, dragStart); this.CurrentPage = base.ItemContainerGenerator.IndexFromContainer(item); } BookItem backItem = this.Back(this._dragged); if (LinearTransition(this._dragged, backItem, (double)0.0, dragStart)) { this.BeginRendering(); } this._dragged = null; if (this.DragPageFinished != null) { this.DragPageFinished(this, new BookDragPageFinishedEventArgs(this.CurrentPage)); } } }
private void OnMouseDragMove(object sender, MouseDragEventArgs e) { if (this._dragged != null) { this.Back(this._dragged).DragCurrent = this._dragged.DragCurrent = new Vector2(e.GetPosition(this)) / base.RenderSize; this.BeginRendering(); } }