int LoadImage(loadimg img)
{
if(img.data==0) return 0;
int i,n;
uint16_t c,r1,b1,g1;
uint16_t out_w=img.width;
img.mask=0;
for(i=0;i<img.height;i++){
for(n=0;n<img.width;n++){
r1=img.data[((i*out_w)*3+n*3)];
g1=img.data[((i*out_w)*3+n*3)+1];
b1=img.data[((i*out_w)*3+n*3)+2];
c=MAKE_RGB565(r1,g1,b1);
img.data[i*img.width+n]=c;
}
}
return 1;
}
int LoadAnimImage(loadimg img,uint16_t f_w,uint16_t f_h,uint16_t f_c)
{
if(f_c==0)return 0;
LoadImage(img);
if(f_c>1){
if(img.width>f_w-1){
img.framecount=f_c;
img.f_width=f_w;
img.f_height=f_h;
}
}
return 1;
}
void DrawImage(uint16_t *screen,int x,int y,loadimg img,uint16_t fram)
{
int i,n;
uint16_t c;
uint16_t img_w=img.width;
uint16_t img_h=img.height;
if(img.f_width>0 && img.f_height>0){
img_w=img.f_width;
img_h=img.f_height;
}
if(fram>img.framecount)fram=img.framecount;
for(i=0;i<img_h;i++){
for(n=0;n<img_w;n++){
c=img.data[fram*(img_w*img_h)+i*img_w+n];
if(c!=img.mask)SetPixel(screen,x+i,y+n,c);
}
}
}
void SetMask(loadimg img,uint16_t c)
{
img.mask=c;
}
функции пародии на блитз2д,гружу имгу так:if(LoadAnimImage(man,8,64,8 )==0)return 0;
пытаюсь рисовать так:DrawImage(screens,x,y,man,3);
но хоть сдохни,рисует полностью....где ошибка??
(пять минут назад 3G дали)