private unsafe void ProcessTearDropContourSplitAndColor(Contour contour, EdgeColor *colors) { var corner = _corners[0]; var parts = new EdgeSegment[] { null, null, null, null, null, null, null }; contour[0].SplitInThirds(out parts[0 + 3 * corner], out parts[1 + 3 * corner], out parts[2 + 3 * corner]); if (contour.Count >= 2) { contour[1].SplitInThirds(out parts[3 - 3 * corner], out parts[4 - 3 * corner], out parts[5 - 3 * corner]); parts[0].Color = parts[1].Color = colors[0]; parts[2].Color = parts[3].Color = colors[1]; parts[4].Color = parts[5].Color = colors[2]; } else { parts[0].Color = colors[0]; parts[1].Color = colors[1]; parts[2].Color = colors[2]; } contour.Clear(); for (var i = 0; parts[i] != null; ++i) { contour.Add(parts[i]); } }
private unsafe void ProcessTearDropContourComputeColor(EdgeColor *colors) { SwitchColor(ref colors[0], ref _seed); colors[2] = colors[0]; SwitchColor(ref colors[2], ref _seed); }