[cairo] 1.6: a8-mask: Making non-aligned strides illegal

Carl Worth cworth at cworth.org
Sun Jan 27 22:48:03 PST 2008


On Mon, 28 Jan 2008 00:51:13 -0500, Behdad Esfahbod wrote:
> > 	int
> > 	cairo_image_surface_stride_for_width (cairo_format_t    format,
> > 	                                      int               width);
>
> I marginally prefer cairo_format_stride_for_width() as a name.

Oh, I might like that. I came up with the first name before I realized
that a format was needed here.

> > And also documenting cairo_image_surface_create_for_data that the
> > stride value passed to it should always come from calling the function
> > above.
>
> Humm, not sure how limiting that would be.  Do you mean it should be the
> stride_for_width() of the actual image width,

"stride_for_width() of the actual image width" is what I intended.

>                                               or the stride for some
> (any) width?   I mean, say I want to create a cairo surface for a
> subsurface of a larger buffer.  The width passed to cairo may be way
> smaller than the width used for stride computation.

So you might have noticed that I dropped the suggestion in the
documentation for cairo_image_surface_create_for_data that playing
games with stride is a good way to generate sub-surfaces. More on that
below.

> Also while at this, how does this work for:
>
>   - 64-bit machines?  Is the requirement still just 32?  Guess yes.

Yes. The requirement comes from the fact that all of pixman is
currently in terms of uint32_t. But, yes, the existence of 64-bit
architectures is exactly why we want to be able to "upgrade" the
alignment constraints in the future. Hence the newly required function
call.

>   - Machines that do not allow unaligned access.  Do we also require
> that data be aligned properly?

Right. And this is why the sub-surface thing is a problem.

I tried to address this in the new documentation for
cairo_image_surface_create_for_data by stealing language from
malloc. What I'm trying to say there is that the data pointer needs to
be properly aligned for the current platform. Take a look at the
wording I used and see if you can improve it at all.

-Carl
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://lists.cairographics.org/archives/cairo/attachments/20080127/41d16659/attachment.pgp 


More information about the cairo mailing list