PeachDrawing

PeachDrawing Namespace

Classes  
ColorMatrixFilter Applies a ColorMatrix to every pixel: the mechanism behind CSS grayscale(), sepia(), saturate(), hue-rotate() and friends, including the cross-channel ones a PDF transfer function cannot express.
DepthBuffer One depth value per pixel of a RasterSurface of the same size, for composing the planes of a 3D rendering context: larger is nearer the viewer, and a fresh buffer holds negative infinity (nothing drawn). Rented from the shared array pool, so a context costs one object and no garbage.
PathStroker Turns the line a Pen would draw along a path into an ordinary outline, so the stroke can be filled, clipped to, measured, or combined with other geometry like any other shape.
RasterCanvas An Canvas that paints into a RasterSurface instead of a PDF content stream. It exists for the effects PDF cannot express in vector form; the bitmap it produces is embedded back into the PDF by the graphics that asked for it (BeginRasterSurface(Rect, Nullable<double>)).
RasterLayerEffects Applies the LayerEffects of a LayerOptions to the pixels of a raster surface. A Canvas that draws layers through raster surfaces calls this from its ApplyLayerEffects; RasterCanvas does.
RasterRenderContext A RenderContext for drawing directly onto a RasterCanvas canvas with no HTML, CSS, layout, or PDF document involved. CreateCanvas(int, int, double) is the entry point: `...`
RasterSurfaceEncoding Encodes a finished RasterSurface’s pixels into bytes a PDF (or any other) embedder can wrap - the “pixels in, encoded bytes out” half of embedding a raster surface in a document. Deliberately has no PDF library dependency: the document-specific wrapping is left to the embedder.
RasterSurfaceFactory Creates raster surfaces on the shared pixel grid, at an exact physical resolution.
TextOutlineBuilder Turns a shaped glyph run into a vector GraphicsPath. Shared by every backend’s GetTextOutline(string, Font, PaintPoint, double, Nullable<ShapeSettings>) so they all place glyphs identically - it needs nothing beyond Typeface/Size, so it takes the portable Font directly rather than a backend-specific font wrapper.
Warp Draws one surface as the picture a Homography makes of it: the raster half of a CSS perspective or 3D transform (a PDF cm is affine and cannot). Every destination pixel is mapped back through the inverse to the source and sampled there.
Structs  
DepthPlane How deep a plane is (its z over its divisor, larger being nearer the viewer) at each point of it, from the same 4x4 matrix as its Homography: the z of the plane z = 0 after the matrix, and the divisor the map shares.
Homography A projective map of the plane, a 3x3 matrix acting on the column vector (x, y, 1): the picture a 4x4 CSS transform (perspective included) makes of a flat element. Where an affine System.Numerics.Matrix3x2 keeps parallel lines parallel, this does not; the third row is what makes the difference (the divisor W).