annotate xaim/buttons.c @ 0:5242703e91d3 tip

Initial checkin for AIM92 aimR8.2 (last updated May 1997).
author tomwalters
date Fri, 20 May 2011 15:19:45 +0100
parents
children
rev   line source
tomwalters@0 1 /*
tomwalters@0 2 Copyright (c) Applied Psychology Unit, Medical Research Council. 1993
tomwalters@0 3 ===========================================================================
tomwalters@0 4
tomwalters@0 5 Permission to use, copy, modify, and distribute this software without fee
tomwalters@0 6 is hereby granted for research purposes, provided that this copyright
tomwalters@0 7 notice appears in all copies and in all supporting documentation, and that
tomwalters@0 8 the software is not redistributed for any fee (except for a nominal
tomwalters@0 9 shipping charge). Anyone wanting to incorporate all or part of this
tomwalters@0 10 software in a commercial product must obtain a license from the Medical
tomwalters@0 11 Research Council.
tomwalters@0 12
tomwalters@0 13 The MRC makes no representations about the suitability of this
tomwalters@0 14 software for any purpose. It is provided "as is" without express or
tomwalters@0 15 implied warranty.
tomwalters@0 16
tomwalters@0 17 THE MRC DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
tomwalters@0 18 ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
tomwalters@0 19 THE A.P.U. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES
tomwalters@0 20 OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
tomwalters@0 21 WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
tomwalters@0 22 ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
tomwalters@0 23 SOFTWARE.
tomwalters@0 24 */
tomwalters@0 25 /*
tomwalters@0 26 * buttons.c
tomwalters@0 27 * ---------
tomwalters@0 28 * Defines the size, position, and input-option-possibilites of the buttons
tomwalters@0 29 * that appear on the Controls Window.
tomwalters@0 30 *
tomwalters@0 31 * M. Akeroyd. July 1993. version 1.10
tomwalters@0 32 * Revisions: MAA: Christmas 1993.
tomwalters@0 33 *
tomwalters@0 34 */
tomwalters@0 35
tomwalters@0 36
tomwalters@0 37
tomwalters@0 38 #include <X11/Xlib.h>
tomwalters@0 39 #include <X11/Xutil.h>
tomwalters@0 40 #include <X11/Xos.h>
tomwalters@0 41 #include <X11/Xatom.h>
tomwalters@0 42 #include <stdio.h>
tomwalters@0 43
tomwalters@0 44 #include "xreview.h"
tomwalters@0 45
tomwalters@0 46
tomwalters@0 47
tomwalters@0 48
tomwalters@0 49 /* X .......................*/
tomwalters@0 50
tomwalters@0 51 extern Display *display;
tomwalters@0 52 extern int screen_num;
tomwalters@0 53 extern Screen *screen_ptr;
tomwalters@0 54
tomwalters@0 55 extern toplevelWindow control;
tomwalters@0 56 extern Pixmap stipple_pixmap;
tomwalters@0 57
tomwalters@0 58 extern buttonWindow button_quit, button_close;
tomwalters@0 59 extern buttonWindow button_animate;
tomwalters@0 60 extern buttonWindow button_startf, button_startb, button_stopf, button_stopb;
tomwalters@0 61 extern buttonWindow button_skipf, button_skipb, button_faster, button_slower;
tomwalters@0 62 extern buttonWindow button_firstframe, button_lastframe, button_middle;
tomwalters@0 63 extern buttonWindow button_stepf, button_stepff, button_stepb, button_stepbb;
tomwalters@0 64
tomwalters@0 65 extern buttonWindow info_speed, info_start, info_stop, info_skip;
tomwalters@0 66 extern buttonWindow info_title, info_frame;
tomwalters@0 67 extern buttonWindow info_time, info_freq, info_frstep;
tomwalters@0 68
tomwalters@0 69 extern GC button_gc;
tomwalters@0 70 extern XFontStruct *font_info;
tomwalters@0 71
tomwalters@0 72 extern int button_borderwidth ;
tomwalters@0 73
tomwalters@0 74
tomwalters@0 75 /* Command line .............*/
tomwalters@0 76
tomwalters@0 77 extern double scale; /* scale factor of Controls Window size */
tomwalters@0 78
tomwalters@0 79
tomwalters@0 80
tomwalters@0 81
tomwalters@0 82
tomwalters@0 83
tomwalters@0 84 /*-------------------------------------------------------------------------*/
tomwalters@0 85 /*-------------------------------------------------------------------------*/
tomwalters@0 86
tomwalters@0 87
tomwalters@0 88
tomwalters@0 89
tomwalters@0 90
tomwalters@0 91 Window create_button(int x, int y, int width, int height)
tomwalters@0 92 {
tomwalters@0 93 return (Window) XCreateSimpleWindow(display, control.win, \
tomwalters@0 94 x, y, width, height, \
tomwalters@0 95 button_borderwidth, \
tomwalters@0 96 BlackPixel(display, screen_num),\
tomwalters@0 97 WhitePixel(display, screen_num));
tomwalters@0 98 }
tomwalters@0 99
tomwalters@0 100
tomwalters@0 101
tomwalters@0 102
tomwalters@0 103
tomwalters@0 104
tomwalters@0 105 /*-------------------------------------------------------------------------*/
tomwalters@0 106 /*-------------------------------------------------------------------------*/
tomwalters@0 107
tomwalters@0 108
tomwalters@0 109
tomwalters@0 110
tomwalters@0 111
tomwalters@0 112 void initialise_buttons()
tomwalters@0 113 {
tomwalters@0 114 button_gc = XCreateGC(display, RootWindow(display, screen_num),\
tomwalters@0 115 control.valuemask, &control.values);
tomwalters@0 116 XSetForeground(display, button_gc, BlackPixel(display, screen_num));
tomwalters@0 117 XSetFillStyle(display, button_gc, FillSolid);
tomwalters@0 118 XSetFont(display, button_gc, font_info->fid);
tomwalters@0 119
tomwalters@0 120 /*------------------------------*/
tomwalters@0 121 /* Button Positions: all relative to top-left Controls corner.
tomwalters@0 122 * All in pixels */
tomwalters@0 123
tomwalters@0 124 button_quit.x = 20 * scale; button_quit.y = 10 * scale;
tomwalters@0 125 button_close.x = 20 * scale; button_close.y = 44 * scale;
tomwalters@0 126
tomwalters@0 127 button_animate.x = 500 * scale; button_animate.y = 90 * scale;
tomwalters@0 128 button_startf.x = 64 * scale; button_startf.y = 124 * scale;
tomwalters@0 129 button_startb.x = 14 * scale; button_startb.y = 124 * scale;
tomwalters@0 130 button_stopf.x = 184 * scale; button_stopf.y = 124 * scale;
tomwalters@0 131 button_stopb.x = 134 * scale; button_stopb.y = 124 * scale;
tomwalters@0 132 button_skipf.x = 304 * scale; button_skipf.y = 124 * scale;
tomwalters@0 133 button_skipb.x = 254 * scale; button_skipb.y = 124 * scale;
tomwalters@0 134 button_faster.x = 372 * scale; button_faster.y = 124 * scale;
tomwalters@0 135 button_slower.x = 422 * scale; button_slower.y = 124 * scale;
tomwalters@0 136
tomwalters@0 137 button_firstframe.x = 10 * scale; button_firstframe.y = 174 * scale;
tomwalters@0 138 button_stepbb.x = 80 * scale; button_stepbb.y = 174 * scale;
tomwalters@0 139 button_stepb.x = 150 * scale; button_stepb.y = 174 * scale;
tomwalters@0 140 button_middle.x = 220 * scale; button_middle.y = 174 * scale;
tomwalters@0 141 button_stepf.x = 290 * scale; button_stepf.y = 174 * scale;
tomwalters@0 142 button_stepff.x = 360 * scale; button_stepff.y = 174 * scale;
tomwalters@0 143 button_lastframe.x = 430 * scale; button_lastframe.y = 174 * scale;
tomwalters@0 144
tomwalters@0 145 /* Button sizes: also in pixels */
tomwalters@0 146
tomwalters@0 147 button_quit.width = 60 * scale; button_quit.height = 25 * scale;
tomwalters@0 148 button_close.width = 60 * scale; button_close.height = 25 * scale;
tomwalters@0 149 button_animate.width = 100 * scale; button_animate.height = 60 * scale;
tomwalters@0 150 button_startf.width = 40 * scale; button_startf.height = 25 * scale;
tomwalters@0 151 button_startb.width = 40 * scale; button_startb.height = 25 * scale;
tomwalters@0 152 button_stopf.width = 40 * scale; button_stopf.height = 25 * scale;
tomwalters@0 153 button_stopb.width = 40 * scale; button_stopb.height = 25 * scale;
tomwalters@0 154 button_skipf.width = 40 * scale; button_skipf.height = 25 * scale;
tomwalters@0 155 button_skipb.width = 40 * scale; button_skipb.height = 25 * scale;
tomwalters@0 156 button_faster.width = 45 * scale; button_faster.height = 25 * scale;
tomwalters@0 157 button_slower.width = 45 * scale; button_slower.height = 25 * scale;
tomwalters@0 158 button_lastframe.width = 60 * scale; button_lastframe.height = 25 *scale;
tomwalters@0 159 button_firstframe.width = 60 * scale; button_firstframe.height = 25 *scale;
tomwalters@0 160 button_middle.width = 60 * scale; button_middle.height = 25 * scale;
tomwalters@0 161 button_stepf.width = 60 * scale; button_stepf.height = 25 * scale;
tomwalters@0 162 button_stepff.width = 60 * scale; button_stepff.height = 25 * scale;
tomwalters@0 163 button_stepb.width = 60 * scale; button_stepb.height = 25 * scale;
tomwalters@0 164 button_stepbb.width = 60 * scale; button_stepbb.height = 25 * scale;
tomwalters@0 165
tomwalters@0 166 /*------------------------------*/
tomwalters@0 167 /* make the things */
tomwalters@0 168
tomwalters@0 169 button_quit.win = create_button(button_quit.x, button_quit.y, \
tomwalters@0 170 button_quit.width, button_quit.height);
tomwalters@0 171 button_close.win = create_button(button_close.x, button_close.y, \
tomwalters@0 172 button_close.width, button_close.height);
tomwalters@0 173 button_animate.win = create_button(button_animate.x, button_animate.y, \
tomwalters@0 174 button_animate.width, button_animate.height);
tomwalters@0 175 button_startf.win = create_button(button_startf.x, button_startf.y, \
tomwalters@0 176 button_startf.width, button_startf.height);
tomwalters@0 177 button_startb.win = create_button(button_startb.x, button_startb.y, \
tomwalters@0 178 button_startb.width, button_startb.height);
tomwalters@0 179 button_stopf.win = create_button(button_stopf.x, button_stopf.y, \
tomwalters@0 180 button_stopf.width, button_stopf.height);
tomwalters@0 181 button_stopb.win = create_button(button_stopb.x, button_stopb.y, \
tomwalters@0 182 button_stopb.width, button_stopb.height);
tomwalters@0 183 button_skipf.win = create_button(button_skipf.x, button_skipf.y, \
tomwalters@0 184 button_skipf.width, button_skipf.height);
tomwalters@0 185 button_skipb.win = create_button(button_skipb.x, button_skipb.y, \
tomwalters@0 186 button_skipb.width, button_skipb.height);
tomwalters@0 187 button_faster.win = create_button(button_faster.x, button_faster.y, \
tomwalters@0 188 button_faster.width, button_faster.height);
tomwalters@0 189 button_slower.win = create_button(button_slower.x, button_slower.y, \
tomwalters@0 190 button_slower.width, button_slower.height);
tomwalters@0 191 button_lastframe.win =create_button(button_lastframe.x, button_lastframe.y,\
tomwalters@0 192 button_lastframe.width, button_lastframe.height);
tomwalters@0 193 button_firstframe.win=create_button(button_firstframe.x,button_firstframe.y,\
tomwalters@0 194 button_firstframe.width, button_firstframe.height);
tomwalters@0 195 button_middle.win =create_button(button_middle.x, button_middle.y, \
tomwalters@0 196 button_middle.width, button_middle.height);
tomwalters@0 197 button_stepf.win = create_button(button_stepf.x, button_stepf.y, \
tomwalters@0 198 button_stepf.width, button_stepf.height);
tomwalters@0 199 button_stepff.win = create_button(button_stepff.x, button_stepff.y, \
tomwalters@0 200 button_stepff.width, button_stepff.height);
tomwalters@0 201 button_stepb.win = create_button(button_stepb.x, button_stepb.y, \
tomwalters@0 202 button_stepb.width, button_stepb.height);
tomwalters@0 203 button_stepbb.win = create_button(button_stepbb.x, button_stepbb.y, \
tomwalters@0 204 button_stepbb.width, button_stepbb.height);
tomwalters@0 205
tomwalters@0 206 /*---------------------------*/
tomwalters@0 207 /* Info positions and sizes. */
tomwalters@0 208
tomwalters@0 209 info_speed.x = 370 * scale; info_speed.y = 94 * scale;
tomwalters@0 210 info_start.x = 10 * scale; info_start.y = 94 * scale;
tomwalters@0 211 info_stop.x = 130 * scale; info_stop.y = 94 * scale;
tomwalters@0 212 info_skip.x = 250 * scale; info_skip.y = 94 * scale;
tomwalters@0 213 info_frame.x = 500 * scale; info_frame.y = 174 * scale;
tomwalters@0 214 info_title.x = 100 * scale; info_title.y = 10 * scale;
tomwalters@0 215 info_freq.x = 100 * scale; info_freq.y = 44 * scale;
tomwalters@0 216 info_time.x = 275 * scale; info_time.y = 44 * scale;
tomwalters@0 217 info_frstep.x = 475 * scale; info_frstep.y = 44 * scale;
tomwalters@0 218
tomwalters@0 219 info_speed.width = 100 * scale; info_speed.height = 25 * scale;
tomwalters@0 220 info_start.width = 100 * scale; info_start.height = 25 * scale;
tomwalters@0 221 info_stop.width = 100 * scale; info_stop.height = 25 * scale;
tomwalters@0 222 info_skip.width = 100 * scale; info_skip.height = 25 * scale;
tomwalters@0 223 info_frame.width = 100 * scale; info_frame.height = 25 * scale;
tomwalters@0 224 info_title.width = 500 * scale; info_title.height = 25 * scale;
tomwalters@0 225 info_freq.width = 175 * scale; info_freq.height = 25 * scale;
tomwalters@0 226 info_time.width = 175 * scale; info_time.height = 25 * scale;
tomwalters@0 227 info_frstep.width = 115 * scale; info_frstep.height = 25 * scale;
tomwalters@0 228
tomwalters@0 229 info_speed.win = create_button(info_speed.x, info_speed.y, \
tomwalters@0 230 info_speed.width, info_speed.height);
tomwalters@0 231 info_start.win = create_button(info_start.x, info_start.y, \
tomwalters@0 232 info_start.width, info_start.height);
tomwalters@0 233 info_stop.win = create_button(info_stop.x, info_stop.y, \
tomwalters@0 234 info_stop.width, info_stop.height);
tomwalters@0 235 info_skip.win = create_button(info_skip.x, info_skip.y, \
tomwalters@0 236 info_skip.width, info_skip.height);
tomwalters@0 237 info_frame.win = create_button(info_frame.x, info_frame.y, \
tomwalters@0 238 info_frame.width, info_frame.height);
tomwalters@0 239 info_title.win = create_button(info_title.x, info_title.y, \
tomwalters@0 240 info_title.width, info_title.height);
tomwalters@0 241 info_freq.win = create_button(info_freq.x, info_freq.y, \
tomwalters@0 242 info_freq.width, info_freq.height);
tomwalters@0 243 info_time.win = create_button(info_time.x, info_time.y, \
tomwalters@0 244 info_time.width, info_time.height);
tomwalters@0 245 info_frstep.win = create_button(info_frstep.x, info_frstep.y, \
tomwalters@0 246 info_frstep.width, info_frstep.height);
tomwalters@0 247
tomwalters@0 248
tomwalters@0 249 /*------------------------------*/
tomwalters@0 250 /* Define the allowed inputs to the buttons.
tomwalters@0 251 */
tomwalters@0 252 XSelectInput(display, button_quit.win, ButtonPressMask );
tomwalters@0 253 XSelectInput(display, button_close.win, ButtonPressMask );
tomwalters@0 254 XSelectInput(display, button_animate.win, ButtonPressMask );
tomwalters@0 255 XSelectInput(display, button_startf.win, ButtonPressMask );
tomwalters@0 256 XSelectInput(display, button_startb.win, ButtonPressMask );
tomwalters@0 257 XSelectInput(display, button_stopf.win, ButtonPressMask );
tomwalters@0 258 XSelectInput(display, button_stopb.win, ButtonPressMask );
tomwalters@0 259 XSelectInput(display, button_skipf.win, ButtonPressMask );
tomwalters@0 260 XSelectInput(display, button_skipb.win, ButtonPressMask );
tomwalters@0 261 XSelectInput(display, button_faster.win, ButtonPressMask );
tomwalters@0 262 XSelectInput(display, button_slower.win, ButtonPressMask );
tomwalters@0 263 XSelectInput(display, button_lastframe.win, ButtonPressMask );
tomwalters@0 264 XSelectInput(display, button_firstframe.win, ButtonPressMask );
tomwalters@0 265 XSelectInput(display, button_middle.win, ButtonPressMask );
tomwalters@0 266 XSelectInput(display, button_stepf.win, ButtonPressMask );
tomwalters@0 267 XSelectInput(display, button_stepff.win, ButtonPressMask );
tomwalters@0 268 XSelectInput(display, button_stepb.win, ButtonPressMask );
tomwalters@0 269 XSelectInput(display, button_stepbb.win, ButtonPressMask );
tomwalters@0 270
tomwalters@0 271 XSelectInput(display, info_speed.win, ButtonPressMask);
tomwalters@0 272 XSelectInput(display, info_start.win, ButtonPressMask);
tomwalters@0 273 XSelectInput(display, info_stop.win, ButtonPressMask);
tomwalters@0 274 XSelectInput(display, info_skip.win, ButtonPressMask);
tomwalters@0 275 XSelectInput(display, info_frame.win, ButtonPressMask);
tomwalters@0 276 XSelectInput(display, info_title.win, ButtonPressMask);
tomwalters@0 277 XSelectInput(display, info_freq.win, ButtonPressMask);
tomwalters@0 278 XSelectInput(display, info_time.win, ButtonPressMask);
tomwalters@0 279 XSelectInput(display, info_frstep.win, ButtonPressMask);
tomwalters@0 280
tomwalters@0 281 /* Define the backgrounds. */
tomwalters@0 282
tomwalters@0 283 XSetWindowBackgroundPixmap(display, button_quit.win, stipple_pixmap);
tomwalters@0 284 XSetWindowBackgroundPixmap(display, button_close.win, stipple_pixmap);
tomwalters@0 285 XSetWindowBackgroundPixmap(display, button_animate.win, stipple_pixmap);
tomwalters@0 286 XSetWindowBackgroundPixmap(display, button_startf.win, stipple_pixmap);
tomwalters@0 287 XSetWindowBackgroundPixmap(display, button_startb.win, stipple_pixmap);
tomwalters@0 288 XSetWindowBackgroundPixmap(display, button_stopf.win, stipple_pixmap);
tomwalters@0 289 XSetWindowBackgroundPixmap(display, button_stopb.win, stipple_pixmap);
tomwalters@0 290 XSetWindowBackgroundPixmap(display, button_skipf.win, stipple_pixmap);
tomwalters@0 291 XSetWindowBackgroundPixmap(display, button_skipb.win, stipple_pixmap);
tomwalters@0 292 XSetWindowBackgroundPixmap(display, button_faster.win, stipple_pixmap);
tomwalters@0 293 XSetWindowBackgroundPixmap(display, button_slower.win, stipple_pixmap);
tomwalters@0 294 XSetWindowBackgroundPixmap(display, button_lastframe.win, stipple_pixmap);
tomwalters@0 295 XSetWindowBackgroundPixmap(display, button_firstframe.win, stipple_pixmap);
tomwalters@0 296 XSetWindowBackgroundPixmap(display, button_middle.win, stipple_pixmap);
tomwalters@0 297 XSetWindowBackgroundPixmap(display, button_stepf.win, stipple_pixmap);
tomwalters@0 298 XSetWindowBackgroundPixmap(display, button_stepff.win, stipple_pixmap);
tomwalters@0 299 XSetWindowBackgroundPixmap(display, button_stepb.win, stipple_pixmap);
tomwalters@0 300 XSetWindowBackgroundPixmap(display, button_stepbb.win, stipple_pixmap);
tomwalters@0 301
tomwalters@0 302 XSetWindowBackgroundPixmap(display, info_speed.win, stipple_pixmap);
tomwalters@0 303 XSetWindowBackgroundPixmap(display, info_start.win, stipple_pixmap);
tomwalters@0 304 XSetWindowBackgroundPixmap(display, info_stop.win, stipple_pixmap);
tomwalters@0 305 XSetWindowBackgroundPixmap(display, info_skip.win, stipple_pixmap);
tomwalters@0 306 XSetWindowBackgroundPixmap(display, info_frame.win, stipple_pixmap);
tomwalters@0 307 XSetWindowBackgroundPixmap(display, info_title.win, stipple_pixmap);
tomwalters@0 308 XSetWindowBackgroundPixmap(display, info_freq.win, stipple_pixmap);
tomwalters@0 309 XSetWindowBackgroundPixmap(display, info_time.win, stipple_pixmap);
tomwalters@0 310 XSetWindowBackgroundPixmap(display, info_frstep.win, stipple_pixmap);
tomwalters@0 311 }
tomwalters@0 312
tomwalters@0 313
tomwalters@0 314
tomwalters@0 315
tomwalters@0 316 /* The End */
tomwalters@0 317 /*------------------------------------------------------------------------*/
tomwalters@0 318 /*------------------------------------------------------------------------*/
tomwalters@0 319
tomwalters@0 320
tomwalters@0 321
tomwalters@0 322