Re: create_surface_for_cg_context behavior in Cairo 1.9 vs. 1.12
Andrea Canciani <[email protected]>
| Newsgroups | gmane.comp.lib.cairo |
|---|---|
| Message-ID | <CAN_5=BAhwaO6M2D2foxxVy1h3TtEtdPcWLS=bjwYvFYETqc8Gg@mail.gmail.com> |
On Fri, Jun 1, 2012 at 4:15 PM, cu <[email protected]> wrote: > Found a difference of behavior between Cairo Quartz in 1.9.8 and 1.12.x > versions of Cairo (which resulted in a bug in our application). Some > guidance would be appreciated. > > We create surface with "surface_for_cg_context" where cg context is > that of a view on iPhone screen. For "retina" displays, with cairo 1.9.8 > surface is created sized in "points" with 2.0 scale transform (which is > our desired behavior - to match the view of non-retina devices). With > cairo 1.12 surface is created without the transform (i.e. sized in > "retina" pixels). In our case that results in scaled down image covering > top left quarter of the view. > > What is the reason for this discrepancy? What should be the correct > behavior and how do we handle it? Quite a lot of changes happened between 1.12 and 1.9.8. Could you provide a small testcase to help keeping track of this behavior (and to bisect the change). The API reference says: "The CGContext is assumed to be in the standard Cairo coordinate space (that is, with the origin at the upper left and the Y axis increasing downward). If the CGContext is in the Quartz coordinate space (with the origin at the bottom left), then it should be flipped before this function is called." so I would expect cairo-quartz to respect the original transform (although I guess bad things might happen if there are fallbacks and/or the surface is used as a source). > > Thank you! -- cairo mailing list [email protected] http://lists.cairographics.org/mailman/listinfo/cairo