diff --git a/changelog b/changelog index 68f5eab..af63055 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,12 @@ +20080608 tpd src/graph/gdraws/Makefile deleted, (use bookvol8) +20080608 tpd src/graph/gdraws/data.c deleted, (use bookvol8) +20080608 tpd src/graph/gdraws/gdraws0.h deleted, (use bookvol8) +20080608 tpd src/graph/gdraws/gfun.c deleted, (use bookvol8) +20080608 tpd src/graph/gdraws/loadfont.c deleted, (use bookvol8) +20080608 tpd src/graph/gdraws/main.c deleted, (use bookvol8) +20080608 tpd src/graph/gdraws/menu.c deleted, (use bookvol8) +20080608 tpd src/graph/gdraws/psfiles deleted, (use bookvol8) +20080608 tpd src/graph/gdraws/yesorno.c deleted, (use bookvol8) 20080608 tpd books/bookvol8 make gdraws 20080608 tpd src/graph/Makefile make gdraws 20080607 tpd FAQ 48: Getting Axiom sources from git diff --git a/src/graph/gdraws/Makefile.pamphlet b/src/graph/gdraws/Makefile.pamphlet deleted file mode 100644 index dee8ca1..0000000 --- a/src/graph/gdraws/Makefile.pamphlet +++ /dev/null @@ -1,373 +0,0 @@ -\documentclass{article} -\usepackage{axiom} -\begin{document} -\title{\$SPAD/src/graph/gdraws Makefile} -\author{Timothy Daly} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -\section{gdraws} -This directory consists of all the Gdraw functions along with a local -testing protocol to test out these functions. -The subdirectory PS contains all the ps drawing functions in support of -the Gdraw functions. - -\subsection{GDRAW} - -A Gdraw function, using a draw option dFlsg as input, provides drawings -capability on different output devices. Currently, Gdraw supports routines -both in Xwindows functions, and in postscript functions on -a postscript printer/interpreter. - -The general drawing functions are (see file for description of functionality) -\begin{verbatim} - 1. Gdrawarc.c - 2. Gdrawstring.c - 3. Gdraw.c - 4. Gdrawline.c - 5. Gdrfilled.c - 6. GdrawFrame.c - 7. Gdrawlines.c - 8. Gfillarc.c - 9. GdrawIstr.c - 10. Gdrawrect.c - 11. Gmisc.c - 12. GinitPS.c - 13. GCreatePS.c - 14. PSFill.c - 15. ../include/g.h - header information needed by all the Gdraw routines and - view3d/view2d as well. - 16. ps.h - header information needed by only the Gdraw routines. - -\subsection{POSTSCRIPT} - -A PostScript file can be generated by using a button on the control -panel of a viewalone picture, or in Axiom, with the command write, -option Postscript. This file can be submitted to the postsctipt -printer to be printed, or viewed using the postscript interpreter. -It will draw a window, title, and picture clipped to fit inside of the -window. - -In order to generate a postscript output, we first initializ file names and -paths to be used by our program by using -\begin{verbatim} - InitPs(viewWindow, titleWindow) [in GinitPS.c] -\end{verbatim} -then call the G draw routines with option "PS", which would generate postscript -drawing commands. Then create the output file (OUTPUT.ps by default) by using -\begin{verbatim} - makePSfile(viewWindow, titleWindow, title) [in GcreatePS.c] -\end{verbatim} - -The output file would be in local directory, i.e., the directory where Axiom -or viewalone, etc., was started up. - -The following routines are used to test out the Gdraw functions: -\begin{verbatim} -1. main.c creates windows, and titles and processes Xwindow events. -2. data.c creates data for drawing and call Gdraw routines. -3. menu.c draws menu when mouse clicks in viewWindow -4. yesorno.c determines if mouse click in menu means "yes" or "no". -5. loadfont.c loads font for display -\end{verbatim} - -The Gdraw routines have been written in such a way that they are usable by -both view3d and view2d. - -\subsection{TO USE G FUNCTIONS} - -In order to draw in postscript, use GSetForeground to set the foreground -colors for the drawing (and fill) functions. Use GSetLineAttributes -to set line attributes. And finally, replace the XDraw commands with the -corresponding GDraw commands with the appropriate parameters. In addition, -we need to: draw frame, set GC variable names, create GCs, initialize -postscript data structures, cat all the procedures used together. - -{\bf IMPORTANT}:\\ -In order to create postscript command file, we need environment -variable DEVE (i.e., setenv DEVE /u/jimwen/3D/version28) or SPAD (e.g., setenv -SPAD /spad/mnt/rt in case gdraws directory has been installed on the server). -Without this path, the program would not know where the postscript files (in -gdraws/PS) are. - -{\bf LIMITATIONS} of current implementation:\\ -A picture is printed with 1 inch x direction, and 1 inch y direction -offset, and the largest complete picutre is the size of the page -with the offest. - -{\bf BUGS}:\\ -The region box is not drawn correctly when perspective is altered. - - -{\bf FUTURE DIRECTIONS}: -\begin{itemize} -\item for view3d color rendering, may want to convert LINE drawing color -to the appropriate grayscale. Right now, they're all drawn in black. -\item for view3d's routines for color rendering, may want to implement -color drawing for postscript functions just in case someone does -have access to a color postscript printer. -\item implement more functionality for attributes used in GC, i.e., dashed -line, dotted line etc. -\item implement a display postscript menu to set things like picture size, -landscape/portrait orientation, picture centered, left, right, up, -down, etc., reversed video. -\item make font an attribute in postscripts's graphics context so the -font can be set in user program. Right now, it uses only 1 font. -\item for view2d's stuff, implement a smaller font for the drawing the -units on the axes. -\end{itemize} - -\section{environment variables} -<>= -IN= ${SRC}/graph/gdraws -MIDINT= ${INT}/graph/gdraws -MIDOBJ= ${OBJ}/${SYS}/graph/gdraws -OUT= ${MNT}/${SYS}/lib -PS= ${MNT}/${SYS}/lib/graph -DOC= ${MNT}/${SYS}/doc/src/graph - -# local include files shared by graphics -LINC= ${SRC}/graph/include - -# global include files shared by everyone -GINC= ${SRC}/include - -# include files in Hyperdoc -HINC= ${SRC}/hyper - -# bitmaps for cursors -BIT= ${SRC}/graph/include/bitmaps - -# a .h file stuck in a really wierd place -DOTH= ${SRC}/graph/viewman - -# a .c file in the library subdirectory -DOTC= ${SRC}/lib - -@ -\section{Gdraw code} -\subsection{gfun} -<>= -${MIDINT}/gfun.c: ${IN}/gfun.c.pamphlet - @ echo 1 making ${MIDINT}/gfun.c from ${IN}/gfun.c.pamphlet - @( cd ${MIDINT} ; \ - ${TANGLE} ${IN}/gfun.c.pamphlet >gfun.c ) - -@ -<>= -${MIDOBJ}/gfun.o: ${HEADERS} ${MIDINT}/gfun.c - @ echo 2 making ${MIDOBJ}/gfun.o from ${MIDINT}/gfun.c - @ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/gfun.c ) - -@ -<>= -${DOC}/gfun.c.dvi: ${IN}/gfun.c.pamphlet - @echo 3 making ${DOC}/gfun.c.dvi from ${IN}/gfun.c.pamphlet - @(cd ${DOC} ; \ - cp ${IN}/gfun.c.pamphlet ${DOC} ; \ - ${DOCUMENT} ${NOISE} gfun.c ; \ - rm -f ${DOC}/gfun.c.pamphlet ; \ - rm -f ${DOC}/gfun.c.tex ; \ - rm -f ${DOC}/gfun.c ) - -@ -\section{Postscript files} -\subsection{colorpoly} -<>= -${PS}/colorpoly.ps: ${IN}/psfiles.pamphlet - @ echo 3 ${PS}/colorpoly.ps from ${IN}/psfiles.pamphlet - @ ${TANGLE} -R"colorpoly" psfiles.pamphlet >${PS}/colorpoly.ps - -@ -\subsection{colorwol} -<>= -${PS}/colorwol.ps: ${IN}/psfiles.pamphlet - @ echo 4 ${PS}/colorwol.ps from ${IN}/psfiles.pamphlet - @ ${TANGLE} -R"colorwol" psfiles.pamphlet >${PS}/colorwol.ps - -@ -\subsection{draw} -<>= -${PS}/draw.ps: ${IN}/psfiles.pamphlet - @ echo 5 ${PS}/draw.ps from ${IN}/psfiles.pamphlet - @ ${TANGLE} -R"draw" psfiles.pamphlet >${PS}/draw.ps - -@ -\subsection{drawIstr} -<>= -${PS}/drawIstr.ps: ${IN}/psfiles.pamphlet - @ echo 6 ${PS}/drawIstr.ps from ${IN}/psfiles.pamphlet - @ ${TANGLE} -R"drawIstr" psfiles.pamphlet >${PS}/drawIstr.ps - -@ -\subsection{drawarc} -<>= -${PS}/drawarc.ps: ${IN}/psfiles.pamphlet - @ echo 7 ${PS}/drawarc.ps from ${IN}/psfiles.pamphlet - @ ${TANGLE} -R"drawarc" psfiles.pamphlet >${PS}/drawarc.ps - -@ -\subsection{drawcolor} -<>= -${PS}/drawcolor.ps: ${IN}/psfiles.pamphlet - @ echo 8 ${PS}/drawcolor.ps from ${IN}/psfiles.pamphlet - @ ${TANGLE} -R"drawcolor" psfiles.pamphlet >${PS}/drawcolor.ps - -@ -\subsection{drawline} -<>= -${PS}/drawline.ps: ${IN}/psfiles.pamphlet - @ echo 9 ${PS}/drawline.ps from ${IN}/psfiles.pamphlet - @ ${TANGLE} -R"drawline" psfiles.pamphlet >${PS}/drawline.ps - -@ -\subsection{drawlines} -<>= -${PS}/drawlines.ps: ${IN}/psfiles.pamphlet - @ echo 10 ${PS}/drawlines.ps from ${IN}/psfiles.pamphlet - @ ${TANGLE} -R"drawlines" psfiles.pamphlet >${PS}/drawlines.ps - -@ -\subsection{drawpoint} -<>= -${PS}/drawpoint.ps: ${IN}/psfiles.pamphlet - @ echo 11 ${PS}/drawpoint.ps from ${IN}/psfiles.pamphlet - @ ${TANGLE} -R"drawpoint" psfiles.pamphlet >${PS}/drawpoint.ps - -@ -\subsection{drawrect} -<>= -${PS}/drawrect.ps: ${IN}/psfiles.pamphlet - @ echo 12 ${PS}/drawrect.ps from ${IN}/psfiles.pamphlet - @ ${TANGLE} -R"drawrect" psfiles.pamphlet >${PS}/drawrect.ps - -@ -\subsection{drawstr} -<>= -${PS}/drawstr.ps: ${IN}/psfiles.pamphlet - @ echo 13 ${PS}/drawstr.ps from ${IN}/psfiles.pamphlet - @ ${TANGLE} -R"drawstr" psfiles.pamphlet >${PS}/drawstr.ps - -@ -\subsection{drwfilled} -<>= -${PS}/drwfilled.ps: ${IN}/psfiles.pamphlet - @ echo 14 ${PS}/drwfilled.ps from ${IN}/psfiles.pamphlet - @ ${TANGLE} -R"drwfilled" psfiles.pamphlet >${PS}/drwfilled.ps - -@ -\subsection{end} -<>= -${PS}/end.ps: ${IN}/psfiles.pamphlet - @ echo 15 ${PS}/end.ps from ${IN}/psfiles.pamphlet - @ ${TANGLE} -R"end" psfiles.pamphlet >${PS}/end.ps - -@ -\subsection{fillarc} -<>= -${PS}/fillarc.ps: ${IN}/psfiles.pamphlet - @ echo 16 ${PS}/fillarc.ps from ${IN}/psfiles.pamphlet - @ ${TANGLE} -R"fillarc" psfiles.pamphlet >${PS}/fillarc.ps - -@ -\subsection{fillpoly} -<>= -${PS}/fillpoly.ps: ${IN}/psfiles.pamphlet - @ echo 17 ${PS}/fillpoly.ps from ${IN}/psfiles.pamphlet - @ ${TANGLE} -R"fillpoly" psfiles.pamphlet >${PS}/fillpoly.ps - -@ -\subsection{fillwol} -<>= -${PS}/fillwol.ps: ${IN}/psfiles.pamphlet - @ echo 18 ${PS}/fillwol.ps from ${IN}/psfiles.pamphlet - @ ${TANGLE} -R"fillwol" psfiles.pamphlet >${PS}/fillwol.ps - -@ -\subsection{header} -<
>= -${PS}/header.ps: ${IN}/psfiles.pamphlet - @ echo 19 ${PS}/header.ps from ${IN}/psfiles.pamphlet - @ ${TANGLE} -R"header" psfiles.pamphlet >${PS}/header.ps - -@ -\subsection{setup} -<>= -${PS}/setup.ps: ${IN}/psfiles.pamphlet - @ echo 20 ${PS}/setup.ps ${IN}/psfiles.pamphlet - @ ${TANGLE} -R"setup" psfiles.pamphlet >${PS}/setup.ps - -@ -<>= -${DOC}/psfiles.dvi: ${IN}/psfiles.pamphlet - @echo 3 making ${DOC}/psfiles.dvi from ${IN}/psfiles.pamphlet - @(cd ${DOC} ; \ - cp ${IN}/psfiles.pamphlet ${DOC} ; \ - ${DOCUMENT} ${NOISE} psfiles ; \ - rm -f ${DOC}/psfiles.pamphlet ; \ - rm -f ${DOC}/psfiles.tex ; \ - rm -f ${DOC}/psfiles ) - -@ -<<*>>= -<> - -DOCFILES= ${DOC}/gfun.c.dvi ${DOC}/psfiles.dvi - -CFLAGS = ${CCF} -I${LINC} -I${GINC} -I${IN} -I${HINC} - -HEADERS = ${IN}/gdraws0.h ${LINC}/g.h ${LINC}/gfun.h1 \ - ${GINC}/hash.h ${GINC}/hash.h1 - -PSFiles= ${PS}/colorpoly.ps ${PS}/colorwol.ps ${PS}/draw.ps \ - ${PS}/drawIstr.ps ${PS}/drawarc.ps ${PS}/drawcolor.ps \ - ${PS}/drawline.ps ${PS}/drawlines.ps ${PS}/drawpoint.ps \ - ${PS}/drawrect.ps ${PS}/drawstr.ps ${PS}/drwfilled.ps \ - ${PS}/end.ps ${PS}/fillarc.ps ${PS}/fillpoly.ps \ - ${PS}/fillwol.ps ${PS}/header.ps ${PS}/setup.ps - -all: ${MIDOBJ}/gfun.o ${PSFiles} ${DOCFILES} - @ echo 21 finished making ${SRC}/gdraws - -<> -<> -<> - -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<
> -<> - -<> - -clean: - @ echo 22 cleaning ${IN}/gdraws - -document: - @ echo 23 documenting ${IN}/gdraws - -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/graph/gdraws/data.c.pamphlet b/src/graph/gdraws/data.c.pamphlet deleted file mode 100644 index 9e60d85..0000000 --- a/src/graph/gdraws/data.c.pamphlet +++ /dev/null @@ -1,256 +0,0 @@ -\documentclass{article} -\usepackage{axiom} -\begin{document} -\title{\$SPAD/src/graph data.c} -\author{The Axiom Team} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -\section{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. -*/ -@ -<<*>>= -<> - -/* Data file to test out Gdraw functions */ - -#include "gdraws0.h" -#include "../view3d/header.h" -#include "nox10.h" - -extern GC gc, gc1; - -int -Gdraws_data(int dFlag) -{ - static Vertex vlist[5]; - static int vcount = 5; - static int x0, y0, x1, y1; - static char *str = "This is a text string."; - static int x, y; - static int FirstTime = yes; - static int Rx, Ry, Rwidth, Rheight; - static int Ix, Iy; - static char *Istr = "Image text string."; - static XPoint points[7]; - static XPoint p1[7]; - static int np1 = 7; - static int npoints, mode; - static int ax, ay, angle1, angle2; - static unsigned int awidth, aheight; - static Vertex dfvlist[7]; - static int dfvcount = 7; - static XPoint dfvl1[7]; - static int dfvc = 7; - - if (FirstTime) { - - vlist[0].x = 10; - vlist[0].y = 10; - vlist[0].flags = 0; - - vlist[1].x = 250; - vlist[1].y = 10; - vlist[1].flags = 0; - - vlist[2].x = 250; - vlist[2].y = 140; - vlist[2].flags = 0; - - vlist[3].x = 10; - vlist[3].y = 140; - vlist[3].flags = 0; - - vlist[4].x = 10; - vlist[4].y = 10; - vlist[4].flags = 0; - - x0 = y0 = 12; - x1 = 248; - y1 = 138; - - x = 25; - y = 50; - - Ix = 20; - Iy = 180; - - Rx = 160; - Ry = 40; - Rwidth = 30; - Rheight = 80; - - points[0].x = 80; - points[0].y = 95; - points[1].x = 30; - points[1].y = 15; - points[2].x = 120; - points[2].y = 70; - points[3].x = 25; - points[3].y = 180; - points[4].x = 43; - points[4].y = 56; - points[5].x = 270; - points[6].y = 0; - points[6].x = 0; - points[5].y = 160; - - p1[0].x = 2; - p1[0].y = 155; - p1[1].x = 99; - p1[1].y = 39; - p1[2].x = 260; - p1[2].y = 75; - p1[3].x = 33; - p1[3].y = 170; - p1[4].x = 4; - p1[4].y = 111; - p1[5].x = 203; - p1[6].y = 33; - p1[6].x = 170; - p1[5].y = 200; - - npoints = 7; - mode = CoordModeOrigin; /* there's also CoordModePrevious */ - - ax = 130; - ay = 100; - awidth = 165; - aheight = 95; - angle1 = 165; - angle2 = -330; - - dfvlist[0].x = 300; - dfvlist[0].y = 0; - dfvlist[0].flags = 0; - - dfvlist[1].x = 200; - dfvlist[1].y = 0; - dfvlist[1].flags = 0; - - dfvlist[2].x = 200; - dfvlist[2].y = 100; - dfvlist[2].flags = 0; - - dfvlist[3].x = 100; - dfvlist[3].y = 100; - dfvlist[3].flags = 0; - - dfvlist[4].x = 100; - dfvlist[4].y = 200; - dfvlist[4].flags = 0; - - dfvlist[5].x = 0; - dfvlist[5].y = 200; - dfvlist[5].flags = 0; - - dfvlist[6].x = 300; - dfvlist[6].y = 0; - dfvlist[6].flags = 0; - - dfvl1[0].x = 0; - dfvl1[0].y = 300; - dfvl1[1].x = 0; - dfvl1[1].y = 200; - dfvl1[2].x = 100; - dfvl1[2].y = 200; - dfvl1[3].x = 100; - dfvl1[3].y = 100; - dfvl1[4].x = 200; - dfvl1[4].y = 100; - dfvl1[5].x = 200; - dfvl1[5].y = 0; - dfvl1[6].x = 0; - dfvl1[6].y = 300; - - FirstTime = no; - } - - if (dFlag == PS) { - GSetForeground(gc1, 0.3125, PS); - if (PSFillwOutline(gc1, dfvl1, dfvc) == psError) - return (psError); - } - - if (GDrawString(gc, viewport->viewWindow, x, y, str, strlen(str), dFlag) - == psError) - return (psError); - - - if (GDrawLine(gc, viewport->viewWindow, x0, y0, x1, y1, dFlag) == psError) - return (psError); - - if (GDrawRectangle(gc, viewport->viewWindow, Rx, Ry, Rwidth, Rheight, dFlag) - == psError) - return (psError); - - if (GDrawLines(gc, viewport->viewWindow, points, npoints, mode, dFlag) - == psError) - return (psError); - - if (GDrawArc(gc, viewport->viewWindow, ax, ay, awidth, aheight, angle1 * 64, - angle2 * 64, dFlag) == psError) - return (psError); - - GSetForeground(gc1, (float) psBlack, dFlag); - GSetBackground(gc1, (float) psWhite, dFlag); - if (GFillArc(gc1, viewport->viewWindow, 20, ay - 20, awidth / 2, aheight / 2, - angle1 * 64, angle2 * 64, dFlag) == psError) - return (psError); - - - GSetForeground(gc1, (float) psWhite, dFlag); - GSetBackground(gc1, (float) psBlack, dFlag); - if (GDrawImageString(gc1, viewport->viewWindow, Ix, Iy, - Istr, strlen(Istr), dFlag) == psError) - return (psError); - - if (dFlag == PS) { - GSetForeground(gc1, 0.8, dFlag); - PSFillPolygon(gc1, p1, np1); - PSColorPolygon(0.2, 0.4, 0.8, p1, np1); - } - - return (1); -} -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/graph/gdraws/gdraws0.h b/src/graph/gdraws/gdraws0.h deleted file mode 100755 index 576039b..0000000 --- a/src/graph/gdraws/gdraws0.h +++ /dev/null @@ -1,101 +0,0 @@ -/* -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. -*/ - -#ifndef _GDRAWS0_H_ -#define _GDRAWS0_H_ 1 - -#include - - -#define yes 1 -#define no 0 - -/* - * Indices for PostScript draw procedures. - * - * The order of these defined variables are very important; they are used - * to create the OUTPUT file. Essentially, PSCreateFile() loops through the - * index of 0 to psDrawNo and checks if the file/procedure is used. If so, - * the file is copied to the output file. - */ - -#define output 0 /* output file */ -#define headerps 1 /* postscript header file */ -#define drawps 2 /* draw procedure */ -#define drawarcps 3 /* draw arc procedure */ -#define drawfilledps 4 /* draw filled procedure */ -#define drawcolorps 5 /* draw color filled procedure */ -#define drawpointps 6 /* draw point procedure */ -#define fillpolyps 7 /* polygon filled procedure */ -#define fillwolps 8 /* polygon filled with outline proc */ -#define colorpolyps 9 /* polygon fill with color procedure */ -#define colorwolps 10 /* polygon fill with color procedure */ -#define drawlineps 11 /* draw line procedure */ -#define drawlinesps 12 /* draw lines procedure */ -#define drawIstrps 13 /* draw image string procedure */ -#define drawstrps 14 /* draw string procedure */ -#define drawrectps 15 /* draw rectangle procedure */ -#define fillarcps 16 /* filled arc procedure */ -#define setupps 17 /* setup, or pre-script */ -#define GCdictps 18 /* grahphics context definition file */ -#define scriptps 19 /* script file */ -#define endps 20 /* wrap up, close down, procedure */ - -#define psDrawNo 21 /* for use in createPSfile() */ - - -/* - * PostScript structures - */ - -typedef struct _psStruct { /* data structure for ps routines info */ - int flag; - char filename[200]; -} psStruct; - -psStruct psData[psDrawNo]; /* need psDrawNo of them */ - - -/* - * These variables are expected to be declared in within client programs, eg, - * main.c in view2d and view3d. - */ - -extern int scrn; /* screen */ -extern Display *dsply; /* display */ -extern char *envAXIOM; /* environment variable AXIOM or DEVE */ - - -#endif - - diff --git a/src/graph/gdraws/gfun.c.pamphlet b/src/graph/gdraws/gfun.c.pamphlet deleted file mode 100644 index 5c13cdf..0000000 --- a/src/graph/gdraws/gfun.c.pamphlet +++ /dev/null @@ -1,1346 +0,0 @@ -\documentclass{article} -\usepackage{axiom} -\begin{document} -\title{\$SPAD/src/graph gfun.c} -\author{The Axiom Team} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -\section{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. -*/ -@ -<<*>>= -<> - - -#define _GFUN_C - -#include -#include -#include -#include - -#include "gdraws0.h" -#include "g.h" -#include "hash.h" - -#include "hash.h1" -#include "gfun.h1" - - -/* - * Given 2 file pointers, this function copies file ifp to file ofp - */ - -static void -filecopy(FILE * ifp, FILE * ofp) -{ - - int c; - - while ((c = getc(ifp)) != EOF) - putc(c, ofp); -} - - -/* - * PSCreateFile generates the output file by using the order of defined - * variables; they are used to create the OUTPUT file. Essentially, - * PSCreateFile() loop through the index of 0 to psDrawNo and checks if the - * file/procedure is used. If so, the file is included into the output - * file. - */ - -int -PSCreateFile( - int bWidth, /* border width of picture frame */ - Window vw, Window tw, /* viewWindow, and titleWindow */ - char *title) /* title of picture to be drawn in title bar */ -{ - FILE *ifp, *ofp, *fp; /* input, output and temp file pointer */ - int i; /* index */ - - /* last things to add to the script file */ - - fp = fopen(psData[scriptps].filename, "a"); - fprintf(fp, "\n grestore\t%% restore graphics state\n\n"); - fclose(fp); - -#if 0 - /* Make frame drawing optional. */ - - Gdraws_drawFrame(bWidth, vw, tw, title); -#endif - - /* put procedures and script together into OUTPUT.ps */ - - if ((ofp = fopen(psData[output].filename, "w")) == NULL) { - fprintf(stderr, "Cannot open %s to write.\n", psData[output].filename); - return (psError); - } - else { - i = 1; - while (i < psDrawNo) { /* loops through each file/procedure */ - if (psData[i].flag) { /* if set, procedure/file is used */ - if ((ifp = fopen(psData[i].filename, "r")) == NULL) { - if (i == GCdictps) { /* GC dictionaries */ - fprintf(stderr, "Warning: missing GCdictionary.\n"); - } - else { - fprintf(stderr, "Cannot open %s to read.\n", - psData[i].filename); - fclose(ofp); - return (psError); - } - } - else { - filecopy(ifp, ofp); - fclose(ifp); - } - } - i++; - } - } - - /* remove script file in tmp */ - - unlink(psData[scriptps].filename); - -#if 0 - /* remove GCdict file in tmp */ - unlink(psData[GCdictps].filename); -#endif - - return (fclose(ofp)); -} - - - -/* - * This function draws the frame of the picture, which corresponds to the - * picture frame on the X display. In addition, it draws the title window as - * well as the title of the picture. - */ - -int -Gdraws_drawFrame( - int borderW, /* border width */ - Window viewWindow, Window titleWindow, - char *title) /* title of picture */ -{ - FILE *fp; - XWindowAttributes vwInfo, twInfo; - - /* choose 2 and "frameDict" for frame dictionary: can be anything else */ - - PSCreateContext((GC)2, "frameDict", borderW, psButtCap, psMiterJoin, - psWhite, psBlack); - - fp = fopen(psData[scriptps].filename, "a"); - - XGetWindowAttributes(dsply, viewWindow, &vwInfo); - - /* draw title window */ - - XGetWindowAttributes(dsply, titleWindow, &twInfo); - fprintf(fp, "\t%s\t%d\t%d\t%d\t%d\ttitle\n", "frameDict", - twInfo.height - vwInfo.height, twInfo.width, 0, vwInfo.height); - - /* draw viewport window */ - - fprintf(fp, "\t%s\tdrawFrame\n", "frameDict"); /* using Gdraws_setDimension() */ - - /* draw title text */ - - psData[drawIstrps].flag = yes; - fprintf(fp, "\t%s\tloadFont\n\t%d\t(%s) stringwidth pop sub 2 div\n", - "frameDict", twInfo.width, title); - fprintf(fp, "\t%d\t(%s)\t(%s)\tpsDrawIStr\n", 15, title, "title"); - - return (fclose(fp)); -} - - -/* setDimension sets the dimension of the picture */ - -int -Gdraws_setDimension( - Window viewWindow, - Window titleWindow) -{ - FILE *fp; - XWindowAttributes vwInfo, twInfo; - float pageWidth, pageHeight, width; - - fp = fopen(psData[scriptps].filename, "w"); - - XGetWindowAttributes(dsply, titleWindow, &twInfo); - XGetWindowAttributes(dsply, viewWindow, &vwInfo); - pageWidth = 575.0; - pageHeight = 750.0; - -#if 0 - pageWidth = (float) (DisplayWidth(dsply, scrn) / DisplayWidthMM(dsply, scrn)); - pageWidth *= 160.0; - pageHeight = (float) (DisplayHeight(dsply, scrn) / DisplayHeightMM(dsply, scrn)); - pageHeight *= 210.0; - fprintf(stderr, "%f, %f\n", pageWidth, pageHeight); -#endif - - fprintf(fp, "\n gsave\t%% save graphics state for clipping path\n\n"); - if ((vwInfo.height > pageWidth) || (vwInfo.height > pageHeight)) { - width = (float) vwInfo.width; - if (vwInfo.height > pageWidth) { - width = pageWidth / width; - fprintf(fp, "\t%f\t%f", width, width); - } - else { - if (vwInfo.height > pageHeight) - fprintf(fp, "\t%f\t%f", width, pageHeight / width); - } - } - else { - fprintf(fp, "\t%f\t%f", 1.0, 1.0); - } - fprintf(fp, "\tscale\n\n"); - - fprintf(fp, "\t%d\t%d\t%d\tsetDim\n", twInfo.height - vwInfo.height, - vwInfo.height, vwInfo.width); - - /* Write a Bounding Box for psfig etc. */ - - fprintf(fp, "%%%%BoundingBox: 0 0 %d %d\n", vwInfo.height, vwInfo.width); - - fprintf(fp, "\tmaxX maxY\t0 0\trectangle\tclip\t%% set clip path\n\n"); - return (fclose(fp)); -} -/* - * GDrawImageString draws an image text string - */ - -int -GDrawImageString( - GC gc, /* graphics context */ - Window wid, /* window id */ - int x, int y, - char *string, - int length, int dFlag) -{ - int s; - - switch (dFlag) { - case Xoption: - s = XDrawImageString(dsply, wid, gc, x, y, string, length); - break; - case PSoption: - { - FILE *fp; - - if ((fp = fopen(psData[scriptps].filename, "a")) == NULL) { - fprintf(stderr, "GDrawImageString cannot open %s\n", - psData[scriptps].filename); - return (psError); - } - - psData[drawIstrps].flag = yes; /* set procedure flag */ - fprintf(fp, "\t%s\t%d\t%d\t(%s)\t(%s)\tpsDrawIStr\n", - PSfindGC(gc), x, y, string, "window"); - s = fclose(fp); - } - break; - default: - fprintf(stderr, "GdrawImagestring request (%d) not implemented yet.\n", dFlag); - return (psError); - } - return (s); -} - -/* Draws an arc; see XDrawArc */ - -int -GDrawArc( - GC gc, /* graphics context */ - Window wid, /* window id */ - int x, int y, - unsigned int wdth, unsigned int hght, - int ang1, int ang2, int dFlag) -{ - int s = 0; - - switch (dFlag) { - case Xoption: - XDrawArc(dsply, wid, gc, x, y, wdth, hght, ang1, ang2); - break; - case PSoption: - { - FILE *fp; - - if ((fp = fopen(psData[scriptps].filename, "a")) == NULL) { - fprintf(stderr, "GDrawArc cannot open %s\n", - psData[scriptps].filename); - return (psError); - } - - psData[drawarcps].flag = yes; - fprintf(fp, "\t%s\t%d\t%d\t%d\t%d\t%d\t%d\tpsDrawArc\n", - PSfindGC(gc), x, y, hght, wdth, ang1 / 64, ang2 / 64); - s = fclose(fp); - } - break; - default: - fprintf(stderr, "Gdrawarc request (%d) not implemented yet.\n", - dFlag); - return (psError); - } - return (s); -} -/* - * GDrawLine draws a line, see XDrawLine - */ - -int -GDrawLine( - GC gc, /* graphics context */ - Window wid, /* window id */ - int x0, int y0, int x1, int y1, int dFlag) -{ - int s = 0; - - switch (dFlag) { - case Xoption: - XDrawLine(dsply, wid, gc, x0, y0, x1, y1); - break; - case PSoption: - { - FILE *fp; - - if ((fp = fopen(psData[scriptps].filename, "a")) == NULL) { - fprintf(stderr, "GDrawLine cannot open %s\n", - psData[scriptps].filename); - return (psError); - } - - psData[drawlineps].flag = yes; /* sets procedure flag */ - fprintf(fp, "\t%s\t%d\t%d\t%d\t%d\tpsDrawLine\n", - PSfindGC(gc), x1, y1, x0, y0); - s = fclose(fp); - } - break; - default: - fprintf(stderr, "Gdrawline request (%d) not implemented yet.\n", - dFlag); - return (psError); - } - return (s); -} - - - - - -/* - * GDrawLines draws lines; see XDrawLines - */ - -int -GDrawLines( - GC gc, /* graphics context */ - Window wid, /* window id */ - XPoint * points, /* points */ - int numberOfPoints, int mode, int dFlag) - /* number of points, mode and display flag */ -{ - int s = 0; - - switch (dFlag) { - case Xoption: - XDrawLines(dsply, wid, gc, points, numberOfPoints, mode); - break; - case PSoption: - { - FILE *fp; /* not dealing with modes yet */ - int i = 0; - - if ((fp = fopen(psData[scriptps].filename, "a")) == NULL) { - fprintf(stderr, "GDrawLines cannot open %s\n", - psData[scriptps].filename); - return (psError); - } - - psData[drawlinesps].flag = yes; /* set procedure flag */ - fprintf(fp, "\t%s\n", PSfindGC(gc)); - i = numberOfPoints - 1; - while (i > 0) - { fprintf(fp, "\t%d\t%d\n", points[i].x, points[i].y); - i = i-1; - } - - fprintf(fp, "\t%d\t%d\t%d\tpsDrawLines\n", - numberOfPoints, points[i].x, points[i].y); - s = fclose(fp); - } - break; - default: - fprintf(stderr, "Gdrawlines request (%d) not implemented yet\n", - dFlag); - return (psError); - } - return (s); -} - -/* - * GDrawPoint draws a point, see XDrawPoint - */ - -int -GDrawPoint( - Window wid, /* window id */ - GC gc, /* graphics context */ - int x0, int y0, int dFlag) -{ - int s = 0; - - switch (dFlag) { - case Xoption: - XDrawPoint(dsply, wid, gc, x0, y0); - break; - case PSoption: - { - FILE *fp; - - if ((fp = fopen(psData[scriptps].filename, "a")) == NULL) { - fprintf(stderr, "GDrawPoint cannot open %s\n", - psData[scriptps].filename); - return (psError); - } - - psData[drawpointps].flag = yes; /* sets procedure flag */ - fprintf(fp, "\t%s\t%d\t%d\t%d\t%d\tpsDrawPoint\n", - PSfindGC(gc), x0, y0, x0 + 1, y0 + 1); - s = fclose(fp); - } - break; - default: - fprintf(stderr, "Gdrawpoint request (%d) not implemented yet\n", - dFlag); - return (psError); - } - return (s); -} - -/* - * GDrawRectangle draws a rectangle; see XDrawRectangle - */ - -int -GDrawRectangle( - GC gc, - Window windowId, - short int x,short int y,short int width,short int height, - int dFlag) -{ - int s = 0; - - switch (dFlag) { - case Xoption: - XDrawRectangle(dsply, windowId, gc, x, y, width, height); - break; - case PSoption: - { - FILE *fp; - - if ((fp = fopen(psData[scriptps].filename, "a")) == NULL) { - fprintf(stderr, "GDrawRect cannot open %s\n", - psData[scriptps].filename); - return (psError); - } - - psData[drawrectps].flag = yes; - fprintf(fp, "\t%s\t%d\t%d\t%d\t%d\tpsDrawRect\n", - PSfindGC(gc), width, height, x, y); - s = fclose(fp); - } - break; - default: - fprintf(stderr, "Gdrawrect request (%d) not implemented yet\n", - dFlag); - return (psError); - } - return (s); -} - -/* - * GDraw3DButtonOut draws a rectangle with 3D shading on rhs and bottom - */ - -int -GDraw3DButtonOut( - GC gc, - Window windowId, - short int x,short int y,short int width,short int height, - int dFlag) -{ - /* draw regular rectangle */ - - int s = GDrawRectangle(gc, windowId, x, y, width - 1, height - 1, dFlag); - - /* add extra line down rhs */ - - GDrawLine(gc, windowId, - x + width, y + 1, x + width, y + height, - dFlag); - - /* add extra line across bottom */ - - GDrawLine(gc, windowId, - x + 1, y + height, x + width, y + height, - dFlag); - - return (s); -} - -/* - * GDraw3DButtonIn draws a rectangle with 3D shading on lhs and top - */ - -int -GDraw3DButtonIn( - GC gc, - Window windowId, - short int x,short int y,short int width,short int height, - int dFlag) -{ - /* draw regular rectangle */ - - int s = GDrawRectangle(gc, windowId, x + 1, y + 1, width - 1, height - 1, dFlag); - - /* add extra line down lhs */ - - GDrawLine(gc, windowId, - x, y, x, y + height - 1, - dFlag); - - /* add extra line across top */ - - GDrawLine(gc, windowId, - x, y, x + width - 1, y, - dFlag); - - return (s); -} - -/* - * GDrawPushButton draws a push button whose appearance depends on "isOn." - */ - -int -GDrawPushButton( - Display * display, - GC gc1, GC gc2, GC gc3, - Window windowId, - short int x,short int y,short int width,short int height, - int isOn, char *text, - unsigned long buttonColor, unsigned long color, - int dFlag) -{ - int len = strlen(text); - - if (dFlag == Xoption) - XClearArea(display, windowId, x, y, width + 1, height + 1, False); - - GSetForeground(gc1, (float) buttonColor, dFlag); - - if (isOn) - GDraw3DButtonIn(gc1, windowId, x, y, width, height, dFlag); - else - GDraw3DButtonOut(gc1, windowId, x, y, width, height, dFlag); - - GSetForeground(gc2, (float) color, dFlag); - - return GDrawString(gc2, windowId, - x + (isOn ? 2 : 0) + centerX(gc3, text, len, width), - y + (isOn ? 2 : 0) + centerY(gc3, height), - text, len, dFlag); -} - - - -/* - * Draws a string; see XDrawString - */ - -int -GDrawString( - GC gc, /* graphics context */ - Window wid, /* window id */ - int x, int y, - char *string, /* string to be drawn */ - int length, int dFlag) -{ - int s; - - switch (dFlag) { - case Xoption: - s = XDrawString(dsply, wid, gc, x, y, string, length); - break; - case PSoption: - { - FILE *fp; - - if ((fp = fopen(psData[scriptps].filename, "a")) == NULL) { - fprintf(stderr, "GDrawString cannot open %s\n", - psData[scriptps].filename); - return (psError); - } - - psData[drawstrps].flag = yes; /* sets procedure flag */ - fprintf(fp, "\t%s\t(%s)\t%d\t%d\tpsDrawStr\n", - PSfindGC(gc), string, x, y); - - s = fclose(fp); - } - break; - default: - fprintf(stderr, "Gdrawstring request (%d) not implemented yet\n", - dFlag); - return (psError); - } - return (s); -} - -/* - * Draws and fills an arc with foreground color; see XFillArc - */ - -int -GFillArc( - GC gc, /* graphics context */ - Window wid, /* window id */ - int x, int y, - unsigned int wdth, unsigned int hght, - int ang1, int ang2, int dFlag) -{ - int s = 0; - - switch (dFlag) { - case Xoption: /* angle: times 64 already */ - XFillArc(dsply, wid, gc, x, y, wdth, hght, ang1, ang2); - break; - case PSoption: - { - FILE *fp; - - if ((fp = fopen(psData[scriptps].filename, "a")) == NULL) { - fprintf(stderr, "GFillArc cannot open %s\n", - psData[scriptps].filename); - return (psError); - } - - psData[fillarcps].flag = yes; /* sets procedure flag */ - fprintf(fp, "\t%s\t%d %d\t%d %d\t%d %d\t%d %d\tpsFillArc\n", - PSfindGC(gc), x, y, hght, wdth, ang1 / 64, ang2 / 64, - x + wdth / 2, y + hght / 2); - s = fclose(fp); - } - break; - default: - fprintf(stderr, "GFillArc request (%d) not implemented yet\n", - dFlag); - return (psError); - } - return (s); -} - -/* - * Initializes the path and files to be used. - */ - -int -PSGlobalInit(void) -{ /* This needs to be called only once each - * session. */ - char *tmp; - - /* path-independent global file name */ - psData[GCdictps].flag = yes; - tmp = tempnam(NULL, "axPS"); - sprintf(psData[GCdictps].filename, "%s", tmp); - free(tmp); - psData[setupps].flag = yes; - psData[scriptps].flag = yes;/* new script file name */ - psData[endps].flag = yes; - - /* path specific file names */ - - if ((envAXIOM = getenv("DEVE")) != NULL) { /* get env var AXIOM */ - - psData[headerps].flag = yes; - sprintf(psData[headerps].filename, "%s%s", envAXIOM, "/Gdraws/PS/header.ps"); - sprintf(psData[drawps].filename, "%s%s", envAXIOM, "/Gdraws/PS/draw.ps"); - sprintf(psData[drawarcps].filename, "%s%s", envAXIOM, - "/Gdraws/PS/drawarc.ps"); - sprintf(psData[drawfilledps].filename, "%s%s", envAXIOM, - "/Gdraws/PS/drwfilled.ps"); - sprintf(psData[drawcolorps].filename, "%s%s", envAXIOM, - "/Gdraws/PS/drawcolor.ps"); - sprintf(psData[fillpolyps].filename, "%s%s", envAXIOM, - "/Gdraws/PS/fillpoly.ps"); - sprintf(psData[colorpolyps].filename, "%s%s", envAXIOM, - "/Gdraws/PS/colorpoly.ps"); - sprintf(psData[fillwolps].filename, "%s%s", envAXIOM, - "/Gdraws/PS/fillwol.ps"); - sprintf(psData[colorwolps].filename, "%s%s", envAXIOM, - "/Gdraws/PS/colorwol.ps"); - sprintf(psData[drawpointps].filename, "%s%s", envAXIOM, - "/Gdraws/PS/drawpoint.ps"); - sprintf(psData[drawlineps].filename, "%s%s", envAXIOM, - "/Gdraws/PS/drawline.ps"); - sprintf(psData[drawlinesps].filename, "%s%s", envAXIOM, - "/Gdraws/PS/drawlines.ps"); - sprintf(psData[drawrectps].filename, "%s%s", envAXIOM, - "/Gdraws/PS/drawrect.ps"); - sprintf(psData[drawstrps].filename, "%s%s", envAXIOM, - "/Gdraws/PS/drawstr.ps"); - sprintf(psData[drawIstrps].filename, "%s%s", envAXIOM, - "/Gdraws/PS/drawIstr.ps"); - sprintf(psData[fillarcps].filename, "%s%s", envAXIOM, - "/Gdraws/PS/fillarc.ps"); - sprintf(psData[setupps].filename, "%s%s", envAXIOM, "/Gdraws/PS/setup.ps"); - sprintf(psData[endps].filename, "%s%s", envAXIOM, "/Gdraws/PS/end.ps"); - } - else if ((envAXIOM = getenv("AXIOM")) != NULL) { - psData[headerps].flag = yes; - sprintf(psData[headerps].filename, "%s%s", envAXIOM, - "/lib/graph/header.ps"); - sprintf(psData[drawps].filename, "%s%s", envAXIOM, - "/lib/graph/draw.ps"); - sprintf(psData[drawarcps].filename, "%s%s", envAXIOM, - "/lib/graph/drawarc.ps"); - sprintf(psData[drawfilledps].filename, "%s%s", envAXIOM, - "/lib/graph/drwfilled.ps"); - sprintf(psData[drawcolorps].filename, "%s%s", envAXIOM, - "/lib/graph/drawcolor.ps"); - sprintf(psData[fillpolyps].filename, "%s%s", envAXIOM, - "/lib/graph/fillpoly.ps"); - sprintf(psData[colorpolyps].filename, "%s%s", envAXIOM, - "/lib/graph/colorpoly.ps"); - sprintf(psData[fillwolps].filename, "%s%s", envAXIOM, - "/lib/graph/fillwol.ps"); - sprintf(psData[colorwolps].filename, "%s%s", envAXIOM, - "/lib/graph/colorwol.ps"); - sprintf(psData[drawpointps].filename, "%s%s", envAXIOM, - "/lib/graph/drawpoint.ps"); - sprintf(psData[drawlineps].filename, "%s%s", envAXIOM, - "/lib/graph/drawline.ps"); - sprintf(psData[drawlinesps].filename, "%s%s", envAXIOM, - "/lib/graph/drawlines.ps"); - sprintf(psData[drawrectps].filename, "%s%s", envAXIOM, - "/lib/graph/drawrect.ps"); - sprintf(psData[drawstrps].filename, "%s%s", envAXIOM, - "/lib/graph/drawstr.ps"); - sprintf(psData[drawIstrps].filename, "%s%s", envAXIOM, - "/lib/graph/drawIstr.ps"); - sprintf(psData[fillarcps].filename, "%s%s", envAXIOM, - "/lib/graph/fillarc.ps"); - sprintf(psData[setupps].filename, "%s%s", envAXIOM, - "/lib/graph/setup.ps"); - sprintf(psData[endps].filename, "%s%s", envAXIOM, - "/lib/graph/end.ps"); - } - else { - fprintf(stderr, " need environment variable AXIOM or DEVE; process aborted\n"); - return (psError); - } - - return (psInit = yes); -} - - -/* - * This needs to be called for every postscript file generated. It - * initializes the procedure flags. - */ - -int -PSInit(Window vw, Window tw) -{ - if (!psInit) { - /* must have PSGlobalInit() called before this */ - fprintf(stderr, "Error: need initialization for ps data files: call PSGlobalInit().\n"); - return (psError); - } - - sprintf(psData[output].filename, "%s", PSfilename); /* output file name */ - - psData[drawps].flag = no; /* ps procedures flags */ - psData[drawarcps].flag = no; - psData[drawfilledps].flag = no; - psData[drawcolorps].flag = no; - psData[fillpolyps].flag = no; - psData[fillwolps].flag = no; - psData[colorpolyps].flag = no; - psData[colorwolps].flag = no; - psData[drawpointps].flag = no; - psData[drawlineps].flag = no; - psData[drawlinesps].flag = no; - psData[drawrectps].flag = no; - psData[drawstrps].flag = no; - psData[drawIstrps].flag = no; - psData[fillarcps].flag = no; - - sprintf(psData[scriptps].filename, "%s", tmpnam(NULL)); /* script file */ - return (Gdraws_setDimension(vw, tw)); -} - -/* - * This procedure sets the line attributes; notice that lineWidth is not set - * for PS, this is because lineWidth of 0, the thinest line on the ps device, - * is device-dependent, thus, we'll leave it and use default. Also lineStyle - * is solid in ps by default, thus we don't need to set it. We'll leave out - * line style here since we really never used anything other than line solid - * which is the default line style in postscript. - */ - -int -PSCreateContext( - GC gc, /* graphics context */ - char *C_gc, /* GC name to be used as postscript variable */ - int lineWidth, int capStyle, int joinStyle, - float bg, float fg) -{ - FILE *fp; - GCptr newGC, curGC; - - /* get memory for new GC cell */ - - if (!(newGC = (GCptr) malloc(sizeof(GCstruct)))) { - fprintf(stderr, "Ran out of memory(malloc) trying to create a ps GC.\n"); - exit(-1); - } - - /* attach newGC to chain */ - - if (GChead == NULL) - GChead = newGC; - else { /* attach newGC to end of linked list */ - curGC = GChead; - while (curGC->next != NULL) - curGC = curGC->next; - curGC->next = newGC; - } - - /* fill newGC with information */ - - newGC->GCint = gc; - sprintf(newGC->GCchar, "%s", C_gc); - newGC->next = NULL; - - if ((fp = fopen(psData[GCdictps].filename, "a")) == NULL) { - fprintf(stderr, "PSCreateContext cannot open %s\n", - psData[GCdictps].filename); - return (psError); - } - - fprintf(fp, "\t%d\t%d\t%d\n\t%f\t%f\t/%s\tmakeDict\n", joinStyle, - capStyle, lineWidth, bg, fg, C_gc); - - return (fclose(fp)); -} - -/* - * Looks into GC linked list with gc (unsigned long) as index to find the - * character name. - */ - -char * -PSfindGC(GC gc) -{ - GCptr curGC; - - curGC = GChead; - while ((curGC != NULL) && (curGC->GCint != gc)) - curGC = curGC->next; - - if (curGC == NULL) { - fprintf(stderr, "PSfindGC cannot find gc: %p.\n",gc); - return (NULL); - } - else - return (curGC->GCchar); -} - -/* - * Sets foreground color; see XSetForeground - */ - -int -GSetForeground( - GC gc, /* graphics context */ - float color, /* foreground color to be set */ - int dFlag) /* display flag: PS, X,... */ -{ - int s = 0; - - switch (dFlag) { - case Xoption: - XSetForeground(dsply, gc, (unsigned long) color); - break; - case PSoption: - { - FILE *fp; - - if ((fp = fopen(psData[scriptps].filename, "a")) == NULL) { - fprintf(stderr, "GSetForeground cannot open %s\n", - psData[scriptps].filename); - return (0); - } - fprintf(fp, "\t%s\t%f\tsetForeground\n", PSfindGC(gc), color); - s = fclose(fp); - break; - } - default: - fprintf(stderr, "GSetForeground request (%d) not implemented yet\n", dFlag); - return (0); - } - return (s); -} - -/* - * Sets background color; see XSetBackground - */ - -int -GSetBackground( - GC gc, /* graphics context */ - float color, /* background color to be set */ - int dFlag) /* display flag: PS, X,... */ -{ - int s = 0; - - switch (dFlag) { - case Xoption: - XSetBackground(dsply, gc, (unsigned long) color); - break; - case PSoption: - { - FILE *fp; - - if ((fp = fopen(psData[scriptps].filename, "a")) == NULL) { - fprintf(stderr, "GSetBackground cannot open %s\n", - psData[scriptps].filename); - return (0); - } - fprintf(fp, "\t%s\t%f\tsetBackground\n", PSfindGC(gc), color); - s = fclose(fp); - break; - } - default: - fprintf(stderr, "GSetBackground request (%d) not implemented yet\n", dFlag); - return (0); - } - return (s); -} - -/* - * See XSetLineAttributes. Notice that we'll not setting line style for - * postscript. This is because solid is the ls in ps and in view3d and 2d, - * we really don't use anything else than solid. - */ - -int -GSetLineAttributes( - GC gc, - int lineWidth, int lineStyle, int capStyle, int joinStyle, - int dFlag) -{ - int s = 0; - - switch (dFlag) { - case Xoption: - XSetLineAttributes(dsply, gc, lineWidth, lineStyle, - capStyle, joinStyle); - break; - case PSoption: - { - FILE *fp; - int psCap, psJoin; - - switch (capStyle) { - case 0: /* CapNotLast is not implemented in ps */ - case 1: - psCap = psButtCap; - break; - case 2: - psCap = psRoundCap; - break; - case 3: - psCap = psPSqCap; - break; - default: - fprintf(stderr, "cap style: %d unknown, using default.\n", capStyle); - psCap = psButtCap; - } - - switch (joinStyle) { - case 0: - psJoin = psMiterJoin; - break; - case 1: - psJoin = psRoundJoin; - break; - case 2: - psJoin = psBevelJoin; - break; - default: - fprintf(stderr, "join style: %d unknown, using default.\n", joinStyle); - psJoin = psMiterJoin; - } - - /* - * width of zero is machine-dependent and is not recom- mended, - * we'll use 1 as the thinest line available if (lineWidth < 1) - * lineWidth = 1; - */ - - if ((fp = fopen(psData[scriptps].filename, "a")) == NULL) { - fprintf(stderr, "GSetLineAttributes cannot open %s\n", - psData[scriptps].filename); - return (0); - } - - fprintf(fp, "\t%d\t%d\t%d\t%s\tsetLineAttributes\n", - lineWidth, psCap, psJoin, PSfindGC(gc)); - s = fclose(fp); - } - break; - default: - fprintf(stderr, "GSetLineAttributes request (%d) not implemented yet\n", dFlag); - return (0); - } - return (s); -} - -/* - * This procedure frees the data structure used for GC information, and also - * unlinks the GC dictionary file. - */ - -int -PSClose(void) -{ - if (GChead != NULL) { - - /* free memory used by GC struct */ - - GCptr curGC = GChead; - - while (curGC != NULL) { - GCptr freeGC = curGC; - - curGC = curGC->next; - free(freeGC); - } - } - - /* remove GC dictionary file */ - - return (unlink(psData[GCdictps].filename)); -} - - - - -int -centerX (GC viewGCx,char * theString,int strlength,int windowWidth) -{ - XFontStruct *fontStruct; - GContext con; - int result; - - - con=XGContextFromGC(viewGCx); - fontStruct = XQueryFont(dsply,con); - if(fontStruct == NULL) return(0); - result = (windowWidth - XTextWidth(fontStruct,theString,strlength))/2 - - fontStruct->min_bounds.lbearing; - XFreeFontInfo(NULL,fontStruct,1); - return(result); -} - - -int -centerY (GC viewGCy,int windowHeight) -{ - - XFontStruct *fontStruct; - GContext con; - int result; - - con=XGContextFromGC(viewGCy); - fontStruct = XQueryFont(dsply,con); - if (fontStruct == NULL) return(0); - result = (windowHeight - - (fontStruct->max_bounds.ascent + fontStruct->max_bounds.descent))/2 + - fontStruct->max_bounds.ascent; - XFreeFontInfo(NULL,fontStruct,1); - return(result); - -} - - -/* - * PSColorPolygon draws and fills a polygon given data in XPoint; see - * XFillPolygon - */ - -int -PSColorPolygon( - float r, float g, float b, /* red, green and blue color - * components */ - XPoint * points, /* vertices of polygon */ - int numberOfPoints) /* number of points */ -{ - int i = 0; - FILE *fp; - - if ((fp = fopen(psData[scriptps].filename, "a")) == NULL) { - fprintf(stderr, "PSColorPolygon cannot open %s\n", - psData[scriptps].filename); - return (psError); - } - - psData[colorpolyps].flag = yes; /* sets procedure flag */ - - fprintf(fp, "\t%f\t%f\t%f\tsetrgbcolor\n", r, g, b); - - i = numberOfPoints - 1; - while (i > 0) - { fprintf(fp, "\t%d\t%d\n", points[i].x, points[i].y); - i = i-1; - } - - fprintf(fp, "\t%d\t%d\t%d\tpsColorPoly\n", numberOfPoints, points[i].x, points[i].y); - - return (fclose(fp)); -} - - -/* - * PSColorwOutline draws and also outlines the colored polygon. - */ - -int -PSColorwOutline( - float r, float g, float b, /* red, green and blue color - * components */ - XPoint * points, /* vertices of polygon */ - int numberOfPoints) /* number of points */ -{ - int i = 0; - FILE *fp; - - if ((fp = fopen(psData[scriptps].filename, "a")) == NULL) { - fprintf(stderr, "PSDrawFOL cannot open %s\n", psData[scriptps].filename); - return (psError); - } - - psData[colorwolps].flag = yes; /* sets procedure flag */ - - fprintf(fp, "\t%f\t%f\t%f\tsetrgbcolor\n", r, g, b); - - i = numberOfPoints - 1; - while (i > 0) - { fprintf(fp, "\t%d\t%d\n", points[i].x, points[i].y); - i = i-1; - } - - fprintf(fp, "\t%d\t%d\t%d\tpsFillwOutline\n", - numberOfPoints, points[i].x, points[i].y); - - return (fclose(fp)); -} -/* - * This function does what XDraw would do, notice that only a subset of - * attributes in GC is implemented -- adequate for our purpose now - */ - -int -PSDrawColor( - float r, float g, float b, /* red, green and blue color components */ - XPoint *points, /* point list */ - int numberOfPoints) /* vertex count and display flag (X, PS,...) */ -{ - int i = 0; - FILE *fp; - - if ((fp = fopen(psData[scriptps].filename, "a")) == NULL) { - fprintf(stderr, "GDraw cannot open %s\n", - psData[scriptps].filename); - return (psError); - } - - psData[drawcolorps].flag = yes; /* set procedure flag */ - - fprintf(fp, "\t%f\t%f\t%f\tsetrgbcolor\n", r, g, b); - - i = numberOfPoints - 1; - while (i > 0) - { fprintf(fp, "\t%d\t%d\n", points[i].x, points[i].y); - i=i-1; - } - - fprintf(fp, "\t%d\t%d\t%d\tpsDrawColor\n", numberOfPoints, points[i].x, points[i].y); - - return (fclose(fp)); -} -/* - * PSFillPolygon draws and fills a polygon given data in XPoint; see - * XFillPolygon. - */ - -int -PSFillPolygon( - GC gc, /* graphics context */ - XPoint * points, /* vertices of polygon */ - int numberOfPoints) /* number of points */ -{ - int i = 0; - FILE *fp; - - if ((fp = fopen(psData[scriptps].filename, "a")) == NULL) { - fprintf(stderr, "PSFillPolygon cannot open %s\n", - psData[scriptps].filename); - return (psError); - } - - psData[fillpolyps].flag = yes; /* sets procedure flag */ - fprintf(fp, "\t%s\n", PSfindGC(gc)); - - i = numberOfPoints - 1; - while (i > 0) - { fprintf(fp, "\t%d\t%d\n", points[i].x, points[i].y); - i = i-1; - } - - fprintf(fp, "\t%d\t%d\t%d\tpsFillPoly\n", numberOfPoints, points[i].x, points[i].y); - - return (fclose(fp)); -} - -/* - * PSFillwOutline draws and also outlines the filled polygon. - */ - -int -PSFillwOutline( - GC gc, /* graphics context */ - XPoint * points, /* vertices of polygon */ - int numberOfPoints) /* number of points */ -{ - int i = 0; - FILE *fp; - - if ((fp = fopen(psData[scriptps].filename, "a")) == NULL) { - fprintf(stderr, "PSDrawFOL cannot open %s\n", psData[scriptps].filename); - return (psError); - } - - psData[fillwolps].flag = yes; /* sets procedure flag */ - fprintf(fp, "\t%s\n", PSfindGC(gc)); - - i = numberOfPoints - 1; - while (i > 0) - { fprintf(fp, "\t%d\t%d\n", points[i].x, points[i].y); - i = i-1; - } - - fprintf(fp, "\t%d\t%d\t%d\tpsFillwOutline\n", - numberOfPoints, points[i].x, points[i].y); - - return (fclose(fp)); -} -static int -TrivEqual(Window s1,Window s2) -{ - return ( s1 == s2); -} - -static int -TrivHash_code(Window s,int size) -{ - return (s % size); -} - - -HashTable * -XCreateAssocTable(int size) -{ - HashTable * table; - table = (HashTable *) malloc(sizeof(HashTable)); - hash_init(table,size,(EqualFunction)TrivEqual,(HashcodeFunction)TrivHash_code); - return table; -} - -void -XMakeAssoc(Display * dsp, HashTable *table, Window w, int * p) -{ - hash_insert(table,(char *) p, (char *) w); -} - -int * -XLookUpAssoc(Display * dsp, HashTable *table,Window w) -{ - return (int *) hash_find(table,(char *)w); -} - -void -XDeleteAssoc(Display * dsp,HashTable * table, Window w) -{ - hash_delete(table,(char *) w); -} - - - - - -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/graph/gdraws/loadfont.c.pamphlet b/src/graph/gdraws/loadfont.c.pamphlet deleted file mode 100644 index 9f31e93..0000000 --- a/src/graph/gdraws/loadfont.c.pamphlet +++ /dev/null @@ -1,71 +0,0 @@ -\documentclass{article} -\usepackage{axiom} -\begin{document} -\title{\$SPAD/src/graph loadfont.c} -\author{The Axiom Team} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -\section{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. -*/ -@ -<<*>>= -<> - - -/* load_font for display to test out Gdraw functions in this directory */ - -#include "gdraws0.h" -#include "../include/g.h" - -#include - -void -Gdraws_load_font(XFontStruct **font_info, char *fontname) -{ - if ((*font_info = XLoadQueryFont(dsply, fontname)) == NULL) { - fprintf(stderr, "cannot open font %s\n", fontname); - exit(-1); - } -} -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/graph/gdraws/main.c.pamphlet b/src/graph/gdraws/main.c.pamphlet deleted file mode 100644 index a8b4fdd..0000000 --- a/src/graph/gdraws/main.c.pamphlet +++ /dev/null @@ -1,215 +0,0 @@ -\documentclass{article} -\usepackage{axiom} -\begin{document} -\title{\$SPAD/src/graph main.c} -\author{The Axiom Team} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -\section{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. -*/ -@ -<<*>>= -<> - - -/* main procedure to test out Gdraw functions in this directory */ -#include -#include "gdraws0.h" -#include "../view3d/header.h" - -GC gc, gc1; -Display *dsply; -int scrn; -viewPoints *viewport; - -int psInit=no; -GCptr GChead=NULL; -char *PSfilename="OUTPUT.ps"; -char *envAXIOM; - -int -main(int argc, char **argv) -{ - - XGCValues values; - - XEvent report; - int x0=0, y0=0, width=300, height=200, border=3; - - char *fontname = "6x13"; - XFontStruct *dsp_font; - - Window menu; - char *str1 = " Print out the PostScript file? ", - *str0 = "Generate a PostScript file (OUTPUT.ps)?"; - int m_width, m_height, flag=yes; - - /* open display */ - if ((dsply = XOpenDisplay(NULL)) == NULL) { - printf("Can't open display NULL\n"); - exit(-1); - } - - scrn = DefaultScreen(dsply); - - /* access font */ - Gdraws_load_font(&dsp_font, fontname); - - values.background = WhitePixel(dsply, scrn); - values.foreground = BlackPixel(dsply, scrn); - - gc = XCreateGC(dsply, RootWindow(dsply, scrn), - (GCForeground | GCBackground), &values); - PSGlobalInit(); /* must initiate before using G/PS functions */ - PSCreateContext(gc, "gc", psNormalWidth, psButtCap, - psMiterJoin, psWhite, psBlack); - XSetFont(dsply, gc, dsp_font->fid); - gc1 = XCreateGC(dsply, RootWindow(dsply, scrn), - (GCForeground | GCBackground), &values); - PSCreateContext(gc1, "gc1", psNormalWidth, psButtCap, psMiterJoin, - psWhite, psBlack); - XSetFont(dsply, gc1, dsp_font->fid); - - if (!(viewport = (viewPoints *)malloc(sizeof(viewPoints)))) { - fprintf(stderr,"Ran out of memory (malloc) trying to create a viewport.\n"); - exit(-1); - } - - viewport->titleWindow = XCreateSimpleWindow(dsply, RootWindow(dsply,scrn), - x0, y0, width+6, - height+32+height/4, border, - BlackPixel(dsply, scrn), - WhitePixel(dsply, scrn)); - - viewport->viewWindow = XCreateSimpleWindow(dsply, viewport->titleWindow, - x0, y0+20, width, height, border, - BlackPixel(dsply, scrn), - WhitePixel(dsply, scrn)); - - strcpy(viewport->title, "what is a test title?"); - - m_width = width; m_height = height/4; - menu = XCreateSimpleWindow(dsply, viewport->titleWindow, x0, y0+20+height+6, - m_width, m_height, border, - BlackPixel(dsply,scrn), WhitePixel(dsply,scrn)); - - XSelectInput(dsply, viewport->viewWindow, - KeyPressMask|ButtonPressMask|ExposureMask); - XSelectInput(dsply, viewport->titleWindow, KeyPressMask|ExposureMask); - XSelectInput(dsply, menu, KeyPressMask|ButtonPressMask|ExposureMask); - - XMapWindow(dsply, viewport->viewWindow); - XMapWindow(dsply, viewport->titleWindow); - XFlush(dsply); - - while (yes) { - XNextEvent(dsply, &report); - switch (report.type) { - - case Expose: - if (report.xexpose.window==viewport->titleWindow) { - if (GDrawImageString(gc, viewport->titleWindow, - 20, 15, viewport->title, - strlen(viewport->title),X) == psError) - printf("screen draw image string failed.\n"); - if (Gdraws_data(X) == psError) - printf("screen Gdraws_data failed.\n"); - } - if (report.xexpose.window==viewport->viewWindow) { - if (Gdraws_data(X) == psError) - printf("screen Gdraws_data failed.\n"); - } - else if (report.xexpose.window==menu) { - if (flag) - Gdraws_draw_menu(menu, str0, m_width, m_height); - else - Gdraws_draw_menu(menu, str1, m_width, m_height); - } - break; - - case ButtonPress: - if (report.xbutton.window==viewport->viewWindow) { - XMapWindow(dsply, menu); - XFlush(dsply); - } - else if (report.xbutton.window==menu && flag) { - XUnmapWindow(dsply, menu); - if (Gdraws_pressed_yes(m_width, m_height, report.xbutton.x, - report.xbutton.y)) { - flag=no; - XMapWindow(dsply, menu); - PSInit(viewport->viewWindow, viewport->titleWindow); - if (Gdraws_data(PS) != psError) - PSCreateFile(3,viewport->viewWindow, - viewport->titleWindow,viewport->title); - else printf("PS Gdraws_data failed.\n"); - } - } - else if (report.xbutton.window==menu && !flag) { - XUnmapWindow(dsply, menu); - if (Gdraws_pressed_yes(m_width, m_height, report.xbutton.x, - report.xbutton.y)) - system("print OUTPUT.ps"); - flag = yes; - } - break; - - case KeyPress: - if (report.xkey.window==viewport->viewWindow || - report.xkey.window==viewport->titleWindow) { - XFreeGC(dsply, gc); - XFreeGC(dsply, gc1); - XCloseDisplay(dsply); - PSClose(); - exit(1); - } - else if (report.xkey.window==menu) XUnmapWindow(dsply, menu); - - default: - break; - } - } - return 0; -} -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/graph/gdraws/menu.c.pamphlet b/src/graph/gdraws/menu.c.pamphlet deleted file mode 100644 index fe24991..0000000 --- a/src/graph/gdraws/menu.c.pamphlet +++ /dev/null @@ -1,82 +0,0 @@ -\documentclass{article} -\usepackage{axiom} -\begin{document} -\title{\$SPAD/src/graph menu.c} -\author{The Axiom Team} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -\section{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. -*/ -@ -<<*>>= -<> - -/* menu of display used for testing out Gdraw functions in this directory */ -#include "gdraws0.h" -#include "../include/g.h" - -extern GC gc; - -void -Gdraws_draw_menu(Window menu, char *str, int width, int height) -{ - char *str1 = "y e s", *str2 = "n o"; - int x0=0, y0=0; - - XDrawString(dsply, menu, gc, 30, height/4+3, str, strlen(str)); - - XFillArc(dsply, menu, gc, 35, height/3+5, width/2-50, height/3*2-10, - 0*64, 360*64); - - XFillArc(dsply, menu, gc, width/2+5, height/3+5, width/2-50, height/3*2-10, - 0*64, 360*64); - - XSetForeground(dsply, gc, WhitePixel(dsply, scrn)); - XDrawString(dsply, menu, gc, width/4-5, height/3*2+3, str1, strlen(str1)); - XDrawString(dsply, menu, gc, width/4*3-28,height/3*2+3, str2, strlen(str2)); - XSetForeground(dsply, gc, BlackPixel(dsply, scrn)); - - XFlush(dsply); -} -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/graph/gdraws/psfiles.pamphlet b/src/graph/gdraws/psfiles.pamphlet deleted file mode 100644 index bcdfd40..0000000 --- a/src/graph/gdraws/psfiles.pamphlet +++ /dev/null @@ -1,635 +0,0 @@ -\documentclass{article} -\usepackage{axiom} -\begin{document} -\title{\$SPAD/src/graph/gdraws psfiles} -\author{Timothy Daly} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -\section{The postscript command definitions} -\subsection{colorpoly} -\begin{verbatim} -operand stack configuration in order to use psColorPoly: - psFillPoly - XPoint[0].y - XPoint[0].x - n - ... - XPoint[n].y - XPoint[n].x - graphics-context dictionary -this draws a polygon by connecting all the points and fills the -region with foreground color -\end{verbatim} -<>= -/psColorPoly - { gsave - newpath - yVal moveto - 1 sub { - yVal lineto - } repeat - closepath - fill %% fills with foreground color - grestore } - def - -@ -\subsection{colorwol} -\begin{verbatim} -operand stack configuration in order to use psDrawFilled: - psFillwOL - XPoint[0].y - XPoint[0].x - n - ... - XPoint[n].y - XPoint[n].x - graphics-context dictionary -this draws lines connecting all the points and fills the -region with background color (default: 1, or white). -\end{verbatim} -<>= -/psColorwOutline - { gsave - newpath - yVal moveto - 1 sub { - yVal lineto - } repeat - closepath - begin gsave fill grestore %% fills with foreground color - 0 setgray stroke grestore end } %% outline it with black - def - -@ -\subsection{drawarc} -\begin{verbatim} -operand stack configuration in order to use psDrawArc: - psDrawArc - angle2 - angle1 - width - height - y - x - graphics-context dictionary -this draws an arc whose origin is at x, y, and whose width -and height specifies the rectangle which encases the arc. -Origin is at upper left corner of rectangle. -This function uses "scale" to make cricles and ellipses. -\end{verbatim} -<>= -/psDrawArc - { gsave - newpath - /sfactor 4 index 4 index div def %% scale factor - 1 sfactor scale - 6 5 roll %% x on top of stack - 3 index 2 div add %% define x origin - 6 5 roll %% y on top of stack - 6 5 roll %% h on top of stack - 2 div add yVal sfactor div %% define y origin - 5 4 roll %% w on top of stack - 2 div %% define radius - 5 3 roll %% a1 a2 on top of stack - 1 index add - arcn %% draw clockwise arc - begin installGC stroke end - grestore } - def - -@ -\subsection{drawcolor} -\begin{verbatim} -operand stack configuration in order to use psDrawColor: - psDraw - vlist[0].y - vlist[0].x - n - ... - vlist[n].y - vlist[n].x - graphics-context dictionary -to draw lines connecting points in vlist[0] to vlist[n] -\end{verbatim} -<>= -/psDrawColor - { gsave - newpath - yVal moveto %% set currentpoint - 1 sub { %% loop to draw lines. - yVal lineto - } repeat - stroke %% draw in foreground color - grestore } - def - -@ -\subsection{drawIstr} -\begin{verbatim} -operand stack configuration in order to use psDrawIStr: - psDrawIStr - window type: title or window - string - y - x - graphics-context dictionary -it draws a text string in foreground color on top of bounding box of -string, which is in background color. -\end{verbatim} -<>= -/psDrawIStr - { gsave - newpath %% for rectangle - loadFont - - /window exch def %% get window type - - %% draw bounding box with background color - /str exch def %% get text string - str stringwidth pop 1 sub %% width - FontHeight 1 sub %% height - currentfont begin %% get font height - FontBBox - end - /ypos exch def pop %% define ypos - neg ypos add /offset exch def pop - /offset ypos offset div FontHeight mul def %% define offset - /h exch def /w exch def %% define h - /y0 exch def %% define y0 - /x0 exch def %% define x0 - w h x0 y0 offset sub - window (title) eq - {hVal moveto drawRect} %% draws in title window - {rectangle} ifelse %% draws in view window - begin - BGcolor setgray fill %% set background box color - - x0 y0 - window (title) eq - {hVal} %% print title text - {yVal} ifelse %% print window text - moveto str - FGcolor setgray show %% set text color - end - grestore } - def - -@ -\subsection{drawline} -\begin{verbatim} -operand stack configuration in order to use psDrawLine: - psDrawLine - y0 - x0 - y1 - x1 - graphics-context dictionary -this draws a line from (x0, y0) to (x1, y1). -\end{verbatim} -<>= -/psDrawLine - { gsave - newpath - yVal moveto - yVal lineto - begin installGC stroke end - grestore } - def - -@ -\subsection{drawlines} -\begin{verbatim} -operand stack configuration in order to use psDrawLines: - psDrawLines - points[0].y - points[0].x - n - ... - points[n].y - points[n].x - graphics-context dictionary -this draws lines connecting all the points. -\end{verbatim} -<>= -/psDrawLines - { gsave - newpath - yVal moveto - 1 sub { - yVal lineto - } repeat - begin installGC stroke end - grestore } - def - -@ -\subsection{drawpoint} -\begin{verbatim} -operand stack configuration in order to use psDrawPoint: - psDrawPoint - y0 - x0 - graphics-context dictionary -this draws a point at (x0, y0). -\end{verbatim} -<>= -/psDrawPoint - { gsave - newpath - yVal moveto - yVal lineto - begin installGC stroke end %%fills with foreground color - grestore } - def - -@ -\subsection{draw} -\begin{verbatim} -operand stack configuration in order to use psDraw: - psDraw - vlist[0].y - vlist[0].x - n - ... - vlist[n].y - vlist[n].x - graphics-context dictionary -to draw lines connecting points in vlist[0] to vlist[n] -\end{verbatim} -<>= -/psDraw - { gsave - newpath - yVal moveto %% set currentpoint - 1 sub { %% loop to draw lines. - yVal lineto - } repeat - begin installGC stroke end %% draw in foreground color - grestore } - def - -@ -\subsection{drawrect} -\begin{verbatim} -operand stack configuration in order to use psDrawRect: - psDrawRect - y - x - height - width - graphics-context dictionary -this draws an outline of a rectangle whose origin is at (x,y) and is width -+ 1 wide and height + 1 tall. -\end{verbatim} -<>= -/psDrawRect - { gsave - newpath - rectangle - begin installGC stroke end - grestore } - def - -@ -\subsection{drawstr} -\begin{verbatim} -operand stack configuration in order to use psDrawStr: - psDrawStr - y - x - string - graphics-context dictionary -this function draws a text string at (x,y). -\end{verbatim} -<>= -/psDrawStr - { gsave - newpath - loadFont - yVal moveto - exch begin installGC show end - grestore } - def - -@ -\subsection{drwfilled} -\begin{verbatim} -operand stack configuration in order to use psDrawFilled: - psDrawFilled - vlist[0].y - vlist[0].x - n - ... - vlist[n].y - vlist[n].x - graphics-context dictionary -this draws lines connecting all the points and fills the -region with background color (default: 1, or white). -\end{verbatim} -<>= -/psDrawFilled - { gsave - newpath - yVal moveto - 1 sub { - yVal lineto - } repeat - begin installGC fill end %% fills with foreground color - grestore } - def - -@ -\subsection{end} -\begin{verbatim} -\end{verbatim} -<>= - - cleartomark %% clearing operand stack - -end %% pops mainDict from dictionary stack - -showpage - -%-------------------------- end --------------------------% -@ -\subsection{fillarc} -\begin{verbatim} -operand stack configuration in order to use psFillArc: - psFillArc - y center of rectangle - x center of rectangle - angle2 - angle1 - width - height - y - x - graphics-context dictionary -this draws and fills an arc whose origin is at x, y, and whose width -and height specifies the rectangle which encases the arc. -Origin is at upper left corner of rectangle. -This function uses "scale" to make cricles and ellipses. -\end{verbatim} -<>= -/psFillArc - { gsave - yVal moveto - newpath - /sfactor 4 index 4 index div def - 1 sfactor scale - 6 5 roll %% x on top of stack - 3 index 2 div add %% define x origin - 6 5 roll %% y on top of stack - 6 5 roll %% h on top of stack - 2 div add yVal sfactor div %% define y origin - 5 4 roll %% w on top of stack - 2 div %% define radius - 5 3 roll %% a1 a2 now on top - 1 index add - arc %% draw clockwise arc - begin installGC fill end %% fills with foreground color - grestore } - def - -@ -\subsection{fillpoly} -\begin{verbatim} -operand stack configuration in order to use psDrawFilled: - psFillPoly - XPoint[0].y - XPoint[0].x - n - ... - XPoint[n].y - XPoint[n].x - graphics-context dictionary -this draws a polygon by connecting all the points and fills the -region with foreground color -\end{verbatim} -<>= -/psFillPoly - { gsave - newpath - yVal moveto - 1 sub { - yVal lineto - } repeat - closepath - begin installGC fill end %% fills with foreground color - grestore } - def - -@ -\subsection{fillwol} -\begin{verbatim} -operand stack configuration in order to use psDrawFilled: - psFillwOL - XPoint[0].y - XPoint[0].x - n - ... - XPoint[n].y - XPoint[n].x - graphics-context dictionary -this draws lines connecting all the points and fills the -region with background color (default: 1, or white). -\end{verbatim} -<>= -/psFillwOutline - { gsave - newpath - yVal moveto - 1 sub { - yVal lineto - } repeat - closepath - begin installGC - gsave fill grestore %% fills with foreground color - 0 setgray stroke grestore end } %% outline it with black - def - -@ -\subsection{header} -\begin{verbatim} -\end{verbatim} -<
>= -%!PS-Adobe-2.0 -%%DocumentFonts: Times-Roman -%%Creator: AXIOM -%%CreationDate: today -%%Pages: 1 -%%processing (hard) limit: 250 pts or 500 values for the operand stack. -%%EndComments - -%------------------------------- prologue -------------------------------% -%-------------------------- support procedures --------------------------% - -%--------- first create user dictionary with 100 entries max ------------% -% (number can be changed to accomodate definitions) % - -100 dict begin %% using 100 entries in top level dictionary - -/FontHeight 12 def - -/inch - { 72 mul } - def - -% yVal and hVal are necessary because the Xwindow display origin -% is at the upper left corner, while the postscript display -% origin is at the lower left hand corner. - -/yVal %% get Y value -- make upper left corner origin - { maxY exch sub } %% maxY is viewWindow height - def - -/hVal %% get H value -- used for displaying title text - { maxH sub abs } %% maxH is viewWindow height+titleWindow height - def - -% loads in the font - -/loadFont - { /Times-Roman findfont FontHeight scalefont setfont } - def - -% draws a rectangle with input operand: -% height -% width -% notice that this function does not "draw" or ink the rectangle. -/drawRect - { 1 index 1 add 0 rlineto %% draw first side - 0 exch 1 add neg rlineto %% draw second side - 1 add neg 0 rlineto %% draw third side - closepath } %% draw fourth side - def - -% create a rectangle with input operand in the view window: -% y -% x -% height -% width -% notice that this function does not "draw" or ink the rectangle. -/rectangle - { yVal moveto %% set currentpoint for line - drawRect } %% draws the rectangle - def - -% These are global variables that every draw procedure uses -% THe operand should be as follows: -% viewWindow width -% viewWindow height -% title height -/setDim - { /maxX exch def %% width of display - /maxY exch def %% height of display - /titleH exch def %% height of title - /maxH maxY titleH add def %% height of display + title - } def - -%-------------------------- major procedures --------------------------% - -/title %% draws a rectangle around the title of picture - { gsave - newpath - moveto %% lower left of title - titleH 1 add 0 exch rlineto %% draw first side - 1 add 0 rlineto %% draw second side - 1 add neg 0 exch rlineto - begin installGC stroke end %% draw third side - grestore } - def - -/drawFrame %% draw display frame - { gsave - newpath - maxX maxY 0 0 rectangle - begin installGC stroke end - grestore } - def - -% updates the foreground color of existing graphics-context dictionary: -% foreground color -% dictionary name -/setForeground - { /FGcolor exch put } - def - -% updates the background color of existing graphics-context dictionary: -% background color -% dictionary name -/setBackground - { /BGcolor exch put } - def - -% updates the line width, line style, cap style, join style of -% existing graphics-context dictionary: -% dictionary name -% join style -% cap style -% line width -/setLineAttributes - { begin - /JoinStyle exch def - /CapStyle exch def - /LineWidth exch def - end } - def - -% creates a graphics context dictionary with the following information: -% /dictionary name -% foreground color -% background color -% line width -% cap style -% join style -% this creates different graphical contexts for different drawing functions. -/makeDict - { 5 dict 2 copy def begin pop %% with dict name on top of stack - /FGcolor exch def %% define drawing attributes - /BGcolor exch def %% not heavily used - /LineWidth exch def - /CapStyle exch def - /JoinStyle exch def - end } - def - -% makes the current dictionary attributes effective -% this function takes the values in the current dictionary to set the context -% these are the values currently being used: foreground, cap, join, and width -/installGC - { - FGcolor currentgray ne - {FGcolor setgray} if %% foreground color - CapStyle currentlinecap ne - {CapStyle setlinecap} if %% cap style - JoinStyle currentlinejoin ne - {JoinStyle setlinejoin} if %% join style - LineWidth currentlinewidth ne - {LineWidth setlinewidth} if } %% line width - def - -@ -\subsection{setup} -\begin{verbatim} -\end{verbatim} -<>= -%-------------------------- script --------------------------% - -% 1 inch 1 inch translate - - mark %% mark bottom of our stack - -@ -<<*>>= -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/graph/gdraws/yesorno.c.pamphlet b/src/graph/gdraws/yesorno.c.pamphlet deleted file mode 100644 index 693428d..0000000 --- a/src/graph/gdraws/yesorno.c.pamphlet +++ /dev/null @@ -1,67 +0,0 @@ -\documentclass{article} -\usepackage{axiom} -\begin{document} -\title{\$SPAD/src/graph yesorno.c} -\author{The Axiom Team} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -\section{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. -*/ -@ -<<*>>= -<> - -/* - * Decides if mouse click was in yes or no region; used by program to test - * out Gdraw functions in this directory. - */ - -#include "gdraws0.h" - -int -Gdraws_pressed_yes(int win_width, int win_height, int x, int y) -{ - return (x < win_width / 2) ? yes : no; -} -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document}