X-Git-Url: https://hackdaworld.org/gitweb/?a=blobdiff_plain;f=dfb-photoshow.c;h=6b6c23a6c2c9864537d75b49a1c0c91d298440ae;hb=fa9065c6dc61d76c202fb93660f7a0eae921e8ad;hp=ac06c8b2833af2ed985e8fbb7b85ac736412a96d;hpb=ed1c6fe15bbe02311f626ce27085c574aa2e1f7d;p=my-code%2Fdfb-photoshow.git diff --git a/dfb-photoshow.c b/dfb-photoshow.c index ac06c8b..6b6c23a 100644 --- a/dfb-photoshow.c +++ b/dfb-photoshow.c @@ -1,7 +1,14 @@ /* * dfb-photoshow.c * - * author: hackbard + * build: gcc -o dfb-photoshow -O3 -Wall -I/usr/X11/include \ + * -I/usr/include/directfb dfb-photoshow.c + * usage: ./showdir + * + * author: + * hackbard@hackdaworld.dyndns.org + * download: + * cvs -d:pserver:anonymous@hackdaworld.dyndns.org:/my-code co dfb-photoshow * */ @@ -24,9 +31,10 @@ int screen_height = 0; } \ } -IDirectFBSurface *logo = NULL; -IDirectFBFont *font = NULL; -char *title_txt = "directfb photoshow"; +IDirectFBInputDevice *keyboard=NULL; +IDirectFBSurface *logo=NULL; +IDirectFBFont *font=NULL; +char *title_txt="directfb photoshow"; char *author_txt="hackbard@hackdaworld.dyndns.org"; char *hp_txt="http://hackdaworld.dyndns.org"; char *msg1_txt="(press return to continue ...)"; @@ -38,6 +46,8 @@ void clear_primary(void) { int main(int argc,char **argv) { int i,str_width; + DFBInputDeviceKeyState state_enter=DIKS_UP; + DFBInputDeviceKeyState state_escape=DIKS_UP; DFBSurfaceDescription dsc; DFBFontDescription font_dsc; IDirectFBImageProvider *img_prov; @@ -54,6 +64,8 @@ int main(int argc,char **argv) { DFBCHECK(primary->GetSize(primary,&screen_width,&screen_height)); fprintf(stdout,"dimensions: %dx%d\n",screen_width,screen_height); + DFBCHECK(dfb->GetInputDevice(dfb,DIDID_KEYBOARD,&keyboard)); + /* title */ font_dsc.flags=DFDESC_HEIGHT; font_dsc.height=screen_height/20; @@ -74,11 +86,15 @@ int main(int argc,char **argv) { DFBCHECK(font->GetStringWidth(font,msg1_txt,-1,&str_width)); DFBCHECK(primary->DrawString(primary,msg1_txt,-1,(screen_width-str_width)/2,(screen_height/2)+3*font_dsc.height,DSTF_LEFT)); DFBCHECK(primary->Flip(primary,NULL,DSFLIP_WAITFORSYNC)); - getc(stdin); + DFBCHECK(keyboard->GetKeyState(keyboard,DIKI_ESCAPE,&state_enter)); + while(state_enter==DIKS_UP) { + DFBCHECK(keyboard->GetKeyState(keyboard,DIKI_ENTER,&state_enter)); + } font->Release(font); - /* display pictures */ - for(i=2;iCreateImageProvider(dfb,argv[i],&img_prov)); DFBCHECK(img_prov->GetSurfaceDescription(img_prov,&dsc)); DFBCHECK(dfb->CreateSurface(dfb,&dsc,&logo )); @@ -97,9 +113,14 @@ int main(int argc,char **argv) { DFBCHECK(primary->Flip(primary,NULL,DSFLIP_WAITFORSYNC)); sleep(atoi(argv[1])); logo->Release(logo); + DFBCHECK(keyboard->GetKeyState(keyboard,DIKI_ESCAPE,&state_escape)); + i++; + if(i==argc) state_escape=DIKS_DOWN; } - primary->Release(logo); + + keyboard->Release(keyboard); + logo->Release(logo); primary->Release(primary); dfb->Release(dfb);