Summary: | invalid rendering when painting large scaled-down surfaces | ||
---|---|---|---|
Product: | cairo | Reporter: | Ed Swartz <eswartz> |
Component: | image backend | Assignee: | Carl Worth <cworth> |
Status: | RESOLVED FIXED | QA Contact: | cairo-bugs mailing list <cairo-bugs> |
Severity: | major | ||
Priority: | high | ||
Version: | 1.2.4 | ||
Hardware: | x86 (IA32) | ||
OS: | Linux (All) | ||
Whiteboard: | |||
i915 platform: | i915 features: | ||
Attachments: |
Test case showing error
Cheat and avoid range overflow in the pixman_matrix_t for this particular case |
Description
Ed Swartz
2006-11-24 13:44:18 UTC
Created attachment 7893 [details]
Test case showing error
Try it like this:
rm -f test_*.png; gcc cairo_scale_bug.c `pkg-config --cflags --libs gtk+-2.0`&&
./a.out && eog test_*.png
Created attachment 19284 [details] [review] Cheat and avoid range overflow in the pixman_matrix_t for this particular case The issue here is range overflow when constructing the pixman_matrix_t for downscaling and placing the image. However for this particular class of transformations we can extend the range of translations supported by using the auxiliary offset vector in the attributes, such that the offset vector contains the integer components of the translation and the matrix contains the fractional values. This seems like a lot of complication to work-around what seems to be an unlikely corner-case. I've push a cleaned-up patch to master, which will be included with 1.10. Thanks for the bug report! |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.