7de46c3440128d85509ecc071bcb5b73f162a037
[my-code/ivac.git] / dfbapi.c
1 /* dfb functions
2  *
3  * author: hackbard@hackdaworld.dyndns.org
4  *
5  */
6
7 #include <stdio.h>
8 #include <directfb.h>
9 #include "ivac.h"
10
11 // do
12 // int flip_blit_callback()
13 // int dfb_play_video()
14 // int dfb_stop_video()
15
16 int dfb_init(int arg_c,char **arg_v,struct ivac *ivac) {
17         DFBSurfaceDescription sdsc;
18         // DFBFontDescription fdsc;
19         DFBWindowDescription wdsc;
20
21         /* init */      
22         DirectFBInit(&arg_c,&arg_v);
23         DirectFBCreate(&(ivac->dfb_stuff.dfb));
24
25         /* input devices and event stuff */
26         ivac->dfb_stuff.dfb->GetInputDevice(ivac->dfb_stuff.dfb,DIDID_MOUSE,&(ivac->dfb_stuff.mouse));
27         ivac->dfb_stuff.dfb->GetInputDevice(ivac->dfb_stuff.dfb,DIDID_KEYBOARD,&(ivac->dfb_stuff.keyboard));
28         ivac->dfb_stuff.mouse->CreateEventBuffer(ivac->dfb_stuff.mouse,&(ivac->dfb_stuff.buffer));
29
30         /* first window -- video window */
31         ivac->dfb_stuff.dfb->GetDisplayLayer(ivac->dfb_stuff.dfb,DLID_PRIMARY,&(ivac->dfb_stuff.layer));
32         ivac->dfb_stuff.dfb->CreateVideoProvider(ivac->dfb_stuff.dfb,ivac->video_dev,&(ivac->dfb_stuff.v_provider));
33         ivac->dfb_stuff.v_provider->GetSurfaceDescription(ivac->dfb_stuff.v_provider,&sdsc);
34
35         wdsc.flags=DWDESC_POSX|DWDESC_POSY|DWDESC_WIDTH|DWDESC_HEIGHT;
36         wdsc.posx=0;
37         wdsc.posy=0;
38         wdsc.width=sdsc.width;
39         wdsc.height=sdsc.height;
40
41         ivac->dfb_stuff.layer->CreateWindow(ivac->dfb_stuff.layer,&wdsc,&(ivac->dfb_stuff.v_window));
42         ivac->dfb_stuff.v_window->GetSurface(ivac->dfb_stuff.v_window,&(ivac->dfb_stuff.v_surface));
43         ivac->dfb_stuff.v_window->SetOpacity(ivac->dfb_stuff.v_window,0xff);
44         ivac->dfb_stuff.v_provider->PlayTo(ivac->dfb_stuff.v_provider,ivac->dfb_stuff.v_surface,NULL,NULL,NULL);
45
46         return 1;
47 }
48
49 int dfb_tini(struct ivac *ivac) {
50         ivac->dfb_stuff.v_provider->Release(ivac->dfb_stuff.v_provider);
51         ivac->dfb_stuff.v_window->Release(ivac->dfb_stuff.v_window);
52         ivac->dfb_stuff.layer->Release(ivac->dfb_stuff.layer);
53         ivac->dfb_stuff.dfb->Release(ivac->dfb_stuff.dfb);
54         
55         return 1;
56 }
57