コード例 #1
0
            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]);
                }
            }
コード例 #2
0
 private unsafe void ProcessTearDropContourComputeColor(EdgeColor *colors)
 {
     SwitchColor(ref colors[0], ref _seed);
     colors[2] = colors[0];
     SwitchColor(ref colors[2], ref _seed);
 }