tomwalters@0: /* tomwalters@0: Copyright (c) Applied Psychology Unit, Medical Research Council. 1993 tomwalters@0: =========================================================================== tomwalters@0: tomwalters@0: Permission to use, copy, modify, and distribute this software without fee tomwalters@0: is hereby granted for research purposes, provided that this copyright tomwalters@0: notice appears in all copies and in all supporting documentation, and that tomwalters@0: the software is not redistributed for any fee (except for a nominal tomwalters@0: shipping charge). Anyone wanting to incorporate all or part of this tomwalters@0: software in a commercial product must obtain a license from the Medical tomwalters@0: Research Council. tomwalters@0: tomwalters@0: The MRC makes no representations about the suitability of this tomwalters@0: software for any purpose. It is provided "as is" without express or tomwalters@0: implied warranty. tomwalters@0: tomwalters@0: THE MRC DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING tomwalters@0: ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL tomwalters@0: THE A.P.U. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES tomwalters@0: OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, tomwalters@0: WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, tomwalters@0: ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS tomwalters@0: SOFTWARE. tomwalters@0: */ tomwalters@0: tomwalters@0: /* tomwalters@0: * switch_buttons.c tomwalters@0: * ---------------- tomwalters@0: * The 'switch' code for all the Control Window buttons. tomwalters@0: * tomwalters@0: * M. Akeroyd. July 1993. version 1.10 tomwalters@0: * Revisions: MAA: Christmas 1993. tomwalters@0: * tomwalters@0: */ tomwalters@0: tomwalters@0: tomwalters@0: tomwalters@0: #include tomwalters@0: #include tomwalters@0: #include tomwalters@0: #include tomwalters@0: #include tomwalters@0: tomwalters@0: #include "xreview.h" tomwalters@0: tomwalters@0: tomwalters@0: /* General ................*/ tomwalters@0: tomwalters@0: extern char *data_pointer; tomwalters@0: extern long location[MAX_FRAMES]; tomwalters@0: tomwalters@0: tomwalters@0: /* X ......................*/ tomwalters@0: tomwalters@0: extern Display *display; tomwalters@0: extern int screen_num; tomwalters@0: extern Screen *screen_ptr; tomwalters@0: tomwalters@0: extern toplevelWindow control; tomwalters@0: extern toplevelWindow axes; tomwalters@0: extern XImage *reviewimage; tomwalters@0: tomwalters@0: extern buttonWindow button_quit, button_close; tomwalters@0: extern buttonWindow button_animate; tomwalters@0: extern buttonWindow button_startf, button_startb, button_stopf, button_stopb; tomwalters@0: extern buttonWindow button_skipf, button_skipb, button_faster, button_slower; tomwalters@0: extern buttonWindow button_firstframe, button_lastframe, button_middle; tomwalters@0: extern buttonWindow button_stepf, button_stepff, button_stepb, button_stepbb; tomwalters@0: tomwalters@0: extern buttonWindow info_speed, info_start, info_stop, info_skip; tomwalters@0: extern buttonWindow info_title, info_frame; tomwalters@0: extern buttonWindow info_time, info_freq, info_frstep; tomwalters@0: tomwalters@0: extern GC button_gc; tomwalters@0: extern int button_borderwidth; tomwalters@0: tomwalters@0: extern XFontStruct *font_info; tomwalters@0: extern XEvent report; tomwalters@0: tomwalters@0: tomwalters@0: /* .ctn ......................*/ tomwalters@0: tomwalters@0: extern int animate_start; tomwalters@0: extern int animate_stop; tomwalters@0: extern int animate_skip; tomwalters@0: extern int frame; tomwalters@0: extern int no_frames; tomwalters@0: extern long waittime_millisecs; tomwalters@0: tomwalters@0: tomwalters@0: tomwalters@0: tomwalters@0: /*-------------------------------------------------------------------*/ tomwalters@0: /*-------------------------------------------------------------------*/ tomwalters@0: tomwalters@0: tomwalters@0: tomwalters@0: tomwalters@0: void switch_buttons() tomwalters@0: { tomwalters@0: char tempstring[MAX_STRING_LENGTH]; tomwalters@0: tomwalters@0: /*--------------------------------------------------------*/ tomwalters@0: tomwalters@0: if (report.xbutton.button != Button1) tomwalters@0: return ; tomwalters@0: tomwalters@0: if (report.xany.window == button_quit.win) { tomwalters@0: flashbutton(control, button_quit, &button_gc, "Quit"); tomwalters@0: exit_xreview();} tomwalters@0: tomwalters@0: tomwalters@0: if (report.xany.window == button_close.win) { tomwalters@0: flashbutton(control, button_close, &button_gc, "Close"); tomwalters@0: XUnmapWindow(display, control.win);} tomwalters@0: tomwalters@0: tomwalters@0: if (report.xany.window == button_animate.win){ tomwalters@0: flashbutton(control, button_animate, &button_gc, "Animate"); tomwalters@0: animate_image(animate_start, animate_stop, animate_skip);} tomwalters@0: tomwalters@0: tomwalters@0: if (report.xany.window == button_startf.win) { tomwalters@0: flashbutton(control, button_startf, &button_gc, "+1"); tomwalters@0: animate_start++; tomwalters@0: if (animate_start == no_frames) tomwalters@0: animate_start = no_frames-1; tomwalters@0: sprintf(tempstring, "Start: %i", animate_start); tomwalters@0: XClearWindow(display, info_start.win); tomwalters@0: drawtext(info_start, button_gc, font_info, tempstring);} tomwalters@0: tomwalters@0: tomwalters@0: if (report.xany.window == button_startb.win) { tomwalters@0: flashbutton(control, button_startb, &button_gc, "-1"); tomwalters@0: animate_start--; tomwalters@0: if (animate_start == 0) tomwalters@0: animate_start = 1; tomwalters@0: sprintf(tempstring, "Start: %i", animate_start); tomwalters@0: XClearWindow(display, info_start.win); tomwalters@0: drawtext(info_start, button_gc, font_info, tempstring);} tomwalters@0: tomwalters@0: tomwalters@0: if (report.xany.window == button_stopf.win) { tomwalters@0: flashbutton(control, button_stopf, &button_gc, "+1"); tomwalters@0: animate_stop++; tomwalters@0: if (animate_stop == no_frames +1) tomwalters@0: animate_stop = no_frames; tomwalters@0: sprintf(tempstring, "Stop: %i", animate_stop); tomwalters@0: XClearWindow(display, info_stop.win); tomwalters@0: drawtext(info_stop, button_gc, font_info, tempstring);} tomwalters@0: tomwalters@0: tomwalters@0: if (report.xany.window == button_stopb.win) { tomwalters@0: flashbutton(control, button_stopb, &button_gc, "-1"); tomwalters@0: animate_stop--; tomwalters@0: if (animate_stop == 1) tomwalters@0: animate_stop = 2; tomwalters@0: sprintf(tempstring, "Stop: %i", animate_stop); tomwalters@0: XClearWindow(display, info_stop.win); tomwalters@0: drawtext(info_stop, button_gc, font_info, tempstring);} tomwalters@0: tomwalters@0: tomwalters@0: if (report.xany.window == button_skipf.win) { tomwalters@0: flashbutton(control, button_skipf, &button_gc, "+1"); tomwalters@0: animate_skip++; tomwalters@0: if (animate_skip == no_frames) tomwalters@0: animate_start = no_frames-1; tomwalters@0: sprintf(tempstring, "Skip: %i", animate_skip); tomwalters@0: XClearWindow(display, info_skip.win); tomwalters@0: drawtext(info_skip, button_gc, font_info, tempstring);} tomwalters@0: tomwalters@0: tomwalters@0: if (report.xany.window == button_skipb.win) { tomwalters@0: flashbutton(control, button_skipb, &button_gc, "-1"); tomwalters@0: animate_skip--; tomwalters@0: if (animate_skip == 0) tomwalters@0: animate_skip = 1; tomwalters@0: sprintf(tempstring, "Skip: %i", animate_skip); tomwalters@0: XClearWindow(display, info_skip.win); tomwalters@0: drawtext(info_skip, button_gc, font_info, tempstring);} tomwalters@0: tomwalters@0: tomwalters@0: if (report.xany.window == button_faster.win) { tomwalters@0: flashbutton(control, button_faster, &button_gc, "Fast"); tomwalters@0: waittime_millisecs = (long) waittime_millisecs / 2; tomwalters@0: if (waittime_millisecs < 1) tomwalters@0: waittime_millisecs = 1; tomwalters@0: sprintf(tempstring, "Speed: %li", waittime_millisecs); tomwalters@0: XClearWindow(display, info_speed.win); tomwalters@0: drawtext(info_speed, button_gc, font_info, tempstring);} tomwalters@0: tomwalters@0: tomwalters@0: if (report.xany.window == button_slower.win) { tomwalters@0: flashbutton(control, button_slower, &button_gc, "Slow"); tomwalters@0: waittime_millisecs = (long) waittime_millisecs * 2; tomwalters@0: sprintf(tempstring, "Speed: %li", waittime_millisecs); tomwalters@0: XClearWindow(display, info_speed.win); tomwalters@0: drawtext(info_speed, button_gc, font_info, tempstring);} tomwalters@0: tomwalters@0: tomwalters@0: if (report.xany.window == button_lastframe.win) { tomwalters@0: flashbutton(control, button_lastframe, &button_gc, "Last"); tomwalters@0: frame=no_frames; tomwalters@0: drawimage(frame); tomwalters@0: XClearWindow(display, info_frame.win); tomwalters@0: sprintf(tempstring, "%i of %i", frame, no_frames); tomwalters@0: drawtext(info_frame, button_gc, font_info, tempstring);} tomwalters@0: tomwalters@0: tomwalters@0: if (report.xany.window == button_firstframe.win) { tomwalters@0: flashbutton(control, button_firstframe, &button_gc, "First"); tomwalters@0: frame=1; tomwalters@0: drawimage(frame); tomwalters@0: XClearWindow(display, info_frame.win); tomwalters@0: sprintf(tempstring, "%i of %i", frame, no_frames); tomwalters@0: drawtext(info_frame, button_gc, font_info, tempstring);} tomwalters@0: tomwalters@0: tomwalters@0: if (report.xany.window == button_middle.win) { tomwalters@0: flashbutton(control, button_middle, &button_gc, "Middle"); tomwalters@0: frame=no_frames/2; tomwalters@0: if (frame == 0) tomwalters@0: frame = 1; tomwalters@0: drawimage(frame); tomwalters@0: XClearWindow(display, info_frame.win); tomwalters@0: sprintf(tempstring, "%i of %i", frame, no_frames); tomwalters@0: drawtext(info_frame, button_gc, font_info, tempstring);} tomwalters@0: tomwalters@0: tomwalters@0: if (report.xany.window == button_stepf.win) { tomwalters@0: flashbutton(control, button_stepf, &button_gc, ">"); tomwalters@0: frame++; tomwalters@0: if (frame > no_frames) tomwalters@0: frame = no_frames; tomwalters@0: drawimage(frame); tomwalters@0: XClearWindow(display, info_frame.win); tomwalters@0: sprintf(tempstring, "%i of %i", frame, no_frames); tomwalters@0: drawtext(info_frame, button_gc, font_info, tempstring);} tomwalters@0: tomwalters@0: tomwalters@0: if (report.xany.window == button_stepff.win) { tomwalters@0: flashbutton(control, button_stepff, &button_gc, ">>"); tomwalters@0: frame+=10; tomwalters@0: if (frame > no_frames) tomwalters@0: frame = no_frames; tomwalters@0: drawimage(frame); tomwalters@0: XClearWindow(display, info_frame.win); tomwalters@0: sprintf(tempstring, "%i of %i", frame, no_frames); tomwalters@0: drawtext(info_frame, button_gc, font_info, tempstring);} tomwalters@0: tomwalters@0: tomwalters@0: if (report.xany.window == button_stepb.win) { tomwalters@0: flashbutton(control, button_stepb, &button_gc, "<"); tomwalters@0: frame--; tomwalters@0: if (frame < 1) tomwalters@0: frame = 1; tomwalters@0: drawimage(frame); tomwalters@0: XClearWindow(display, info_frame.win); tomwalters@0: sprintf(tempstring, "%i of %i", frame, no_frames); tomwalters@0: drawtext(info_frame, button_gc, font_info, tempstring);} tomwalters@0: tomwalters@0: tomwalters@0: if (report.xany.window == button_stepbb.win) { tomwalters@0: flashbutton(control, button_stepbb, &button_gc, "<<"); tomwalters@0: frame-=10; tomwalters@0: if (frame < 1) tomwalters@0: frame = 1; tomwalters@0: drawimage(frame); tomwalters@0: XClearWindow(display, info_frame.win); tomwalters@0: sprintf(tempstring, "%i of %i", frame, no_frames); tomwalters@0: drawtext(info_frame, button_gc, font_info, tempstring);} tomwalters@0: tomwalters@0: } tomwalters@0: tomwalters@0: tomwalters@0: tomwalters@0: tomwalters@0: /* The End */ tomwalters@0: /*-------------------------------------------------------------------------*/ tomwalters@0: /*-------------------------------------------------------------------------*/