Enum PatchKind
Which surface a Patch is: its boundary only, or a full tensor-product net.
public enum PatchKind
Fields
Coons = 0A Coons patch: four cubic boundary curves, 12 points, the inside blended from them (PDF shading type 6, Skia's drawPatch).
Tensor = 1A tensor-product patch: a 4×4 net of cubic control points (PDF shading type 7).
Examples
// A Coons patch: four cubic edges, clockwise from the top-left corner, and a color at each corner.
Vector2[] edges =
[
new(20, 20), new(80, 0), new(150, 40), new(220, 20), // top, left to right
new(200, 80), new(240, 140), new(220, 180), // right, down
new(150, 160), new(80, 200), new(20, 180), // bottom, right to left
new(40, 120), new(0, 60), // left, up
];
Patch patch = Patch.Coons(edges, [new RgbaF32(1, 0, 0, 1), new RgbaF32(1, 1, 0, 1), new RgbaF32(0, 0, 1, 1), new RgbaF32(0, 1, 0, 1)]);
using (RasterCanvas<Rgba8> canvas = raster.CreateCanvas())
{
canvas.DrawPatch(patch);
// PDF's function-based shadings give each corner a value instead, mapped through a gradient's stops.
Patch shaded = Patch.Tensor(patch.ToTensorNet().Span, cornerValues: [0, 0.3f, 1, 0.6f]);
canvas.Translate(10, 10);
canvas.Scale(0.3f);
canvas.DrawPatch(shaded, valueStops: [new GradientStop(0, Rgba8.Black), new GradientStop(1, Rgba8.White)]);
}