From 4f8a1d8f1939a3c7ddd6a442be2e3ebf13bd5298 Mon Sep 17 00:00:00 2001 From: hackbard Date: Tue, 25 Feb 2003 17:13:57 +0000 Subject: [PATCH] added keyb events --- dfb-photoshow.c | 69 +++++++++++++++++++++++++++++++------------------ showdir | 8 +++--- 2 files changed, 49 insertions(+), 28 deletions(-) diff --git a/dfb-photoshow.c b/dfb-photoshow.c index ac06c8b..4975c73 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,32 +86,39 @@ 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 )); - DFBCHECK(img_prov->RenderTo(img_prov,logo,NULL)); - img_prov->Release(img_prov); - DFBCHECK (primary->SetColor(primary,0x00,0x00,0x00,0x00)); - DFBCHECK(primary->FillRectangle(primary,0,0,screen_width,screen_height)); - DFBCHECK(primary->SetColor(primary,0x80,0x80,0xff,0xff)); - DFBCHECK(primary->DrawLine(primary,0,0,screen_width-1,screen_height-1)); - if((screen_width>=dsc.width)&&(screen_height>=dsc.height)) { - DFBCHECK(primary->Blit(primary,logo,NULL,(screen_width-dsc.width)/2,(screen_height-dsc.height)/2)); - } - else { - DFBCHECK(primary->StretchBlit(primary,logo,NULL,NULL)); + /* display pictures */ + while(state_escape==DIKS_UP) { + for(i=2;iCreateImageProvider(dfb,argv[i],&img_prov)); + DFBCHECK(img_prov->GetSurfaceDescription(img_prov,&dsc)); + DFBCHECK(dfb->CreateSurface(dfb,&dsc,&logo )); + DFBCHECK(img_prov->RenderTo(img_prov,logo,NULL)); + img_prov->Release(img_prov); + DFBCHECK (primary->SetColor(primary,0x00,0x00,0x00,0x00)); + DFBCHECK(primary->FillRectangle(primary,0,0,screen_width,screen_height)); + DFBCHECK(primary->SetColor(primary,0x80,0x80,0xff,0xff)); + DFBCHECK(primary->DrawLine(primary,0,0,screen_width-1,screen_height-1)); + if((screen_width>=dsc.width)&&(screen_height>=dsc.height)) { + DFBCHECK(primary->Blit(primary,logo,NULL,(screen_width-dsc.width)/2,(screen_height-dsc.height)/2)); + } + else { + DFBCHECK(primary->StretchBlit(primary,logo,NULL,NULL)); + } + DFBCHECK(primary->Flip(primary,NULL,DSFLIP_WAITFORSYNC)); + sleep(atoi(argv[1])); + logo->Release(logo); + DFBCHECK(keyboard->GetKeyState(keyboard,DIKI_ESCAPE,&state_escape)); } - DFBCHECK(primary->Flip(primary,NULL,DSFLIP_WAITFORSYNC)); - sleep(atoi(argv[1])); - logo->Release(logo); } - primary->Release(logo); + keyboard->Release(keyboard); + logo->Release(logo); primary->Release(primary); dfb->Release(dfb); diff --git a/showdir b/showdir index c276687..650e010 100755 --- a/showdir +++ b/showdir @@ -8,7 +8,7 @@ usage() { echo } -if [ "$#" <= "2" ]; then +if [ -z "$1" -o ! -d "$2" ]; then usage exit 0 fi @@ -18,9 +18,11 @@ dir="$2" files="`find $dir -name '*.jpg'` `find $dir -name '*.JPG'` `find $dir -name '*.jpe'` -`find $dir -name '*.IPE'`" +`find $dir -name '*.JPE'` +`find $dir -name '*.png'` +`find $dir -name '*.PNG'`" -./dfb-photoshow $1 $files +[ ! -z "`echo $files | sed 's/\ //g'`" ] && ./dfb-photoshow $1 $files echo echo done -- 2.39.2