void ScrollToLocation_NotRaiseEvent(int x, int y, out UIScrollEventArgs hScrollEventArgs, out UIScrollEventArgs vScrollEventArgs) { hScrollEventArgs = null; vScrollEventArgs = null; Size innerContentSize = this.InnerContentSize; if (x > innerContentSize.Width - Width) { x = innerContentSize.Width - Width; //inner content_size.Width may shorter than this.Width //so we check if (x<0) later } if (x < 0) { x = 0; } // int textLayoutBottom = _textLayer.Bottom; if (y > textLayoutBottom - Height) { y = textLayoutBottom - Height; //inner content_size.Height may shorter than this.Height //so we check if (y<0) later } if (y < 0) { y = 0; } this.InvalidateGraphics(); this.SetViewport(x, y); this.InvalidateGraphics(); }
void MyScrollByNotRaiseEvent(int dx, int dy, out UIScrollEventArgs hScrollEventArgs, out UIScrollEventArgs vScrollEventArgs) { vScrollEventArgs = null; Size innerContentSize = this.InnerContentSize; if (dy < 0) { int old_y = this.ViewportY; if (ViewportY + dy < 0) { dy = -ViewportY; this.SetViewport(this.ViewportX, 0); } else { this.SetViewport(this.ViewportX, this.ViewportY + dy); } if (this.vscrollableSurface != null && scrollRelation.HasVScrollChanged) { vScrollEventArgs = new UIScrollEventArgs( UIScrollEventType.ThumbPosition, old_y, ViewportY, UIScrollOrientation.VerticalScroll); } } else if (dy > 0) { int old_y = ViewportY; int viewportButtom = ViewportY + Height; if (viewportButtom + dy > innerContentSize.Height) { if (viewportButtom < innerContentSize.Height) { this.SetViewport(this.ViewportX, innerContentSize.Height - Height); } } else { this.SetViewport(this.ViewportX, innerContentSize.Height + dy); } if (vscrollableSurface != null && scrollRelation.HasVScrollChanged) { vScrollEventArgs = new UIScrollEventArgs(UIScrollEventType.ThumbPosition, old_y, this.ViewportY, UIScrollOrientation.VerticalScroll); } } hScrollEventArgs = null; if (dx == 0) { } else if (dx > 0) { int old_x = this.ViewportX; int viewportRight = ViewportX + Width; if (viewportRight + dx > innerContentSize.Width) { if (viewportRight < innerContentSize.Width) { this.SetViewport(innerContentSize.Width - Width, this.ViewportY); } } else { this.SetViewport(this.ViewportX + dx, this.ViewportY); } if (vscrollableSurface != null && scrollRelation.HasHScrollChanged) { hScrollEventArgs = new UIScrollEventArgs(UIScrollEventType.ThumbPosition, old_x, ViewportX, UIScrollOrientation.HorizontalScroll); } } else { int old_x = this.ViewportX; if (old_x + dx < 0) { dx = -ViewportX; SetViewport(0, this.ViewportY); } else { SetViewport(this.ViewportX + dx, this.ViewportY); } if (vscrollableSurface != null && scrollRelation.HasHScrollChanged) { hScrollEventArgs = new UIScrollEventArgs(UIScrollEventType.ThumbPosition, old_x, this.ViewportX, UIScrollOrientation.HorizontalScroll); } } if (vscrollableSurface != null) { vscrollableSurface.QuadPagesCalculateCanvas(); vscrollableSurface.FullModeUpdate = true; } }
void MyScrollToNotRaiseEvent(int x, int y, out UIScrollEventArgs hScrollEventArgs, out UIScrollEventArgs vScrollEventArgs) { hScrollEventArgs = null; vScrollEventArgs = null; Size innerContentSize = this.InnerContentSize; if (x < 0) { x = 0; } else if (x > 0) { if (x > innerContentSize.Width - Width) { x = innerContentSize.Width - Width; if (x < 0) { x = 0; } } } if (y < 0) { y = 0; } else if (y > 0) { if (y > innerContentSize.Height - Height) { y = innerContentSize.Height - Height; if (y < 0) { y = 0; } } } if (vscrollableSurface == null) { this.InvalidateGraphics(); this.SetViewport(x, y); this.InvalidateGraphics(); } else { if (ViewportX != x && scrollRelation.HasHScrollChanged) { hScrollEventArgs = new UIScrollEventArgs(UIScrollEventType.ThumbPosition, this.ViewportX, x, UIScrollOrientation.HorizontalScroll); } if (ViewportY != y && scrollRelation.HasVScrollChanged) { vScrollEventArgs = new UIScrollEventArgs(UIScrollEventType.ThumbPosition, this.ViewportY, y, UIScrollOrientation.VerticalScroll); } this.SetViewport(x, y); vscrollableSurface.QuadPagesCalculateCanvas(); vscrollableSurface.FullModeUpdate = true; this.InvalidateGraphics(); vscrollableSurface.FullModeUpdate = false; } }
void ScrollOffset_NotRaiseEvent(int dx, int dy, out UIScrollEventArgs hScrollEventArgs, out UIScrollEventArgs vScrollEventArgs) { vScrollEventArgs = null; Size contentSize = this.InnerContentSize; Size innerContentSize = new Size(this.Width, _textLayer.Bottom); if (dy < 0) { int old_y = this.ViewportTop; if (ViewportTop + dy < 0) { //? limit this.SetViewport(this.ViewportLeft, 0); } else { this.SetViewport(this.ViewportLeft, this.ViewportTop + dy); } } else if (dy > 0) { int old_y = ViewportTop; int viewportButtom = ViewportTop + Height; if (viewportButtom + dy > innerContentSize.Height) { int vwY = innerContentSize.Height - Height; //limit this.SetViewport(this.ViewportLeft, vwY > 0 ? vwY : 0); } else { this.SetViewport(this.ViewportLeft, old_y + dy); } } // hScrollEventArgs = null; if (dx < 0) { int old_x = this.ViewportLeft; if (old_x + dx < 0) { dx = -ViewportLeft; SetViewport(0, this.ViewportTop); } else { SetViewport(this.ViewportLeft + dx, this.ViewportTop); } } else if (dx > 0) { int old_x = this.ViewportLeft; int viewportRight = ViewportLeft + Width; if (viewportRight + dx > innerContentSize.Width) { if (viewportRight < innerContentSize.Width) { this.SetViewport(innerContentSize.Width - Width, this.ViewportTop); } } else { this.SetViewport(this.ViewportLeft + dx, this.ViewportTop); } } }