Weblog
New Build Options for Libgdiplus
It's a little known fact but, since Cairo 1.4 was released, libgdiplus no more requires any patch (to Cairo) in order to work properly. Well that's 99.9% true as the only required changes/patches are related to embedding Cairo inside libgdiplus.
So, if you have Cairo 1.4.x installed, it is now possible to build libgdiplus using your distro libcairo, like this:
The resulting library (about 2.5 times smaller and a lot faster to compile) pass all System.Drawing's unit tests.
Still this isn't, at the moment, a supported option and the minimum Cairo version (1.4 right now) is subject to change.
E.g. we may end up patching Cairo again (hopefully not) and/or Cairo 1.6 roadmap includes some stuff
[77937]
[81374]
that we might require in the future and, who knows, maybe someone will even implement the documented, but missing,
cairo_stroke_to_path.
Anyway please feel free to test, and report bugs, for this new configuration.
So why adding this option if it's not supported ? because it's required to start working with Pango to render (measure and draw) text.
So if you have Pango 1.10 or later (and that's subject to change too) you can try:
That one is totally unsupported and, at this stage, I don't even want to know about bugs -
unless you provide a patch to fix them (in part because the current code use the high-level API,
PangoLayout and some of them missing features may requires us to use the low-level API soon.
Unit tests wise this Pango-enabled build does fine, only three System.Drawing
tests are failing (out of 1759).
However I fear this indicates more a lack of tests than an almost-total success.
Mandatory screenshots

Our own logic rendered with Cairo

Pango's logic rendered with PangoCairo
Known issues
- Textbox performance is really bad, because it measure every character one-by-one (and setting up a Pango Layout is more expansive than our old logic);
- Text selection (Textbox, ComboBox) and multilines don't render correctly (didn't look why);
- and probably a lot more ;-)
8/9/2007 09:36:03 | Comments | Permalink
The New Old (and almost unnoticed) Stuff
News
Woohoo!
Cecil
finally moved into /mcs/class :-)
Old stuff
The first Cecil-based tool I built (years ago) was...
not Gendarme,
not Monoxide
but a complete version of
permview.
The previous one (in /mcs SVN) was incomplete because the 1.x framework
lacked the API required to read the security attributes.
New Old Stuff
The old permview was replaced by the new Cecil-based version. It will be part of the Mono 1.2.6 release. Now that was a long wait but I don't think it (permview) mattered to many people, at least compared to Cecil ;-)
8/8/2007 13:44:27 | Comments | Permalink
The views expressed on this website/weblog are mine alone and do not necessarily reflect the views of my employer.
