Показать сообщение отдельно
Старый 06.07.2011, 09:41   #1
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
не могу найти ошибку

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 дали)
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием