[cairo] Floating point API in Pixman

Krzysztof Kosiński tweenk.pl at gmail.com
Tue Aug 10 19:55:12 PDT 2010


W dniu 11 sierpnia 2010 04:06 użytkownik Soeren Sandmann
<sandmann at daimi.au.dk> napisał:
> How large are the images that inkscape needs to deal with? There is
> currently a limitation in cairo of +/- 2^23, which is about +/- 8.3
> million. This is also about the approximate range of integers that can
> be stored exactly in a single precision float.

The Cairo limitation on paths is acceptable - we don't need to render
to surfaces wider/taller than 8Mi pixels.

The path rasterizer could be tweaked so it works correctly even if
some (invisible) control points are out of range for 24.8 fixed point.
This can happen at very close zoom: the path will be very large in
surface coordinates, and some control points can have coordinates
beyond 8Mi, but they won't be visible, because they are far outside
the surface. This can be done either in Cairo or in Inkscape, but I
guess doing it in Cairo will benefit more people.

The 16.16 limitation on gradient coordinates and transformation
matrices is insufficient and causes glitches when rendering gradients
and bitmaps at 40x zoom, and in certain cases even at 1x zoom. It
would be best if gradients could use the full precision of doubles, as
exposed in Cairo.

Regards, Krzysztof


More information about the cairo mailing list