[cairo] problem with scaling images

Kristian Høgsberg krh at bitplanet.net
Thu Jul 14 11:30:18 PDT 2005


Benjamin Berg wrote:
> Hello,
> 
> I am currently trying to port my gtk engine to cairo.

Good news!

> Everything worked
> pretty smoothly, but I ran into a problem.
> 
> I am trying to draw scaled images, but somehow they fade out at one
> side, and are placed at the wrong position. For an example see:
> http://benjamin.sipsolutions.net/screenshots/zenity-wrong.png
> as a reference, an old version not rendered with cairo:
> http://benjamin.sipsolutions.net/screenshots/zenity-correct.png
> 
> For example look at the top of the buttons. The line should have full
> opacity everywhere, but at the left it transparent.
> 
> 
> I have attached image.c, which is, where I think the problem is in. The
> draw_image_part function in image.c:313 should draw an image at a
> certain position and scale. But as soon as the the image needs to be
> scaled it does not work correctly. The corners, which are not scaled,
> are drawn correctly.
> To demonstrate this, here a screenshot where only the corners are drawn:
> http://benjamin.sipsolutions.net/screenshots/zenity-corners-only.png

Hi,

I wasn't able to view any of your sipsolutions.net screenshots or get 
the theme source code, I got "Document contains no data".  From your 
description of the problem, it sounds like a workaround could be setting 
the pattern filtering to be CAIRO_FILTER_NEAREST:

   cairo_pattern_set_filter (pattern, CAIRO_FILTER_NEAREST);

but I think the real problem could be an off-by-one error in the width 
calculation in your code, or in possibly in cairo.  If you can put the 
code and the screenshots up somewhere where I can get them, I'll take a 
look.

cheers,
Kristian



More information about the cairo mailing list