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: * buttons.c tomwalters@0: * --------- tomwalters@0: * Defines the size, position, and input-option-possibilites of the buttons tomwalters@0: * that appear on 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: 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 Pixmap stipple_pixmap; 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 XFontStruct *font_info; tomwalters@0: tomwalters@0: extern int button_borderwidth ; tomwalters@0: tomwalters@0: tomwalters@0: /* Command line .............*/ tomwalters@0: tomwalters@0: extern double scale; /* scale factor of Controls Window size */ tomwalters@0: tomwalters@0: tomwalters@0: tomwalters@0: tomwalters@0: tomwalters@0: tomwalters@0: /*-------------------------------------------------------------------------*/ tomwalters@0: /*-------------------------------------------------------------------------*/ tomwalters@0: tomwalters@0: tomwalters@0: tomwalters@0: tomwalters@0: tomwalters@0: Window create_button(int x, int y, int width, int height) tomwalters@0: { tomwalters@0: return (Window) XCreateSimpleWindow(display, control.win, \ tomwalters@0: x, y, width, height, \ tomwalters@0: button_borderwidth, \ tomwalters@0: BlackPixel(display, screen_num),\ tomwalters@0: WhitePixel(display, screen_num)); tomwalters@0: } tomwalters@0: tomwalters@0: 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 initialise_buttons() tomwalters@0: { tomwalters@0: button_gc = XCreateGC(display, RootWindow(display, screen_num),\ tomwalters@0: control.valuemask, &control.values); tomwalters@0: XSetForeground(display, button_gc, BlackPixel(display, screen_num)); tomwalters@0: XSetFillStyle(display, button_gc, FillSolid); tomwalters@0: XSetFont(display, button_gc, font_info->fid); tomwalters@0: tomwalters@0: /*------------------------------*/ tomwalters@0: /* Button Positions: all relative to top-left Controls corner. tomwalters@0: * All in pixels */ tomwalters@0: tomwalters@0: button_quit.x = 20 * scale; button_quit.y = 10 * scale; tomwalters@0: button_close.x = 20 * scale; button_close.y = 44 * scale; tomwalters@0: tomwalters@0: button_animate.x = 500 * scale; button_animate.y = 90 * scale; tomwalters@0: button_startf.x = 64 * scale; button_startf.y = 124 * scale; tomwalters@0: button_startb.x = 14 * scale; button_startb.y = 124 * scale; tomwalters@0: button_stopf.x = 184 * scale; button_stopf.y = 124 * scale; tomwalters@0: button_stopb.x = 134 * scale; button_stopb.y = 124 * scale; tomwalters@0: button_skipf.x = 304 * scale; button_skipf.y = 124 * scale; tomwalters@0: button_skipb.x = 254 * scale; button_skipb.y = 124 * scale; tomwalters@0: button_faster.x = 372 * scale; button_faster.y = 124 * scale; tomwalters@0: button_slower.x = 422 * scale; button_slower.y = 124 * scale; tomwalters@0: tomwalters@0: button_firstframe.x = 10 * scale; button_firstframe.y = 174 * scale; tomwalters@0: button_stepbb.x = 80 * scale; button_stepbb.y = 174 * scale; tomwalters@0: button_stepb.x = 150 * scale; button_stepb.y = 174 * scale; tomwalters@0: button_middle.x = 220 * scale; button_middle.y = 174 * scale; tomwalters@0: button_stepf.x = 290 * scale; button_stepf.y = 174 * scale; tomwalters@0: button_stepff.x = 360 * scale; button_stepff.y = 174 * scale; tomwalters@0: button_lastframe.x = 430 * scale; button_lastframe.y = 174 * scale; tomwalters@0: tomwalters@0: /* Button sizes: also in pixels */ tomwalters@0: tomwalters@0: button_quit.width = 60 * scale; button_quit.height = 25 * scale; tomwalters@0: button_close.width = 60 * scale; button_close.height = 25 * scale; tomwalters@0: button_animate.width = 100 * scale; button_animate.height = 60 * scale; tomwalters@0: button_startf.width = 40 * scale; button_startf.height = 25 * scale; tomwalters@0: button_startb.width = 40 * scale; button_startb.height = 25 * scale; tomwalters@0: button_stopf.width = 40 * scale; button_stopf.height = 25 * scale; tomwalters@0: button_stopb.width = 40 * scale; button_stopb.height = 25 * scale; tomwalters@0: button_skipf.width = 40 * scale; button_skipf.height = 25 * scale; tomwalters@0: button_skipb.width = 40 * scale; button_skipb.height = 25 * scale; tomwalters@0: button_faster.width = 45 * scale; button_faster.height = 25 * scale; tomwalters@0: button_slower.width = 45 * scale; button_slower.height = 25 * scale; tomwalters@0: button_lastframe.width = 60 * scale; button_lastframe.height = 25 *scale; tomwalters@0: button_firstframe.width = 60 * scale; button_firstframe.height = 25 *scale; tomwalters@0: button_middle.width = 60 * scale; button_middle.height = 25 * scale; tomwalters@0: button_stepf.width = 60 * scale; button_stepf.height = 25 * scale; tomwalters@0: button_stepff.width = 60 * scale; button_stepff.height = 25 * scale; tomwalters@0: button_stepb.width = 60 * scale; button_stepb.height = 25 * scale; tomwalters@0: button_stepbb.width = 60 * scale; button_stepbb.height = 25 * scale; tomwalters@0: tomwalters@0: /*------------------------------*/ tomwalters@0: /* make the things */ tomwalters@0: tomwalters@0: button_quit.win = create_button(button_quit.x, button_quit.y, \ tomwalters@0: button_quit.width, button_quit.height); tomwalters@0: button_close.win = create_button(button_close.x, button_close.y, \ tomwalters@0: button_close.width, button_close.height); tomwalters@0: button_animate.win = create_button(button_animate.x, button_animate.y, \ tomwalters@0: button_animate.width, button_animate.height); tomwalters@0: button_startf.win = create_button(button_startf.x, button_startf.y, \ tomwalters@0: button_startf.width, button_startf.height); tomwalters@0: button_startb.win = create_button(button_startb.x, button_startb.y, \ tomwalters@0: button_startb.width, button_startb.height); tomwalters@0: button_stopf.win = create_button(button_stopf.x, button_stopf.y, \ tomwalters@0: button_stopf.width, button_stopf.height); tomwalters@0: button_stopb.win = create_button(button_stopb.x, button_stopb.y, \ tomwalters@0: button_stopb.width, button_stopb.height); tomwalters@0: button_skipf.win = create_button(button_skipf.x, button_skipf.y, \ tomwalters@0: button_skipf.width, button_skipf.height); tomwalters@0: button_skipb.win = create_button(button_skipb.x, button_skipb.y, \ tomwalters@0: button_skipb.width, button_skipb.height); tomwalters@0: button_faster.win = create_button(button_faster.x, button_faster.y, \ tomwalters@0: button_faster.width, button_faster.height); tomwalters@0: button_slower.win = create_button(button_slower.x, button_slower.y, \ tomwalters@0: button_slower.width, button_slower.height); tomwalters@0: button_lastframe.win =create_button(button_lastframe.x, button_lastframe.y,\ tomwalters@0: button_lastframe.width, button_lastframe.height); tomwalters@0: button_firstframe.win=create_button(button_firstframe.x,button_firstframe.y,\ tomwalters@0: button_firstframe.width, button_firstframe.height); tomwalters@0: button_middle.win =create_button(button_middle.x, button_middle.y, \ tomwalters@0: button_middle.width, button_middle.height); tomwalters@0: button_stepf.win = create_button(button_stepf.x, button_stepf.y, \ tomwalters@0: button_stepf.width, button_stepf.height); tomwalters@0: button_stepff.win = create_button(button_stepff.x, button_stepff.y, \ tomwalters@0: button_stepff.width, button_stepff.height); tomwalters@0: button_stepb.win = create_button(button_stepb.x, button_stepb.y, \ tomwalters@0: button_stepb.width, button_stepb.height); tomwalters@0: button_stepbb.win = create_button(button_stepbb.x, button_stepbb.y, \ tomwalters@0: button_stepbb.width, button_stepbb.height); tomwalters@0: tomwalters@0: /*---------------------------*/ tomwalters@0: /* Info positions and sizes. */ tomwalters@0: tomwalters@0: info_speed.x = 370 * scale; info_speed.y = 94 * scale; tomwalters@0: info_start.x = 10 * scale; info_start.y = 94 * scale; tomwalters@0: info_stop.x = 130 * scale; info_stop.y = 94 * scale; tomwalters@0: info_skip.x = 250 * scale; info_skip.y = 94 * scale; tomwalters@0: info_frame.x = 500 * scale; info_frame.y = 174 * scale; tomwalters@0: info_title.x = 100 * scale; info_title.y = 10 * scale; tomwalters@0: info_freq.x = 100 * scale; info_freq.y = 44 * scale; tomwalters@0: info_time.x = 275 * scale; info_time.y = 44 * scale; tomwalters@0: info_frstep.x = 475 * scale; info_frstep.y = 44 * scale; tomwalters@0: tomwalters@0: info_speed.width = 100 * scale; info_speed.height = 25 * scale; tomwalters@0: info_start.width = 100 * scale; info_start.height = 25 * scale; tomwalters@0: info_stop.width = 100 * scale; info_stop.height = 25 * scale; tomwalters@0: info_skip.width = 100 * scale; info_skip.height = 25 * scale; tomwalters@0: info_frame.width = 100 * scale; info_frame.height = 25 * scale; tomwalters@0: info_title.width = 500 * scale; info_title.height = 25 * scale; tomwalters@0: info_freq.width = 175 * scale; info_freq.height = 25 * scale; tomwalters@0: info_time.width = 175 * scale; info_time.height = 25 * scale; tomwalters@0: info_frstep.width = 115 * scale; info_frstep.height = 25 * scale; tomwalters@0: tomwalters@0: info_speed.win = create_button(info_speed.x, info_speed.y, \ tomwalters@0: info_speed.width, info_speed.height); tomwalters@0: info_start.win = create_button(info_start.x, info_start.y, \ tomwalters@0: info_start.width, info_start.height); tomwalters@0: info_stop.win = create_button(info_stop.x, info_stop.y, \ tomwalters@0: info_stop.width, info_stop.height); tomwalters@0: info_skip.win = create_button(info_skip.x, info_skip.y, \ tomwalters@0: info_skip.width, info_skip.height); tomwalters@0: info_frame.win = create_button(info_frame.x, info_frame.y, \ tomwalters@0: info_frame.width, info_frame.height); tomwalters@0: info_title.win = create_button(info_title.x, info_title.y, \ tomwalters@0: info_title.width, info_title.height); tomwalters@0: info_freq.win = create_button(info_freq.x, info_freq.y, \ tomwalters@0: info_freq.width, info_freq.height); tomwalters@0: info_time.win = create_button(info_time.x, info_time.y, \ tomwalters@0: info_time.width, info_time.height); tomwalters@0: info_frstep.win = create_button(info_frstep.x, info_frstep.y, \ tomwalters@0: info_frstep.width, info_frstep.height); tomwalters@0: tomwalters@0: tomwalters@0: /*------------------------------*/ tomwalters@0: /* Define the allowed inputs to the buttons. tomwalters@0: */ tomwalters@0: XSelectInput(display, button_quit.win, ButtonPressMask ); tomwalters@0: XSelectInput(display, button_close.win, ButtonPressMask ); tomwalters@0: XSelectInput(display, button_animate.win, ButtonPressMask ); tomwalters@0: XSelectInput(display, button_startf.win, ButtonPressMask ); tomwalters@0: XSelectInput(display, button_startb.win, ButtonPressMask ); tomwalters@0: XSelectInput(display, button_stopf.win, ButtonPressMask ); tomwalters@0: XSelectInput(display, button_stopb.win, ButtonPressMask ); tomwalters@0: XSelectInput(display, button_skipf.win, ButtonPressMask ); tomwalters@0: XSelectInput(display, button_skipb.win, ButtonPressMask ); tomwalters@0: XSelectInput(display, button_faster.win, ButtonPressMask ); tomwalters@0: XSelectInput(display, button_slower.win, ButtonPressMask ); tomwalters@0: XSelectInput(display, button_lastframe.win, ButtonPressMask ); tomwalters@0: XSelectInput(display, button_firstframe.win, ButtonPressMask ); tomwalters@0: XSelectInput(display, button_middle.win, ButtonPressMask ); tomwalters@0: XSelectInput(display, button_stepf.win, ButtonPressMask ); tomwalters@0: XSelectInput(display, button_stepff.win, ButtonPressMask ); tomwalters@0: XSelectInput(display, button_stepb.win, ButtonPressMask ); tomwalters@0: XSelectInput(display, button_stepbb.win, ButtonPressMask ); tomwalters@0: tomwalters@0: XSelectInput(display, info_speed.win, ButtonPressMask); tomwalters@0: XSelectInput(display, info_start.win, ButtonPressMask); tomwalters@0: XSelectInput(display, info_stop.win, ButtonPressMask); tomwalters@0: XSelectInput(display, info_skip.win, ButtonPressMask); tomwalters@0: XSelectInput(display, info_frame.win, ButtonPressMask); tomwalters@0: XSelectInput(display, info_title.win, ButtonPressMask); tomwalters@0: XSelectInput(display, info_freq.win, ButtonPressMask); tomwalters@0: XSelectInput(display, info_time.win, ButtonPressMask); tomwalters@0: XSelectInput(display, info_frstep.win, ButtonPressMask); tomwalters@0: tomwalters@0: /* Define the backgrounds. */ tomwalters@0: tomwalters@0: XSetWindowBackgroundPixmap(display, button_quit.win, stipple_pixmap); tomwalters@0: XSetWindowBackgroundPixmap(display, button_close.win, stipple_pixmap); tomwalters@0: XSetWindowBackgroundPixmap(display, button_animate.win, stipple_pixmap); tomwalters@0: XSetWindowBackgroundPixmap(display, button_startf.win, stipple_pixmap); tomwalters@0: XSetWindowBackgroundPixmap(display, button_startb.win, stipple_pixmap); tomwalters@0: XSetWindowBackgroundPixmap(display, button_stopf.win, stipple_pixmap); tomwalters@0: XSetWindowBackgroundPixmap(display, button_stopb.win, stipple_pixmap); tomwalters@0: XSetWindowBackgroundPixmap(display, button_skipf.win, stipple_pixmap); tomwalters@0: XSetWindowBackgroundPixmap(display, button_skipb.win, stipple_pixmap); tomwalters@0: XSetWindowBackgroundPixmap(display, button_faster.win, stipple_pixmap); tomwalters@0: XSetWindowBackgroundPixmap(display, button_slower.win, stipple_pixmap); tomwalters@0: XSetWindowBackgroundPixmap(display, button_lastframe.win, stipple_pixmap); tomwalters@0: XSetWindowBackgroundPixmap(display, button_firstframe.win, stipple_pixmap); tomwalters@0: XSetWindowBackgroundPixmap(display, button_middle.win, stipple_pixmap); tomwalters@0: XSetWindowBackgroundPixmap(display, button_stepf.win, stipple_pixmap); tomwalters@0: XSetWindowBackgroundPixmap(display, button_stepff.win, stipple_pixmap); tomwalters@0: XSetWindowBackgroundPixmap(display, button_stepb.win, stipple_pixmap); tomwalters@0: XSetWindowBackgroundPixmap(display, button_stepbb.win, stipple_pixmap); tomwalters@0: tomwalters@0: XSetWindowBackgroundPixmap(display, info_speed.win, stipple_pixmap); tomwalters@0: XSetWindowBackgroundPixmap(display, info_start.win, stipple_pixmap); tomwalters@0: XSetWindowBackgroundPixmap(display, info_stop.win, stipple_pixmap); tomwalters@0: XSetWindowBackgroundPixmap(display, info_skip.win, stipple_pixmap); tomwalters@0: XSetWindowBackgroundPixmap(display, info_frame.win, stipple_pixmap); tomwalters@0: XSetWindowBackgroundPixmap(display, info_title.win, stipple_pixmap); tomwalters@0: XSetWindowBackgroundPixmap(display, info_freq.win, stipple_pixmap); tomwalters@0: XSetWindowBackgroundPixmap(display, info_time.win, stipple_pixmap); tomwalters@0: XSetWindowBackgroundPixmap(display, info_frstep.win, stipple_pixmap); tomwalters@0: } tomwalters@0: tomwalters@0: tomwalters@0: tomwalters@0: tomwalters@0: /* The End */ tomwalters@0: /*------------------------------------------------------------------------*/ tomwalters@0: /*------------------------------------------------------------------------*/ tomwalters@0: tomwalters@0: tomwalters@0: tomwalters@0: