[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