#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 */
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;
}
}
#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;
{
#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;
{
for(z_c=0;z_c<display->max_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
{
for(z_c=0;z_c<display->max_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
{
for(y_c=0;y_c<display->max_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
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);
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