// Token: 0x0600676F RID: 26479 RVA: 0x001CECD4 File Offset: 0x001CCED4 internal Geometry GetTightBoundingGeometryFromTextPositions(ITextPointer startPosition, ITextPointer endPosition, Rect visibleRect) { Geometry geometry = null; if (endPosition.CompareTo(this.Cell.StaticElementEnd) >= 0) { geometry = new RectangleGeometry(this._rect.FromTextDpi()); } else { SubpageParagraphResult subpageParagraphResult = (SubpageParagraphResult)this.CreateParagraphResult(); ReadOnlyCollection <ColumnResult> columns = subpageParagraphResult.Columns; Transform transform = new TranslateTransform(-TextDpi.FromTextDpi(base.ContentRect.u), -TextDpi.FromTextDpi(base.ContentRect.v)); visibleRect = transform.TransformBounds(visibleRect); geometry = TextDocumentView.GetTightBoundingGeometryFromTextPositionsHelper(columns[0].Paragraphs, subpageParagraphResult.FloatingElements, startPosition, endPosition, 0.0, visibleRect); if (geometry != null) { Rect viewport = new Rect(0.0, 0.0, TextDpi.FromTextDpi(base.ContentRect.du), TextDpi.FromTextDpi(base.ContentRect.dv)); CaretElement.ClipGeometryByViewport(ref geometry, viewport); transform = new TranslateTransform(TextDpi.FromTextDpi(base.ContentRect.u), TextDpi.FromTextDpi(base.ContentRect.v)); CaretElement.AddTransformToGeometry(geometry, transform); } } return(geometry); }
/// <summary> /// PropertyChanged callback for a property that affects the selection or caret rendering. /// </summary> private static void UpdateCaretElement(DependencyObject d, DependencyPropertyChangedEventArgs e) { PasswordBox passwordBox = (PasswordBox)d; if (passwordBox.Selection != null) { CaretElement caretElement = passwordBox.Selection.CaretElement; if (caretElement != null) { if (e.Property == CaretBrushProperty) { caretElement.UpdateCaretBrush(TextSelection.GetCaretBrush(passwordBox.Selection.TextEditor)); } caretElement.InvalidateVisual(); } // DDVSO:405199 // If the TextBox is rendering its own selection we need to invalidate arrange here // in order to ensure the selection is updated. var textBoxView = passwordBox?.RenderScope as TextBoxView; if ((textBoxView as ITextView)?.RendersOwnSelection == true) { textBoxView.InvalidateArrange(); } } }
// Token: 0x06006815 RID: 26645 RVA: 0x001D4A00 File Offset: 0x001D2C00 internal Geometry GetTightBoundingGeometryFromTextPositions(ReadOnlyCollection <ColumnResult> columns, ReadOnlyCollection <ParagraphResult> floatingElements, ITextPointer startPosition, ITextPointer endPosition, Rect visibleRect) { Geometry result = null; Invariant.Assert(columns != null && columns.Count <= 1, "Columns collection is null."); Invariant.Assert(floatingElements != null, "Floating element collection is null."); ReadOnlyCollection <ParagraphResult> readOnlyCollection = (columns.Count > 0) ? columns[0].Paragraphs : new ReadOnlyCollection <ParagraphResult>(new List <ParagraphResult>(0)); if (readOnlyCollection.Count > 0 || floatingElements.Count > 0) { result = TextDocumentView.GetTightBoundingGeometryFromTextPositionsHelper(readOnlyCollection, floatingElements, startPosition, endPosition, TextDpi.FromTextDpi(this._dvrTopSpace), visibleRect); Rect viewport = new Rect(0.0, 0.0, TextDpi.FromTextDpi(this._contentRect.du), TextDpi.FromTextDpi(this._contentRect.dv)); CaretElement.ClipGeometryByViewport(ref result, viewport); } return(result); }
/// <summary> /// PropertyChanged callback for a property that affects the selection or caret rendering. /// </summary> private static void UpdateCaretElement(DependencyObject d, DependencyPropertyChangedEventArgs e) { PasswordBox passwordBox = (PasswordBox)d; if (passwordBox.Selection != null) { CaretElement caretElement = passwordBox.Selection.CaretElement; if (caretElement != null) { if (e.Property == CaretBrushProperty) { caretElement.UpdateCaretBrush(TextSelection.GetCaretBrush(passwordBox.Selection.TextEditor)); } caretElement.InvalidateVisual(); } } }
// Token: 0x06006FA5 RID: 28581 RVA: 0x00201840 File Offset: 0x001FFA40 internal override Geometry GetTightBoundingGeometryFromTextPositions(ITextPointer startPosition, ITextPointer endPosition) { if (!this.IsValid) { throw new InvalidOperationException(SR.Get("TextViewInvalidLayout")); } Geometry geometry = null; if (!this.IsPageMissing) { geometry = this._pageTextView.GetTightBoundingGeometryFromTextPositions(startPosition, endPosition); if (geometry != null) { Transform affineTransform = this.GetTransformToAncestor().AffineTransform; CaretElement.AddTransformToGeometry(geometry, affineTransform); } } return(geometry); }
/// <summary> /// Returns tight bounding path geometry. /// </summary> internal Geometry GetTightBoundingGeometryFromTextPositions(ReadOnlyCollection <ColumnResult> columns, ReadOnlyCollection <ParagraphResult> floatingElements, ITextPointer startPosition, ITextPointer endPosition, Rect visibleRect) { Geometry geometry = null; // Floater always has one column, so we can skip getting a column from the text position range Invariant.Assert(columns != null && columns.Count <= 1, "Columns collection is null."); Invariant.Assert(floatingElements != null, "Floating element collection is null."); ReadOnlyCollection <ParagraphResult> paragraphs = (columns.Count > 0) ? columns[0].Paragraphs : new ReadOnlyCollection <ParagraphResult>(new List <ParagraphResult>(0)); if (paragraphs.Count > 0 || floatingElements.Count > 0) { geometry = TextDocumentView.GetTightBoundingGeometryFromTextPositionsHelper(paragraphs, floatingElements, startPosition, endPosition, TextDpi.FromTextDpi(_dvrTopSpace), visibleRect); // restrict geometry to the floater's content rect boundary. // because of end-of-line / end-of-para simulation calculated geometry could be larger. Rect viewport = new Rect(0, 0, TextDpi.FromTextDpi(_contentRect.du), TextDpi.FromTextDpi(_contentRect.dv)); CaretElement.ClipGeometryByViewport(ref geometry, viewport); } return(geometry); }
/// <summary> /// /// </summary> /// <param name="startPosition"></param> /// <param name="endPosition"></param> /// <param name="visibleRect"></param> /// <returns></returns> internal Geometry GetTightBoundingGeometryFromTextPositions(ITextPointer startPosition, ITextPointer endPosition, Rect visibleRect) { Geometry geometry = null; // Find out if cell is selected. We consider cell selected if its end tag is crossed by selection. // The asymmetry is important here - it allows to use only normalized positions // and still be able to select individual cells. // Note that this logic is an assumption in textselection unit expansion mechanism // (TexSelection.ExtendSelectionToStructuralUnit method). if (endPosition.CompareTo(Cell.StaticElementEnd) >= 0) { geometry = new RectangleGeometry(_rect.FromTextDpi()); } else { SubpageParagraphResult paragraphResult = (SubpageParagraphResult)(CreateParagraphResult()); ReadOnlyCollection <ColumnResult> colResults = paragraphResult.Columns; Transform transform; transform = new TranslateTransform(-TextDpi.FromTextDpi(ContentRect.u), -TextDpi.FromTextDpi(ContentRect.v)); visibleRect = transform.TransformBounds(visibleRect); transform = null; geometry = TextDocumentView.GetTightBoundingGeometryFromTextPositionsHelper(colResults[0].Paragraphs, paragraphResult.FloatingElements, startPosition, endPosition, 0.0, visibleRect); if (geometry != null) { // restrict geometry to the cell's content rect boundary. // because of end-of-line / end-of-para simulation calculated geometry could be larger. Rect viewport = new Rect(0, 0, TextDpi.FromTextDpi(ContentRect.du), TextDpi.FromTextDpi(ContentRect.dv)); CaretElement.ClipGeometryByViewport(ref geometry, viewport); transform = new TranslateTransform(TextDpi.FromTextDpi(ContentRect.u), TextDpi.FromTextDpi(ContentRect.v)); CaretElement.AddTransformToGeometry(geometry, transform); } } return(geometry); }
/// <summary> /// <see cref="TextViewBase.GetTightBoundingGeometryFromTextPositions"/> /// </summary> internal override Geometry GetTightBoundingGeometryFromTextPositions(ITextPointer startPosition, ITextPointer endPosition) { // verify that layout information is valid. Cannot continue if not valid. if (!IsValid) { throw new InvalidOperationException(SR.Get(SRID.TextViewInvalidLayout)); } Geometry geometry = null; if (!IsPageMissing) { geometry = _pageTextView.GetTightBoundingGeometryFromTextPositions(startPosition, endPosition); if (geometry != null) { Transform transform = GetTransformToAncestor().AffineTransform; CaretElement.AddTransformToGeometry(geometry, transform); } } return(geometry); }
// Token: 0x06005361 RID: 21345 RVA: 0x00172D08 File Offset: 0x00170F08 private static void UpdateCaretElement(DependencyObject d, DependencyPropertyChangedEventArgs e) { PasswordBox passwordBox = (PasswordBox)d; if (passwordBox.Selection != null) { CaretElement caretElement = passwordBox.Selection.CaretElement; if (caretElement != null) { if (e.Property == PasswordBox.CaretBrushProperty) { caretElement.UpdateCaretBrush(TextSelection.GetCaretBrush(passwordBox.Selection.TextEditor)); } caretElement.InvalidateVisual(); } TextBoxView textBoxView = ((passwordBox != null) ? passwordBox.RenderScope : null) as TextBoxView; TextBoxView textBoxView2 = textBoxView; if (textBoxView2 != null && ((ITextView)textBoxView2).RendersOwnSelection) { textBoxView.InvalidateArrange(); } } }