LineElement FindLineElement(BlockStructureData info) { foreach (var lineElement in lineElements) { if (BlockStructureDataComparer.Instance.Equals(lineElement.BlockStructureData, info)) return lineElement; } return null; }
public double GetXPosition(BlockStructureData data) { TryUpdateState(); var topPoint = data.Top.Start.TranslateTo(toXPosDictSnapshot, PointTrackingMode.Negative); double x; if (toXPosDict.TryGetValue(topPoint.Position, out x)) return x; var point = GetBlockStartPoint(topPoint, data.Bottom.Start.TranslateTo(toXPosDictSnapshot, PointTrackingMode.Negative)); var line = wpfTextView.GetTextViewLineContainingBufferPosition(point); var bounds = line.GetExtendedCharacterBounds(point); x = Math.Round(bounds.Left + bounds.Width / 2 - PEN_THICKNESS / 2) + 0.5; toXPosDict[topPoint.Position] = x; return x; }
public LineElement(BlockStructureData info) { BlockStructureData = info; }
double GetLineXPosition(BlockStructureData data) => xPosCache.GetXPosition(data);