<div dir="ltr">Hi there,<div><br></div><div><br></div><div>Cairo is treating colours with alpha=zero incorrectly.<div>If alpha is zero, the red green and blue channels are zeroed by cairo, even if they contain non zero r/g/b values.<br><div><br></div><div>To demonstrate this bug, I wrote this python-cairo program that creates an image with two colours.</div><div>The left half of the image is set to 1,1,1,0.</div><div>The right half of the image is set to 1,1,1,1</div><div><br></div><div>When cairo writes out the PNG, the left half of the image is incorrect.</div><div>The pixels are 0,0,0,0 instead of 1,1,1,0.</div><div><br></div><div>---</div><div><br></div><div>The test program:</div><div><br></div><div><div>#! /usr/bin/env python</div><div>import cairo</div><div>from math import pi, sqrt</div><div><br></div><div>width = 120</div><div>height = 120</div><div>filename = "out"</div><div><br></div><div>surface = cairo.SVGSurface(filename + '.svg', width, height)</div><div>cr = cairo.Context(surface)</div><div><br></div><div>cr.scale(width, height)</div><div>cr.set_line_width(0.01)</div><div><br></div><div>cr.rectangle(0, 0, 0.5, 1)</div><div>cr.set_source_rgba(1, 1, 1, 0/255.0)</div><div>cr.fill()</div><div><br></div><div>cr.set_source_rgba(1,1,1, 1/255.0)</div><div>cr.rectangle(0.5,0,1,1)</div><div>cr.fill()</div><div><br></div><div>surface.write_to_png(filename + '.png')</div><div>cr.show_page()</div><div>surface.finish()</div></div><div><br></div><div><br></div><div><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div>Owner/Director of Game Studio Abraham Stolk Inc.</div><div>Vancouver BC, Canada</div><div><a href="mailto:b.stolk@gmail.com" target="_blank">b.stolk@gmail.com</a></div><div><br></div></div></div>
</div></div></div></div>