public StrokeSegment[] GetDirectionSegments (int startIndex, int resolution = 20)
{
var segments = GetResolutionSimplifiedSegments (startIndex, resolution);
//
// Merge like-directions
//
/* using (var w = new System.IO.StreamWriter ("/Users/fak/Desktop/simplified.svg")) {
var points = stroke.Points;
var svg = new CrossGraphics.Svg.SvgGraphics (w, stroke.BoundingBox);
svg.BeginDrawing ();
foreach (var s in segments) {
svg.DrawLine (points [s.StartIndex], points [s.LastIndex], 3);
}
svg.EndDrawing ();
}*/
var merged = new List<StrokeSegment> ();
for (var i = 0; i < segments.Length;) {
var dir = segments [i].Direction;
var j = i + 1;
for (; j < segments.Length && segments [j].Direction == dir; j++) {
}
segments [i].EndIndex = j-1 < segments.Length ? segments [j-1].EndIndex : segments [segments.Length-1].EndIndex;
merged.Add (segments [i]);
i = j;
}
/* using (var w = new System.IO.StreamWriter ("/Users/fak/Desktop/am.svg")) {
var svg = new CrossGraphics.Svg.SvgGraphics (w, bb);
svg.BeginDrawing ();
foreach (var s in merged) {
svg.DrawLine (points [s.StartIndex], points [s.LastIndex], 3);
}
svg.EndDrawing ();
}*/
return merged.ToArray ();
}