Mercurial > hg > aim92
diff xaim/switch_axes.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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xaim/switch_axes.c Fri May 20 15:19:45 2011 +0100 @@ -0,0 +1,222 @@ +/* + Copyright (c) Applied Psychology Unit, Medical Research Council. 1993 + =========================================================================== + + Permission to use, copy, modify, and distribute this software without fee + is hereby granted for research purposes, provided that this copyright + notice appears in all copies and in all supporting documentation, and that + the software is not redistributed for any fee (except for a nominal + shipping charge). Anyone wanting to incorporate all or part of this + software in a commercial product must obtain a license from the Medical + Research Council. + + The MRC makes no representations about the suitability of this + software for any purpose. It is provided "as is" without express or + implied warranty. + + THE MRC DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING + ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL + THE A.P.U. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES + OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, + WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, + ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS + SOFTWARE. +*/ + +/* +* switch_axes.c +* ------------- +* 'switch' code for the axes (=cartoon image) window. +* +* M. Akeroyd. July 1993. version 1.10 +* Revisions: MAA: Christmas 1993. +*/ + + + +#include <X11/Xlib.h> +#include <X11/Xutil.h> +#include <X11/Xos.h> +#include <X11/Xatom.h> +#include <stdio.h> + +#include "xreview.h" + + + +/* General .................*/ + + +/* X ........................*/ + +extern Display *display; +extern int screen_num; +extern Screen *screen_ptr; + +extern toplevelWindow control; +extern toplevelWindow axes; +extern buttonWindow info_speed, info_frame; +extern XFontStruct font_info; + +extern XEvent report; +extern GC button_gc; + + +/* .ctn .....................*/ + +extern int frame; +extern int no_frames; + +extern int animate_start; +extern int animate_stop; +extern int animate_skip; + +extern long waittime_millisecs; + + +/* extras for the pcroy version */ +extern int animate_start; +extern int animate_stop; +extern int animate_skip; + +/*--------------------------------------------------------------------*/ +/*--------------------------------------------------------------------*/ + + + + + +void switch_axes() +{ + char tempstring[MAX_STRING_LENGTH]; + char buffer[20]; + int bufsize = 20; + int charcount; + XComposeStatus compose_X; + KeySym keysym_X; + + switch(report.type) { + +/*---------------------------------------------*/ + + case Expose: + if (report.xexpose.count != 0) + break; + + if ((axes.window_size == TOO_SMALL_X) || + (axes.window_size == TOO_BIG_X)) + break; + + drawimage(frame); + break; + +/*---------------------------------------------*/ + + case ConfigureNotify: + axes.width = report.xconfigure.width; + axes.height = report.xconfigure.height; + + /* No resizing allowed */ + axes.window_size = BIG_ENOUGH_X; + if ((axes.width < axes.size_hints.min_width) || \ + (axes.height < axes.size_hints.min_height)) + axes.window_size = TOO_SMALL_X; + if ((axes.width > axes.size_hints.max_width) || \ + (axes.height > axes.size_hints.max_height)) + axes.window_size = TOO_BIG_X; + break; + +/*---------------------------------------------*/ + + case ButtonPress: + + /* if button 1, animate */ + if (report.xbutton.button == Button1) { + animate_image(animate_start, animate_stop, animate_skip); + break;} + + /* if button 2, map control window */ + if (report.xbutton.button == Button2) { + XMapWindow(display, control.win); + break;} + + /* If button 3, quit. */ + if (report.xbutton.button == Button3) { + exit_xreview(); + } + + break; + +/*---------------------------------------------*/ + + case KeyPress: + + charcount = XLookupString(&report.xkey, buffer, bufsize, &keysym_X, &compose_X); + + if ((keysym_X == XK_space) || (keysym_X == XK_Return)) { + animate_image(animate_start, animate_stop, animate_skip); + break;} + + if ((keysym_X == XK_N) || (keysym_X == XK_n)) { + frame++; + if (frame > no_frames) + frame = no_frames; + drawimage(frame); + XClearWindow(display, info_frame.win); + sprintf(tempstring, "%i of %i", frame, no_frames); + drawtext(info_frame, button_gc, font_info, tempstring); + XFlush(display);} + + if ((keysym_X == XK_p) || (keysym_X == XK_p)) { + frame--; + if (frame < 1) + frame = 1; + drawimage(frame); + XClearWindow(display, info_frame.win); + sprintf(tempstring, "%i of %i", frame, no_frames); + drawtext(info_frame, button_gc, font_info, tempstring); + XFlush(display);} + + if ((keysym_X == XK_F)|| (keysym_X == XK_f)){ + waittime_millisecs = (long) waittime_millisecs / 2; +#ifndef HOST_LINUXPC + if (waittime_millisecs < 1) + waittime_millisecs = 1; +#endif + sprintf(tempstring, "Speed: %li", waittime_millisecs); + XClearWindow(display, info_speed.win); + drawtext(info_speed, button_gc, font_info, tempstring); + XFlush(display); + break;} + + if ((keysym_X == XK_S)|| (keysym_X == XK_s)){ +#ifndef HOST_LINUXPC + waittime_millisecs = (long) waittime_millisecs * 2; +#endif + sprintf(tempstring, "Speed: %li", waittime_millisecs); + XClearWindow(display, info_speed.win); + drawtext(info_speed, button_gc, font_info, tempstring); + XFlush(display); + break;} + + if ((keysym_X == XK_q) || (keysym_X == XK_Q)) { + exit_xreview(); } + + break; + +/*---------------------------------------------*/ + + default: + break; + + + } /* switch */ + +} + + + + +/* The End */ +/*--------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------*/