7435ad4dd02015d7fba6e076018879defd68a201
[my-code/ivac.git] / dfb_api.c
1 /*
2  * dfb_api.c - api to dfb interface
3  */
4
5 /* std includes */
6 #include <stdio.h>
7 #include <unistd.h>
8
9 /* dfb includes */
10 #include <directfb.h>
11
12 #define MY_FONT_HEIGHT 48
13
14 /* global stuff */
15
16 /* well ... */
17 static IDirectFB *dfb = NULL;
18 static IDirectFBSurface *primary = NULL;
19 static int screen_width  = 0;
20 static int screen_height = 0;
21
22 static IDirectFBSurface *logo = NULL;
23
24 static IDirectFBFont *font = NULL;
25 static char *text_top="Internet Video / Audio Conferencing"
26
27 /* image to load */
28 char dfb_image[]="./images/ivac_logo.png";
29
30 int main (int argc, char **argv) {
31   int i;
32   DFBFontDescription font_desc;
33   DFBSurfaceDescription dsc;
34   /* image provider */
35   IDirectFBImageProvider *provider;
36
37   /* init */
38   DirectFBInit (&argc, &argv);
39   DirectFBCreate (&dfb);
40   dfb->SetCooperativeLevel (dfb, DFSCL_FULLSCREEN);
41   dsc.flags=DSDESC_CAPS;
42   dsc.caps=DSCAPS_PRIMARY | DSCAPS_FLIPPING;
43   dfb->CreateSurface(dfb,&dsc,&primary);
44   primary->GetSize(primary,&screen_width,&screen_height);
45   printf("debug: w/h = %d / %d\n",screen_width,screen_height);
46
47   /* create the imag provider */
48   dfb->CreateImageProvider(dfb,dfb_image,&provider);
49   /* get image/provider description */
50   provider->GetSurfaceDescription(provider,&dsc);
51   printf("debug: w/h %d / %d\n",dsc.width,dsc.height);
52   /* create apropriate surface */
53   dfb->CreateSurface(dfb,&dsc,&logo);
54   /* render image */
55   provider->RenderTo(provider,logo,NULL);
56   provider->Release(provider);
57
58   /* create font */
59   font_dsc.flags=DFDESC_HEIGHT;
60   font_dsc.height=MY_FONT_HEIGHT;
61   
62
63
64   /* slide logo */
65   for(i = -dsc.width; i < screen_width; i++) {
66       /* clear screen */
67       primary->FillRectangle(primary,0,0,screen_width,screen_height);
68
69       /* blit image */
70       primary->Blit(primary,logo,NULL,i,(screen_height-dsc.height)/2);
71
72       /* flip */
73       primary->Flip(primary,NULL,DSFLIP_WAITFORSYNC);
74     }
75
76   /* release image */
77   logo->Release(logo);
78
79   primary->Release(primary);
80   dfb->Release(dfb);
81   
82   return 23;
83 }
84