cleanup (-> old directory) & creation of 'new' src folder + TODO
[my-code/ivac.git] / old / dfbapi.c
diff --git a/old/dfbapi.c b/old/dfbapi.c
new file mode 100644 (file)
index 0000000..f1444e1
--- /dev/null
@@ -0,0 +1,72 @@
+/* dfb functions
+ *
+ * author: hackbard@hackdaworld.dyndns.org
+ *
+ */
+
+#include <stdio.h>
+#include <directfb.h>
+#include "ivac.h"
+
+int flip_blit_callback(void *ctx) {
+       struct ivac *ivac=ctx;
+
+       ivac->dfb_stuff.v_surface->Flip(ivac->dfb_stuff.v_surface,NULL,0);
+
+       return 1;
+}
+
+int dfb_play_video(struct ivac *ivac) {
+
+       ivac->dfb_stuff.v_provider->PlayTo(ivac->dfb_stuff.v_provider,ivac->dfb_stuff.v_surface,NULL,flip_blit_callback,(void *)ivac);
+
+       return 1;
+}
+       
+int dfb_stop_video(struct ivac *ivac) {
+
+       ivac->dfb_stuff.v_provider->Stop(ivac->dfb_stuff.v_provider);
+       
+       return 1;
+}
+
+int dfb_init(int arg_c,char **arg_v,struct ivac *ivac) {
+       DFBSurfaceDescription sdsc;
+       // DFBFontDescription fdsc;
+       DFBWindowDescription wdsc;
+
+       /* init */      
+       DirectFBInit(&arg_c,&arg_v);
+       DirectFBCreate(&(ivac->dfb_stuff.dfb));
+
+       /* input devices and event stuff */
+       ivac->dfb_stuff.dfb->GetInputDevice(ivac->dfb_stuff.dfb,DIDID_MOUSE,&(ivac->dfb_stuff.mouse));
+       ivac->dfb_stuff.dfb->GetInputDevice(ivac->dfb_stuff.dfb,DIDID_KEYBOARD,&(ivac->dfb_stuff.keyboard));
+       ivac->dfb_stuff.mouse->CreateEventBuffer(ivac->dfb_stuff.mouse,&(ivac->dfb_stuff.buffer));
+
+       /* first window -- video window */
+       ivac->dfb_stuff.dfb->GetDisplayLayer(ivac->dfb_stuff.dfb,DLID_PRIMARY,&(ivac->dfb_stuff.layer));
+       ivac->dfb_stuff.dfb->CreateVideoProvider(ivac->dfb_stuff.dfb,ivac->video_dev,&(ivac->dfb_stuff.v_provider));
+       ivac->dfb_stuff.v_provider->GetSurfaceDescription(ivac->dfb_stuff.v_provider,&sdsc);
+
+       wdsc.flags=DWDESC_POSX|DWDESC_POSY|DWDESC_WIDTH|DWDESC_HEIGHT;
+       wdsc.posx=0;
+       wdsc.posy=0;
+       wdsc.width=sdsc.width;
+       wdsc.height=sdsc.height;
+
+       ivac->dfb_stuff.layer->CreateWindow(ivac->dfb_stuff.layer,&wdsc,&(ivac->dfb_stuff.v_window));
+       ivac->dfb_stuff.v_window->GetSurface(ivac->dfb_stuff.v_window,&(ivac->dfb_stuff.v_surface));
+       ivac->dfb_stuff.v_window->SetOpacity(ivac->dfb_stuff.v_window,0xff);
+
+       return 1;
+}
+
+int dfb_tini(struct ivac *ivac) {
+       ivac->dfb_stuff.v_provider->Release(ivac->dfb_stuff.v_provider);
+       ivac->dfb_stuff.v_window->Release(ivac->dfb_stuff.v_window);
+       ivac->dfb_stuff.layer->Release(ivac->dfb_stuff.layer);
+       ivac->dfb_stuff.dfb->Release(ivac->dfb_stuff.dfb);
+       
+       return 1;
+}