private static void DebugCheck(StringWithFont current, StringWithFont previous) { if (previous.String.Equals(current.String)) { Debugger.Break(); } }
public override bool Accept(IEventData data, EventType type) { if (!type.Equals(EventType.RENDER_TEXT)) { return(false); } var renderInfo = (TextRenderInfo)data; string text = renderInfo.GetText(); if (text == null) { return(false); } if (text.Equals("die’")) { Debugger.Break(); } var stringWithFont = new StringWithFont() { String = text, Width = renderInfo.GetSingleSpaceWidth() }; if (previousEntry == null) { Program.TextWithWidth.AddLast(stringWithFont); previousEntry = stringWithFont; return(true); } var previousWidth = previousEntry.Value.Width; var stringWithFontWidth = stringWithFont.Width; var delta = Math.Abs(previousWidth - stringWithFontWidth); if ((!previousEntry.Value.String.Equals(stringWithFont.String) && previousEntry.Value.String.EndsWith(stringWithFont.String)) || previousEntry.Value.String.Equals(stringWithFont.String)) { Program.TextWithWidth.RemoveLast(); previousEntry = new StringWithFont() { String = previousEntry.Value.String, Width = Math.Max(stringWithFont.Width, previousWidth) }; Program.TextWithWidth.AddLast(previousEntry.Value); } else if (delta < 0.001f && !previousEntry.Value.String.Equals(stringWithFont.String)) { DebugCheck(stringWithFont, previousEntry.Value); Program.TextWithWidth.RemoveLast(); previousEntry = new StringWithFont() { String = previousEntry.Value.String + stringWithFont.String, Width = Math.Max(stringWithFont.Width, previousWidth) }; Program.TextWithWidth.AddLast(previousEntry.Value); } else { DebugCheck(stringWithFont, previousEntry.Value); Program.TextWithWidth.AddLast(stringWithFont); previousEntry = stringWithFont; } return(true); }