do_movewin.c revision 533545b5
1264fa531Smrg/***************************************************************************** 2264fa531SmrgCopyright 1988, 1989 by Digital Equipment Corporation, Maynard, Massachusetts. 3264fa531Smrg 4264fa531Smrg All Rights Reserved 5264fa531Smrg 6264fa531SmrgPermission to use, copy, modify, and distribute this software and its 7264fa531Smrgdocumentation for any purpose and without fee is hereby granted, 8264fa531Smrgprovided that the above copyright notice appear in all copies and that 9264fa531Smrgboth that copyright notice and this permission notice appear in 10264fa531Smrgsupporting documentation, and that the name of Digital not be 11264fa531Smrgused in advertising or publicity pertaining to distribution of the 12264fa531Smrgsoftware without specific, written prior permission. 13264fa531Smrg 14264fa531SmrgDIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING 15264fa531SmrgALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL 16264fa531SmrgDIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR 17264fa531SmrgANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, 18264fa531SmrgWHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, 19264fa531SmrgARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS 20264fa531SmrgSOFTWARE. 21264fa531Smrg 22264fa531Smrg******************************************************************************/ 23264fa531Smrg 24264fa531Smrg#include "x11perf.h" 25264fa531Smrg 26264fa531Smrgstatic Window *children; 27264fa531Smrgstatic XPoint *positions; 28264fa531Smrgstatic Window cover; 29264fa531Smrgstatic int rows; 30264fa531Smrgstatic int x_offset, y_offset; /* Private global data for DoMoveWindows */ 31264fa531Smrgstatic int xmax, ymax; 32264fa531Smrgstatic int delta1; /* Private global data for DoResizeWindows */ 33264fa531Smrg 34264fa531Smrg#define STACK (4*(HEIGHT-10)/CHILDSIZE) 35264fa531Smrg 36264fa531Smrgint 37533545b5SmrgInitMoveWindows(XParms xp, Parms p, int64_t reps) 38264fa531Smrg{ 39264fa531Smrg int i = 0; 40264fa531Smrg 41264fa531Smrg rows = (p->objects + MAXCOLS - 1) / MAXCOLS; 42264fa531Smrg 43264fa531Smrg x_offset = 0; 44264fa531Smrg y_offset = 0; 45264fa531Smrg delta1 = 1; 46264fa531Smrg 47264fa531Smrg children = (Window *) malloc (p->objects*sizeof (Window)); 48264fa531Smrg positions = (XPoint *) malloc(p->objects*sizeof(XPoint)); 49264fa531Smrg 50264fa531Smrg xmax = (CHILDSIZE+CHILDSPACE) * (rows > 1 ? MAXCOLS : p->objects); 51264fa531Smrg ymax = rows * (CHILDSIZE+CHILDSPACE); 52264fa531Smrg 53264fa531Smrg for (i = 0; i != p->objects; i++) { 54264fa531Smrg positions[i].x = (CHILDSIZE+CHILDSPACE) * (i/rows) + CHILDSPACE/2; 55264fa531Smrg positions[i].y = (CHILDSIZE+CHILDSPACE) * (i%rows) + CHILDSPACE/2; 56264fa531Smrg children[i] = XCreateSimpleWindow(xp->d, xp->w, 57264fa531Smrg positions[i].x, positions[i].y, 58264fa531Smrg CHILDSIZE, CHILDSIZE, 0, xp->foreground, xp->foreground); 59264fa531Smrg } 60264fa531Smrg if (p->special) 61264fa531Smrg XMapSubwindows (xp->d, xp->w); 62264fa531Smrg return reps; 63264fa531Smrg} 64264fa531Smrg 65264fa531Smrgvoid 66533545b5SmrgDoMoveWindows(XParms xp, Parms p, int64_t reps) 67264fa531Smrg{ 68264fa531Smrg int i, j; 69264fa531Smrg 70264fa531Smrg for (i = 0; i != reps; i++) { 71264fa531Smrg x_offset += 1; 72264fa531Smrg y_offset += 3; 73264fa531Smrg if (y_offset + ymax > HEIGHT) 74264fa531Smrg y_offset = 0; 75264fa531Smrg if (x_offset + xmax > WIDTH) 76264fa531Smrg x_offset = 0; 77264fa531Smrg for (j = 0; j != p->objects; j++) { 78264fa531Smrg XMoveWindow(xp->d, children[j], 79264fa531Smrg positions[j].x + x_offset, positions[j].y + y_offset); 80264fa531Smrg } 81264fa531Smrg CheckAbort (); 82264fa531Smrg } 83264fa531Smrg} 84264fa531Smrg 85264fa531Smrgvoid 86264fa531SmrgEndMoveWindows(XParms xp, Parms p) 87264fa531Smrg{ 88264fa531Smrg free(children); 89264fa531Smrg free(positions); 90264fa531Smrg} 91264fa531Smrg 92264fa531Smrgvoid 93533545b5SmrgDoResizeWindows(XParms xp, Parms p, int64_t reps) 94264fa531Smrg{ 95264fa531Smrg int i, j, delta2; 96264fa531Smrg 97264fa531Smrg for (i = 0; i != reps; i++) { 98264fa531Smrg delta1 = -delta1; 99264fa531Smrg delta2 = delta1; 100264fa531Smrg for (j = 0; j != p->objects; j++) { 101264fa531Smrg delta2 = -delta2; 102264fa531Smrg XResizeWindow(xp->d, children[j], 103264fa531Smrg CHILDSIZE+delta2, CHILDSIZE-delta2); 104264fa531Smrg } 105264fa531Smrg CheckAbort (); 106264fa531Smrg } 107264fa531Smrg} 108264fa531Smrg 109264fa531Smrgint 110533545b5SmrgInitCircWindows(XParms xp, Parms p, int64_t reps) 111264fa531Smrg{ 112264fa531Smrg int i; 113264fa531Smrg int pos; 114264fa531Smrg int color; 115264fa531Smrg 116264fa531Smrg children = (Window *) malloc (p->objects * sizeof (Window)); 117264fa531Smrg for (i = 0; i != p->objects; i++) { 118264fa531Smrg pos = i % STACK; 119264fa531Smrg color = (i & 1 ? xp->foreground : xp->background); 120264fa531Smrg children[i] = XCreateSimpleWindow (xp->d, xp->w, 121264fa531Smrg pos*CHILDSIZE/4 + (i/STACK)*2*CHILDSIZE, pos*CHILDSIZE/4, 122264fa531Smrg CHILDSIZE, CHILDSIZE, 0, color, color); 123264fa531Smrg } 124264fa531Smrg if (p->special) 125264fa531Smrg XMapSubwindows (xp->d, xp->w); 126264fa531Smrg return reps; 127264fa531Smrg} 128264fa531Smrg 129264fa531Smrgvoid 130533545b5SmrgDoCircWindows(XParms xp, Parms p, int64_t reps) 131264fa531Smrg{ 132264fa531Smrg int i, j; 133264fa531Smrg 134264fa531Smrg for (i = 0; i != reps; i++) 135264fa531Smrg { 136264fa531Smrg for (j = 0; j != p->objects; j++) 137264fa531Smrg XCirculateSubwindows (xp->d, xp->w, RaiseLowest); 138264fa531Smrg CheckAbort (); 139264fa531Smrg } 140264fa531Smrg} 141264fa531Smrg 142264fa531Smrgvoid 143264fa531SmrgEndCircWindows(XParms xp, Parms p) 144264fa531Smrg{ 145264fa531Smrg free(children); 146264fa531Smrg} 147264fa531Smrg 148264fa531Smrg 149264fa531Smrgint 150533545b5SmrgInitMoveTree(XParms xp, Parms p, int64_t reps) 151264fa531Smrg{ 152264fa531Smrg int i = 0; 153264fa531Smrg 154264fa531Smrg rows = (p->objects + MAXCOLS - 1) / MAXCOLS; 155264fa531Smrg 156264fa531Smrg x_offset = 0; 157264fa531Smrg y_offset = 0; 158264fa531Smrg delta1 = 1; 159264fa531Smrg 160264fa531Smrg children = (Window *) malloc (p->objects*sizeof (Window)); 161264fa531Smrg positions = (XPoint *) malloc(p->objects*sizeof(XPoint)); 162264fa531Smrg 163264fa531Smrg xmax = (CHILDSIZE+CHILDSPACE) * (rows > 1 ? MAXCOLS : p->objects); 164264fa531Smrg ymax = rows * (CHILDSIZE+CHILDSPACE); 165264fa531Smrg 166264fa531Smrg cover = XCreateSimpleWindow(xp->d, xp->w, 167264fa531Smrg 0, 0, xmax, ymax, 0, 168264fa531Smrg xp->background, xp->background); 169264fa531Smrg 170264fa531Smrg for (i = 0; i != p->objects; i++) { 171264fa531Smrg positions[i].x = (CHILDSIZE+CHILDSPACE) * (i/rows) + CHILDSPACE/2; 172264fa531Smrg positions[i].y = (CHILDSIZE+CHILDSPACE) * (i%rows) + CHILDSPACE/2; 173264fa531Smrg children[i] = XCreateSimpleWindow(xp->d, cover, 174264fa531Smrg positions[i].x, positions[i].y, 175264fa531Smrg CHILDSIZE, CHILDSIZE, 0, xp->foreground, xp->foreground); 176264fa531Smrg } 177264fa531Smrg XMapSubwindows (xp->d, cover); 178264fa531Smrg XMapWindow (xp->d, cover); 179264fa531Smrg return reps; 180264fa531Smrg} 181264fa531Smrg 182264fa531Smrgvoid 183533545b5SmrgDoMoveTree(XParms xp, Parms p, int64_t reps) 184264fa531Smrg{ 185264fa531Smrg int i; 186264fa531Smrg 187264fa531Smrg for (i = 0; i != reps; i++) { 188264fa531Smrg x_offset += 1; 189264fa531Smrg y_offset += 3; 190264fa531Smrg if (y_offset + ymax > HEIGHT) 191264fa531Smrg y_offset = 0; 192264fa531Smrg if (x_offset + xmax > WIDTH) 193264fa531Smrg x_offset = 0; 194264fa531Smrg XMoveWindow(xp->d, cover, x_offset, y_offset); 195264fa531Smrg CheckAbort (); 196264fa531Smrg } 197264fa531Smrg} 198264fa531Smrg 199264fa531Smrgvoid 200264fa531SmrgEndMoveTree(XParms xp, Parms p) 201264fa531Smrg{ 202264fa531Smrg XDestroyWindow(xp->d, cover); 203264fa531Smrg free(children); 204264fa531Smrg free(positions); 205264fa531Smrg} 206