private void ExtractOutline(Edge edge)
{
var o1 = ExtractOutlineInternal(edge);
if (o1 == null)
return; // no outline at all
// check non-closed case
if (edge.B0 != null || edge.B1 != null)
{
var o2 = ExtractOutlineInternal(edge);
o1.Reverse();
o1.AddRange(o2);
}
//int countbefore = o1.Count;
if(decimateOutlines)
DecimateOutline(o1);
//Console.WriteLine("Removed " + (float)(countbefore - o1.Count) / (float)(countbefore) * 100.0f + " %");
WorkingShape.Outlines.Add(o1);
}