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_control.c tomwalters@0: * ---------------- tomwalters@0: * the 'switch' for the Controls Window. 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: char progname[MAX_STRING_LENGTH]; 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: 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 XFontStruct *font_info; tomwalters@0: extern GC button_gc; tomwalters@0: extern XEvent report; tomwalters@0: tomwalters@0: extern int button_borderwidth; tomwalters@0: tomwalters@0: tomwalters@0: /* .ctn .......................*/ tomwalters@0: tomwalters@0: extern int frame; tomwalters@0: extern int no_frames; tomwalters@0: extern double frstep_aid; tomwalters@0: extern double pwidth; tomwalters@0: extern double nwidth; tomwalters@0: extern int mincf; tomwalters@0: extern int maxcf; tomwalters@0: tomwalters@0: extern int waittime_millisecs; tomwalters@0: extern int animate_start; tomwalters@0: extern int animate_stop; tomwalters@0: extern int animate_skip; tomwalters@0: tomwalters@0: tomwalters@0: /* Command line ...............*/ tomwalters@0: extern double scale; tomwalters@0: tomwalters@0: tomwalters@0: tomwalters@0: tomwalters@0: tomwalters@0: /*-----------------------------------------------------------------------*/ tomwalters@0: /*-----------------------------------------------------------------------*/ tomwalters@0: tomwalters@0: tomwalters@0: tomwalters@0: tomwalters@0: void switch_control() tomwalters@0: { tomwalters@0: char tempstring[MAX_STRING_LENGTH]; tomwalters@0: int whitepixel = WhitePixel(display, screen_num); tomwalters@0: int blackpixel = BlackPixel(display, screen_num); tomwalters@0: tomwalters@0: tomwalters@0: switch(report.type) { tomwalters@0: tomwalters@0: /*----------------------------------*/ tomwalters@0: tomwalters@0: case Expose: tomwalters@0: if (report.xexpose.count != 0) tomwalters@0: break; tomwalters@0: tomwalters@0: if ((control.window_size == TOO_SMALL_X) || tomwalters@0: (control.window_size == TOO_BIG_X)) tomwalters@0: break; tomwalters@0: tomwalters@0: XDrawLine(display, control.win, control.gc, \ tomwalters@0: 0, 80*scale, control.width, 80*scale); tomwalters@0: XDrawLine(display, control.win, control.gc, \ tomwalters@0: 0, 162*scale, control.width, 162*scale); tomwalters@0: tomwalters@0: XMapWindow(display, button_quit.win); tomwalters@0: XMapWindow(display, button_close.win); tomwalters@0: XMapWindow(display, button_animate.win); tomwalters@0: XMapWindow(display, button_startf.win); tomwalters@0: XMapWindow(display, button_startb.win); tomwalters@0: XMapWindow(display, button_stopf.win); tomwalters@0: XMapWindow(display, button_stopb.win); tomwalters@0: XMapWindow(display, button_skipf.win); tomwalters@0: XMapWindow(display, button_skipb.win); tomwalters@0: XMapWindow(display, button_faster.win); tomwalters@0: XMapWindow(display, button_slower.win); tomwalters@0: XMapWindow(display, button_lastframe.win); tomwalters@0: XMapWindow(display, button_firstframe.win); tomwalters@0: XMapWindow(display, button_middle.win); tomwalters@0: XMapWindow(display, button_stepf.win); tomwalters@0: XMapWindow(display, button_stepff.win); tomwalters@0: XMapWindow(display, button_stepb.win); tomwalters@0: XMapWindow(display, button_stepbb.win); tomwalters@0: tomwalters@0: drawbutton(control, button_quit, &button_gc, "Quit",\ tomwalters@0: whitepixel, blackpixel); tomwalters@0: drawbutton(control, button_close, &button_gc, "Close", \ tomwalters@0: whitepixel, blackpixel); tomwalters@0: tomwalters@0: drawbutton(control, button_animate, &button_gc, "Animate", \ tomwalters@0: whitepixel, blackpixel); tomwalters@0: drawbutton(control, button_startf, &button_gc, "+1", \ tomwalters@0: whitepixel, blackpixel); tomwalters@0: drawbutton(control, button_startb, &button_gc, "-1", \ tomwalters@0: whitepixel, blackpixel); tomwalters@0: drawbutton(control, button_stopf, &button_gc, "+1", \ tomwalters@0: whitepixel, blackpixel); tomwalters@0: drawbutton(control, button_stopb, &button_gc, "-1", \ tomwalters@0: whitepixel, blackpixel); tomwalters@0: drawbutton(control, button_skipf, &button_gc, "+1", \ tomwalters@0: whitepixel, blackpixel); tomwalters@0: drawbutton(control, button_skipb, &button_gc, "-1", \ tomwalters@0: whitepixel, blackpixel); tomwalters@0: drawbutton(control, button_faster, &button_gc, "Fast", \ tomwalters@0: whitepixel, blackpixel); tomwalters@0: drawbutton(control, button_slower, &button_gc, "Slow", \ tomwalters@0: whitepixel, blackpixel); tomwalters@0: tomwalters@0: drawbutton(control, button_lastframe, &button_gc, "Last", \ tomwalters@0: whitepixel, blackpixel); tomwalters@0: drawbutton(control, button_firstframe, &button_gc, "First", \ tomwalters@0: whitepixel, blackpixel); tomwalters@0: drawbutton(control, button_middle, &button_gc, "Middle", \ tomwalters@0: whitepixel, blackpixel); tomwalters@0: drawbutton(control, button_stepf, &button_gc, ">", \ tomwalters@0: whitepixel, blackpixel); tomwalters@0: drawbutton(control, button_stepff, &button_gc, ">>", \ tomwalters@0: whitepixel, blackpixel); tomwalters@0: drawbutton(control, button_stepb, &button_gc, "<", \ tomwalters@0: whitepixel, blackpixel); tomwalters@0: drawbutton(control, button_stepbb, &button_gc, "<<", \ tomwalters@0: whitepixel, blackpixel); tomwalters@0: tomwalters@0: tomwalters@0: tomwalters@0: XMapWindow(display, info_speed.win); tomwalters@0: sprintf(tempstring, "Speed: %i", waittime_millisecs); tomwalters@0: drawtext(info_speed, button_gc, font_info, tempstring); tomwalters@0: tomwalters@0: XMapWindow(display, info_start.win); tomwalters@0: sprintf(tempstring, "Start: %i", animate_start); tomwalters@0: drawtext(info_start, button_gc, font_info, tempstring); tomwalters@0: tomwalters@0: XMapWindow(display, info_stop.win); tomwalters@0: sprintf(tempstring, "Stop: %i", animate_stop); tomwalters@0: drawtext(info_stop, button_gc, font_info, tempstring); tomwalters@0: tomwalters@0: XMapWindow(display, info_skip.win); tomwalters@0: sprintf(tempstring, "Skip: %i", animate_skip); tomwalters@0: drawtext(info_skip, button_gc, font_info, tempstring); tomwalters@0: tomwalters@0: XMapWindow(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: XMapWindow(display, info_title.win); tomwalters@0: sprintf(tempstring, "%s", axes.window_name); tomwalters@0: drawtext(info_title, button_gc, font_info, tempstring); tomwalters@0: tomwalters@0: XMapWindow(display, info_freq.win); tomwalters@0: sprintf(tempstring, "Freq %i-%iHz", mincf, maxcf); tomwalters@0: drawtext(info_freq, button_gc, font_info, tempstring); tomwalters@0: tomwalters@0: XMapWindow(display, info_time.win); tomwalters@0: sprintf(tempstring, "Interval %.1f...%.1fms", pwidth, nwidth); tomwalters@0: drawtext(info_time, button_gc, font_info, tempstring); tomwalters@0: tomwalters@0: XMapWindow(display, info_frstep.win); tomwalters@0: sprintf(tempstring, "frstep: %.1fms", frstep_aid); tomwalters@0: drawtext(info_frstep, button_gc, font_info, tempstring); tomwalters@0: tomwalters@0: tomwalters@0: break; tomwalters@0: tomwalters@0: tomwalters@0: /*--------------------------------------*/ tomwalters@0: tomwalters@0: tomwalters@0: case ConfigureNotify: tomwalters@0: if (report.xconfigure.window != control.win) tomwalters@0: break; tomwalters@0: tomwalters@0: control.width = report.xconfigure.width; tomwalters@0: control.height = report.xconfigure.height; tomwalters@0: tomwalters@0: control.window_size = BIG_ENOUGH_X; tomwalters@0: if ((control.width < control.size_hints.min_width) || \ tomwalters@0: (control.height < control.size_hints.min_height)) tomwalters@0: control.window_size = TOO_SMALL_X; tomwalters@0: if ((control.width > control.size_hints.max_width) || \ tomwalters@0: (control.height > control.size_hints.max_height)) tomwalters@0: control.window_size = TOO_BIG_X; tomwalters@0: break; tomwalters@0: tomwalters@0: /*--------------------------------------*/ tomwalters@0: tomwalters@0: default: tomwalters@0: break; tomwalters@0: tomwalters@0: } /* switch */ tomwalters@0: tomwalters@0: } tomwalters@0: tomwalters@0: tomwalters@0: tomwalters@0: tomwalters@0: tomwalters@0: tomwalters@0: /* The End */ tomwalters@0: /*-------------------------------------------------------------------------*/ tomwalters@0: /*-------------------------------------------------------------------------*/