[cairo] Negative coordinates with recording surfaces
Adrian Johnson
ajohnson at redneon.com
Thu Jul 6 09:32:14 UTC 2017
Have you tried the latest snapshot (1.15.6)? 1.15.4 and later contains
fixes for recording surfaces with negative extents.
On 06/07/17 16:58, Antony Lee wrote:
> Hi all,
>
> I have am a bit puzzled with how negative coordinates interact with
> recording surfaces. Consider the following cairocffi example:
>
> from cairocffi import *
> surf = RecordingSurface(CONTENT_COLOR_ALPHA, None)
> ctx = Context(surf)
> ctx.move_to(-5, -5)
> ctx.line_to(5, 5)
> ctx.set_line_width(.001) # so that ink extents are not affected by
> linewidth
> ctx.stroke()
> print(surf.ink_extents())
>
>
> This gives (-5.0, -5.0, 10.0, 10.0), so ink_extents has correctly
> reported that we have something going from (-5, -5) to (5, 5) on the
> unbounded surface.
>
> But replace the surface constructor call by
>
> surf = RecordingSurface(CONTENT_COLOR_ALPHA, (-10, -10, 20, 20))
>
>
> which is a surface that is large enough to cover our line. (After all,
> the documentation encourages us to specify the extents, for better
> performance.)
> Now the same program gives (5.0, 5.0, 5.0, 5.0). By playing around with
> the numbers, I *guess* that the origin is relative to the lower left
> corner of the recording surface, and the width and height are up to 0, 0
> but not beyond?
>
> Shouldn't I get instead either (-5.0, -5.0, 10.0, 10.0) (same as with an
> unbounded surface), or at least (5.0, 5.0, 10.0, 10.0) (if the returned
> extents are relative to the lower left corner of the surface)?
>
> Thanks in advance,
>
> Antony Lee
>
>
More information about the cairo
mailing list