public DOMQuad(DOMPoint p1, DOMPoint p2, DOMPoint p3, DOMPoint p4) { this.p1 = new DOMPoint(p1); this.p2 = new DOMPoint(p2); this.p3 = new DOMPoint(p3); this.p4 = new DOMPoint(p4); }
public DOMQuad(DOMPointReadOnly p1, DOMPointReadOnly p2, DOMPointReadOnly p3, DOMPointReadOnly p4) { this.p1 = new DOMPoint(p1); this.p2 = new DOMPoint(p2); this.p3 = new DOMPoint(p3); this.p4 = new DOMPoint(p4); }
public DOMQuad(DOMPointInit p1, DOMPointInit p2, DOMPointInit p3, DOMPointInit p4) { this.p1 = new DOMPoint(p1.x, p1.y, p1.z, p1.w); this.p2 = new DOMPoint(p2.x, p2.y, p2.z, p2.w); this.p3 = new DOMPoint(p3.x, p3.y, p3.z, p3.w); this.p4 = new DOMPoint(p4.x, p4.y, p4.z, p4.w); }
public static DOMQuad fromRect(DOMRectInit R) {/* Docs: https://www.w3.org/TR/geometry-1/#create-a-domquad-from-the-domrectinit-dictionary */ var p1 = new DOMPoint(R.X, R.Y); var p2 = new DOMPoint(R.X + R.Width, R.Y); var p3 = new DOMPoint(R.X + R.Width, R.Y + R.Height); var p4 = new DOMPoint(R.X, R.Y + R.Height); return(new DOMQuad(p1, p2, p3, p4)); }
/// <summary> /// Cancels the ongoing smooth scroll (if any) and resets all associated vars /// </summary> private void abort_smooth_scroll() { if (smooth_scroller != null) { smooth_scroller.Stop(); } if (IsScrolling) {/* If we are in the middle of a smooth scroll then just instant finish it */ ScrollX = Smooth_Scroll_Target.x; ScrollY = Smooth_Scroll_Target.y; IsScrolling = false; } Smooth_Scroll_End_Time = -1; Smooth_Scroll_Distance = null; Smooth_Scroll_Target = null; }
internal void Perform_Scroll(DOMPoint location, Element element, EScrollBehavior behavior = EScrollBehavior.Auto) {/* Docs: https://www.w3.org/TR/cssom-view-1/#perform-a-scroll */ abort_smooth_scroll(); if (behavior == EScrollBehavior.Auto && element != null && element.Style.ScrollBehavior == EScrollBehavior.Smooth) { if (element.Style.ScrollBehavior == EScrollBehavior.Smooth) { scroll_to_smooth(location); return; } } else if (behavior == EScrollBehavior.Smooth) { scroll_to_smooth(location); return; } scroll_to_instant(location); }
private void scroll_to_smooth(DOMPoint location) {/* https://www.w3.org/TR/cssom-view-1/#concept-smooth-scroll */ if (smooth_scroller == null) { smooth_scroller = new ScheduledFunction(this._smooth_scroll_tick, TimeSpan.FromMilliseconds(2)); } /* Find distance between current position and target position */ double distX = location.x - ScrollX; double distY = location.y - ScrollY; /* Calculate our delta step size so we know how much to add to our scroll position per tick */ double deltaX = distX / (double)Smooth_Scroll_Anim_Time.Ticks; double deltaY = distY / (double)Smooth_Scroll_Anim_Time.Ticks; Smooth_Scroll_Target = location; Smooth_Scroll_Distance = new DOMPoint(distX, distY); /* Set the end time */ Smooth_Scroll_End_Time = (DateTime.Now + Smooth_Scroll_Anim_Time).Ticks; /* Start scrolling */ smooth_scroller.Start(); }
private void scroll_to_instant(DOMPoint location) {/* https://www.w3.org/TR/cssom-view-1/#concept-instant-scroll */ this.ScrollX = location.x; this.ScrollY = location.y; }