[cairo-bugs] [Bug 35407] New: boundary of image gets wrong color

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Fri Mar 18 01:54:28 PDT 2011


https://bugs.freedesktop.org/show_bug.cgi?id=35407

           Summary: boundary of image gets wrong color
           Product: cairo
           Version: 1.10.2
          Platform: ARM
        OS/Version: Linux (All)
            Status: NEW
          Severity: major
          Priority: medium
         Component: general
        AssignedTo: cworth at cworth.org
        ReportedBy: clock9 at naver.com
         QAContact: cairo-bugs at cairographics.org


Created an attachment (id=44569)
 --> (https://bugs.freedesktop.org/attachment.cgi?id=44569)
result of test.

I got a problem in cairo 1.10.2.

The boundary of an image I try to draw has wrong color.

It's 1 pixel outer box.

you can see it with the attached file.


'_cairo_image_surface_paint' function (It's not in 1.8.8 so
'_cairo_surface_fallback_paint' function is used),
and the decimal scaling, and the alpha property of the image surface,
seem to make this issue.

please take this issue and please let me know how to make it right.


================================================
my test code and conditions are below.
================================================
A. The conditions

1. set operator as CAIRO_OPERATOR_SOURCE
2. scale factor is decimal not integer. like cairo_scale(cr,4.1) in the test
code
3. the image surface has no alpha format.

B. The Test Code

{
    char outfile[100];

    uint32_t* dst_buffer = create_buffer32(480*800, 0xff00ff00);

    cairo_surface_t* cairo_surface = cairo_image_surface_create_for_data (
                                                          (unsigned
char*)dst_buffer,
                                                           CAIRO_FORMAT_RGB24,
                                                          480, 800,
                                                         
cairo_format_stride_for_width(CAIRO_FORMAT_RGB24,
                                                          480));
    cairo_t* cr = cairo_create(cairo_surface); 

    cairo_set_antialias(cr, CAIRO_ANTIALIAS_DEFAULT);

    cairo_scale(cr,4.1, 4.1);

    cairo_surface_t* src_surface =
cairo_image_surface_create_from_png("/white.png"); // just white image file
25x16.

    cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE);

    cairo_pattern_t* pattern = cairo_pattern_create_for_surface(src_surface);

    cairo_pattern_set_extend(pattern, CAIRO_EXTEND_PAD);

    cairo_matrix_t matrix = { 1.0, 0, 0, 1.0, 0, 0 };

    cairo_pattern_set_matrix(pattern, &matrix);

    cairo_translate(cr, 8, 8);

    cairo_set_source(cr, pattern);

    cairo_pattern_destroy(pattern);

    cairo_rectangle(cr, 0, 0, 25, 16);

    cairo_clip(cr);

    cairo_paint_with_alpha(cr, 1.0);

    sprintf(outfile,"test.png");

    cairo_surface_write_to_png(cairo_surface,outfile);

    cairo_surface_destroy(src_surface);

    cairo_surface_destroy(cairo_surface);

    cairo_destroy(cr);

    destroy_buffer32(dst_buffer);    
}

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.


More information about the cairo-bugs mailing list