/// <summary>
        /// Private helper that takes an element and transforms it's 4 points
        /// into the InkCanvas's space
        /// </summary>
        private static ElementCornerPoints GetTransformedElementCornerPoints(InkCanvasInnerCanvas canvas, UIElement childElement)
        {
            Debug.Assert(canvas != null);
            Debug.Assert(childElement != null);

            Debug.Assert(canvas.CheckAccess());

            ElementCornerPoints elementPoints = new ElementCornerPoints();

            elementPoints.Set = false;

            if (childElement.Visibility != Visibility.Visible)
            {
                //
                // this little one's not worth it...
                //
                return(elementPoints);
            }

            //
            // get the transform from us to our parent InkCavas
            //
            GeneralTransform parentTransform = childElement.TransformToAncestor(canvas);

            //

            parentTransform.TryTransform(new Point(0, 0), out elementPoints.UpperLeft);
            parentTransform.TryTransform(new Point(childElement.RenderSize.Width, 0), out elementPoints.UpperRight);
            parentTransform.TryTransform(new Point(0, childElement.RenderSize.Height), out elementPoints.LowerLeft);
            parentTransform.TryTransform(new Point(childElement.RenderSize.Width, childElement.RenderSize.Height), out elementPoints.LowerRight);

            elementPoints.Set = true;
            return(elementPoints);
        }
Example #2
0
        /// <summary>
        /// Private helper that takes an element and transforms it's 4 points
        /// into the InkCanvas's space
        /// </summary>
        private static ElementCornerPoints GetTransformedElementCornerPoints(InkCanvasInnerCanvas canvas, UIElement childElement)
        {
            Debug.Assert(canvas != null);
            Debug.Assert(childElement != null);

            Debug.Assert(canvas.CheckAccess());

            ElementCornerPoints elementPoints = new ElementCornerPoints();

            elementPoints.Set = false;

            if (childElement.Visibility != Visibility.Visible)
            {
                //
                // this little one's not worth it...
                //
                return(elementPoints);
            }

            //
            // get the transform from us to our parent InkCavas
            //
            GeneralTransform parentTransform = childElement.TransformToAncestor(canvas);

            // REVIEW: any of the methods below may not actually perform the transformation
            // Do we need to do anything special in that scenario?
            parentTransform.TryTransform(new Point(0, 0), out elementPoints.UpperLeft);
            parentTransform.TryTransform(new Point(childElement.RenderSize.Width, 0), out elementPoints.UpperRight);
            parentTransform.TryTransform(new Point(0, childElement.RenderSize.Height), out elementPoints.LowerLeft);
            parentTransform.TryTransform(new Point(childElement.RenderSize.Width, childElement.RenderSize.Height), out elementPoints.LowerRight);

            elementPoints.Set = true;
            return(elementPoints);
        }
Example #3
0
        // Token: 0x06006D93 RID: 28051 RVA: 0x001F787C File Offset: 0x001F5A7C
        private void EnusreElementsBounds()
        {
            InkCanvasInnerCanvas innerCanvas = this._inkCanvas.InnerCanvas;

            if (!innerCanvas.IsMeasureValid || !innerCanvas.IsArrangeValid)
            {
                innerCanvas.UpdateLayout();
            }
        }
Example #4
0
        /// <summary>
        /// Ensure the rendering is valid.
        /// Called by:
        ///         SelectedElementsBounds
        /// </summary>
        private void EnusreElementsBounds()
        {
            InkCanvasInnerCanvas innerCanvas = _inkCanvas.InnerCanvas;

            // Make sure the arrange is valid. If not, we invoke UpdateLayout now.
            if (!innerCanvas.IsMeasureValid || !innerCanvas.IsArrangeValid)
            {
                innerCanvas.UpdateLayout();
            }
        }
 // Token: 0x06006DBD RID: 28093 RVA: 0x001F8814 File Offset: 0x001F6A14
 private void HitTestElement(InkCanvasInnerCanvas parent, UIElement uiElement, List <UIElement> elementsToSelect)
 {
     LassoSelectionBehavior.ElementCornerPoints transformedElementCornerPoints = LassoSelectionBehavior.GetTransformedElementCornerPoints(parent, uiElement);
     if (transformedElementCornerPoints.Set)
     {
         Point[] points = this.GeneratePointGrid(transformedElementCornerPoints);
         if (this._lassoHelper.ArePointsInLasso(points, 60))
         {
             elementsToSelect.Add(uiElement);
         }
     }
 }
        /// <summary>
        /// Private helper that will turn an element in any nesting level into a stroke
        /// in the InkCanvas's coordinate space.  This method calls itself recursively
        /// </summary>
        private void HitTestElement(InkCanvasInnerCanvas parent, UIElement uiElement, List <UIElement> elementsToSelect)
        {
            ElementCornerPoints elementPoints = LassoSelectionBehavior.GetTransformedElementCornerPoints(parent, uiElement);

            if (elementPoints.Set != false)
            {
                Point[] points = GeneratePointGrid(elementPoints);

                //
                // perform hit testing against our lasso
                //
                System.Diagnostics.Debug.Assert(null != _lassoHelper);
                if (_lassoHelper.ArePointsInLasso(points, _percentIntersectForElements))
                {
                    elementsToSelect.Add(uiElement);
                }
            }
            //
            // we used to recurse into the childrens children.  That is no longer necessary
            //
        }
        // Token: 0x06006DBE RID: 28094 RVA: 0x001F8850 File Offset: 0x001F6A50
        private static LassoSelectionBehavior.ElementCornerPoints GetTransformedElementCornerPoints(InkCanvasInnerCanvas canvas, UIElement childElement)
        {
            LassoSelectionBehavior.ElementCornerPoints result = default(LassoSelectionBehavior.ElementCornerPoints);
            result.Set = false;
            if (childElement.Visibility != Visibility.Visible)
            {
                return(result);
            }
            GeneralTransform generalTransform = childElement.TransformToAncestor(canvas);

            generalTransform.TryTransform(new Point(0.0, 0.0), out result.UpperLeft);
            generalTransform.TryTransform(new Point(childElement.RenderSize.Width, 0.0), out result.UpperRight);
            generalTransform.TryTransform(new Point(0.0, childElement.RenderSize.Height), out result.LowerLeft);
            generalTransform.TryTransform(new Point(childElement.RenderSize.Width, childElement.RenderSize.Height), out result.LowerRight);
            result.Set = true;
            return(result);
        }