Browse Source

feat(TextView): Add TextMarkerType.InterChar

Refs: #39
pull/40/head
Michael Seibt 11 months ago
committed by GitHub
parent
commit
e49c54f99b
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 3
      Project/Src/Document/MarkerStrategy/TextMarker.cs
  2. 31
      Project/Src/Gui/TextView.cs

3
Project/Src/Document/MarkerStrategy/TextMarker.cs

@ -14,7 +14,8 @@ namespace ICSharpCode.TextEditor.Document
{
SolidBlock,
Underlined,
WaveLine
WaveLine,
InterChar
}
/// <summary>

31
Project/Src/Gui/TextView.cs

@ -291,28 +291,39 @@ namespace ICSharpCode.TextEditor
private void DrawMarkerDraw(Graphics g)
{
foreach (var m in markersToDraw)
foreach (MarkerToDraw m in markersToDraw)
{
var marker = m.marker;
var drawingRect = m.drawingRect;
var drawYPos = drawingRect.Bottom - 1;
TextMarker marker = m.marker;
RectangleF drawingRect = m.drawingRect;
if (marker.TextMarkerType == TextMarkerType.SolidBlock)
{
g.FillRectangle(BrushRegistry.GetBrush(marker.Color), drawingRect);
continue;
}
float drawYPos = drawingRect.Bottom - 1;
Pen pen = BrushRegistry.GetPen(marker.Color);
switch (marker.TextMarkerType)
{
case TextMarkerType.Underlined:
g.DrawLine(BrushRegistry.GetPen(marker.Color), drawingRect.X, drawYPos, drawingRect.Right, drawYPos);
g.DrawLine(pen, drawingRect.X, drawYPos, drawingRect.Right, drawYPos);
break;
case TextMarkerType.WaveLine:
var reminder = (int)drawingRect.X%6;
int reminder = (int)drawingRect.X % 6;
for (float i = (int)drawingRect.X - reminder; i < drawingRect.Right; i += 6)
{
g.DrawLine(BrushRegistry.GetPen(marker.Color), i, drawYPos + 3 - 4, i + 3, drawYPos + 1 - 4);
g.DrawLine(pen, i, drawYPos + 3 - 4, i + 3, drawYPos + 1 - 4);
if (i + 3 < drawingRect.Right)
g.DrawLine(BrushRegistry.GetPen(marker.Color), i + 3, drawYPos + 1 - 4, i + 6, drawYPos + 3 - 4);
g.DrawLine(pen, i + 3, drawYPos + 1 - 4, i + 6, drawYPos + 3 - 4);
}
break;
case TextMarkerType.SolidBlock:
g.FillRectangle(BrushRegistry.GetBrush(marker.Color), drawingRect);
case TextMarkerType.InterChar:
int baseWidth = (int)(drawingRect.Width * 0.5f);
int height = (int)(drawingRect.Height * 0.25f);
g.DrawLine(pen, drawingRect.X - baseWidth, drawYPos, drawingRect.X + baseWidth, drawYPos);
g.DrawLine(pen, drawingRect.X, drawYPos - height, drawingRect.X, drawYPos);
break;
}
}

Loading…
Cancel
Save