Exemplo n.º 1
0
        /// <summary>
        /// Create a MarkupRange from a TextRange.
        /// </summary>
        /// <param name="textRange"></param>
        /// <returns></returns>
        public MarkupRange CreateMarkupRange(IHTMLTxtRange textRange)
        {
            MarkupPointer Begin = CreateMarkupPointer();
            MarkupPointer End   = CreateMarkupPointer();

            End.Gravity = _POINTER_GRAVITY.POINTER_GRAVITY_Right;
            MovePointersToRange(textRange, Begin, End);
            MarkupRange markupRange = new MarkupRange(Begin, End, this);

            return(markupRange);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Creates a clone that spans the same range as this MarkupRange.
        /// Note: The clone can be manipulated without changing the position of this range.
        /// </summary>
        /// <returns></returns>
        public MarkupRange Clone()
        {
            MarkupRange clone = MarkupServices.CreateMarkupRange();

            clone.Start.MoveToPointer(Start);
            clone.Start.Cling   = Start.Cling;
            clone.Start.Gravity = Start.Gravity;
            clone.End.MoveToPointer(End);
            clone.End.Cling   = End.Cling;
            clone.End.Gravity = End.Gravity;
            return(clone);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Create a MarkupRange from that surrounds an Element.
        /// </summary>
        /// <returns></returns>
        public MarkupRange CreateMarkupRange(IHTMLElement element, bool outside)
        {
            _ELEMENT_ADJACENCY beginAdj = outside ? _ELEMENT_ADJACENCY.ELEM_ADJ_BeforeBegin : _ELEMENT_ADJACENCY.ELEM_ADJ_AfterBegin;
            _ELEMENT_ADJACENCY endAdj   = outside ? _ELEMENT_ADJACENCY.ELEM_ADJ_AfterEnd : _ELEMENT_ADJACENCY.ELEM_ADJ_BeforeEnd;
            MarkupPointer      Begin    = CreateMarkupPointer(element, beginAdj);
            MarkupPointer      End      = CreateMarkupPointer(element, endAdj);

            End.Gravity = _POINTER_GRAVITY.POINTER_GRAVITY_Right;
            MarkupRange markupRange = new MarkupRange(Begin, End, this);

            return(markupRange);
        }
Exemplo n.º 4
0
        } //ProcessTable

        private MarkupRange GetMarkupRange()
        {
            MshtmlMarkupServices markupServices = new MshtmlMarkupServices((IMarkupServicesRaw)Document);
            MarkupRange          range          = markupServices.CreateMarkupRange(Document.selection.createRange());

            range.Start.Gravity = mshtml._POINTER_GRAVITY.POINTER_GRAVITY_Left;
            range.End.Gravity   = mshtml._POINTER_GRAVITY.POINTER_GRAVITY_Right;
            range.Start.Cling   = false;
            range.End.Cling     = false;

            return(range);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Create a MarkupRange from a selection object.
        /// </summary>
        public MarkupRange CreateMarkupRange(IHTMLSelectionObject selection)
        {
            if (selection == null)
            {
                return(null);
            }

            // see what type of range is selected
            object range = selection.createRange();

            if (range is IHTMLTxtRange)
            {
                return(CreateMarkupRange(range as IHTMLTxtRange));
            }
            else if (range is IHTMLControlRange)
            {
                // we only support single-selection so a "control-range" can always
                // be converted into a single-element text range
                IHTMLControlRange controlRange = range as IHTMLControlRange;
                if (controlRange.length == 1)
                {
                    IHTMLElement selectedElement = controlRange.item(0);
                    MarkupRange  markupRange     = CreateMarkupRange(selectedElement);

                    //return the precisely positioned text range
                    return(markupRange);
                }
                else
                {
                    Debug.Fail("Length of control range not equal to 1 (value was " + controlRange.length.ToString(CultureInfo.InvariantCulture));
                    return(null);
                }
            }
            else // null or unexpected range type
            {
                return(null);
            }
        }
Exemplo n.º 6
0
        /// <summary>
        /// Create a MarkupRange from a set of MarkupPointers.
        /// </summary>
        /// <param name="start"></param>
        /// <param name="end"></param>
        /// <returns></returns>
        public MarkupRange CreateMarkupRange(MarkupPointer start, MarkupPointer end)
        {
            MarkupRange markupRange = new MarkupRange(start, end, this);

            return(markupRange);
        }
Exemplo n.º 7
0
 public SelectionPreserver(MarkupRange selectedMarkupRange)
 {
     _preservedMarkupRange             = selectedMarkupRange.Clone();
     _preservedMarkupRange.Start.Cling = true;
     _preservedMarkupRange.End.Cling   = true;
 }