Rachel Bassett wrote:
> By the way the change I made to cairo 1.4.12, was in
> cairo-directfb-surface.c in function
> _cairo_directfb_surface_clone_similar() where code
> says .....
> if (image_src->format == CAIRO_FORMAT_A1) {
> /* A1 -> A8 */
> for (i = 0; i < height; i++) {
> for (j = src_x; j < src_x + width;
> j++)
> dst[j] = (src[j>>3] & (1 <<
> (j&7))) ? 0xff : 0x00;
> dst += pitch;
> src += image_src->stride;
> }
> }
> else {
> /* A8 -> A8 */
> for (i = 0; i < height; i++) {
> direct_memcpy( dst+src_x, src+src_x,
> sizeof(*dst)*width );
> dst += pitch;
> src += image_src->stride;
> }
> }
>
> where I changed the line direct_memcpy( dst+src_x,
> src+src_x, sizeof(*dst)*width ); to direct_memcpy(
> dst+src_x, src+src_x, (sizeof(*dst)*width)*4 ); as
> *dst is an unsigned char and therefore a size of 1 x
> by width (in pixels).
Seems to be fixed, even in official git tree :)
655 if (image_src->format == CAIRO_FORMAT_A1) {
656 /* A1 -> A8 */
657 for (i = 0; i < height; i++) {
658 for (j = src_x; j < src_x + width; j++)
659 dst[j] = (src[j>>3] & (1 << (j&7))) ? 0xff : 0x00;
660 dst += pitch;
661 src += image_src->stride;
662 }
663 }
664 else {
665 int len;
666
667 if (image_src->format == CAIRO_FORMAT_A8) {
668 dst += src_x;
669 src += src_x;
670 len = width;
671 } else {
672 dst += src_x * 4;
673 src += src_x * 4;
674 len = width * 4;
675 }
676
677 for (i = 0; i < height; i++) {
678 direct_memcpy (dst+src_x, src+src_x, len);
679 dst += pitch;
680 src += image_src->stride;
681 }
682 }
--
Best regards,
Denis Oliver Kropp
.------------------------------------------.
| DirectFB - Hardware accelerated graphics |
| http://www.directfb.org/ |
'------------------------------------------'
_______________________________________________
directfb-users mailing list
[email protected]
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-users