From ab8cc85adde879fb963c94d15675783f2cf4b183 Mon Sep 17 00:00:00 2001 From: dos-reis Date: Tue, 14 Aug 2007 05:14:52 +0000 Subject: Initial population. --- src/graph/Makefile.pamphlet | 341 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 341 insertions(+) create mode 100644 src/graph/Makefile.pamphlet (limited to 'src/graph/Makefile.pamphlet') diff --git a/src/graph/Makefile.pamphlet b/src/graph/Makefile.pamphlet new file mode 100644 index 00000000..c68dc98e --- /dev/null +++ b/src/graph/Makefile.pamphlet @@ -0,0 +1,341 @@ +%% Oh Emacs, this is a -*- Makefile -*-, so give me tabs. +\documentclass{article} +\usepackage{axiom} + +\title{\$SPAD/src/graph Makefile} +\author{Timothy Daly \and Gabriel Dos~Reis} + +\begin{document} +\maketitle + +\begin{abstract} +\end{abstract} +\eject + +\tableofcontents +\eject + +\section{General Comments} + +This directory contains the C source code for the Scratchpad's +graphics. Comments given to the maintenance program refer to +version numbers. The versions are documented below, starting with +version23. +\begin{verbatim} +version23: (first version after returning from Europe) + added a $DEVE environment variable - if it exists, the viewport manager + tries those executable files first; if it was unsuccessful or, if the + $DEVE variable was not defined, the $SPAD variable is used tube.c: + changed order of crossedLines(p,q... to crossedLines(q,p... in order to + use segNum info (which segment of the second polygon the first polygon + crosses) and using splitPolygon() rather than splitAndMove() + tube.c: changed crossedLines() to generalPartialSplit() - an algorithms + i hope would work. it is not taken from any literature as all the + literature i have looked into and tried out had design flaws or lacked + precise specifications (including Foley & van Dam volume I, Newman & + Sprouill and others) + viewport3D.c: xPts now malloced as a global variable in makeView3D and + not freed up at the end. quadMesh is also not freed anymore (shouldn't + be as it was changed to a global some time ago). + made eyeDistance (3D stuff) into a float (from integer) + added outlineRender (outlineOnOff in actions.h) field. note that this + and the previous change both affected the following files: + view3D/: main.c, process.c, viewport3D.c, spadAction.c, write.c + viewman/: fun3D.c make3D.c + viewAlone/: spoon3D.c spoonTube.c + spad/: view3D.spad (viewport3D, makeViewport3D and the Rep) + 3D: ability to write Stellar recognizable data files for Tube types + spad additions: write(v,fn,listOfTypes) + fixed perspective, added min/max range of eyeDistance + +version24: view3D/tube.c: put in calculations for xmin,xmax,ymin,ymax + >>> took them out again - doesn't the viewport manager do that? + polygon list saved if previous render/opaque (hidden surface) + was completed so that subsequent draws would be faster + view3D: added NIL(pType) macro which checks for a null pointer + >>> need same change in view2D (after testing) + totalShades is now a global variable (to be decremented if color trouble) + >>> need same change in view2D (after testing) + cleaning up: added exitWithAck(info,size,i) macro to send spad + acknowledge right before exit of a troubled program. this + should avoid some of the causes of entering spad break loops + not enough colors could be allocated; now, only a message is given. + viewman: adding checks for abnormal exits of child processes (from + people who use the "Cancel" command from the X server). + deadBaby() and brokenPipe() in the works. + view3D: hey! there was a bug in the projections: with perspective on, + it turns out the Z-axis was rotating opposite of the rest of + the system...?... + fixed perspective + added box (with back face removal) + function of 2 variables now has it's own substructure, like tube, and + shares the (now) general hidden surface subroutine used for the + tube stuff when the perspective is turned on (when perspective is + off, a simple back to front routine is sufficient and fast but the + property that allows that is not preserved in the perspective projection) + seems like (in tube.c) the overlap list property is not preserved (see + notes) so now, routine needs to check, for polygon i, polygons + i+1 through N, always. + affects ALL: added deltaZ to all the stuff + (spad, viewman, viewAlone, view3D) - though not used yet + error messages: if the .Xdefault not found (or .Xdefault wasn't defined) + then view2D and view3D will a predefined default set of fonts. it that + still doesn't work, a (more or less useful) error message is displayed + and an error signal is sent to Scratchpad to prevent a freeze-up situation. + viewpack.spad (package VIEW) and view2D.spad (domain GRIMAGE) now check for + lists that contain illegal empty lists (i.e. point list contains nothing). + warnings are issued for lists containing both legal point lists and empty + point lists, errors are issued for lists containing nothing but empty lists. + made spadcolors30.c into an archived library by the name of libColors.a, + source file changed to spadcolors.c; makeColors' arguments have changed + and now returns the number of colors allocated - not a pointer to the + pixel map + saymem, check, etc. moved to util.c for library archive + added a view.h file, with macros to be used by all view programs + monoColor(x) macro (in view.h) replaces spadColors[x] calls in case + display is monochromatic (in global variable mono) + tube.c: connecting of slices - polygon points changed to outline the + rectangular regions without the diagonals (may be prettier when outlines + are sketched...slightly, if no split occurs). + clipping model: both against the hither plane as well as with a + clipping volume + viewport3D.c: made polygon list for functions of two variables so + that it could call the general hidden surface algorithm (in tube.c) as + well (turns out that back to front property of 3D explicit equations is + not preserved when viewed with perspective) + added volume.c, volume.h for the frustrum (perspective), projected clipping + and clip volume interface + +version25: + view3D: added long jump to address signals that arrive while in the + XNextEvent call. spadSignalHandler() now calls spadAction() + if a signal is received. + view2D: added query button and messages for each graph image + (viewport2D.c, control.c, process.c) + view3D: tube.c: improved speed of drawPolygon by creating overlapped + list for unmoved polygon, and list for moved polygon that + may be smaller than the entire list. + see "Notes on the Depth Sort Algorithm" for strategy, etc. + tube.c: moved the resetting of the variables relevant to recalc + from process.c to tube.c (rotated, switchedPerspective, + changedEyeDistance) + GraphImage now supports 2D primitives like point(), component(), addPoint() + ViewportDefaultsPackage now exports viewXPos() and stuff; all references + to integers have been replaced by the more restrictive subdomains + (e.g. PositiveInteger, NonNegativeInteger) + ViewportPackage has dwindled to just drawCurves() and graphCurves() + view2D, view3D: put in more robust signal handling routines so that + signals from the viewport manager (Scratchpad) are all processed properly. + the condition where the user is not allowed to use the control panel of the + viewport that Scratchpad is sending commands to no longer exists!!!! wow!!! + simultaneous processing without a race condition occuring (sorta) should + not occur anymore. + view3D: modification to keepDrawingViewport() so that signals also causes + a return of no. this allows Scratchpad input files to be indistinguishable + from interactive commands from a control panel! (that is, drawViewport() + no longer need to complete the drawing if it was called from Scratchpad.) + view2D: spadAction(): now only redraws viewport if the info was received for + a graph image that is being shown + view2D: fixed up pick/drop hangup problem. the "dodat" variable in process.c + needed to be reset earlier, and in each separate routine (pick, drop and + query) that required sequential button clicks (e.g. + "Drop" + graph number "1"). + view2D: added global variable queriedGraph - so that the last queried graph + will always be the one displayed. + view2D.spad: default to points off + added inverse and monochrome fields in .Xdefaults + (e.g. view3D*monochrome : on) + BUG FIXED: clipping of wire mesh for tubes + view3D.spad: function of three variables for color specifications ==> changes + in viewman, viewAlone, and view3D to accept additional information. + structure of fun2VarModel in view3D.h changes *** not backwards + compatible with version24. + BUG FOUND: viewport3D.c still drawing the function of 2 variables + without perspective (painter's algorithm without processing) wrong! + BUG FIXED: this time, for shur. flipped quadrants II and IV to remedy bug + found in painter's algorithm in viewport3D.c. + tube.c (view3D): changed routine that redraws quickly from the saved up list + of processed polygons from the hidden surface algorithm so that each polygon + +version 26: + view3D: switched over to a generalized subspace points definition. + so far, wire meshes work for existing types. code in viewport3D.c and tube.c + are replaced by one more general in component.c; size reduced in half. + include: modified=[view3D.h] new=[component.h] + view3D: modified=[viewport3D.c, tube.c] new=[component.c] + viewman: modified=[fun3D.c, make3D.c] + representation should also handle future 3D things - like space curves, + points and stuff without new data structures. + NEED: take out unused code + component.spad there temporarily to handle the new representation on the + algebra side point.spad deals with the new representation in more + generality on the algebra side + NEED: interface to rest of algebra world + view2D: draw dashed line if ticks are too close. view2D: + modified=[viewport2D.c] + coord.spad added for coordinate transformation + XSpadFill.c in the src/ directory for shade dithering in color - affects: + src: modified=[spadcolors.c, spadcolors.h] new=[XSpadFill.c] + view3D: modified=[globals.h, main.c, tube.c] + view2D: added tick labels for 2D + view2D: modified=[viewport2D.c] + view3D: tube.c replaced by surface.c and project.c + viewman: for hue and shade fields in 2D, spad is one based and the viewport + stuff is 0 based. modified=[makeGraph.c] + --- backed up on tape --- + replaced sprintf of XGetDefault value with direct assignment since + XGetDefault may return a NULL value which causes sprintf to freak out + (xDefault is now pointer to char rather than a character array) + view2D: modified=[globals.h, main.c] + view3D: modified=[globals.h, main.c] + BUG FOUND: on the PS2, redraws of hidden surface with saved data (quickList) + bombs. + BUG FIXED: no more bombs of quick draws + view3D: modified=[surface.c (previously, tube.c)] + put in SIGTERM handlers so that a kill signal to viewman would cause it + exit cleanly (that is, kill all the child processes and then exit) + viewman: modified=[viewman.h, viewman.c, cleanup.c] + view3D: modified=[main.c] + view2D: modified=[main.c] + viewWoman: modified=[viewWoman.c] + +version27: + 3D primitives: added type flag to polygon structure (for 3D primitives) - + may or may not actually be used + include: modified=[tube.c] + added "#define smwattDefaultToFast" which, when defined, defaults to the + simple back-to-front draw rather than the full depth sort processes + (click middle button to switch) + BUG FIXED: title reading in viewAlone (to add \0 on top of the \newline + fgets reads in) + viewAlone: modified=[spoon2D.c, spoonComp.c] + points in 3D stored as references (indices) into a pool of points + include: modified=[tube.h, component.h] + view3D: modified=[main.c, project.c, surface.c, component.c] + added (maybe last version...?) window manager override flag in override.h + file which sets to true or false (e.g. Presentation Manager may need + override=false) + BUG FIXED: after the 3D stuff saves the ordering of polygons, the quick draw + misses the last polygon...had to change doNotStopDraw flag to affect the + subsequent polygon. + view3D: modified=[surface.c] + added a development header file for temporary defines + include: added=[DEVE.h] + part II: + BUG FOUND: 3D color bar goes off the positive end + BUG FIXED: the color bar error + view3D: modified=[process.c] + put XMapWindow after the drawViewport in make3DComponents - fixes the + problem of having an empty viewport window come up with no well defined data + view3D: modified=[component.c] + view3D: initialize the numOfPolygons and polygons field right before they're + used (as opposed to whereever i had them before) + view3D: modified=[component.c] +\end{verbatim} + +\section{Directory overview} + +\subsection{Environment variables} + +<>= +SUBDIRS = Gdraws viewman view2D view3D viewAlone + +pamphlets = fileformats.pamphlet Makefile.pamphlet +@ + +\subsection{The viewman directory} + +<>= +all-viewman: all-Gdraws + cd viewman && ${MAKE} +@ + +\subsection{The Gdraws directory} + +<>= +all-Gdraws: + @$(mkinstalldirs) $(axiom_target_libdir)/graph + cd Gdraws && ${MAKE} +@ + +\subsection{The view3D directory} + +<>= +all-view3D: all-Gdraws + cd view3D && ${MAKE} +@ + +\subsection{The view2D directory} + +<>= +all-view2D: all-Gdraws + cd view2D && ${MAKE} +@ + +\subsection{The viewAlone directory} + +<>= +all-viewAlone: all-Gdraws + cd viewAlone && ${MAKE} +@ + +\section{Documentation} + +\subsection{environment variables} + +<>= + +parabola/data parabola/graph0: $(srcdir)/fileformats.pamphlet + $(axiom_build_document) --tangle=`basename $@` --output=$@ $< +@ + +<<*>>= +<> + +subdir = src/graph/ + +pamphlets = Makefile.pamphlet + +.PHONY: all all-ax all-graph +all: all-ax + +all-ax all-graph: stamp + @ echo 24 finished ${IN} + +stamp: all-subdirs parabola/data parabola/graph0 + $(STAMP) stamp + +.PHONY: all-subdirs +all-subdirs: all-subdirs.pre all-subdirs.rest + +.PHONY: all-subdirs.pre +all-subdirs.pre: + -rm -f stamp + $(mkinstalldirs) parabola + +.PHONY: all-subdirs.rest +all-subdirs.rest: all-subdirs.pre all-Gdraws all-viewman \ + all-view2D all-view3D all-viewAlone + + +<> +<> +<> +<> +<> + +<> + +mostlyclean-local: + +clean-local: mostlyclean-local + @rm -f parabola/data parabola/graph0 + +distclean-local: clean-local + +@ +\eject +\begin{thebibliography}{99} +\bibitem{1} nothing +\end{thebibliography} +\end{document} -- cgit v1.2.3