some more dfb stuff
[physik/morpheus.git] / display.c
1 /*
2  * display.c - visualization api
3  *
4  */
5
6 #include <stdio.h>
7 #include <stdlib.h>
8
9 #include "defines.h"
10
11 #ifdef USE_DFB_API
12 static IDirectFB *dfb=NULL;
13 static IDirectFBSurface *primary_surface=NULL;
14 static int screen_width=0;
15 static int screen_height=0;
16 #endif
17
18 int display_init(int x,int y,int z,display *display,void *cell,int *argc,char **argv)
19 {
20 #ifdef USE_DFB_API
21  DFBSurfaceDescription surface_dsc;
22  // DFBFontDescription font_dsc;
23 #endif
24
25  /* store dimensions */
26  display->max_x=x;
27  display->max_y=y;
28  display->max_z=z;
29  /* store pointer to cells */
30  display->cell_p=cell;
31
32  /* the api(s) */
33 #ifdef USE_DFB_API
34  DirectFBInit(argc,&argv);
35  DirectFBCreate(&dfb);
36  dfb->SetCooperativeLevel(dfb,DFSCL_FULLSCREEN);
37  surface_dsc.flags=DSDESC_CAPS;
38  surface_dsc.caps=DSCAPS_PRIMARY|DSCAPS_FLIPPING;
39  dfb->CreateSurface(dfb,&surface_dsc,&primary_surface);
40  primary_surface->GetSize(primary_surface,&screen_width,&screen_height);
41  display->dfb=dfb;
42  display->primary_surface=primary_surface;
43  display->screen_width=screen_width;
44  display->screen_height=screen_height;
45 #endif
46  return 23;
47 }
48
49 int display_draw(display *display,int x,int y,int z)
50 {
51 #ifdef USE_DFB_API
52  int x_c,y_c;
53  int display_faktor_x,display_faktor_y;
54  if(((display->max_x+display->max_y+DISPLAY_X_FREE)>=display->screen_width)|
55     ((display->max_y+display->max_z+DISPLAY_Y_FREE)>=display->screen_height))
56  {
57   puts("resolution too low!");
58   return -23;
59  }
60  display_faktor_x=display->screen_width/(display->max_x+display->max_y);
61  display_faktor_y=display->screen_height/(display->max_z+display->max_y);
62  /* draw x-z surface */
63  // for(x_c=1;x_c<=display->max_x,x_c++)
64  // {
65   
66  
67
68 #endif
69  return 23;
70 }