X-Git-Url: https://hackdaworld.org/gitweb/?p=physik%2Fmorpheus.git;a=blobdiff_plain;f=display.c;h=9ed5c29a589a8b44472a461b2b347ccaa85b3a5f;hp=16f379a8358108f5757d45d0ba389b10aa18f76a;hb=HEAD;hpb=30afbcffe819262c3bc4407f3a92fe4308f7a849 diff --git a/display.c b/display.c index 16f379a..9ed5c29 100644 --- a/display.c +++ b/display.c @@ -8,10 +8,11 @@ #include "defines.h" -int display_init(u32 x,u32 y,u32 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; + DFBFontDescription font_dsc; #endif /* store dimensions */ @@ -30,7 +31,10 @@ int display_init(u32 x,u32 y,u32 z,display *display,void *cell,int *argc,char ** surface_dsc.caps=DSCAPS_PRIMARY|DSCAPS_FLIPPING; display->dfb->CreateSurface(display->dfb,&surface_dsc,&(display->primary_surface)); display->primary_surface->GetSize(display->primary_surface,&(display->screen_width),&(display->screen_height)); - + font_dsc.flags=DFDESC_HEIGHT; + font_dsc.height=display->max_y*(display->screen_height/(display->max_z+display->max_y+DISPLAY_Y_FREE))/10; + display->dfb->CreateFont(display->dfb,DISPLAY_FONT,&font_dsc,&(display->font)); + display->primary_surface->SetFont(display->primary_surface,display->font); #endif return 23; } @@ -47,9 +51,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; @@ -68,7 +72,6 @@ int display_draw(display *display,u32 x,u32 y,u32 z) { #ifdef USE_DFB_API int menu_x,menu_y,menu_w,menu_h; /* for the yellow box */ - DFBFontDescription font_dsc; char text[MAX_TXT]; u32 x_c,y_c,z_c; unsigned char r,g,b,a; @@ -91,7 +94,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 +108,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 +122,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 @@ -140,10 +143,7 @@ int display_draw(display *display,u32 x,u32 y,u32 z) display->primary_surface->FillRectangle(display->primary_surface,menu_x,menu_y,menu_w,menu_h); display->primary_surface->SetColor(display->primary_surface,r,g,b,a); display->primary_surface->DrawRectangle(display->primary_surface,menu_x,menu_y,menu_w,menu_h); - font_dsc.flags=DFDESC_HEIGHT; - font_dsc.height=menu_h/10; - display->dfb->CreateFont(display->dfb,DISPLAY_FONT,&font_dsc,&(display->font)); - display->primary_surface->SetFont(display->primary_surface,display->font); + display->primary_surface->DrawLine(display->primary_surface,menu_x+display_faktor_x*display->max_x/2,menu_y+display_faktor_y,menu_x+display_faktor_x*display->max_x/2,menu_y+display_faktor_y*display->max_y-display_faktor_y); display->primary_surface->SetColor(display->primary_surface,0x80,0x80,0xff,0xff); sprintf(text,"x: %u",x); display->primary_surface->DrawString(display->primary_surface,text,-1,menu_x+display_faktor_x,menu_y+display_faktor_y+menu_h/10,DSTF_LEFT); @@ -151,10 +151,12 @@ 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); + sprintf(text,"step: %d",display->step); + display->primary_surface->DrawString(display->primary_surface,text,-1,menu_x+display_faktor_x*display->max_x/2+display_faktor_x,menu_y+display_faktor_y+menu_h/10,DSTF_LEFT); /* flip all to surface */ display->primary_surface->Flip(display->primary_surface,NULL,0); #endif