Improved numeric index, libagg backend, configuration syntax

Working down by own roadmap these are the most important recent changes:

Reworked configuration files

I did switch from XML based configuration files for preprocessing (*.ost) and style definition (*.oss) to DSL style configuration files (using Coco/R for scanner parser generation). As part of this change I got rid of manually defining Ids to auto generated ids, making configuration simpler.

Improved numeric index

The numeric index now generates index pages of a given block size (4096 by default). This should improve OS low-level file block caching/handling. As a result preprocessing got a bit faster. There are still some code optimizations left, that might increase performance even further.

libagg backend improvements

While the libagg backend is not finished (missing support for external images, some smaller missing features that should be rather easy to add), I added path dash and font support so that resulting maps are now usable. Image quality between cairo, Qt and agg backends is only visibly different in font handling (libagg being better IMHO). I did not yet do any in deep performance comparison, but it looks like performance between cairo and libagg backend is comparable, with libagg possibly being faster in some cases. Main benefit of libagg is the possibility to draw into offscreen buffers without any OS support. Here are screenshots of the same map drawn with cairo and libagg.

cairo backend example

cairo backend example

libagg backend example

libagg backend example


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: