int RemoveInitialFlourish ()
{
var stroke = this;
var points = stroke.Points;
var totalLength = 0.0f;
for (var i = 0; i < points.Length - 1; i++) {
totalLength += points [i].DistanceTo (points [i+1]);
}
//
// Look for a sharp bend within the first bit of the shape
//
var len = 0.0f;
var lastDir = new PointF ();
for (var i = 0; i < points.Length - 1; i++) {
var dir = points [i+1].Subtract (points [i]).Normalized ();
if (i > 0) {
var dot = lastDir.Dot (dir);
if (dot < 0) {
//
// Big turn
//
//stroke.WriteSvg ("/Users/fak/Desktop/turn.svg");
return i;
}
}
lastDir = dir;
//
// Only look at the first 5%
//
len += points [i].DistanceTo (points [i+1]);
if (len > totalLength * 0.05f) {
return 0;
}
}
return 0;
}