2008/3/14, Nikita Egorov <[EMAIL PROTECTED]>:
>
>
> > It assumes that the source x coordinate is aligned to 8 pixels, because
> > there might be functions not handling the phase properly, but the
> > warning
> > could also be obsolete and all functions support unaligned sources.
>
>
> Are you sure ?  I just saw the latest generic.c and not found any
> changes..
>
> static void Bop_a1_set_alphapixel_Aop_rgb16( GenefxState *gfxs )
> {
>   int i;
>   int w = gfxs->length;
>   u8 *S = gfxs->Bop[0];
>   u16 *D = gfxs->Aop[0];
>   u16 Cop = gfxs->Cop;
>
>   for (i=0; i<w; i++) {
>   if (S[i>>3] & (0x80 >> (i&7)))
>   D[i] = Cop;
>   }
> }
>
> When the start pixel is not aligned onto 1 byte then output picture will
> be wrong. Or I am not right ?
>
> My version of the function was :
>
> int i = gfxs->Xphase >> 13;/* !!!!!!! */
> int w = gfxs->length + i; /* !!!!!! */
> for (; i<w; i++,j++) {  /* !!!!!!! */
>
> "Xphase" I set in Bop_xy()
>
> int alignment = DFB_PIXELFORMAT_ALIGNMENT(gfxs->src_format);
>
> if ( alignment )/*only A1,A4*/
>    gfxs->Xphase = ((x & alignment)<<16)/(alignment+1);
>
> I will be very glad if you was able to fix it by other way :)
> --
> Best Regards
> Nikita Egorov
> [EMAIL PROTECTED]
> [EMAIL PROTECTED]
>

I'm sorry, I forgot new index "j", of course... :(

My full text of the function is:

static void Bop_a1_set_alphapixel_Aop_rgb16( GenefxState *gfxs )
{
int i = gfxs->Xphase >> 13;
int j = 0;
int w = gfxs->length + i;
u8 *S = gfxs->Bop[0];
u16 *D = gfxs->Aop[0];
u16 Cop = gfxs->Cop;

for (; i<w; i++,j++) {
if (S[i>>3] & (0x80 >> (i&7)))
  D[j] = Cop;
}
}




-- 
Best Regards
Nikita Egorov
[EMAIL PROTECTED]
[EMAIL PROTECTED]
_______________________________________________
directfb-users mailing list
directfb-users@directfb.org
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-users

Reply via email to