Exemplo n.º 1
0
 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);
 }
Exemplo n.º 2
0
 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);
 }
Exemplo n.º 3
0
 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);
 }
Exemplo n.º 4
0
        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));
        }
Exemplo n.º 5
0
        /// <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;
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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();
        }
Exemplo n.º 8
0
 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;
 }