aboutsummaryrefslogtreecommitdiff
path: root/src/graph/Makefile.pamphlet
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2007-08-14 05:14:52 +0000
committerdos-reis <gdr@axiomatics.org>2007-08-14 05:14:52 +0000
commitab8cc85adde879fb963c94d15675783f2cf4b183 (patch)
treec202482327f474583b750b2c45dedfc4e4312b1d /src/graph/Makefile.pamphlet
downloadopen-axiom-ab8cc85adde879fb963c94d15675783f2cf4b183.tar.gz
Initial population.
Diffstat (limited to 'src/graph/Makefile.pamphlet')
-rw-r--r--src/graph/Makefile.pamphlet341
1 files changed, 341 insertions, 0 deletions
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}
+
+<<environment>>=
+SUBDIRS = Gdraws viewman view2D view3D viewAlone
+
+pamphlets = fileformats.pamphlet Makefile.pamphlet
+@
+
+\subsection{The viewman directory}
+
+<<viewmandir>>=
+all-viewman: all-Gdraws
+ cd viewman && ${MAKE}
+@
+
+\subsection{The Gdraws directory}
+
+<<Gdrawsdir>>=
+all-Gdraws:
+ @$(mkinstalldirs) $(axiom_target_libdir)/graph
+ cd Gdraws && ${MAKE}
+@
+
+\subsection{The view3D directory}
+
+<<view3Ddir>>=
+all-view3D: all-Gdraws
+ cd view3D && ${MAKE}
+@
+
+\subsection{The view2D directory}
+
+<<view2Ddir>>=
+all-view2D: all-Gdraws
+ cd view2D && ${MAKE}
+@
+
+\subsection{The viewAlone directory}
+
+<<viewAlonedir>>=
+all-viewAlone: all-Gdraws
+ cd viewAlone && ${MAKE}
+@
+
+\section{Documentation}
+
+\subsection{environment variables}
+
+<<fileformats>>=
+
+parabola/data parabola/graph0: $(srcdir)/fileformats.pamphlet
+ $(axiom_build_document) --tangle=`basename $@` --output=$@ $<
+@
+
+<<*>>=
+<<environment>>
+
+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
+
+
+<<viewmandir>>
+<<Gdrawsdir>>
+<<view3Ddir>>
+<<view2Ddir>>
+<<viewAlonedir>>
+
+<<fileformats>>
+
+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}