BLEND 2D

next generation 2d vector graphics engine

Roadmap

Blend2D roadmap should be considered only as a high-level overview of planned features. Minor features and tasks are not shown here for making the table easier to follow. Finished features are always removed from the list.

Disclaimer

Features are sorted by priority, but during the time they can be rescheduled if required. All features listed have a different complexity; they can take a day or a month to implement. The idea is to make the rendering engine first, and then add features that are not strictly related to the pipeline construction, but makes the library more usable.

Alpha Release

Feature Status Comment
Font Collection Working Ability to have a font collection that can be used for font queries.
Basic Text Layout Working Basic text layout - Simple scripts, proper advances and kerning support.

Beta Release

Feature Status Comment
A8 Target Pending Rendering to buffers that use A8 pixel format.
RGB24 target Pending Rendering to buffers that use RGB24 pixel format.
XRGB32 Target Working The engine sometimes doesn't distinguish between PRGB32 and XRGB32 targets, which is wrong.
Non-Rectangular Clipping Pending Support for non-rectangular clipping (region-based and/or span-based).
Rasterizer Acceleration Pending Use the advantage of SSE2 in the analytic rasterizer itself (C++ part).
PNG Encoder Pending Ability to write a PNG image into b2d::Buffer.
JPEG Encoder Pending Ability to write a JPEG image into b2d::Buffer.
Advanced Text Layout Pending Advanced text layout by using more OT features.

Future Releases

Feature Status Comment
Deferred Rendering Pending Ability to defer all rendering operations until they are flushed.
Async Rendering Pending Ability to run an asynchronous worker in different thread while the rendering context is still in use.
Multithreaded Rendering Pending Ability to run more than one asynchronous worker to improve performance.
Gradient Dithering Pending High-performance dithered gradients that prevent banding artifacts.
Image Filters Pending Filters implementing Gaussian blur, generic convolution, erode, dilate, and displacement.
Color Filters Pending Filters implementing basic color adjustments and color matrix.
HSL Blend Modes Pending Non-separable HSL blending (PDF specification, cairo/skia compatibility).
Render Filters Pending Filters generating turbulence and fractal noise.
Path Boolean Pending Ability to perform boolean operations with two or more graphics paths.
Path on Path Pending Ability to deform a path to be on another path, for implementing text-on-path like effects.

The implementation can be based on AGG's path-on-path, however, it flattens all curves to line segments.
Stroke to Path Pending Implement a new stroking algorithm that can stroke quadratic and cubic B├ęzier curves into curves without flattening them into line segments.