2D software renderer. See an example of a Canvas-enabled UIElement in: dplug.flatwidgets.windowresizer.UIWindowResizer
This is a DPlug-specific rework of dg2d by Cerjones. https://github.com/cerjones/dg2d
- removal of truetype functionnality (since covered by dplug:graphics) - nothrow @nogc - rework of the Canvas itself, to resemble more the HTML5 Canvas API - Blitter delegate made explicit with a userData pointer - added html color parsing - no alignment requirements - clipping is done with the ImageRef input However a failure of this fork is that for transforms and stroke() support you do need path abstraction in the end.
dplug:canvas is pretty fast and writes 4 pixels at once.
Bug: you can't use it on a widget that is full-size in your plugin.
Not supported for now.
Implement the plain color fill style. dplug:canvas internals.
Implement the elliptic gradient fill style. dplug:canvas internals.
Implement the gradient class. dplug:canvas internals.
Implement HTML color parsing. dplug:canvas internals.
Implement the linear gradient fill style. dplug:canvas internals.
Miscellaneous functions for dplug:canvas internals.
Analytic antialiasing rasterizer.
dplug:canvas operates on RGBA 8-bit buffers.
The transform type used by dplug:canvas. It's a 3x3 float matrix with the form: (a b c) (d e f) (0 0 1)
Holds both gradient data/table and positioning information.
A 2D Canvas able to render complex pathes into an ImageRef!RGBA buffer. Canvas tries to follow loosely the HTML 5 Canvas API.