added display support (init by now) (dfb-api)
[physik/morpheus.git] / display.c
diff --git a/display.c b/display.c
new file mode 100644 (file)
index 0000000..f61e7e2
--- /dev/null
+++ b/display.c
@@ -0,0 +1,55 @@
+/*
+ * display.c - visualization api
+ *
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "defines.h"
+
+#ifdef USE_DFB_API
+static IDirectFB *dfb=NULL;
+static IDirectFBSurface *primary_surface=NULL;
+static int screen_width=0;
+static int screen_height=0;
+#endif
+
+int display_init(int x,int y,int z,display *display,u32 *cell,int *argc,char **argv)
+{
+#ifdef USE_DFB_API
+ DFBSurfaceDescription surface_dsc;
+ // DFBFontDescription font_dsc;
+#endif
+
+ /* store dimensions */
+ display->max_x=x;
+ display->max_y=y;
+ display->max_z=z;
+ /* store pointer to cells */
+ display->cell_p=cell;
+
+ /* the api(s) */
+#ifdef USE_DFB_API
+ DirectFBInit(argc,&argv);
+ DirectFBCreate(&dfb);
+ dfb->SetCooperativeLevel(dfb,DFSCL_FULLSCREEN);
+ surface_dsc.flags=DSDESC_CAPS;
+ surface_dsc.caps=DSCAPS_PRIMARY|DSCAPS_FLIPPING;
+ dfb->CreateSurface(dfb,&surface_dsc,&primary_surface);
+ primary_surface->GetSize(primary_surface,&screen_width,&screen_height);
+ display->dfb=dfb;
+ display->primary_surface=primary_surface;
+ display->screen_width=screen_width;
+ display->screen_height=screen_height;
+#endif
+ return 23;
+}
+
+int display_draw(u32 *cell,int x,int y,int z)
+{
+#ifdef USE_DFB_API
+
+#endif
+ return 23;
+}