Libgdiplus
From Mono
Libgdiplus is the Mono library that provide a GDI+ comptible API on non-Windows operating systems. Our implementation uses Cairo (http://www.cairographics.org) to do most of the heavy lifting.
Mono's implementation of GDI+ lives in the libgdiplus SVN module (http://anonsvn.mono-project.com/viewcvs/trunk/libgdiplus/) and includes it's own internal copy of Cairo (version 1.4.6 in Mono 1.2.5, version 1.4.10 in SVN).
| Table of contents |
Plans
Due to it's tight relation with System.Drawing new versions of libgdiplus are released with (almost) every new version of Mono.
Maintenance releases (Mono 1.2.x)
- update to latest Cairo 1.x (bugs/performance)
- bug fixes (crashes, memory leaks...)
- missing codec support for
- Windows metafiles (WMF, EMF) info (http://wvware.sourceforge.net/caolan/ora-wmf.html) (partial support from Mono 1.2.4+)
- icons (available from Mono 1.2.3+)
- clean up public/private API definition
- support C developers (new include file, GdiPlusFlat.h) (Mono 1.2.4+)
- refactoring
- split code for a future non-Cairo backend, like the metafile recording one (Mono 1.2.5+)
Next major release (Mono 2.0)
- updated to use latest Cairo (bugs/performance/features)
- use PangoCairo for font and text rendering (#79594, #77496)
- in progress and unsupported at this stage. You can use --with-cairo=system and --with-pango to enable it
Other Tasks
Cairo doesn't provide 100% of the functionalities required to implement GDI+ or System.Drawing. A few features were added directly in libgdiplus (unmanaged) or System.Drawing (managed). However some features are still missing.
- add missing implementation for
- path gradient brush (#78293)
- path widen (#78110)
- path warp
- other missing stuff required for System.Drawing (fill bugs for them)
- other missing stuff, e.g. parts of the GDI+ API isn't exposed in System.Drawing (fill bugs for them)
- clean up public/private API definition (Mono 1.2.5+)
- support C developers (new include file, gdiplusflat.h)
- refactoring
- more descriptive error reporting (logiclrd)
- call logging infrastructure (in DEBUG builds)
- use system's libcairo when possible (which seems to be the case after Cairo 1.4.0) (in SVN, unsupported at this stage, use --with-cairo=system to try it)
Some of the missing features may be available in Mono 2.0.

Powered by MediaWiki