diff --git a/books/bookvol8.pamphlet b/books/bookvol8.pamphlet index 3cf1cd5..fc2404c 100644 --- a/books/bookvol8.pamphlet +++ b/books/bookvol8.pamphlet @@ -1845,6 +1845,14 @@ extern int viewOkay; extern viewManager *viewports; extern int viewType; +int readViewport(viewManager *viewPort,void *info,int size); +void discardGraph(graphStruct *theGraph); +void sendGraphToView2D(int i,int there,viewManager *viewport, + graphStateStruct *doGraphStateArray); +void makeView2DFromSpadData(view2DStruct *viewdata, + graphStateStruct graphState[]); +void makeView3DFromSpadData(view3DStruct *viewdata,int typeOfViewport); + /************* global variables **************/ @@ -2975,7 +2983,7 @@ int main(void) { } @ -\subsection{viewman Makefile} +\section{viewman Makefile} <>= BOOK=${SPD}/books/bookvol8.pamphlet MIDINT= ${INT}/graph/viewman @@ -3004,185 +3012,94 @@ ${MIDOBJ}/viewman.o: ${SRC}/include/com.h ${BOOK} @ \chapter{viewalone} \label{viewalone} -The TESTFILE is created in the mnt directory to provide an example -file to use for viewalone. The parabola example is detailed in the -chapter on Graphics File Formats. The directory parabola.view will -contain the data and graph0 files and is autogenerated from the -documentation in that chapter. -\section{viewalone Makefile} -<>= -BOOK=${SPD}/books/bookvol8.pamphlet -MIDINT= ${INT}/graph/viewalone -MIDOBJ= ${OBJ}/${SYS}/graph/viewalone -OUT= ${MNT}/${SYS}/bin -TESTFILE=${MNT}/${SYS}/graph/parabola.view - -CFLAGS = ${CCF} -I${SRC}/include -LDFLAGS= ${LDF} - -OBJS= ${MIDOBJ}/viewalone.o ${MIDOBJ}/spooncomp.o ${MIDOBJ}/spoon2d.o - -all: ${OUT}/viewalone ${TESTFILE} - @echo 12 finished viewalone from ${BOOK} +<>= +#include +#include +#include +#include +<> +<> +<> +<> +#include "util.h1" -${OUT}/viewalone: ${OBJS} ${OBJ}/${SYS}/lib/util.o - @ echo 1 linking viewalone - @ ${CC} $(OBJS) ${OBJ}/${SYS}/lib/util.o \ - -o ${OUT}/viewalone ${LDFLAGS} -lX11 + /* Viewport Commands */ +#define makeViewport -1 +#define makeGraph -1 -${MIDOBJ}/viewalone.o: ${BOOK} - @ echo 3 making ${MIDOBJ}/viewalone.o from ${BOOK} - @ ( cd ${MIDINT} ; \ - ${TANGLE} -R"viewalone/viewalone.c" ${BOOK} >viewalone.c ) - @ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/viewalone.c ) + /* Assorted Junk */ +#define check(code) checker(code,__LINE__,"") +#define components +#define maxConnect 40 +#define intSize sizeof(int) +#define floatSize sizeof(float) +#define no 0 +#define spadActionMode +#define yes 1 -${MIDOBJ}/spooncomp.o: ${BOOK} - @ echo 6 making ${MIDOBJ}/spooncomp.o from ${BOOK} - @ ( cd ${MIDINT} ; \ - ${TANGLE} -R"viewalone/spooncomp.c" ${BOOK} >spooncomp.c ) - @ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/spooncomp.c ) +extern viewManager viewP; +extern view3DStruct doView3D; +extern view2DStruct doView2D; +extern graphStruct graphArray[maxGraphs]; +extern graphStateStruct graphStateArray[maxGraphs]; +extern graphStateStruct graphStateBackupArray[maxGraphs]; +extern tubeModel doViewTube; +extern int viewType; +extern int filedes; +extern int ack; +extern char errorStr[80]; +extern int viewOkay; +extern int viewError; +extern FILE *viewFile; +extern char filename[256]; +extern char pathname[256]; -${MIDOBJ}/spoon2d.o: ${BOOK} - @ echo 9 making ${MIDOBJ}/spoon2d.o from ${BOOK} - @ ( cd ${MIDINT} ; \ - ${TANGLE} -R"viewalone/spoon2d.c" ${BOOK} >spoon2d.c ) - @ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/spoon2d.c ) +/************* global variables **************/ -${TESTFILE}: ${BOOK} - @ echo 10 making ${TESTFILE} from ${BOOK} - @ mkdir -p ${TESTFILE} - @ (cd ${TESTFILE} ; \ - ${TANGLE} -R"parabola.view/data" ${BOOK} >data ; \ - ${TANGLE} -R"parabola.view/graph0" ${BOOK} >graph0 ) +viewManager viewP; /* note that in viewman, this is called viewports */ -@ -\section{spoon2d.c} -<>= -#define _SPOON2D_C +/* 3D stuff */ +view3DStruct doView3D; -#include -#include -#include +/* 2D stuff */ +view2DStruct doView2D; +graphStruct graphArray[maxGraphs]; +graphStateStruct graphStateArray[maxGraphs]; -<> +/* tube stuff */ +tubeModel doViewTube; +int ack; +int filedes; +char filename[256]; +char errorStr[80]; +char pathname[256]; +int viewError = -1; +FILE *viewFile; +int viewOkay = 0; +int viewType; -#include "util.h1" +/* extern void spoonView2D(void); extern void makeView2DFromFileData(view2DStruct * ); extern void sendGraphToView2D(int , int , viewManager * ); extern void spoonView3D(int ); extern void makeView3DFromFileData(int ); extern int main(int , char * []); +*/ - -/* #define huhDEBUG */ - -/* #define spoonDEBUG */ - -void -spoonView2D(void) -{ - - int i,code,pipe0[2],pipe1[2],there; - char envAXIOM[100],runView[100]; - - sprintf(errorStr,"%s","creating pipes"); - check(pipe(pipe0)); - check(pipe(pipe1)); - switch(fork()) { - - case -1: - fprintf(stderr,"Cannot create a new process - "); - fprintf(stderr,"probably have too many things running already.\n"); - exit(-1); - - case 0: - /************ - * Child * - ************/ - printf("(spoon2d child) mapping of pipes to standard I/O for view2d\n"); - sprintf(errorStr,"%s","(viewalone) mapping of pipes to standard I/O for view2d"); - check(dup2(pipe0[0],0)); - check(dup2(pipe1[1],1)); - close(pipe0[0]); - close(pipe0[1]); - close(pipe1[0]); - close(pipe1[1]); - printf("(spoon2d child) start the TwoDimensionalViewport process\n"); - sprintf(errorStr,"%s","(viewalone) execution of the TwoDimensionalViewport process"); - sprintf(envAXIOM,"%s",getenv("AXIOM")); - sprintf(runView,"%s%s",envAXIOM,"/lib/view2d"); - check(execl(runView,runView,NULL)); - fprintf(stderr,"Could not execute view2d! Check that view2d is on your path variable.\n"); - exit(-1); - - default: - /************* - * Parent * - *************/ - - viewP.viewType = view2DType; - - /* set up pipes to child process */ - close(pipe0[0]); - close(pipe1[1]); - viewP.viewIn = pipe1[0]; - viewP.viewOut = pipe0[1]; - printf("(spoon2d parent) pipes created\n"); - if (viewP.viewIn <0) { - fprintf(stderr," Could not connect from Viewport manager to viewport process. Try again.\n"); - return; - } else { - code = read(viewP.viewIn,&ack,intSize); - if (code < 0) { - fprintf(stderr," Could not connect from Viewport manager to viewport process. Try again.\n"); - return; - } - } - printf("(spoon2d parent) making View2D data\n"); - makeView2DFromFileData(&doView2D); - - /* tell child it is to be a stand alone program */ - i = yes; - fprintf(stderr," Transmitting data to viewport...\n"); - write(viewP.viewOut,&i,intSize); - - write(viewP.viewOut,&doView2D,sizeof(view2DStruct)); - i = strlen(doView2D.title)+1; - write(viewP.viewOut,&i,intSize); /* tell the length of the title to child */ - write(viewP.viewOut,doView2D.title,i); /* tell the title to the child, child */ - for (i=0; i>= +void sendGraphToView2D(int i,int there,viewManager *viewP) { graphStruct *gPtr; pointListStruct *llPtr; pointStruct *p; int j,k; printf("(spoon2d sendGraphToView2D) i=%d there=%d\n",i,there); if (there) { - gPtr = &(graphArray[i]); printf("(spoon2d sendGraphToView2D) graph %d is there\n",i); write(viewP->viewOut,&(gPtr->xmin),floatSize); @@ -3198,7 +3115,6 @@ sendGraphToView2D(int i,int there,viewManager *viewP) write(viewP->viewOut,&(gPtr->originX),floatSize); write(viewP->viewOut,&(gPtr->originY),floatSize); write(viewP->viewOut,&(gPtr->numberOfLists),intSize); - llPtr = gPtr->listOfListsOfPoints; for (j=0; j<(gPtr->numberOfLists); j++) { write(viewP->viewOut,&(llPtr->numberOfPoints),intSize); @@ -3215,7 +3131,6 @@ sendGraphToView2D(int i,int there,viewManager *viewP) write(viewP->viewOut,&(llPtr->pointSize),intSize); llPtr++; } /* for j in list of lists of points */ - /* a state is defined for a graph if it is there */ write(viewP->viewOut,&(graphStateArray[i].scaleX),floatSize); write(viewP->viewOut,&(graphStateArray[i].scaleY),floatSize); @@ -3229,16 +3144,15 @@ sendGraphToView2D(int i,int there,viewManager *viewP) write(viewP->viewOut,&(graphStateArray[i].unitsOn),intSize); write(viewP->viewOut,&(graphStateArray[i].unitsColor),intSize); write(viewP->viewOut,&(graphStateArray[i].showing),intSize); - } /* if graph is there */ - } - -void -makeView2DFromFileData(view2DStruct *doView2D) -{ - +@ +\subsection{makeView2DFromFileData} +\index{viewalone!makeView2DFromFileData} +\index{makeView2DFromFileData viewalone} +<>= +void makeView2DFromFileData(view2DStruct *doView2D) { int i,j,k; char title[256]; FILE *graphFile; @@ -3292,9 +3206,11 @@ makeView2DFromFileData(view2DStruct *doView2D) &(graphStateArray[i].axesColor), &(graphStateArray[i].unitsOn), &(graphStateArray[i].unitsColor)); - printf("(spoon2d) pointsOn=%d connectOn=%d splineOn=%d axesOn=%d axesColor=%d unitsOn=%d unitsColor=%d\n", + printf("(spoon2d) pointsOn=%d connectOn=%d splineOn=%d\n", graphStateArray[i].pointsOn,graphStateArray[i].connectOn, - graphStateArray[i].splineOn,graphStateArray[i].axesOn, + graphStateArray[i].splineOn); + printf("(spoon2d) axesOn=%d axesColor=%d unitsOn=%d unitsColor=%d\n", + graphStateArray[i].axesOn, graphStateArray[i].axesColor,graphStateArray[i].unitsOn, graphStateArray[i].unitsColor); fscanf(viewFile,"%d %d\n", @@ -3349,7 +3265,8 @@ makeView2DFromFileData(view2DStruct *doView2D) if (!(aList = (pointListStruct *)malloc(graphArray[i].numberOfLists * sizeof(pointListStruct)))) { - fprintf(stderr,"viewalone: Fatal Error>> Out of memory trying to receive a graph.\n"); + fprintf(stderr,"viewalone: Fatal Error>> Out of memory trying\n"); + fprintf(stderr," to receive a graph.\n"); exit(-1); } graphArray[i].listOfListsOfPoints = aList; @@ -3368,7 +3285,8 @@ makeView2DFromFileData(view2DStruct *doView2D) aList->pointColor,aList->lineColor,aList->pointSize); if (!(aPoint = (pointStruct *)malloc(aList->numberOfPoints * sizeof(pointStruct)))) { - fprintf(stderr,"viewalone: Fatal Error>> Out of memory trying to receive a graph.\n"); + fprintf(stderr,"viewalone: Fatal Error>> Out of memory trying\n"); + fprintf(stderr," to receive a graph.\n"); exit(-1); } aList->listOfPoints = aPoint; /** point to current point list **/ @@ -3389,157 +3307,19 @@ makeView2DFromFileData(view2DStruct *doView2D) } /* if graph.key */ } /* for i */ } /* makeView2DFromFileData */ -@ -\section{spooncomp.c} -<>= -#define _SPOONCOMP_C - -#include -#include -#include - -<> -#define spadActionMode -/* define spadEventMode */ -#define components - -#include "util.h1" -extern void spoonView2D(void); -extern void makeView2DFromFileData(view2DStruct * ); -extern void sendGraphToView2D(int , int , viewManager * ); -extern void spoonView3D(int ); -extern void makeView3DFromFileData(int ); -extern int main(int , char * []); - - - - -/* This file forks a child process and exits the parent. It - has the same general form as ../viewman/funView3D() and so - changes there may require similar changes here. */ - -void -spoonView3D(int type) -{ - - int i,j,k,code,pipe0[2],pipe1[2]; - char envAXIOM[100],runView[100]; - LLPoint *anLLPoint; - LPoint *anLPoint; - int *anIndex; - - sprintf(errorStr,"%s","creating pipes"); - check(pipe(pipe0)); - check(pipe(pipe1)); - switch(fork()) { - case -1: - fprintf(stderr,"can't create a child process\n"); - fprintf(stderr,"you may have too many processes running\n"); - exit(-1); - case 0: - /* Child */ - sprintf(errorStr,"%s", - "(viewalone) mapping of pipes to standard I/O for view3d"); - check(dup2(pipe0[0],0)); - check(dup2(pipe1[1],1)); - close(pipe0[0]); - close(pipe0[1]); - close(pipe1[0]); - close(pipe1[1]); - - sprintf(errorStr,"%s", - "(viewalone) execution of the ThreeDimensionalViewport process"); - sprintf(envAXIOM,"%s",getenv("AXIOM")); - sprintf(runView,"%s%s",envAXIOM,"/lib/view3d"); - check(execl(runView,runView,NULL)); - fprintf(stderr,"Could not execute view3d!\n"); - exit(-1); - default: - /* Parent */ - - viewP.viewType = type; - - /* set up pipes to child process */ - close(pipe0[0]); - close(pipe1[1]); - viewP.viewIn = pipe1[0]; - viewP.viewOut = pipe0[1]; - - if (viewP.viewIn <0) { - fprintf(stderr, - "can't set up pipes to viewport process. Try again.\n"); - return; - } else { - code = read(viewP.viewIn,&ack,intSize); - if (code < 0) { - fprintf(stderr,"can't read from viewport process pipe. Try again.\n"); - return; - } - } - - makeView3DFromFileData(type); - /* tell child it is to be a stand alone program */ - i = yes; - fprintf(stderr," Transmitting data to viewport...\n"); - write(viewP.viewOut,&i,intSize); - write(viewP.viewOut,&doView3D,sizeof(view3DStruct)); - i = strlen(doView3D.title)+1; - write(viewP.viewOut,&i,intSize); /* tell the length of - the title to child */ - write(viewP.viewOut,doView3D.title,i); /* tell the title - to the child, child */ - write(viewP.viewOut,&(doView3D.lightVec[0]),floatSize); - write(viewP.viewOut,&(doView3D.lightVec[1]),floatSize); - write(viewP.viewOut,&(doView3D.lightVec[2]),floatSize); - - write(viewP.viewOut,&(doView3D.numOfPoints),intSize); - for (i=0; ix),floatSize); - write(viewP.viewOut,&(refPt(doView3D,i)->y),floatSize); - write(viewP.viewOut,&(refPt(doView3D,i)->z),floatSize); - write(viewP.viewOut,&(refPt(doView3D,i)->c),floatSize); - } - - /* send generalized 3D components */ - write(viewP.viewOut,&(doView3D.lllp.numOfComponents),intSize); - anLLPoint = doView3D.lllp.llp; - for (i=0; iprop.closed),intSize); - write(viewP.viewOut,&(anLLPoint->prop.solid),intSize); - write(viewP.viewOut,&(anLLPoint->numOfLists),intSize); - anLPoint = anLLPoint->lp; - for (j=0; jnumOfLists; j++,anLPoint++) { - write(viewP.viewOut,&(anLPoint->prop.closed),intSize); - write(viewP.viewOut,&(anLPoint->prop.solid),intSize); - write(viewP.viewOut,&(anLPoint->numOfPoints),intSize); - anIndex = anLPoint->indices; - for (k=0; knumOfPoints; k++,anIndex++) - write(viewP.viewOut,anIndex,intSize); - } /* for LPoints in LLPoints (j) */ - } /* for LLPoints in LLLPoints (i) */ - fprintf(stderr," Done.\n"); - - /*** get acknowledge from viewport */ - code = read(viewP.viewIn,&(viewP.viewWindow),sizeof(Window)); - sleep(1); /* wait a second...*/ - exit(0); - - } /* switch */ - -} /* spoonView3D() */ - -void -makeView3DFromFileData(int type) -{ - +@ +\subsection{makeView3DFromFileData} +\index{viewalone!makeView3DFromFileData} +\index{makeView3DFromFileData viewalone} +<>= +void makeView3DFromFileData(int type) { int i,j,k; char title[256]; LLPoint *anLLPoint; LPoint *anLPoint; viewTriple *aPoint; int *anIndex; - /* fscanf(doView3D,""); */ /* read in the view3DStruct stuff */ /* &view3DType already read */ @@ -3551,7 +3331,6 @@ makeView3DFromFileData(int type) &(doView3D.ymax), &(doView3D.zmin), &(doView3D.zmax)); - fgets(title,256,viewFile); if (!(doView3D.title = (char *)malloc((strlen(title)+1) * sizeof(char)))) { @@ -3561,7 +3340,6 @@ makeView3DFromFileData(int type) sprintf(doView3D.title,"%s",title); /* put in a null terminator over the newline that the fgets reads */ doView3D.title[strlen(doView3D.title)-1] = '\0'; - fscanf(viewFile,"%f %f %f %f %f %f %f %f\n", &(doView3D.deltaX), &(doView3D.deltaY), @@ -3571,7 +3349,6 @@ makeView3DFromFileData(int type) &(doView3D.scaleZ), &(doView3D.theta), &(doView3D.phi)); - fscanf(viewFile,"%d %d %d %d\n", &(doView3D.vX), &(doView3D.vY), @@ -3593,9 +3370,7 @@ makeView3DFromFileData(int type) fscanf(viewFile,"%d %f\n", &(doView3D.perspective), &(doView3D.eyeDistance)); - /* get generalized 3D components */ - fscanf(viewFile,"%d\n", &(doView3D.numOfPoints)); aPoint = doView3D.points = (viewTriple *)malloc(doView3D.numOfPoints* @@ -3631,67 +3406,208 @@ makeView3DFromFileData(int type) } /* for points in LPoints (k) */ } /* for LPoints in LLPoints (j) */ } /* for LLPoints in LLLPoints (i) */ - fclose(viewFile); doView3D.scaleDown = no ; } @ -\section{viewalone.c} -<>= -#define _VIEWALONE_C - -#include -<> - -extern void spoonView2D(void); -extern void makeView2DFromFileData(view2DStruct * ); -extern void sendGraphToView2D(int , int , viewManager * ); -extern void spoonView3D(int ); -extern void makeView3DFromFileData(int ); -extern int main(int , char * []); - - -/************* global variables **************/ - -viewManager viewP; /* note that in viewman, this is called viewports */ - -/* 3D stuff */ -view3DStruct doView3D; - -/* 2D stuff */ -view2DStruct doView2D; -graphStruct graphArray[maxGraphs]; -graphStateStruct graphStateArray[maxGraphs]; - -/* tube stuff */ -tubeModel doViewTube; - -int viewType; -int filedes,ack; - -char errorStr[80]; - - -int viewOkay = 0; -int viewError = -1; - -FILE *viewFile; -char filename[256]; -char pathname[256]; +\subsection{spoonView2D} +\index{viewalone!spoonView2D} +\index{spoonView2D viewalone} +<>= +void spoonView2D(void) { + int i,code,pipe0[2],pipe1[2],there; + char envAXIOM[100],runView[100]; + sprintf(errorStr,"%s","creating pipes"); + check(pipe(pipe0)); + check(pipe(pipe1)); + switch(fork()) { + case -1: + fprintf(stderr,"Cannot create a new process - "); + fprintf(stderr,"probably have too many things running already.\n"); + exit(-1); + case 0: + /************ + * Child * + ************/ + printf("(spoon2d child) mapping of pipes to standard I/O for view2d\n"); + sprintf(errorStr,"%s", + "(viewalone) mapping of pipes to standard I/O for view2d"); + check(dup2(pipe0[0],0)); + check(dup2(pipe1[1],1)); + close(pipe0[0]); + close(pipe0[1]); + close(pipe1[0]); + close(pipe1[1]); + printf("(spoon2d child) start the TwoDimensionalViewport process\n"); + sprintf(errorStr,"%s", + "(viewalone) execution of the TwoDimensionalViewport process"); + sprintf(envAXIOM,"%s",getenv("AXIOM")); + sprintf(runView,"%s%s",envAXIOM,"/lib/view2d"); + check(execl(runView,runView,NULL)); + fprintf(stderr, + "Could not execute view2d! Check that view2d is on your path.\n"); + exit(-1); + default: + /************* + * Parent * + *************/ + viewP.viewType = view2DType; + /* set up pipes to child process */ + close(pipe0[0]); + close(pipe1[1]); + viewP.viewIn = pipe1[0]; + viewP.viewOut = pipe0[1]; + printf("(spoon2d parent) pipes created\n"); + if (viewP.viewIn <0) { + fprintf(stderr,"Could not connect from Viewport manager to viewport\n"); + fprintf(stderr," process. Try again.\n"); + return; + } else { + code = read(viewP.viewIn,&ack,intSize); + if (code < 0) { + fprintf(stderr,"Could not connect from Viewport manager to viewport\n"); + fprintf(stderr," process. Try again.\n"); + return; + } + } + printf("(spoon2d parent) making View2D data\n"); + makeView2DFromFileData(&doView2D); + /* tell child it is to be a stand alone program */ + i = yes; + fprintf(stderr," Transmitting data to viewport...\n"); + write(viewP.viewOut,&i,intSize); + write(viewP.viewOut,&doView2D,sizeof(view2DStruct)); + i = strlen(doView2D.title)+1; + write(viewP.viewOut,&i,intSize); /* tell the length of title to child */ + write(viewP.viewOut,doView2D.title,i); /* tell the title to child */ + for (i=0; i>= +void spoonView3D(int type) { + int i,j,k,code,pipe0[2],pipe1[2]; + char envAXIOM[100],runView[100]; + LLPoint *anLLPoint; + LPoint *anLPoint; + int *anIndex; + sprintf(errorStr,"%s","creating pipes"); + check(pipe(pipe0)); + check(pipe(pipe1)); + switch(fork()) { + case -1: + fprintf(stderr,"can't create a child process\n"); + fprintf(stderr,"you may have too many processes running\n"); + exit(-1); + case 0: + /* Child */ + sprintf(errorStr,"%s", + "(viewalone) mapping of pipes to standard I/O for view3d"); + check(dup2(pipe0[0],0)); + check(dup2(pipe1[1],1)); + close(pipe0[0]); + close(pipe0[1]); + close(pipe1[0]); + close(pipe1[1]); + sprintf(errorStr,"%s", + "(viewalone) execution of the ThreeDimensionalViewport process"); + sprintf(envAXIOM,"%s",getenv("AXIOM")); + sprintf(runView,"%s%s",envAXIOM,"/lib/view3d"); + check(execl(runView,runView,NULL)); + fprintf(stderr,"Could not execute view3d!\n"); + exit(-1); + default: + /* Parent */ + viewP.viewType = type; + /* set up pipes to child process */ + close(pipe0[0]); + close(pipe1[1]); + viewP.viewIn = pipe1[0]; + viewP.viewOut = pipe0[1]; + if (viewP.viewIn <0) { + fprintf(stderr, + "can't set up pipes to viewport process. Try again.\n"); + return; + } else { + code = read(viewP.viewIn,&ack,intSize); + if (code < 0) { + fprintf(stderr,"can't read from viewport process pipe. Try again.\n"); + return; + } + } + makeView3DFromFileData(type); + /* tell child it is to be a stand alone program */ + i = yes; + fprintf(stderr," Transmitting data to viewport...\n"); + write(viewP.viewOut,&i,intSize); + write(viewP.viewOut,&doView3D,sizeof(view3DStruct)); + i = strlen(doView3D.title)+1; + write(viewP.viewOut,&i,intSize); /* tell the length of title to child */ + write(viewP.viewOut,doView3D.title,i); /* tell the title to */ + write(viewP.viewOut,&(doView3D.lightVec[0]),floatSize); + write(viewP.viewOut,&(doView3D.lightVec[1]),floatSize); + write(viewP.viewOut,&(doView3D.lightVec[2]),floatSize); + write(viewP.viewOut,&(doView3D.numOfPoints),intSize); + for (i=0; ix),floatSize); + write(viewP.viewOut,&(refPt(doView3D,i)->y),floatSize); + write(viewP.viewOut,&(refPt(doView3D,i)->z),floatSize); + write(viewP.viewOut,&(refPt(doView3D,i)->c),floatSize); + } + /* send generalized 3D components */ + write(viewP.viewOut,&(doView3D.lllp.numOfComponents),intSize); + anLLPoint = doView3D.lllp.llp; + for (i=0; iprop.closed),intSize); + write(viewP.viewOut,&(anLLPoint->prop.solid),intSize); + write(viewP.viewOut,&(anLLPoint->numOfLists),intSize); + anLPoint = anLLPoint->lp; + for (j=0; jnumOfLists; j++,anLPoint++) { + write(viewP.viewOut,&(anLPoint->prop.closed),intSize); + write(viewP.viewOut,&(anLPoint->prop.solid),intSize); + write(viewP.viewOut,&(anLPoint->numOfPoints),intSize); + anIndex = anLPoint->indices; + for (k=0; knumOfPoints; k++,anIndex++) + write(viewP.viewOut,anIndex,intSize); + } /* for LPoints in LLPoints (j) */ + } /* for LLPoints in LLLPoints (i) */ + fprintf(stderr," Done.\n"); + /*** get acknowledge from viewport */ + code = read(viewP.viewIn,&(viewP.viewWindow),sizeof(Window)); + sleep(1); /* wait a second...*/ + exit(0); + } /* switch */ +} /* spoonView3D() */ -int main (int argc,char *argv[]) -{ - printf("viewalone called with argc=%d\n",argc); +@ +\subsection{main} +\index{viewalone!main} +\index{main viewalone} +<>= +int main(int argc,char *argv[]) +{ printf("viewalone called with argc=%d\n",argc); printf("viewalone called with argv[1]=%s\n",argv[0]); printf("viewalone called with argv[2]=%s\n",argv[1]); /******** Open files and Figure out the viewport type ********/ - sprintf(filename,"%s%s",argv[1],".view/data"); if((viewFile = fopen(filename,"r")) == NULL ) { - sprintf(filename,"%s%s",argv[1],"/data"); if((viewFile = fopen(filename,"r")) == NULL ){ fprintf(stderr,"Error: Cannot find the file %s%s or %s%s\n", @@ -3707,57 +3623,59 @@ int main (int argc,char *argv[]) printf("filename = %s\n",filename); printf("viewType = %d\n",viewType); switch (viewType) { - case view3DType: case viewTubeType: printf("calling spoonView3D\n"); spoonView3D(viewType); break; - case view2DType: printf("calling spoonView2D\n"); spoonView2D(); break; - } /* switch */ - printf("The first number in the file, %d, called the viewType, not a valid value. It must be a number in the range of [1..4]\n",viewType); + printf("The first number in the file, %d, called the ",viewType); + printf("viewType, not a valid value. It must be a number in the "); + printf("range of [1..4]\n"); return(0); } @ -\section{viewalone.h} -<>= -#include -<> -<> -<> -<> +The TESTFILE is created in the mnt directory to provide an example +file to use for viewalone. The parabola example is detailed in the +chapter on Graphics File Formats. The directory parabola.view will +contain the data and graph0 files and is autogenerated from the +documentation in that chapter. +\section{viewalone Makefile} +<>= +BOOK=${SPD}/books/bookvol8.pamphlet +MIDINT= ${INT}/graph/viewalone +MIDOBJ= ${OBJ}/${SYS}/graph/viewalone +OUT= ${MNT}/${SYS}/bin +TESTFILE=${MNT}/${SYS}/graph/parabola.view - /* Viewport Commands */ -#define makeViewport -1 -#define makeGraph -1 +CFLAGS = ${CCF} -I${SRC}/include +LDFLAGS= ${LDF} - /* Assorted Junk */ -#define check(code) checker(code,__LINE__,"") -#define maxConnect 40 -#define intSize sizeof(int) -#define floatSize sizeof(float) -#define yes 1 -#define no 0 +OBJS= -extern viewManager viewP; -extern view3DStruct doView3D; -extern view2DStruct doView2D; -extern graphStruct graphArray[maxGraphs]; -extern graphStateStruct graphStateArray[maxGraphs],graphStateBackupArray[maxGraphs]; -extern tubeModel doViewTube; -extern int viewType; -extern int filedes,ack; -extern char errorStr[80]; -extern int viewOkay; -extern int viewError; -extern FILE *viewFile; -extern char filename[256]; -extern char pathname[256]; +all: ${OUT}/viewalone ${TESTFILE} + @echo 12 finished viewalone from ${BOOK} + +${OUT}/viewalone: ${MIDOBJ}/viewalone.o ${OBJ}/${SYS}/lib/util.o + @ echo 1 linking viewalone + @ ${CC} ${MIDOBJ}/viewalone.o ${OBJ}/${SYS}/lib/util.o \ + -o ${OUT}/viewalone ${LDFLAGS} -lX11 + +${MIDOBJ}/viewalone.o: ${BOOK} + @ echo 3 making ${MIDOBJ}/viewalone.o from ${BOOK} + @ ( cd ${MIDINT} ; ${TANGLE} -R"viewalone" ${BOOK} >viewalone.c ) + @ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/viewalone.c ) + +${TESTFILE}: ${BOOK} + @ echo 10 making ${TESTFILE} from ${BOOK} + @ mkdir -p ${TESTFILE} + @ (cd ${TESTFILE} ; \ + ${TANGLE} -R"parabola.view/data" ${BOOK} >data ; \ + ${TANGLE} -R"parabola.view/graph0" ${BOOK} >graph0 ) @ \chapter{view2d} diff --git a/changelog b/changelog index b783c96..5abd176 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,4 @@ +20080614 tpd books/bookvol8 compress viewalone to a single C file 20080613 tpd books/bookvol8 compress viewman.c to a single file 20080612 tpd books/bookvol12 point to The Axiom Literate Documentation 20080612 tpd books/bookvol11 point to The Axiom Literate Documentation