public void DrawLine(Graphics g, ref float xPos, float xOffset, float yPos, Color c) { SizeF spaceSize = this.GetSpaceSize(g); foreach (DrawableLine.SimpleTextWord word in this.words) { switch (word.Type) { case TextWordType.Word: { xPos = xPos + DrawableLine.DrawDocumentWord(g, word.Word, new PointF(xPos + xOffset, yPos), (word.Bold ? this.boldMonospacedFont : this.monospacedFont), (c == Color.Empty ? word.Color : c)); continue; } case TextWordType.Space: { xPos += spaceSize.Width; continue; } case TextWordType.Tab: { float width = spaceSize.Width * 4f; xPos += width; xPos = (float)((int)((xPos + 2f) / width)) * width; continue; } default: { continue; } } } }
public SearchResultNode(IDocument document, SearchResult result) { drawDefault = false; this.result = result; startPosition = result.GetStartPosition(document); Point endPosition = result.GetEndPosition(document); positionText = "(" + (startPosition.Y + 1) + ", " + (startPosition.X + 1) + ") "; LineSegment line = document.GetLineSegment(startPosition.Y); drawableLine = new DrawableLine(document, line, RegularMonospacedFont, BoldMonospacedFont); drawableLine.SetBold(0, drawableLine.LineLength, false); if (startPosition.Y == endPosition.Y) { drawableLine.SetBold(startPosition.X, endPosition.X, true); } specialText = result.DisplayText; if (specialText != null) { displayText = positionText + specialText; } else { displayText = positionText + document.GetText(line).Replace("\t", " "); } Text = displayText; }