diff options
Diffstat (limited to 'src/graph/view2D/spadAction2d.c.pamphlet')
-rw-r--r-- | src/graph/view2D/spadAction2d.c.pamphlet | 320 |
1 files changed, 320 insertions, 0 deletions
diff --git a/src/graph/view2D/spadAction2d.c.pamphlet b/src/graph/view2D/spadAction2d.c.pamphlet new file mode 100644 index 00000000..28f3e749 --- /dev/null +++ b/src/graph/view2D/spadAction2d.c.pamphlet @@ -0,0 +1,320 @@ +\documentclass{article} +\usepackage{axiom} +\begin{document} +\title{\$SPAD/src/graph/view2D spadAction2d.c} +\author{The Axiom Team} +\maketitle +\begin{abstract} +\end{abstract} +\eject +\tableofcontents +\eject +\section{License} +<<license>>= +/* +Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + - Neither the name of The Numerical ALgorithms Group Ltd. nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER +OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +@ +<<*>>= +<<license>> + +#define _SPADACTION2D_C +#include "axiom-c-macros.h" +#include "useproto.h" + +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> + +#include "header2.h" + +#include "all_2d.H1" +#include "util.H1" + + +/****************************** + * int readViewman(info,size) * + ******************************/ + +int +#ifdef _NO_PROTO +readViewman(info,size) + void *info; + int size; +#else +readViewman(void * info,int size) +#endif +{ + int mold = 0; + + sprintf(errorStr,"%s %d %s","read of ",size, + " bytes from viewport manager\n"); + mold = check(read(0,info,size)); + return(mold); + +} + +/******************** + * int spadAction() * + ********************/ +extern int viewAloned; +int +#ifdef _NO_PROTO +spadAction() +#else +spadAction(void) +#endif +{ + int code,viewCommand; + float f1,f2; + int i1,i2,i3,viewGoAhead; + static int ack = 1; + + if (viewAloned==yes) { + close(0); + return(-1); + } + readViewman(&viewCommand,intSize); + + switch (viewCommand) { + + case hideControl2D: + readViewman(&i1,intSize); + if (i1) { /* show control panel */ + if (viewport->haveControl) XUnmapWindow(dsply,control->controlWindow); + putControlPanelSomewhere(someInt); + } else { /* turn off control panel */ + if (viewport->haveControl) { + viewport->haveControl = no; + XUnmapWindow(dsply,control->controlWindow); + } + } + break; + + case changeTitle: + readViewman(&i1,intSize); + readViewman(viewport->title,i1); + viewport->title[i1] = '\0'; + writeTitle(); + writeControlTitle(); + XFlush(dsply); + spadDraw=no; + break; + + case writeView: + readViewman(&i1,intSize); + readViewman(filename,i1); + filename[i1] = '\0'; + sprintf(errorStr,"writing of viewport data"); + i3 = 0; + readViewman(&i2,intSize); + while (i2) { + i3 = i3 | (1<<i2); + readViewman(&i2,intSize); + } + if (writeViewport(i3) < 0) + fprintf(stderr," Nothing was written\n"); + break; + + case closeAll2D: + code = check(write(Socket,&ack,intSize)); + goodbye(-1); + + case ps2D: + readViewman(&i1,intSize); + buttonAction(viewCommand); + break; + + case axesOnOff2D: + readViewman(&i1,intSize); + i1--; + readViewman(&i2,intSize); + graphStateArray[i1].axesOn = i2; + if (graphStateArray[i1].showing) spadDraw=yes; + break; + + case axesColor2D: + readViewman(&i1,intSize); + i1--; + readViewman(&i2,intSize); + graphStateArray[i1].axesColor = i2; + if (graphStateArray[i1].showing) spadDraw=yes; + break; + + case unitsOnOff2D: + readViewman(&i1,intSize); + i1--; + readViewman(&i2,intSize); + graphStateArray[i1].unitsOn = i2; + if (graphStateArray[i1].showing) spadDraw=yes; + break; + + case unitsColor2D: + readViewman(&i1,intSize); + i1--; + readViewman(&i2,intSize); + graphStateArray[i1].unitsColor = i2; + if (graphStateArray[i1].showing) spadDraw=yes; + break; + + case connectOnOff: + readViewman(&i1,intSize); + i1--; + readViewman(&i2,intSize); + graphStateArray[i1].connectOn = i2; + if (graphStateArray[i1].showing) spadDraw=yes; + break; + + case pointsOnOff: + readViewman(&i1,intSize); + i1--; + readViewman(&i2,intSize); + graphStateArray[i1].pointsOn = i2; + if (graphStateArray[i1].showing) spadDraw=yes; + break; + + case spline2D: + readViewman(&i1,intSize); + i1--; + readViewman(&i2,intSize); + graphStateArray[i1].splineOn = i2; + if (graphStateArray[i1].showing) spadDraw=yes; + break; + + case showing2D: + readViewman(&i1,intSize); + i1--; + readViewman(&i2,intSize); + /* simulate a button press to turn display number on/off */ + graphStateArray[i1].showing = !i2; + clickedOnGraph(i1,i1+graphStart); + break; + + case scale2D: + readViewman(&i1,intSize); + i1--; /* passed index is [1..9] but internal representation is [0..8] */ + readViewman(&f1,floatSize); + readViewman(&f2,floatSize); + graphStateArray[i1].scaleX = f1; + graphStateArray[i1].scaleY = f2; + if (graphStateArray[i1].scaleX > maxScale) + graphStateArray[i1].scaleX = maxScale; + else + if (graphStateArray[i1].scaleX < minScale) + graphStateArray[i1].scaleX = minScale; + if (graphStateArray[i1].scaleY > maxScale) + graphStateArray[i1].scaleY = maxScale; + else + if (graphStateArray[i1].scaleY < minScale) + graphStateArray[i1].scaleY = minScale; + if (graphStateArray[i1].showing) spadDraw=yes; + break; /* scale2D */ + + + case translate2D: + readViewman(&i1,intSize); + i1--; /* passed index is [1..9] but internal representation is [0..8] */ + readViewman(&f1,floatSize); + readViewman(&f2,floatSize); + graphStateArray[i1].centerX = f1; + graphStateArray[i1].centerY = f2; + if (graphStateArray[i1].centerX > maxDelta) + graphStateArray[i1].centerX = maxDelta; + else if (graphStateArray[i1].centerX < -maxDelta) + graphStateArray[i1].centerX = maxDelta; + if (graphStateArray[i1].centerY > maxDelta) + graphStateArray[i1].centerY = maxDelta; + else if (graphStateArray[i1].centerY < -maxDelta) + graphStateArray[i1].centerY = maxDelta; + if (graphStateArray[i1].showing) spadDraw=yes; + break; /* translate2D */ + + case moveViewport: + readViewman(&i1,intSize); + readViewman(&i2,intSize); + XMoveWindow(dsply,viewport->titleWindow,i1,i2); + XSync(dsply,False); + break; + + case resizeViewport: + readViewman(&i1,intSize); + readViewman(&i2,intSize); + XResizeWindow(dsply,viewport->titleWindow,i1,i2+titleHeight); + XResizeWindow(dsply,viewport->viewWindow,i1,i2); + spadDraw=yes; + break; + + case putGraph: + readViewman(&i1,intSize); /* key of graph to get */ + readViewman(&i2,intSize); /* slot to drop graph onto 0..8*/ + readViewman(&viewGoAhead,intSize); + if (viewGoAhead < 0) { + sprintf(control->message,"%s%d","Couldn't put into graph ",i2+1); + writeControlMessage(); + } else { + sprintf(control->message,"%s%d","Dropped onto graph ",i2+1); + writeControlMessage(); + freeGraph(i2); + graphArray[i2].key = i1; + getGraphFromViewman(i2); + /* simulate a button press to turn display number on and select on */ + /* need !yes since it will be inverted */ + graphStateArray[i2].selected = no; + graphStateArray[i2].connectOn = yes; + graphStateArray[i2].showing = !(graphStateArray[i2].showing); + clickedOnGraph(i2,i2+graphStart); + clickedOnGraphSelect(i2,i2+graphSelectStart); + } + break; + + case spadPressedAButton: + readViewman(&i1,intSize); + buttonAction(i1); + break; + + default: + return(-1); + } /* switch */ + + + ack++; + code = check(write(Socket,&ack,intSize)); + return(0); + +} + +@ +\eject +\begin{thebibliography}{99} +\bibitem{1} nothing +\end{thebibliography} +\end{document} |