X-Git-Url: https://hackdaworld.org/gitweb/?p=physik%2Fmorpheus.git;a=blobdiff_plain;f=display.c;h=9509276522b0074e36e6386261d1682ccfe5fecc;hp=809b556fe65a760f4204d35c0354682214a34748;hb=8b42dad3e3d018228dee65bb9a5eb652539b7b49;hpb=dcc213e7fef0a79e92d8548bd9a37461e91c9a5c diff --git a/display.c b/display.c index 809b556..9509276 100644 --- a/display.c +++ b/display.c @@ -8,7 +8,7 @@ #include "defines.h" -int display_init(int x,int y,int z,display *display,void *cell,int *argc,char **argv) +int display_init(u32 x,u32 y,u32 z,display *display,cell *cell,int *argc,char **argv) { #ifdef USE_DFB_API DFBSurfaceDescription surface_dsc; @@ -47,9 +47,9 @@ int display_release(display *display) } #ifdef USE_DFB_API -int dfb_choose_color(u32 *cell_p,unsigned char *r,unsigned char *g,unsigned char *b) +int dfb_choose_color(cell *cell_p,unsigned char *r,unsigned char *g,unsigned char *b) { - if((*cell_p&AMORPH)==AMORPH) + if(cell_p->status&AMORPH) { *r=0xff; *g=0x00; @@ -91,7 +91,7 @@ int display_draw(display *display,u32 x,u32 y,u32 z) { for(z_c=0;z_cmax_z;z_c++) { - dfb_choose_color((u32 *)(display->cell_p+x_c+y_c*(display->max_x-1)+z_c*(display->max_x-1)*(display->max_y-1)),&r,&g,&b); + dfb_choose_color(display->cell_p+x_c+y_c*display->max_x+z_c*display->max_x*display->max_y,&r,&g,&b); if(x_c==x && z_c==z) display->primary_surface->SetColor(display->primary_surface,0xff,0xff,0,0); else @@ -105,7 +105,7 @@ int display_draw(display *display,u32 x,u32 y,u32 z) { for(z_c=0;z_cmax_z;z_c++) { - dfb_choose_color((u32 *)(display->cell_p+x_c+y_c*(display->max_x-1)+z_c*(display->max_x-1)*(display->max_y-1)),&r,&g,&b); + dfb_choose_color(display->cell_p+x_c+y_c*display->max_x+z_c*display->max_x*display->max_y,&r,&g,&b); if(y_c==y && z_c==z) display->primary_surface->SetColor(display->primary_surface,0xff,0xff,0,0); else @@ -119,7 +119,7 @@ int display_draw(display *display,u32 x,u32 y,u32 z) { for(y_c=0;y_cmax_y;y_c++) { - dfb_choose_color((u32 *)(display->cell_p+x_c+y_c*(display->max_x-1)+z_c*(display->max_x-1)*(display->max_y-1)),&r,&g,&b); + dfb_choose_color(display->cell_p+x_c+y_c*display->max_x+z_c*display->max_x*display->max_y,&r,&g,&b); if(x_c==x && y_c==y) display->primary_surface->SetColor(display->primary_surface,0xff,0xff,0,0); else @@ -151,9 +151,9 @@ int display_draw(display *display,u32 x,u32 y,u32 z) display->primary_surface->DrawString(display->primary_surface,text,-1,menu_x+display_faktor_x,menu_y+display_faktor_y*2+menu_h/10*2,DSTF_LEFT); sprintf(text,"z: %u",z); display->primary_surface->DrawString(display->primary_surface,text,-1,menu_x+display_faktor_x,menu_y+display_faktor_y*3+menu_h/10*3,DSTF_LEFT); - sprintf(text,"status: %c",*(u32 *)(display->cell_p+x+y*(display->max_x-1)+z*(display->max_x-1)*(display->max_y-1))&AMORPH?'a':'c'); + sprintf(text,"status: %c",((display->cell_p+x+y*display->max_x+z*display->max_x*display->max_y))->status&AMORPH?'a':'c'); display->primary_surface->DrawString(display->primary_surface,text,-1,menu_x+display_faktor_x,menu_y+display_faktor_y*5+menu_h/10*5,DSTF_LEFT); - sprintf(text,"C conc.: %u",(*(u32 *)(display->cell_p+x+y*(display->max_x-1)+z*(display->max_x-1)*(display->max_y-1))&C_CONC_MASK)>>1); + sprintf(text,"c conc.: %u",(display->cell_p+x+y*display->max_x+z*display->max_x*display->max_y)->conc); display->primary_surface->DrawString(display->primary_surface,text,-1,menu_x+display_faktor_x,menu_y+display_faktor_y*6+menu_h/10*6,DSTF_LEFT); /* flip all to surface */ display->primary_surface->Flip(display->primary_surface,NULL,0); @@ -173,15 +173,16 @@ int display_event_init(display *display) int display_scan_event(display *display,u32 *x,u32 *y,u32 *z,int *quit) { DFBInputEvent keyboard_event; + display->keyboard_buffer->WaitForEvent(display->keyboard_buffer); display->keyboard_buffer->GetEvent(display->keyboard_buffer,DFB_EVENT(&keyboard_event)); if(keyboard_event.type==DIET_KEYPRESS) { if(keyboard_event.key_id==DIKI_LEFT && *x!=0) *x-=1; - if(keyboard_event.key_id==DIKI_RIGHT && *x!=(display->max_x)-1) *x+=1; + if(keyboard_event.key_id==DIKI_RIGHT && *x!=display->max_x-1) *x+=1; if(keyboard_event.key_id==DIKI_DOWN && *y!=0) *y-=1; - if(keyboard_event.key_id==DIKI_UP && *y!=(display->max_y)-1) *y+=1; + if(keyboard_event.key_id==DIKI_UP && *y!=display->max_y-1) *y+=1; if(keyboard_event.key_id==DIKI_PAGE_UP && *z!=0) *z-=1; - if(keyboard_event.key_id==DIKI_PAGE_DOWN && *z!=(display->max_z)-1) *z+=1; + if(keyboard_event.key_id==DIKI_PAGE_DOWN && *z!=display->max_z-1) *z+=1; if(keyboard_event.key_id==DIKI_Q) *quit=1; } return 23;