/// /// Show v2.2 Copyright (c) 2001,2002,2003 Bowie J. Poag /// /// Usage: show [-v] [-i mode] [-o mode] [-m magnification] [-w width] [-h height] [-x location] /// [-y location] [-d delay] [-s speed] [-r repetitions] /// /// Legal stuff: /// /// This program is free software; you can redistribute it and/or modify /// it under the terms of the GNU General Public License as published by /// the Free Software Foundation; either version 2 of the License, or /// (at your option) any later version. /// /// This program is distributed in the hope that it will be useful, /// but WITHOUT ANY WARRANTY; without even the implied warranty of /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the /// GNU General Public License (http:///www.gnu.org) for more details. /// #include #include #include #include #include #include #include #include #include #include #include #include #include int inputCheck(void); int bypassCheck(void); void performTransition(int); void setUpTheImage(char **); void parseArguments(int, char **); void buildWindow(char **); void modifyOnTheFly(int); void setDimensions(void); void exitWithReason(int); void genericHold(void); void fadeInFromBlack(void); void fadeOutToBlack(void); void fadeOutToRed(void); void fadeOutToGreen(void); void fadeOutToBlue(void); void fadeOutToAqua(void); void fadeOutToPurple(void); void fadeOutToYellow(void); void fadeInTintedRed(void); void fadeInTintedGreen(void); void fadeInTintedBlue(void); void blastRed(void); void blastGreen(void); void blastBlue(void); void blastAqua(void); void blastYellow(void); void blastWhite(void); void blastPurple(void); void fadeOutTintedRed(void); void fadeOutTintedBlue(void); void fadeOutTintedGreen(void); void fadeInFromWhite(void); void fadeInFromRed(void); void fadeInFromGreen(void); void fadeInFromBlue(void); void fadeInFromAqua(void); void fadeInFromPurple(void); void fadeInFromYellow(void); Window win; Display *disp; ImlibData *id; XSetWindowAttributes attr; ImlibImage *im; ImlibColorModifier mod; extern char *optarg; extern int optind; char windowtitle[200]; int w,h,c,f,forever,control,contrastControl=255,brightnessControl=255,fadeInType=100,fadeOutType=200,emergencyBypass=0,action=0,posx=0,posy=0,verbose=0,counter=0,laps=1,flag=0; double speed=6.0,pauseFlag=0,start=0,now=0,delay=5,m=1.0; struct timeval tv; XEvent ev; KeySym key; XWindowAttributes wa; int main(int argc, char **argv) { parseArguments(argc, argv); buildWindow(argv); if(verbose==1)printf("Show: Loading first image...\n"); if(forever==1)laps=1; while(laps!=0) { if(forever!=1)laps--; f=optind; while(optindrgb_width || h!=im->rgb_height) printf("Show: Height and/or width restrictions are in place. The window will be %dx%d, which is different than the actual image size of %dx%d.\nShow: Since size restrictions are in place, magnification has been reset to 1.0x.\n",w,h,im->rgb_width,im->rgb_height); if(verbose==1)printf("Show: Frame #%d Screen Position: (%d,%d) Size: %dx%d Speed: %.2f Delay: %.2f Magnification: %.2fx Name: %s\n",counter,posx,posy,im->rgb_width,im->rgb_height,speed,delay,m,argv[optind]); Imlib_get_image_modifier(id,im,&mod); if(emergencyBypass==0)performTransition(fadeInType); if(emergencyBypass==0)genericHold(); performTransition(fadeOutType); Imlib_kill_image(id,im); emergencyBypass=0; optind++; } optind=f; } XUnmapWindow(disp,win); XDestroyWindow(disp,win); return 0; } void performTransition(int transition) { if(transition==100) fadeInFromBlack(); if(transition==101) fadeInFromWhite(); if(transition==102) fadeInFromRed(); if(transition==103) fadeInFromGreen(); if(transition==104) fadeInFromBlue(); if(transition==105) fadeInFromAqua(); if(transition==106) fadeInFromPurple(); if(transition==107) fadeInFromYellow(); if(transition==108) fadeInTintedRed(); if(transition==109) fadeInTintedGreen(); if(transition==110) fadeInTintedBlue(); if(transition==200) fadeOutToBlack(); if(transition==201) blastWhite(); if(transition==202) fadeOutToRed(); if(transition==203) fadeOutToGreen(); if(transition==204) fadeOutToBlue(); if(transition==205) fadeOutToAqua(); if(transition==206) fadeOutToPurple(); if(transition==207) fadeOutToYellow(); if(transition==208) fadeOutTintedRed(); if(transition==209) fadeOutTintedGreen(); if(transition==210) fadeOutTintedBlue(); if(transition==500) blastWhite(); if(transition==501) blastRed(); if(transition==502) blastGreen(); if(transition==503) blastBlue(); if(transition==504) blastAqua(); if(transition==505) blastPurple(); if(transition==506) blastYellow(); } void fadeInFromRed(void) { XResizeWindow(disp,win,w*m,h*m); if(bypassCheck()==1) { fadeOutToBlack(); return; } mod.brightness=512; Imlib_set_image_red_modifier(id,im,&mod); Imlib_apply_image(id,im,win); XSync(disp,False); for(control=512;control>=256;control-=speed) { mod.brightness=control; Imlib_set_image_red_modifier(id,im,&mod); Imlib_apply_image(id,im,win); inputCheck(); XSync(disp,False); if(bypassCheck()==1) { fadeOutToBlack(); return; } } } void fadeInFromGreen(void) { XResizeWindow(disp,win,w*m,h*m); if(bypassCheck()==1) { fadeOutToBlack(); return; } mod.brightness=512; Imlib_set_image_green_modifier(id,im,&mod); Imlib_apply_image(id,im,win); XSync(disp,False); for(control=512;control>=256;control-=speed) { mod.brightness=control; Imlib_set_image_green_modifier(id,im,&mod); Imlib_apply_image(id,im,win); inputCheck(); XSync(disp,False); if(bypassCheck()==1) { fadeOutToBlack(); return; } } } void fadeInFromBlue(void) { XResizeWindow(disp,win,w*m,h*m); if(bypassCheck()==1) { fadeOutToBlack(); return; } mod.brightness=512; Imlib_set_image_blue_modifier(id,im,&mod); Imlib_apply_image(id,im,win); XSync(disp,False); for(control=512;control>=256;control-=speed) { mod.brightness=control; Imlib_set_image_blue_modifier(id,im,&mod); Imlib_apply_image(id,im,win); inputCheck(); XSync(disp,False); if(bypassCheck()==1) { fadeOutToBlack(); return; } } } void fadeInFromAqua(void) { XResizeWindow(disp,win,w*m,h*m); if(bypassCheck()==1) { fadeOutToBlack(); return; } mod.brightness=512; Imlib_set_image_blue_modifier(id,im,&mod); Imlib_set_image_green_modifier(id,im,&mod); Imlib_apply_image(id,im,win); XSync(disp,False); for(control=512;control>=256;control-=speed) { mod.brightness=control; Imlib_set_image_blue_modifier(id,im,&mod); Imlib_set_image_green_modifier(id,im,&mod); Imlib_apply_image(id,im,win); inputCheck(); XSync(disp,False); if(bypassCheck()==1) { fadeOutToBlack(); return; } } } void fadeInFromPurple(void) { XResizeWindow(disp,win,w*m,h*m); if(bypassCheck()==1) { fadeOutToBlack(); return; } mod.brightness=512; Imlib_set_image_red_modifier(id,im,&mod); Imlib_set_image_blue_modifier(id,im,&mod); Imlib_apply_image(id,im,win); XSync(disp,False); for(control=512;control>=256;control-=speed) { mod.brightness=control; Imlib_set_image_red_modifier(id,im,&mod); Imlib_set_image_blue_modifier(id,im,&mod); Imlib_apply_image(id,im,win); inputCheck(); XSync(disp,False); if(bypassCheck()==1) { fadeOutToBlack(); return; } } } void fadeInFromYellow(void) { XResizeWindow(disp,win,w*m,h*m); if(bypassCheck()==1) { fadeOutToBlack(); return; } mod.brightness=512; Imlib_set_image_red_modifier(id,im,&mod); Imlib_set_image_green_modifier(id,im,&mod); Imlib_apply_image(id,im,win); XSync(disp,False); for(control=512;control>=256;control-=speed) { mod.brightness=control; Imlib_set_image_red_modifier(id,im,&mod); Imlib_set_image_green_modifier(id,im,&mod); Imlib_apply_image(id,im,win); inputCheck(); XSync(disp,False); if(bypassCheck()==1) { fadeOutToBlack(); return; } } } void fadeInFromWhite(void) { XResizeWindow(disp,win,w*m,h*m); if(bypassCheck()==1) { fadeOutToBlack(); return; } for(control=512;control>=256;control-=speed) { mod.brightness=control; Imlib_set_image_modifier(id,im,&mod); Imlib_apply_image(id,im,win); inputCheck(); XSync(disp,False); if(bypassCheck()==1) { fadeOutToBlack(); return; } } } void blastPurple(void) { if(bypassCheck()==1) { fadeOutToBlack(); return; } for(;control<=512;control+=speed) { mod.brightness=control; Imlib_set_image_red_modifier(id,im,&mod); Imlib_set_image_blue_modifier(id,im,&mod); Imlib_set_image_modifier(id,im,&mod); Imlib_apply_image(id,im,win); inputCheck(); XSync(disp,False); if(bypassCheck()==1) { fadeOutToBlack(); return; } } } void blastWhite(void) { if(bypassCheck()==1) { fadeOutToBlack(); return; } for(;control<=512;control+=speed) { mod.brightness=control; Imlib_set_image_modifier(id,im,&mod); Imlib_apply_image(id,im,win); inputCheck(); XSync(disp,False); if(bypassCheck()==1) { fadeOutToBlack(); return; } } } void blastBlue(void) { if(bypassCheck()==1) { fadeOutToBlack(); return; } for(control=255;control<=512;control+=speed) { mod.brightness=control; Imlib_set_image_blue_modifier(id,im,&mod); Imlib_set_image_modifier(id,im,&mod); Imlib_apply_image(id,im,win); inputCheck(); XSync(disp,False); if(bypassCheck()==1) { fadeOutToBlack(); return; } } } void blastYellow(void) { if(bypassCheck()==1) { fadeOutToBlack(); return; } for(control=255;control<=512;control+=speed) { mod.brightness=control; Imlib_set_image_green_modifier(id,im,&mod); Imlib_set_image_red_modifier(id,im,&mod); Imlib_set_image_modifier(id,im,&mod); Imlib_apply_image(id,im,win); inputCheck(); XSync(disp,False); if(bypassCheck()==1) { fadeOutToBlack(); return; } } } void blastRed(void) { if(bypassCheck()==1) { fadeOutToBlack(); return; } for(control=255;control<=512;control+=speed) { mod.brightness=control; Imlib_set_image_red_modifier(id,im,&mod); Imlib_set_image_modifier(id,im,&mod); Imlib_apply_image(id,im,win); inputCheck(); XSync(disp,False); if(bypassCheck()==1) { fadeOutToBlack(); return; } } } void blastGreen(void) { if(bypassCheck()==1) { fadeOutToBlack(); return; } for(control=255;control<=512;control+=speed) { mod.brightness=control; Imlib_set_image_green_modifier(id,im,&mod); Imlib_set_image_modifier(id,im,&mod); Imlib_apply_image(id,im,win); inputCheck(); XSync(disp,False); if(bypassCheck()==1) { fadeOutToBlack(); return; } } } void blastAqua(void) { if(bypassCheck()==1) { fadeOutToBlack(); return; } for(control=255;control<=512;control+=speed) { mod.brightness=control; Imlib_set_image_green_modifier(id,im,&mod); Imlib_set_image_blue_modifier(id,im,&mod); Imlib_set_image_modifier(id,im,&mod); Imlib_apply_image(id,im,win); inputCheck(); XSync(disp,False); if(bypassCheck()==1) { fadeOutToBlack(); return; } } } void fadeOutToBlue(void) { if(bypassCheck()==1) { fadeOutToBlack(); return; } for(control=256;control<=512;control+=speed) { mod.brightness=control; Imlib_set_image_blue_modifier(id,im,&mod); Imlib_set_image_modifier(id,im,&mod); mod.brightness=512-control; Imlib_set_image_red_modifier(id,im,&mod); Imlib_set_image_green_modifier(id,im,&mod); Imlib_set_image_modifier(id,im,&mod); Imlib_apply_image(id,im,win); inputCheck(); XSync(disp,False); if(bypassCheck()==1) { fadeOutToBlack(); return; } } } void fadeOutToGreen(void) { if(bypassCheck()==1) { fadeOutToBlack(); return; } for(control=256;control<=512;control+=speed) { mod.brightness=control; Imlib_set_image_green_modifier(id,im,&mod); Imlib_set_image_modifier(id,im,&mod); mod.brightness=512-control; Imlib_set_image_red_modifier(id,im,&mod); Imlib_set_image_blue_modifier(id,im,&mod); Imlib_set_image_modifier(id,im,&mod); Imlib_apply_image(id,im,win); inputCheck(); XSync(disp,False); if(bypassCheck()==1) { fadeOutToBlack(); return; } } } void fadeOutToAqua(void) { if(bypassCheck()==1) { fadeOutToBlack(); return; } for(control=256;control<=512;control+=speed) { mod.brightness=control; Imlib_set_image_blue_modifier(id,im,&mod); Imlib_set_image_green_modifier(id,im,&mod); Imlib_set_image_modifier(id,im,&mod); mod.brightness=512-control; Imlib_set_image_red_modifier(id,im,&mod); Imlib_set_image_modifier(id,im,&mod); Imlib_apply_image(id,im,win); inputCheck(); XSync(disp,False); if(bypassCheck()==1) { fadeOutToBlack(); return; } } } void fadeOutToPurple(void) { if(bypassCheck()==1) { fadeOutToBlack(); return; } for(control=256;control<=512;control+=speed) { mod.brightness=control; Imlib_set_image_red_modifier(id,im,&mod); Imlib_set_image_blue_modifier(id,im,&mod); Imlib_set_image_modifier(id,im,&mod); mod.brightness=512-control; Imlib_set_image_green_modifier(id,im,&mod); Imlib_set_image_modifier(id,im,&mod); Imlib_apply_image(id,im,win); inputCheck(); XSync(disp,False); if(bypassCheck()==1) { fadeOutToBlack(); return; } } } void fadeOutToYellow(void) { if(bypassCheck()==1) { fadeOutToBlack(); return; } for(control=256;control<=512;control+=speed) { mod.brightness=control; Imlib_set_image_red_modifier(id,im,&mod); Imlib_set_image_green_modifier(id,im,&mod); Imlib_set_image_modifier(id,im,&mod); mod.brightness=512-control; Imlib_set_image_blue_modifier(id,im,&mod); Imlib_set_image_modifier(id,im,&mod); Imlib_apply_image(id,im,win); inputCheck(); XSync(disp,False); if(bypassCheck()==1) { fadeOutToBlack(); return; } } } void fadeOutToRed(void) { if(bypassCheck()==1) { fadeOutToBlack(); return; } for(control=256;control<=512;control+=speed) { mod.brightness=control; Imlib_set_image_red_modifier(id,im,&mod); Imlib_set_image_modifier(id,im,&mod); mod.brightness=512-control; Imlib_set_image_green_modifier(id,im,&mod); Imlib_set_image_blue_modifier(id,im,&mod); Imlib_set_image_modifier(id,im,&mod); Imlib_apply_image(id,im,win); inputCheck(); XSync(disp,False); if(bypassCheck()==1) { fadeOutToBlack(); return; } } } void fadeInTintedRed(void) { XResizeWindow(disp,win,w*m,h*m); if(bypassCheck()==1) { fadeOutToBlack(); return; } for(control=0;control<=255;control+=speed) { mod.brightness=control; Imlib_set_image_green_modifier(id,im,&mod); Imlib_set_image_blue_modifier(id,im,&mod); Imlib_set_image_modifier(id,im,&mod); Imlib_apply_image(id,im,win); inputCheck(); XSync(disp,False); if(bypassCheck()==1) { fadeOutToBlack(); return; } } } void fadeInTintedBlue(void) { XResizeWindow(disp,win,w*m,h*m); if(bypassCheck()==1) { fadeOutToBlack(); return; } for(control=0;control<=255;control+=speed) { mod.brightness=control; Imlib_set_image_red_modifier(id,im,&mod); Imlib_set_image_green_modifier(id,im,&mod); Imlib_set_image_modifier(id,im,&mod); Imlib_apply_image(id,im,win); inputCheck(); XSync(disp,False); if(bypassCheck()==1) { fadeOutToBlack(); return; } } } void fadeOutTintedGreen(void) { if(bypassCheck()==1) { fadeOutToBlack(); return; } for(;control>=0;control-=speed) { mod.brightness=control; Imlib_set_image_red_modifier(id,im,&mod); Imlib_set_image_blue_modifier(id,im,&mod); Imlib_set_image_modifier(id,im,&mod); Imlib_apply_image(id,im,win); inputCheck(); XSync(disp,False); if(bypassCheck()==1) { fadeOutToBlack(); return; } } } void fadeOutTintedBlue(void) { if(bypassCheck()==1) { fadeOutToBlack(); return; } for(;control>=0;control-=speed) { mod.brightness=control; Imlib_set_image_red_modifier(id,im,&mod); Imlib_set_image_green_modifier(id,im,&mod); Imlib_set_image_modifier(id,im,&mod); Imlib_apply_image(id,im,win); inputCheck(); XSync(disp,False); if(bypassCheck()==1) { fadeOutToBlack(); return; } } } void fadeOutTintedRed(void) { if(bypassCheck()==1) { fadeOutToBlack(); return; } for(;control>=0;control-=speed) { mod.brightness=control; Imlib_set_image_green_modifier(id,im,&mod); Imlib_set_image_blue_modifier(id,im,&mod); Imlib_set_image_modifier(id,im,&mod); Imlib_apply_image(id,im,win); inputCheck(); XSync(disp,False); if(bypassCheck()==1) { fadeOutToBlack(); return; } } } void fadeInTintedGreen(void) { XResizeWindow(disp,win,w*m,h*m); if(bypassCheck()==1) { fadeOutToBlack(); return; } for(control=0;control<=255;control+=speed) { mod.brightness=control; Imlib_set_image_red_modifier(id,im,&mod); Imlib_set_image_blue_modifier(id,im,&mod); Imlib_set_image_modifier(id,im,&mod); Imlib_apply_image(id,im,win); inputCheck(); XSync(disp,False); if(bypassCheck()==1) { fadeOutToBlack(); return; } } } void fadeInFromBlack(void) { XResizeWindow(disp,win,w*m,h*m); if(bypassCheck()==1) { fadeOutToBlack(); return; } for(control=0;control<=255;control+=speed) { mod.brightness=control; Imlib_set_image_modifier(id,im,&mod); Imlib_apply_image(id,im,win); inputCheck(); XSync(disp,False); if(bypassCheck()==1) { fadeOutToBlack(); return; } } } void modifyOnTheFly(int action) { if(action==1) { fadeOutToBlack(); } if(action==2) { Imlib_flip_image_vertical(id,im); Imlib_apply_image(id,im,win); } if(action==3) { Imlib_flip_image_horizontal(id,im); Imlib_apply_image(id,im,win); } if(action==4) { XGetWindowAttributes(disp,win,&wa); XResizeWindow(disp,win,wa.height*m,wa.width*m); Imlib_rotate_image(id,im,1); Imlib_flip_image_horizontal(id,im); Imlib_apply_image(id,im,win); XSync(disp,False); } if(action==5) { XGetWindowAttributes(disp,win,&wa); XResizeWindow(disp,win,wa.height*m,wa.width*m); Imlib_rotate_image(id,im,1); Imlib_flip_image_vertical(id,im); Imlib_apply_image(id,im,win); XSync(disp,False); } if(action==6) { brightnessControl-=10; if(brightnessControl<=0)brightnessControl=0; mod.brightness=brightnessControl; Imlib_set_image_modifier(id,im,&mod); Imlib_apply_image(id,im,win); XSync(disp,False); } if(action==7) { brightnessControl+=10; if(brightnessControl>=500)brightnessControl=500; mod.brightness=brightnessControl; Imlib_set_image_modifier(id,im,&mod); Imlib_apply_image(id,im,win); XSync(disp,False); } if(action==8) { contrastControl-=10; if(contrastControl<=0)contrastControl=0; mod.contrast=contrastControl; Imlib_set_image_modifier(id,im,&mod); Imlib_apply_image(id,im,win); XSync(disp,False); } if(action==9) { contrastControl+=10; if(contrastControl>=500)contrastControl=500; mod.contrast=contrastControl; Imlib_set_image_modifier(id,im,&mod); Imlib_apply_image(id,im,win); XSync(disp,False); } if(action==10) { XGetWindowAttributes(disp,win,&wa); XResizeWindow(disp,win,(wa.width*m)*1.10,(wa.height*m)*1.10); Imlib_apply_image(id,im,win); XSync(disp,False); } if(action==11) { XGetWindowAttributes(disp,win,&wa); XResizeWindow(disp,win,(wa.width*m)*.9,(wa.height*m)*.9); Imlib_apply_image(id,im,win); XSync(disp,False); } return; } void parseArguments (int argc, char **argv) { while ((c=getopt(argc,argv,"m:x:h:w:y:s:i:o:d:r:v"))!=-1) switch (c) { case 's': speed=atoi(optarg); if(speed<=0)exitWithReason(1); break; case 'd': delay=atof(optarg); if(delay>=65535)exitWithReason(1); break; case 'r': laps=atoi(optarg); if(laps<0)exitWithReason(1); if(laps==0) forever=1; break; case 'v': verbose=1; break; case 'x': posx=atoi(optarg); if(posx>=2048 || posx<0)exitWithReason(1); break; case 'y': posy=atoi(optarg); if(posy>=2048 || posy<0)exitWithReason(1); break; case 'i': fadeInType=atoi(optarg); if(fadeInType<=100 || fadeInType>=110) fadeInType=100; break; case 'o': fadeOutType=atoi(optarg); if((fadeOutType<=200 || fadeOutType>=506)) fadeOutType=200; break; case 'h': h=atoi(optarg); m=1.0; flag=flag+1; if(h>=2048)exitWithReason(1); break; case 'w': w=atoi(optarg); m=1.0; flag=flag+2; if(w>=2048)exitWithReason(1); break; case 'm': m=atof(optarg); break; case '?': exitWithReason(1); break; } } void setDimensions(void) { if(flag==0) { w=im->rgb_width;h=im->rgb_height; } if(flag==1) { m=1; w=im->rgb_width; } if(flag==2) { m=1; h=im->rgb_height; } } void buildWindow(char **argv) { if(open(argv[optind],O_RDONLY,0666)==-1)exitWithReason(1); disp=XOpenDisplay(NULL); id=Imlib_init(disp); im=Imlib_load_image(id,argv[optind]); setDimensions(); if(w*m>=32767||h*m>=32768)exitWithReason(2); win=XCreateWindow(disp,DefaultRootWindow(disp),posx,posy,w/m,h/m,5,id->x.depth,InputOutput,id->x.visual,0,&attr); XStoreName(disp,win,argv[optind]); XResizeWindow(disp,win,w*m,h*m); XMapWindow(disp,win); XMoveWindow(disp,win,posx,posy); XSync(disp,False); } void setUpTheImage(char **argv) { im=Imlib_load_image(id,argv[optind]); sprintf(windowtitle, "Show v2.1 by Bowie J. Poag - \"%s\" (Frame #%d Size: %dx%d Speed: %.2f Delay: %.2f Magnification: %.2f)",argv[optind],++counter,im->rgb_width,im->rgb_height,speed,delay,m); XStoreName(disp,win,windowtitle); setDimensions(); XResizeWindow(disp,win,w*m,h*m); XSync(disp,False); } void genericHold(void) { if(bypassCheck()==1)return; XSync(disp,False); gettimeofday(&tv,NULL); start=tv.tv_sec + (tv.tv_usec/1000000); now=tv.tv_sec + (tv.tv_usec/1000000); while(now<=start+delay) { if(bypassCheck()==1)return; gettimeofday(&tv,NULL); now=tv.tv_sec + (tv.tv_usec/1000000); inputCheck(); Imlib_apply_image(id,im,win); } return; } int bypassCheck(void) { if(emergencyBypass==1) return 1; return 0; } void fadeOutToBlack(void) { for(;control>=0;control-=speed) { mod.brightness=control; Imlib_set_image_modifier(id,im,&mod); Imlib_apply_image(id,im,win); inputCheck(); XSync(disp,False); } } void exitWithReason(int failreason) { if (failreason==3) { printf("\nYou passed Show an invalid mode number for the fade-in value. Type show --help for a list of valid modes.\n\n"); } if (failreason==4) { printf("\nYou passed Show an invalid mode number for the fade-out value. Type show --help for a list of valid modes.\n\n"); } if (failreason==2) { printf("\nYou're asking show to produce an image larger than Imlib is capable of handling. That's a no-no.\n\n"); exit(1); } if (failreason==1) { printf("\nShow v2.2 by Bowie J. Poag \n"); printf("\nUsage: show [-v] [-i mode] [-o mode] [-m magnification] [-w width] [-h height]"); printf("\n [-x location] [-y location] [-d delay] [-s speed] [-r repetitions] \n"); printf("\nExamples: show foo.gif bar.gif"); printf("\n show -v -d10 -s5 -r3 *.jpg"); printf("\n show -m 0.5 -i 103 -o 204 *.jpg /home/mike/*.gif /home/dave/*.png"); printf("\n show -r0 -d12.3456 -s20 -w100 -h100 -x333 -y333 -v /root/foo.jpg /home/dave/*.jpg /root/*.gif\n"); printf("\nThe following keys can be used to manipulate the image:\n"); printf("\n r = Rotates the image 90 degrees clockwise."); printf("\n e = Rotates the image 90 degrees counter-clockwise."); printf("\n h = Flips the image along the horizontal axis."); printf("\n v = Flips the image along the vertical axis."); printf("\n p = Pauses the image display routine."); printf("\n i = Zoom the image in 10 percent."); printf("\n o = Zoom the image out 10 percent."); printf("\n [ = Decreases image brightness"); printf("\n ] = Increases image brightness."); printf("\n z = Toggles verbose output on/off.\n"); printf("\nThe following mouse buttons can be used to control the display process:\n"); printf("\n Left Button = Pause display routine"); printf("\n Middle Button = Replay the current frame"); printf("\n Right Button = Advance to the next image"); printf("\n Wheel Up = Zoom in"); printf("\n Wheel Down = Zoom out\n"); printf("\nYou can use any of the following transition modes to fade in, or fade out your image(s):\n"); printf("\n 100) Fade In From Solid Black (default)"); printf("\n 101) Fade In From Solid White "); printf("\n 102) Fade In From Solid Red "); printf("\n 103) Fade In From Solid Green "); printf("\n 104) Fade In From Solid Blue "); printf("\n 105) Fade In From Solid Aqua "); printf("\n 106) Fade In From Solid Purple "); printf("\n 107) Fade In From Solid Yellow "); printf("\n 108) Fade In Tinted Red "); printf("\n 109) Fade In Tinted Green "); printf("\n 110) Fade In Tinted Blue \n"); printf("\n 200) Fade Out To Black (default)"); printf("\n 201) Fade Out To Solid White"); printf("\n 202) Fade Out To Solid Red"); printf("\n 203) Fade Out To Solid Green"); printf("\n 204) Fade Out To Solid Blue"); printf("\n 205) Fade Out To Solid Aqua"); printf("\n 206) Fade Out To Solid Purple"); printf("\n 207) Fade Out To Solid Yellow"); printf("\n 208) Fade Out Tinted Red"); printf("\n 209) Fade Out Tinted Green"); printf("\n 210) Fade Out Tinted Blue\n"); printf("\n 500) Blast White"); printf("\n 501) Blast Red"); printf("\n 502) Blast Green"); printf("\n 503) Blast Blue"); printf("\n 504) Blast Aqua"); printf("\n 505) Blast Purple"); printf("\n 506) Blast Yellow"); printf("\n\nNote: Specifying an absolute window width or height (-w or -h) will obviously override any magnification (-m) value you provide. Specifying an invalid transition number will result in the image being faded in/out using a default mode.\n\n"); exit(1); } } void pauseMode(void) { while(pauseFlag==1) { XPeekEvent(disp, &ev); Imlib_apply_image(id,im,win); inputCheck(); if(verbose==1 && pauseFlag!=1)printf("Show: Resuming..\n"); } pauseFlag=0; } int inputCheck(void) { XSelectInput(disp, win, ButtonPressMask | ButtonReleaseMask | Button1MotionMask | ExposureMask | KeyPressMask | StructureNotifyMask); if(XCheckMaskEvent(disp, KeyPressMask | ButtonPressMask, &ev)==True) switch (ev.type) { case ButtonPress: { if(ev.xbutton.button==1) { pauseFlag+=1; if(pauseFlag==1) { if(verbose==1) printf("Show: Left mouse button detected...Pausing..\n"); pauseMode(); } } if(ev.xbutton.button==2) { if(verbose==1) printf("Show: Middle mouse button detected...Replaying this frame.\n"); optind--; counter--; if(counter<=1) counter=1; emergencyBypass=1; } if(ev.xbutton.button==3) { pauseFlag+=1; if(pauseFlag==1) { if(verbose==1) printf("Show: Right mouse button detected...Advancing to next frame.\n"); emergencyBypass=1; } emergencyBypass=1; } if(ev.xbutton.button==4) { if(verbose==1) printf("Show: Zooming in 10 percent..\n"); modifyOnTheFly(10); } if(ev.xbutton.button==5) { if(verbose==1) printf("Show: Zooming out 10 percent..\n"); modifyOnTheFly(11); } } case KeyPress: XLookupString(&ev.xkey, NULL, 0, &key, NULL); switch (key) { case XK_p: pauseFlag+=1; if(pauseFlag==1) { if(verbose==1) printf("Show: Pausing..Press P or Left mouse button to resume.\n"); pauseMode(); } break; case XK_Escape: case XK_q: if(verbose==1) printf("Show: Exiting program..\n"); exit(1); break; case XK_space: emergencyBypass=1; if(verbose==1) printf("Show: Leaving image prematurely..\n"); break; case XK_h: if(verbose==1) printf("Show: Flipping image horizontally..\n"); modifyOnTheFly(2); break; case XK_v: if(verbose==1) printf("Show: Flipping image vertically..\n"); modifyOnTheFly(3); break; case XK_i: if(verbose==1) printf("Show: Zooming in 10 percent..\n"); modifyOnTheFly(10); break; case XK_o: if(verbose==1) printf("Show: Zooming out 10 percent..\n"); modifyOnTheFly(11); break; case XK_r: if(verbose==1) printf("Show: Rotating image +90 degrees..\n"); modifyOnTheFly(4); break; case XK_e: if(verbose==1) printf("Show: Rotating image -90 degrees..\n"); modifyOnTheFly(5); break; case XK_F1: if(verbose==1) printf("Show: Dncreasing image brightness..\n"); modifyOnTheFly(6); break; case XK_F2: if(verbose==1) printf("Show: Iecreasing image brightness..\n"); modifyOnTheFly(7); break; case XK_F3: if(verbose==1) printf("Show: Decreasing image contrast..\n"); modifyOnTheFly(8); break; case XK_F4: if(verbose==1) printf("Show: Increasing image contrast..\n"); modifyOnTheFly(9); break; case XK_z: if(verbose==1) { verbose=0; printf("Show: Turning verbose logging mode OFF..\n"); break; } if(verbose==0) { verbose=1; printf("Show: Turning verbose logging mode ON..\n"); break; } break; } break; } return 0; }