int display_release(display *display)
{
#ifdef USE_DFB_API
+ display->font->Release(display->font);
display->primary_surface->Release(display->primary_surface);
display->dfb->Release(display->dfb);
#endif
}
#endif
-int display_draw(display *display,int x,int y,int z)
+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 */
- int x_c,y_c,z_c;
+ DFBFontDescription font_dsc;
+ char text[MAX_TXT];
+ u32 x_c,y_c,z_c;
unsigned char r,g,b,a;
int display_faktor_x,display_faktor_y;
a=0xff; /* no alpha blending */
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->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);
+ sprintf(text,"y: %u",y);
+ 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');
+ 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);
+ 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);
#endif
return 23;
}
+
+int display_event_init(display *display)
+{
+#ifdef USE_DFB_API
+ display->dfb->GetInputDevice(display->dfb,DIDID_KEYBOARD,&(display->keyboard));
+ display->keyboard->CreateEventBuffer(display->keyboard,&(display->keyboard_buffer));
+#endif
+ return 23;
+}
+
+int display_scan_event(display *display,u32 *x,u32 *y,u32 *z,int *quit)
+{
+ DFBInputEvent keyboard_event;
+ 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_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_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_Q) *quit=1;
+ }
+ return 23;
+}