[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Axiom-developer] 20080603.01.tpd.patch (remove src/graph/view2d)
From: |
daly |
Subject: |
[Axiom-developer] 20080603.01.tpd.patch (remove src/graph/view2d) |
Date: |
Mon, 2 Jun 2008 05:27:50 -0500 |
src/graph/view2d has been replaced by bookvol8.
The makefiles no longer use this subdirectory and it has been removed.
======================================================================
diff --git a/changelog b/changelog
index a84a022..1704d83 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,17 @@
+20080602 tpd src/graph/view2d removed.
+20080602 tpd src/graph/view2d/write2d.c removed, replace by bookvol8
+20080602 tpd src/graph/view2d/viewport2d.c removed, replace by bookvol8
+20080602 tpd src/graph/view2d/stuff2d.c removed, replace by bookvol8
+20080602 tpd src/graph/view2d/spadaction2d.c removed, replace by bookvol8
+20080602 tpd src/graph/view2d/process2d.c removed, replace by bookvol8
+20080602 tpd src/graph/view2d/pot2d.c removed, replace by bookvol8
+20080602 tpd src/graph/view2d/Makefile removed, replace by bookvol8
+20080602 tpd src/graph/view2d/main2d.c removed, replace by bookvol8
+20080602 tpd src/graph/view2d/header2.h removed, replace by bookvol8
+20080602 tpd src/graph/view2d/graph2d.c removed, replace by bookvol8
+20080602 tpd src/graph/view2d/globals2.h removed, replace by bookvol8
+20080602 tpd src/graph/view2d/control2d.c removed, replace by bookvol8
+20080602 tpd src/graph/view2d/buttons2d.c removed, replace by bookvol8
20080602 tpd books/bookvol8 make view2d
20080602 tpd src/graph/Makefile make view2d from bookvol8
20080601 tpd books/bookvol8 document APIs, formats, environment
diff --git a/src/graph/view2d/Makefile.pamphlet
b/src/graph/view2d/Makefile.pamphlet
deleted file mode 100644
index 202e8b2..0000000
--- a/src/graph/view2d/Makefile.pamphlet
+++ /dev/null
@@ -1,378 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph/view2d Makefile}
-\author{Timothy Daly}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{environment variables}
-<<environment>>=
-IN= ${SRC}/graph/view2d
-MIDINT= ${INT}/graph/view2d
-MIDOBJ= ${OBJ}/${SYS}/graph/view2d
-LIB= ${OBJ}/${SYS}/lib
-OUT= ${MNT}/${SYS}/lib
-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
-
-LDFLAGS = ${LDF} ${STATIC} -lX11 -lm ${LDF}
-
-@
-\section{view2d code}
-\subsection{buttons2d}
-<<buttons2d.c (MIDINT from IN)>>=
-${MIDINT}/buttons2d.c: ${IN}/buttons2d.c.pamphlet
- @ echo 1 making ${MIDINT}/buttons2d.c from ${IN}/buttons2d.c.pamphlet
- @( cd ${MIDINT} ; \
- ${TANGLE} ${IN}/buttons2d.c.pamphlet >buttons2d.c )
-
-@
-<<buttons2d.o (MIDOBJ from MIDINT)>>=
-${MIDOBJ}/buttons2d.o: ${HEADERS} ${MIDINT}/buttons2d.c
- @ echo 2 making ${MIDOBJ}/buttons2d.o from ${MIDINT}/buttons2d.c
- @ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/buttons2d.c )
-
-@
-<<buttons2d.c.dvi (DOC from IN)>>=
-${DOC}/buttons2d.c.dvi: ${IN}/buttons2d.c.pamphlet
- @echo 3 making ${DOC}/buttons2d.c.dvi from ${IN}/buttons2d.c.pamphlet
- @(cd ${DOC} ; \
- cp ${IN}/buttons2d.c.pamphlet ${DOC} ; \
- ${DOCUMENT} ${NOISE} buttons2d.c ; \
- rm -f ${DOC}/buttons2d.c.pamphlet ; \
- rm -f ${DOC}/buttons2d.c.tex ; \
- rm -f ${DOC}/buttons2d.c )
-
-@
-\subsection{control2d}
-<<control2d.c (MIDINT from IN)>>=
-${MIDINT}/control2d.c: ${IN}/control2d.c.pamphlet
- @ echo 4 making ${MIDINT}/control2d.c from ${IN}/control2d.c.pamphlet
- @( cd ${MIDINT} ; \
- ${TANGLE} ${IN}/control2d.c.pamphlet >control2d.c )
-
-@
-<<control2d.o (MIDOBJ from MIDINT)>>=
-${MIDOBJ}/control2d.o: ${HEADERS} ${MIDINT}/control2d.c \
- ${LINC}/mouse11.bitmap ${LINC}/mouse11.mask
- @ echo 5 making ${MIDOBJ}/control2d.o from ${MIDINT}/control2d.c
- @ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/control2d.c )
-
-@
-<<control2d.c.dvi (DOC from IN)>>=
-${DOC}/control2d.c.dvi: ${IN}/control2d.c.pamphlet
- @echo 6 making ${DOC}/control2d.c.dvi from ${IN}/control2d.c.pamphlet
- @(cd ${DOC} ; \
- cp ${IN}/control2d.c.pamphlet ${DOC} ; \
- ${DOCUMENT} ${NOISE} control2d.c ; \
- rm -f ${DOC}/control2d.c.pamphlet ; \
- rm -f ${DOC}/control2d.c.tex ; \
- rm -f ${DOC}/control2d.c )
-
-@
-\subsection{graph2d}
-<<graph2d.c (MIDINT from IN)>>=
-${MIDINT}/graph2d.c: ${IN}/graph2d.c.pamphlet
- @ echo 7 making ${MIDINT}/graph2d.c from ${IN}/graph2d.c.pamphlet
- @( cd ${MIDINT} ; \
- ${TANGLE} ${IN}/graph2d.c.pamphlet >graph2d.c )
-
-@
-<<graph2d.o (MIDOBJ from MIDINT)>>=
-${MIDOBJ}/graph2d.o: ${HEADERS} ${MIDINT}/graph2d.c
- @ echo 8 making ${MIDOBJ}/graph2d.o from ${MIDINT}/graph2d.c
- @ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/graph2d.c )
-
-@
-<<graph2d.c.dvi (DOC from IN)>>=
-${DOC}/graph2d.c.dvi: ${IN}/graph2d.c.pamphlet
- @echo 9 making ${DOC}/graph2d.c.dvi from ${IN}/graph2d.c.pamphlet
- @(cd ${DOC} ; \
- cp ${IN}/graph2d.c.pamphlet ${DOC} ; \
- ${DOCUMENT} ${NOISE} graph2d.c ; \
- rm -f ${DOC}/graph2d.c.pamphlet ; \
- rm -f ${DOC}/graph2d.c.tex ; \
- rm -f ${DOC}/graph2d.c )
-
-@
-\subsection{main2d}
-<<main2d.c (MIDINT from IN)>>=
-${MIDINT}/main2d.c: ${IN}/main2d.c.pamphlet
- @ echo 10 making ${MIDINT}/main2d.c from ${IN}/main2d.c.pamphlet
- @( cd ${MIDINT} ; \
- ${TANGLE} ${IN}/main2d.c.pamphlet >main2d.c )
-
-@
-<<main2d.o (MIDOBJ from MIDINT)>>=
-${MIDOBJ}/main2d.o: ${LINC}/xdefs.h ${HEADERS} ${MIDINT}/main2d.c
- @ echo 11 making ${MIDOBJ}/main2d.o from ${MIDINT}/main2d.c
- @ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/main2d.c )
-
-@
-<<main2d.c.dvi (DOC from IN)>>=
-${DOC}/main2d.c.dvi: ${IN}/main2d.c.pamphlet
- @echo 12 making ${DOC}/main2d.c.dvi from ${IN}/main2d.c.pamphlet
- @(cd ${DOC} ; \
- cp ${IN}/main2d.c.pamphlet ${DOC} ; \
- ${DOCUMENT} ${NOISE} main2d.c ; \
- rm -f ${DOC}/main2d.c.pamphlet ; \
- rm -f ${DOC}/main2d.c.tex ; \
- rm -f ${DOC}/main2d.c )
-
-@
-\subsection{pot2d}
-<<pot2d.c (MIDINT from IN)>>=
-${MIDINT}/pot2d.c: ${IN}/pot2d.c.pamphlet
- @ echo 13 making ${MIDINT}/pot2d.c from ${IN}/pot2d.c.pamphlet
- @( cd ${MIDINT} ; \
- ${TANGLE} ${IN}/pot2d.c.pamphlet >pot2d.c )
-
-@
-<<pot2d.o (MIDOBJ from MIDINT)>>=
-${MIDOBJ}/pot2d.o: ${HEADERS} ${MIDINT}/pot2d.c
- @ echo 14 making ${MIDOBJ}/pot2d.o from ${MIDINT}/pot2d.c
- @ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/pot2d.c )
-
-@
-<<pot2d.c.dvi (DOC from IN)>>=
-${DOC}/pot2d.c.dvi: ${IN}/pot2d.c.pamphlet
- @echo 15 making ${DOC}/pot2d.c.dvi from ${IN}/pot2d.c.pamphlet
- @(cd ${DOC} ; \
- cp ${IN}/pot2d.c.pamphlet ${DOC} ; \
- ${DOCUMENT} ${NOISE} pot2d.c ; \
- rm -f ${DOC}/pot2d.c.pamphlet ; \
- rm -f ${DOC}/pot2d.c.tex ; \
- rm -f ${DOC}/pot2d.c )
-
-@
-\subsection{process2d}
-<<process2d.c (MIDINT from IN)>>=
-${MIDINT}/process2d.c: ${IN}/process2d.c.pamphlet
- @ echo 16 making ${MIDINT}/process2d.c from ${IN}/process2d.c.pamphlet
- @( cd ${MIDINT} ; \
- ${TANGLE} ${IN}/process2d.c.pamphlet >process2d.c )
-
-@
-<<process2d.o (MIDOBJ from MIDINT)>>=
-${MIDOBJ}/process2d.o: ${HEADERS} ${MIDINT}/process2d.c
- @ echo 17 making ${MIDOBJ}/process2d.o from ${MIDINT}/process2d.c
- @ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/process2d.c )
-
-@
-<<process2d.c.dvi (DOC from IN)>>=
-${DOC}/process2d.c.dvi: ${IN}/process2d.c.pamphlet
- @echo 18 making ${DOC}/process2d.c.dvi from ${IN}/process2d.c.pamphlet
- @(cd ${DOC} ; \
- cp ${IN}/process2d.c.pamphlet ${DOC} ; \
- ${DOCUMENT} ${NOISE} process2d.c ; \
- rm -f ${DOC}/process2d.c.pamphlet ; \
- rm -f ${DOC}/process2d.c.tex ; \
- rm -f ${DOC}/process2d.c )
-
-@
-\subsection{spadaction2d}
-<<spadaction2d.c (MIDINT from IN)>>=
-${MIDINT}/spadaction2d.c: ${IN}/spadaction2d.c.pamphlet
- @ echo 19 making ${MIDINT}/spadaction2d.c from
${IN}/spadaction2d.c.pamphlet
- @( cd ${MIDINT} ; \
- ${TANGLE} ${IN}/spadaction2d.c.pamphlet >spadaction2d.c )
-
-@
-<<spadaction2d.o (MIDOBJ from MIDINT)>>=
-${MIDOBJ}/spadaction2d.o: ${HEADERS} ${MIDINT}/spadaction2d.c
- @ echo 20 making ${MIDOBJ}/spadaction2d.o from ${MIDINT}/spadaction2d.c
- @ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/spadaction2d.c )
-
-@
-<<spadaction2d.c.dvi (DOC from IN)>>=
-${DOC}/spadaction2d.c.dvi: ${IN}/spadaction2d.c.pamphlet
- @echo 21 making ${DOC}/spadaction2d.c.dvi from
${IN}/spadaction2d.c.pamphlet
- @(cd ${DOC} ; \
- cp ${IN}/spadaction2d.c.pamphlet ${DOC} ; \
- ${DOCUMENT} ${NOISE} spadaction2d.c ; \
- rm -f ${DOC}/spadaction2d.c.pamphlet ; \
- rm -f ${DOC}/spadaction2d.c.tex ; \
- rm -f ${DOC}/spadaction2d.c )
-
-@
-\subsection{stuff2d}
-<<stuff2d.c (MIDINT from IN)>>=
-${MIDINT}/stuff2d.c: ${IN}/stuff2d.c.pamphlet
- @ echo 25 making ${MIDINT}/stuff2d.c from ${IN}/stuff2d.c.pamphlet
- @( cd ${MIDINT} ; \
- ${TANGLE} ${IN}/stuff2d.c.pamphlet >stuff2d.c )
-
-@
-<<stuff2d.o (MIDOBJ from MIDINT)>>=
-${MIDOBJ}/stuff2d.o: ${HEADERS} ${MIDINT}/stuff2d.c
- @ echo 26 making ${MIDOBJ}/stuff2d.o from ${MIDINT}/stuff2d.c
- @ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/stuff2d.c )
-
-@
-<<stuff2d.c.dvi (DOC from IN)>>=
-${DOC}/stuff2d.c.dvi: ${IN}/stuff2d.c.pamphlet
- @echo 27 making ${DOC}/stuff2d.c.dvi from ${IN}/stuff2d.c.pamphlet
- @(cd ${DOC} ; \
- cp ${IN}/stuff2d.c.pamphlet ${DOC} ; \
- ${DOCUMENT} ${NOISE} stuff2d.c ; \
- rm -f ${DOC}/stuff2d.c.pamphlet ; \
- rm -f ${DOC}/stuff2d.c.tex ; \
- rm -f ${DOC}/stuff2d.c )
-
-@
-\subsection{viewport2d}
-<<viewport2d.c (MIDINT from IN)>>=
-${MIDINT}/viewport2d.c: ${IN}/viewport2d.c.pamphlet
- @ echo 28 making ${MIDINT}/viewport2d.c from ${IN}/viewport2d.c.pamphlet
- @( cd ${MIDINT} ; \
- ${TANGLE} ${IN}/viewport2d.c.pamphlet >viewport2d.c )
-
-@
-<<viewport2d.o (MIDOBJ from MIDINT)>>=
-${MIDOBJ}/viewport2d.o: ${HEADERS} ${LINC}/spadbitmap.bitmap \
- ${LINC}/spadmask.mask ${MIDINT}/viewport2d.c
- @ echo 29 making ${MIDOBJ}/viewport2d.o from ${MIDINT}/viewport2d.c
- @ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/viewport2d.c )
-
-@
-<<viewport2d.c.dvi (DOC from IN)>>=
-${DOC}/viewport2d.c.dvi: ${IN}/viewport2d.c.pamphlet
- @echo 30 making ${DOC}/viewport2d.c.dvi from
${IN}/viewport2d.c.pamphlet
- @(cd ${DOC} ; \
- cp ${IN}/viewport2d.c.pamphlet ${DOC} ; \
- ${DOCUMENT} ${NOISE} viewport2d.c ; \
- rm -f ${DOC}/viewport2d.c.pamphlet ; \
- rm -f ${DOC}/viewport2d.c.tex ; \
- rm -f ${DOC}/viewport2d.c )
-
-@
-\subsection{write2d}
-<<write2d.c (MIDINT from IN)>>=
-${MIDINT}/write2d.c: ${IN}/write2d.c.pamphlet
- @ echo 31 making ${MIDINT}/write2d.c from ${IN}/write2d.c.pamphlet
- @( cd ${MIDINT} ; \
- ${TANGLE} ${IN}/write2d.c.pamphlet >write2d.c )
-
-@
-<<write2d.o (MIDOBJ from MIDINT)>>=
-${MIDOBJ}/write2d.o: ${MIDINT}/write2d.c ${LINC}/write.h ${HEADERS}
- @ echo 32 making ${MIDOBJ}/write2d.o from ${MIDINT}/write2d.c
- @ ( cd ${MIDOBJ} ; ${CC} -c ${CFLAGS} ${MIDINT}/write2d.c )
-
-@
-<<write2d.c.dvi (DOC from IN)>>=
-${DOC}/write2d.c.dvi: ${IN}/write2d.c.pamphlet
- @echo 33 making ${DOC}/write2d.c.dvi from ${IN}/write2d.c.pamphlet
- @(cd ${DOC} ; \
- cp ${IN}/write2d.c.pamphlet ${DOC} ; \
- ${DOCUMENT} ${NOISE} write2d.c ; \
- rm -f ${DOC}/write2d.c.pamphlet ; \
- rm -f ${DOC}/write2d.c.tex ; \
- rm -f ${DOC}/write2d.c )
-
-@
-\subsection{view2d}
-Renaud Rioboo pointed out that we should dynamically link Xpm
-rather than use static libraries since statics fail on Fedora 5.
-<<view2d>>=
-${OUT}/view2d: ${VIEW2D_OBJS} ${GDRAW_OBJS} ${LIBFILES}
- @ echo 34 linking ${OUT}/view2d
- @ ${CC} ${VIEW2D_OBJS} ${GDRAW_OBJS} ${LIBFILES} \
- -o ${OUT}/view2d $(LDFLAGS)
-
-@
-<<*>>=
-
-<<environment>>
-
-CFLAGS = ${CCF} -I${LINC} -I${GINC} -I${IN}
-
-DOCFILES= ${DOC}/buttons2d.c.dvi ${DOC}/control2d.c.dvi \
- ${DOC}/graph2d.c.dvi ${DOC}/main2d.c.dvi \
- ${DOC}/pot2d.c.dvi ${DOC}/process2d.c.dvi \
- ${DOC}/spadaction2d.c.dvi ${DOC}/stuff2d.c.dvi \
- ${DOC}/viewport2d.c.dvi ${DOC}/write2d.c.dvi
-
-VIEW2D_OBJS= \
- ${MIDOBJ}/buttons2d.o ${MIDOBJ}/control2d.o ${MIDOBJ}/graph2d.o \
- ${MIDOBJ}/main2d.o ${MIDOBJ}/pot2d.o ${MIDOBJ}/process2d.o \
- ${MIDOBJ}/spadaction2d.o ${MIDOBJ}/stuff2d.o ${MIDOBJ}/viewport2d.o \
- ${MIDOBJ}/write2d.o
-
-GDRAW= ${OBJ}/${SYS}/graph/gdraws
-
-GDRAW_OBJS = ${GDRAW}/gfun.o ${OBJ}/${SYS}/lib/hash.o
-
-HEADERS = ${IN}/header2.h ${IN}/globals2.h ${LINC}/view2d.h \
- ${LINC}/actions.h ${LINC}/viewcommand.h ${GINC}/view.h ${LINC}/g.h
-
-LIBFILES=${LIB}/bsdsignal.o ${LIB}/util.o ${LIB}/pixmap.o \
- ${LIB}/halloc.o ${LIB}/spadcolors.o ${LIB}/xspadfill.o \
- ${LIB}/xdither.o ${LIB}/xshade.o
-
-all: ${VIEW2D_OBJS} ${GDRAW_OBJS} ${LIBFILES} ${OUT}/view2d ${DOCFILES}
- @ echo 36 finished ${IN}
-
-<<view2d>>
-
-<<buttons2d.c (MIDINT from IN)>>
-<<buttons2d.o (MIDOBJ from MIDINT)>>
-<<buttons2d.c.dvi (DOC from IN)>>
-
-<<control2d.c (MIDINT from IN)>>
-<<control2d.o (MIDOBJ from MIDINT)>>
-<<control2d.c.dvi (DOC from IN)>>
-
-<<graph2d.c (MIDINT from IN)>>
-<<graph2d.o (MIDOBJ from MIDINT)>>
-<<graph2d.c.dvi (DOC from IN)>>
-
-<<main2d.c (MIDINT from IN)>>
-<<main2d.o (MIDOBJ from MIDINT)>>
-<<main2d.c.dvi (DOC from IN)>>
-
-<<pot2d.c (MIDINT from IN)>>
-<<pot2d.o (MIDOBJ from MIDINT)>>
-<<pot2d.c.dvi (DOC from IN)>>
-
-<<process2d.c (MIDINT from IN)>>
-<<process2d.o (MIDOBJ from MIDINT)>>
-<<process2d.c.dvi (DOC from IN)>>
-
-<<spadaction2d.c (MIDINT from IN)>>
-<<spadaction2d.o (MIDOBJ from MIDINT)>>
-<<spadaction2d.c.dvi (DOC from IN)>>
-
-<<stuff2d.c (MIDINT from IN)>>
-<<stuff2d.o (MIDOBJ from MIDINT)>>
-<<stuff2d.c.dvi (DOC from IN)>>
-
-<<viewport2d.c (MIDINT from IN)>>
-<<viewport2d.o (MIDOBJ from MIDINT)>>
-<<viewport2d.c.dvi (DOC from IN)>>
-
-<<write2d.c (MIDINT from IN)>>
-<<write2d.o (MIDOBJ from MIDINT)>>
-<<write2d.c.dvi (DOC from IN)>>
-
-clean:
- @ echo 37 cleaning ${IN}/view2d
-
-document:
- @ echo 38 documenting ${IN}/view2d
-
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/view2d/buttons2d.c.pamphlet
b/src/graph/view2d/buttons2d.c.pamphlet
deleted file mode 100644
index 2a08486..0000000
--- a/src/graph/view2d/buttons2d.c.pamphlet
+++ /dev/null
@@ -1,732 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph/view2d buttons2d.c}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in
- the documentation and/or other materials provided with the
- distribution.
-
- - Neither the name of The Numerical ALgorithms Group Ltd. nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-@
-<<*>>=
-<<license>>
-
-#define _BUTTONS2D_C
-
-#include <string.h>
-
-#include "header2.h"
-#include "buttons2d.h1"
-#include "all-2d.h1"
-
-
-
-
-#define bColor 98
-#define graphColor 138
-
-/*****************************************************
- * int initButtons(buttons) *
- * *
- * Creates the fields for each button window in the *
- * two dimensional control panel, and returns the *
- * number of buttons created. *
- * *
- *****************************************************/
-
-int
-initButtons (buttonStruct *buttons)
-{
- int ii, num = 0;
-
-/********** Scale(Zoom) and Translate Potentiometer Buttons **********/
-
- /* Title: "Scale" */
- ii = scale2D;
- buttons[ii].buttonX = 5;
- buttons[ii].buttonY = 85;
- buttons[ii].buttonWidth = 110;
- buttons[ii].buttonHeight = 80;
- buttons[ii].buttonKey = ii;
- buttons[ii].pot = yes; /* scale is a potentiometer */
- buttons[ii].graphNum = no;
- buttons[ii].graphSelect = no;
- buttons[ii].mask = potMASK;
- buttons[ii].textColor = 164;
- buttons[ii].xHalf = buttons[ii].buttonWidth/2;
- buttons[ii].yHalf = buttons[ii].buttonHeight/2;
- ++num;
-
- /* Title: "Translate" */
- ii = translate2D;
- buttons[ii].buttonX = 121;
- buttons[ii].buttonY = 85;
- buttons[ii].buttonWidth = 110;
- buttons[ii].buttonHeight = 80;
- buttons[ii].buttonKey = ii;
- buttons[ii].pot = yes; /* translate is a potentiometer */
- buttons[ii].graphNum = no;
- buttons[ii].graphSelect = no;
- buttons[ii].mask = potMASK;
- buttons[ii].textColor = 21; /* line color of translate
arrow */
- buttons[ii].xHalf = buttons[ii].buttonWidth/2;
- buttons[ii].yHalf = buttons[ii].buttonHeight/2;
- ++num;
-
- /* Scale potentiometer buttons */
-
- /* Scale along X axis */
- ii = zoom2Dx;
- buttons[ii].buttonX = 5;
- buttons[ii].buttonY = 55;
- buttons[ii].buttonWidth = 53;
- buttons[ii].buttonHeight = 25;
- buttons[ii].buttonKey = ii;
- buttons[ii].pot = no;
- buttons[ii].graphNum = no;
- buttons[ii].graphSelect = no;
- buttons[ii].mask = buttonMASK;
- strcpy(buttons[ii].text,"X On ");
- buttons[ii].textColor = bColor;
- buttons[ii].xHalf = buttons[ii].buttonWidth/2;
- buttons[ii].yHalf = buttons[ii].buttonHeight/2;
- ++num;
-
-
- /* Scale along Y axis */
- ii = zoom2Dy;
- buttons[ii].buttonX = 62;
- buttons[ii].buttonY = 55;
- buttons[ii].buttonWidth = 53;
- buttons[ii].buttonHeight = 25;
- buttons[ii].buttonKey = ii;
- buttons[ii].pot = no;
- buttons[ii].graphNum = no;
- buttons[ii].graphSelect = no;
- buttons[ii].mask = buttonMASK;
- strcpy(buttons[ii].text,"Y On ");
- buttons[ii].textColor = bColor;
- buttons[ii].xHalf = buttons[ii].buttonWidth/2;
- buttons[ii].yHalf = buttons[ii].buttonHeight/2;
- ++num;
-
- /* Translate along X axis */
- ii = translate2Dx;
- buttons[ii].buttonX = 121;
- buttons[ii].buttonY = 55;
- buttons[ii].buttonWidth = 53;
- buttons[ii].buttonHeight = 25;
- buttons[ii].buttonKey = ii;
- buttons[ii].pot = no;
- buttons[ii].graphNum = no;
- buttons[ii].graphSelect = no;
- buttons[ii].mask = buttonMASK;
- strcpy(buttons[ii].text,"X On ");
- buttons[ii].textColor = bColor;
- buttons[ii].xHalf = buttons[ii].buttonWidth/2;
- buttons[ii].yHalf = buttons[ii].buttonHeight/2;
- ++num;
-
-
- /* Translate along Y axis */
- ii = translate2Dy;
- buttons[ii].buttonX = 179;
- buttons[ii].buttonY = 55;
- buttons[ii].buttonWidth = 53;
- buttons[ii].buttonHeight = 25;
- buttons[ii].buttonKey = ii;
- buttons[ii].pot = no;
- buttons[ii].graphNum = no;
- buttons[ii].graphSelect = no;
- buttons[ii].mask = buttonMASK;
- strcpy(buttons[ii].text,"Y On ");
- buttons[ii].textColor = bColor;
- buttons[ii].xHalf = buttons[ii].buttonWidth/2;
- buttons[ii].yHalf = buttons[ii].buttonHeight/2;
- ++num;
-
-
- /* Axes Turned On/Off */
- ii = axesOnOff2D;
- buttons[ii].buttonX = 5;
- buttons[ii].buttonY = 292;
- buttons[ii].buttonWidth = 90;
- buttons[ii].buttonHeight = 30;
- buttons[ii].buttonKey = ii;
- buttons[ii].pot = no;
- buttons[ii].graphNum = no;
- buttons[ii].graphSelect = no;
- buttons[ii].mask = buttonMASK;
- strcpy(buttons[ii].text,"Axes On ");
- buttons[ii].textColor = 75;
- buttons[ii].textHue = 10;
- buttons[ii].textShade = 3;
- buttons[ii].xHalf = buttons[ii].buttonWidth/2;
- buttons[ii].yHalf = buttons[ii].buttonHeight/2;
- ++num;
-
- /* Units Turned On/Off */
- ii = unitsOnOff2D;
- buttons[ii].buttonX = 100;
- buttons[ii].buttonY = 292;
- buttons[ii].buttonWidth = 90;
- buttons[ii].buttonHeight = 30;
- buttons[ii].buttonKey = ii;
- buttons[ii].pot = no;
- buttons[ii].graphNum = no;
- buttons[ii].graphSelect = no;
- buttons[ii].mask = buttonMASK;
- strcpy(buttons[ii].text,"Units Off");
- buttons[ii].textColor = 75;
- buttons[ii].textHue = 10;
- buttons[ii].textShade = 3;
- buttons[ii].xHalf = buttons[ii].buttonWidth/2;
- buttons[ii].yHalf = buttons[ii].buttonHeight/2;
- ++num;
-
- /* Generate a Postscript file */
- ii = ps2D;
- buttons[ii].buttonX = 195;
- buttons[ii].buttonY = 292;
- buttons[ii].buttonWidth = 36;
- buttons[ii].buttonHeight = 30;
- buttons[ii].buttonKey = ii;
- buttons[ii].pot = no;
- buttons[ii].graphNum = no;
- buttons[ii].graphSelect = no;
- buttons[ii].mask = buttonMASK;
- strcpy(buttons[ii].text,"PS");
- buttons[ii].textColor = 35;
- buttons[ii].textHue = 5;
- buttons[ii].textShade = 2;
- buttons[ii].xHalf = buttons[ii].buttonWidth/2;
- buttons[ii].yHalf = buttons[ii].buttonHeight/2;
- ++num;
-
- /* Bounding Rectangle On/Off */
- ii = spline2D;
- buttons[ii].buttonX = 5;
- buttons[ii].buttonY = 329;
- buttons[ii].buttonWidth = 66;
- buttons[ii].buttonHeight = 30;
- buttons[ii].buttonKey = ii;
- buttons[ii].pot = no;
- buttons[ii].graphNum = no;
- buttons[ii].graphSelect = no;
- buttons[ii].mask = buttonMASK;
- strcpy(buttons[ii].text,"Box Off");
- buttons[ii].textColor = 7;
- buttons[ii].textHue = 26;
- buttons[ii].textShade = 3;
- buttons[ii].xHalf = buttons[ii].buttonWidth/2;
- buttons[ii].yHalf = buttons[ii].buttonHeight/2;
- ++num;
-
- /* Graph points On/Off */
- ii = pointsOnOff;
- buttons[ii].buttonX = 75;
- buttons[ii].buttonY = 329;
- buttons[ii].buttonWidth = 67;
- buttons[ii].buttonHeight = 30;
- buttons[ii].buttonKey = ii;
- buttons[ii].pot = no;
- buttons[ii].graphNum = no;
- buttons[ii].graphSelect = no;
- buttons[ii].mask = buttonMASK;
- strcpy(buttons[ii].text,"Pts On ");
- buttons[ii].textColor = 7;
- buttons[ii].textHue = 26;
- buttons[ii].textShade = 3;
- buttons[ii].xHalf = buttons[ii].buttonWidth/2;
- buttons[ii].yHalf = buttons[ii].buttonHeight/2;
- ++num;
-
- /* Graph lines On/Off */
- ii = connectOnOff;
- buttons[ii].buttonX = 147;
- buttons[ii].buttonY = 329;
- buttons[ii].buttonWidth = 84;
- buttons[ii].buttonHeight = 30;
- buttons[ii].buttonKey = ii;
- buttons[ii].pot = no;
- buttons[ii].graphNum = no;
- buttons[ii].graphSelect = no;
- buttons[ii].mask = buttonMASK;
- strcpy(buttons[ii].text,"Lines On ");
- buttons[ii].textColor = 7;
- buttons[ii].textHue = 26;
- buttons[ii].textShade = 3;
- buttons[ii].xHalf = buttons[ii].buttonWidth/2;
- buttons[ii].yHalf = buttons[ii].buttonHeight/2;
- ++num;
-
- /* Reset View Position Button */
- ii = reset2D;
- buttons[ii].buttonX = 5;
- buttons[ii].buttonY = 364;
- buttons[ii].buttonWidth = 60;
- buttons[ii].buttonHeight = 30;
- buttons[ii].buttonKey = ii;
- buttons[ii].pot = no;
- buttons[ii].graphNum = no;
- buttons[ii].graphSelect = no;
- buttons[ii].mask = buttonMASK;
- strcpy(buttons[ii].text,"Reset");
- buttons[ii].textColor = bColor;
- buttons[ii].textHue = 5;
- buttons[ii].textShade = 2;
- buttons[ii].xHalf = buttons[ii].buttonWidth/2;
- buttons[ii].yHalf = buttons[ii].buttonHeight/2;
- ++num;
-
- /* Hide Control Panel */
- ii = hideControl2D;
- buttons[ii].buttonX = 70;
- buttons[ii].buttonY = 364;
- buttons[ii].buttonWidth = 88;
- buttons[ii].buttonHeight = 30;
- buttons[ii].buttonKey = ii;
- buttons[ii].pot = no;
- buttons[ii].graphNum = no;
- buttons[ii].graphSelect = no;
- buttons[ii].mask = buttonMASK;
- strcpy(buttons[ii].text,"Hide Panel");
- buttons[ii].textColor = bColor;
- buttons[ii].textHue = 5;
- buttons[ii].textShade = 2;
- buttons[ii].xHalf = buttons[ii].buttonWidth/2;
- buttons[ii].yHalf = buttons[ii].buttonHeight/2;
- ++num;
-
- /* Exits from the viewport running */
- ii = closeAll2D;
- buttons[ii].buttonX = 169;
- buttons[ii].buttonY = 370;
- buttons[ii].buttonWidth = 61;
- buttons[ii].buttonHeight = 24;
- buttons[ii].buttonKey = ii;
- buttons[ii].pot = no;
- buttons[ii].graphNum = no;
- buttons[ii].graphSelect = no;
- buttons[ii].mask = buttonMASK;
- strcpy(buttons[ii].text,"Quit");
- buttons[ii].textColor = 13;
- buttons[ii].textHue = 29;
- buttons[ii].textShade = 2;
- buttons[ii].xHalf = buttons[ii].buttonWidth/2;
- buttons[ii].yHalf = buttons[ii].buttonHeight/2;
- ++num;
-
- /* Indicates that the graph from a viewport is to be picked up. */
- ii = pick2D;
- buttons[ii].buttonX = 190;
- buttons[ii].buttonY = 217;
- buttons[ii].buttonWidth = 40;
- buttons[ii].buttonHeight = 24;
- buttons[ii].buttonKey = ii;
- buttons[ii].pot = no;
- buttons[ii].graphNum = no;
- buttons[ii].graphSelect = no;
- buttons[ii].mask = buttonMASK;
- strcpy(buttons[ii].text,"Pick");
- buttons[ii].textColor = 123;
- buttons[ii].textHue = 19;
- buttons[ii].textShade = 3;
- buttons[ii].xHalf = buttons[ii].buttonWidth/2;
- buttons[ii].yHalf = buttons[ii].buttonHeight/2;
- ++num;
-
- /* Indicates that the graph from a viewport is to be dropped into a slot. */
- ii = drop2D;
- buttons[ii].buttonX = 190;
- buttons[ii].buttonY = 245;
- buttons[ii].buttonWidth = 40;
- buttons[ii].buttonHeight = 24;
- buttons[ii].buttonKey = ii;
- buttons[ii].pot = no;
- buttons[ii].graphNum = no;
- buttons[ii].graphSelect = no;
- buttons[ii].mask = buttonMASK;
- strcpy(buttons[ii].text,"Drop");
- buttons[ii].textColor = 123;
- buttons[ii].textHue = 19;
- buttons[ii].textShade = 3;
- buttons[ii].xHalf = buttons[ii].buttonWidth/2;
- buttons[ii].yHalf = buttons[ii].buttonHeight/2;
- ++num;
-
- /* Indicates that the status of the graphs being displayed in the viewport
- is to be cleared. */
- ii = clear2D;
- buttons[ii].buttonX = 5;
- buttons[ii].buttonY = 217;
- buttons[ii].buttonWidth = 49;
- buttons[ii].buttonHeight = 24;
- buttons[ii].buttonKey = ii;
- buttons[ii].pot = no;
- buttons[ii].graphNum = no;
- buttons[ii].graphSelect = no;
- buttons[ii].mask = buttonMASK;
- strcpy(buttons[ii].text,"Clear");
- buttons[ii].textColor = 123;
- buttons[ii].textHue = 19;
- buttons[ii].textShade = 3;
- buttons[ii].xHalf = buttons[ii].buttonWidth/2;
- buttons[ii].yHalf = buttons[ii].buttonHeight/2;
- ++num;
-
- /* Asks for the scale and translation information for the specified graph. */
- ii = query2D;
- buttons[ii].buttonX = 5;
- buttons[ii].buttonY = 245;
- buttons[ii].buttonWidth = 49;
- buttons[ii].buttonHeight = 24;
- buttons[ii].buttonKey = ii;
- buttons[ii].pot = no;
- buttons[ii].graphNum = no;
- buttons[ii].graphSelect = no;
- buttons[ii].mask = buttonMASK;
- strcpy(buttons[ii].text,"Query");
- buttons[ii].textColor = 123;
- buttons[ii].textHue = 19;
- buttons[ii].textShade = 3;
- buttons[ii].xHalf = buttons[ii].buttonWidth/2;
- buttons[ii].yHalf = buttons[ii].buttonHeight/2;
- ++num;
-
- /* These buttons indicate the 9 available slot numbers into which
- a 2D graph can be placed, and the status of the graph, i.e. whether
- it is displayed or not. */
-
- ii = graph1;
- buttons[ii].buttonX = graphBarLeft;
- buttons[ii].buttonY = graphBarTop;
- buttons[ii].buttonWidth = graphBarWidth;
- buttons[ii].buttonHeight = graphBarHeight;
- buttons[ii].buttonKey = ii;
- buttons[ii].pot = no;
- buttons[ii].graphNum = yes;
- buttons[ii].graphSelect = no;
- buttons[ii].mask = buttonMASK;
- strcpy(buttons[ii].text,"1");
- buttons[ii].textColor = graphColor;
- buttons[ii].xHalf = buttons[ii].buttonWidth/2;
- buttons[ii].yHalf = buttons[ii].buttonHeight/2;
- ++num;
-
- ii = graphSelect1;
- buttons[ii].buttonX = graphBarLeft;
- buttons[ii].buttonY = graphBarTop + graphBarHeight;
- buttons[ii].buttonWidth = graphBarWidth;
- buttons[ii].buttonHeight = graphBarHeight-2;
- buttons[ii].buttonKey = ii;
- buttons[ii].pot = no; /* this is a regular button */
- buttons[ii].graphNum = no;
- buttons[ii].graphSelect = yes;
- buttons[ii].mask = buttonMASK;
- strcpy(buttons[ii].text,"^");
- buttons[ii].textColor = graphColor;
- buttons[ii].xHalf = buttons[ii].buttonWidth/2;
- buttons[ii].yHalf = buttons[ii].buttonHeight/2;
- ++num;
-
- ii = graph2;
- buttons[ii].buttonX = graphBarLeft + (graphBarWidth);
- buttons[ii].buttonY = graphBarTop;
- buttons[ii].buttonWidth = graphBarWidth;
- buttons[ii].buttonHeight = graphBarHeight;
- buttons[ii].buttonKey = ii;
- buttons[ii].pot = no; /* this is a regular button */
- buttons[ii].graphNum = yes;
- buttons[ii].graphSelect = no;
- buttons[ii].mask = buttonMASK;
- strcpy(buttons[ii].text,"2");
- buttons[ii].textColor = graphColor;
- buttons[ii].xHalf = buttons[ii].buttonWidth/2;
- buttons[ii].yHalf = buttons[ii].buttonHeight/2;
- ++num;
-
- ii = graphSelect2;
- buttons[ii].buttonX = graphBarLeft + (graphBarWidth);
- buttons[ii].buttonY = graphBarTop + graphBarHeight;
- buttons[ii].buttonWidth = graphBarWidth;
- buttons[ii].buttonHeight = graphBarHeight-2;
- buttons[ii].buttonKey = ii;
- buttons[ii].pot = no; /* this is a regular button */
- buttons[ii].graphNum = no;
- buttons[ii].graphSelect = yes;
- buttons[ii].mask = buttonMASK;
- strcpy(buttons[ii].text,"-");
- buttons[ii].textColor = graphColor;
- buttons[ii].xHalf = buttons[ii].buttonWidth/2;
- buttons[ii].yHalf = buttons[ii].buttonHeight/2;
- ++num;
-
- ii = graph3;
- buttons[ii].buttonX = graphBarLeft + 2*(graphBarWidth);
- buttons[ii].buttonY = graphBarTop;
- buttons[ii].buttonWidth = graphBarWidth;
- buttons[ii].buttonHeight = graphBarHeight;
- buttons[ii].buttonKey = ii;
- buttons[ii].pot = no; /* this is a regular button */
- buttons[ii].graphNum = yes;
- buttons[ii].graphSelect = no;
- buttons[ii].mask = buttonMASK;
- strcpy(buttons[ii].text,"3");
- buttons[ii].textColor = graphColor;
- buttons[ii].xHalf = buttons[ii].buttonWidth/2;
- buttons[ii].yHalf = buttons[ii].buttonHeight/2;
- ++num;
-
- ii = graphSelect3;
- buttons[ii].buttonX = graphBarLeft + 2*(graphBarWidth);
- buttons[ii].buttonY = graphBarTop + graphBarHeight;
- buttons[ii].buttonWidth = graphBarWidth;
- buttons[ii].buttonHeight = graphBarHeight-2;
- buttons[ii].buttonKey = ii;
- buttons[ii].pot = no; /**** blend these three together ***/
- buttons[ii].graphNum = no;
- buttons[ii].graphSelect = yes;
- buttons[ii].mask = buttonMASK;
- strcpy(buttons[ii].text,"-");
- buttons[ii].textColor = graphColor;
- buttons[ii].xHalf = buttons[ii].buttonWidth/2;
- buttons[ii].yHalf = buttons[ii].buttonHeight/2;
- ++num;
-
- ii = graph4;
- buttons[ii].buttonX = graphBarLeft + 3*(graphBarWidth);
- buttons[ii].buttonY = graphBarTop;
- buttons[ii].buttonWidth = graphBarWidth;
- buttons[ii].buttonHeight = graphBarHeight;
- buttons[ii].buttonKey = ii;
- buttons[ii].pot = no; /* this is a regular button */
- buttons[ii].graphNum = yes;
- buttons[ii].graphSelect = no;
- buttons[ii].mask = buttonMASK;
- strcpy(buttons[ii].text,"4");
- buttons[ii].textColor = graphColor;
- buttons[ii].xHalf = buttons[ii].buttonWidth/2;
- buttons[ii].yHalf = buttons[ii].buttonHeight/2;
- ++num;
-
- ii = graphSelect4;
- buttons[ii].buttonX = graphBarLeft + 3*(graphBarWidth);
- buttons[ii].buttonY = graphBarTop + graphBarHeight;
- buttons[ii].buttonWidth = graphBarWidth;
- buttons[ii].buttonHeight = graphBarHeight-2;
- buttons[ii].buttonKey = ii;
- buttons[ii].pot = no; /* this is a regular button */
- buttons[ii].graphNum = no;
- buttons[ii].graphSelect = yes;
- buttons[ii].mask = buttonMASK;
- strcpy(buttons[ii].text,"-");
- buttons[ii].textColor = graphColor;
- buttons[ii].xHalf = buttons[ii].buttonWidth/2;
- buttons[ii].yHalf = buttons[ii].buttonHeight/2;
- ++num;
-
- ii = graph5;
- buttons[ii].buttonX = graphBarLeft + 4*(graphBarWidth);
- buttons[ii].buttonY = graphBarTop;
- buttons[ii].buttonWidth = graphBarWidth;
- buttons[ii].buttonHeight = graphBarHeight;
- buttons[ii].buttonKey = ii;
- buttons[ii].pot = no; /* this is a regular button */
- buttons[ii].graphNum = yes;
- buttons[ii].graphSelect = no;
- buttons[ii].mask = buttonMASK;
- strcpy(buttons[ii].text,"5");
- buttons[ii].textColor = graphColor;
- buttons[ii].xHalf = buttons[ii].buttonWidth/2;
- buttons[ii].yHalf = buttons[ii].buttonHeight/2;
- ++num;
-
- ii = graphSelect5;
- buttons[ii].buttonX = graphBarLeft + 4*(graphBarWidth);
- buttons[ii].buttonY = graphBarTop + graphBarHeight;
- buttons[ii].buttonWidth = graphBarWidth;
- buttons[ii].buttonHeight = graphBarHeight-2;
- buttons[ii].buttonKey = ii;
- buttons[ii].pot = no; /* this is a regular button */
- buttons[ii].graphNum = no;
- buttons[ii].graphSelect = yes;
- buttons[ii].mask = buttonMASK;
- strcpy(buttons[ii].text,"-");
- buttons[ii].textColor = graphColor;
- buttons[ii].xHalf = buttons[ii].buttonWidth/2;
- buttons[ii].yHalf = buttons[ii].buttonHeight/2;
- ++num;
-
- ii = graph6;
- buttons[ii].buttonX = graphBarLeft + 5*(graphBarWidth);
- buttons[ii].buttonY = graphBarTop;
- buttons[ii].buttonWidth = graphBarWidth;
- buttons[ii].buttonHeight = graphBarHeight;
- buttons[ii].buttonKey = ii;
- buttons[ii].pot = no; /* this is a regular button */
- buttons[ii].graphNum = yes;
- buttons[ii].graphSelect = no;
- buttons[ii].mask = buttonMASK;
- strcpy(buttons[ii].text,"6");
- buttons[ii].textColor = graphColor;
- buttons[ii].xHalf = buttons[ii].buttonWidth/2;
- buttons[ii].yHalf = buttons[ii].buttonHeight/2;
- ++num;
-
- ii = graphSelect6;
- buttons[ii].buttonX = graphBarLeft + 5*(graphBarWidth);
- buttons[ii].buttonY = graphBarTop + graphBarHeight;
- buttons[ii].buttonWidth = graphBarWidth;
- buttons[ii].buttonHeight = graphBarHeight-2;
- buttons[ii].buttonKey = ii;
- buttons[ii].pot = no; /* this is a regular button */
- buttons[ii].graphNum = no;
- buttons[ii].graphSelect = yes;
- buttons[ii].mask = buttonMASK;
- strcpy(buttons[ii].text,"-");
- buttons[ii].textColor = graphColor;
- buttons[ii].xHalf = buttons[ii].buttonWidth/2;
- buttons[ii].yHalf = buttons[ii].buttonHeight/2;
- ++num;
-
- ii = graph7;
- buttons[ii].buttonX = graphBarLeft + 6*(graphBarWidth);
- buttons[ii].buttonY = graphBarTop;
- buttons[ii].buttonWidth = graphBarWidth;
- buttons[ii].buttonHeight = graphBarHeight;
- buttons[ii].buttonKey = ii;
- buttons[ii].pot = no; /* this is a regular button */
- buttons[ii].graphNum = yes;
- buttons[ii].graphSelect = no;
- buttons[ii].mask = buttonMASK;
- strcpy(buttons[ii].text,"7");
- buttons[ii].textColor = graphColor;
- buttons[ii].xHalf = buttons[ii].buttonWidth/2;
- buttons[ii].yHalf = buttons[ii].buttonHeight/2;
- ++num;
-
- ii = graphSelect7;
- buttons[ii].buttonX = graphBarLeft + 6*(graphBarWidth);
- buttons[ii].buttonY = graphBarTop + graphBarHeight;
- buttons[ii].buttonWidth = graphBarWidth;
- buttons[ii].buttonHeight = graphBarHeight-2;
- buttons[ii].buttonKey = ii;
- buttons[ii].pot = no; /* this is a regular button */
- buttons[ii].graphNum = no;
- buttons[ii].graphSelect = yes;
- buttons[ii].mask = buttonMASK;
- strcpy(buttons[ii].text,"-");
- buttons[ii].textColor = graphColor;
- buttons[ii].xHalf = buttons[ii].buttonWidth/2;
- buttons[ii].yHalf = buttons[ii].buttonHeight/2;
- ++num;
-
- ii = graph8;
- buttons[ii].buttonX = graphBarLeft + 7*(graphBarWidth);
- buttons[ii].buttonY = graphBarTop;
- buttons[ii].buttonWidth = graphBarWidth;
- buttons[ii].buttonHeight = graphBarHeight;
- buttons[ii].buttonKey = ii;
- buttons[ii].pot = no; /* this is a regular button */
- buttons[ii].graphNum = yes;
- buttons[ii].graphSelect = no;
- buttons[ii].mask = buttonMASK;
- strcpy(buttons[ii].text,"8");
- buttons[ii].textColor = graphColor;
- buttons[ii].xHalf = buttons[ii].buttonWidth/2;
- buttons[ii].yHalf = buttons[ii].buttonHeight/2;
- ++num;
-
- ii = graphSelect8;
- buttons[ii].buttonX = graphBarLeft + 7*(graphBarWidth);
- buttons[ii].buttonY = graphBarTop + graphBarHeight;
- buttons[ii].buttonWidth = graphBarWidth;
- buttons[ii].buttonHeight = graphBarHeight-2;
- buttons[ii].buttonKey = ii;
- buttons[ii].pot = no; /* this is a regular button */
- buttons[ii].graphNum = no;
- buttons[ii].graphSelect = yes;
- buttons[ii].mask = buttonMASK;
- strcpy(buttons[ii].text,"-");
- buttons[ii].textColor = graphColor;
- buttons[ii].xHalf = buttons[ii].buttonWidth/2;
- buttons[ii].yHalf = buttons[ii].buttonHeight/2;
- ++num;
-
- ii = graph9;
- buttons[ii].buttonX = graphBarLeft + 8*(graphBarWidth);
- buttons[ii].buttonY = graphBarTop;
- buttons[ii].buttonWidth = graphBarWidth;
- buttons[ii].buttonHeight = graphBarHeight;
- buttons[ii].buttonKey = ii;
- buttons[ii].pot = no; /* this is a regular button */
- buttons[ii].graphNum = yes;
- buttons[ii].graphSelect = no;
- buttons[ii].mask = buttonMASK;
- strcpy(buttons[ii].text,"9");
- buttons[ii].textColor = graphColor;
- buttons[ii].xHalf = buttons[ii].buttonWidth/2;
- buttons[ii].yHalf = buttons[ii].buttonHeight/2;
- ++num;
-
- ii = graphSelect9;
- buttons[ii].buttonX = graphBarLeft + 8*(graphBarWidth);
- buttons[ii].buttonY = graphBarTop + graphBarHeight;
- buttons[ii].buttonWidth = graphBarWidth;
- buttons[ii].buttonHeight = graphBarHeight-2;
- buttons[ii].buttonKey = ii;
- buttons[ii].pot = no; /* this is a regular button */
- buttons[ii].graphNum = no;
- buttons[ii].graphSelect = yes;
- buttons[ii].mask = buttonMASK;
- strcpy(buttons[ii].text,"*");
- buttons[ii].textColor = graphColor;
- buttons[ii].xHalf = buttons[ii].buttonWidth/2;
- buttons[ii].yHalf = buttons[ii].buttonHeight/2;
- ++num;
-
- return(num);
-}
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/view2d/control2d.c.pamphlet
b/src/graph/view2d/control2d.c.pamphlet
deleted file mode 100644
index b03f32f..0000000
--- a/src/graph/view2d/control2d.c.pamphlet
+++ /dev/null
@@ -1,605 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph/view2d control2d.c}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in
- the documentation and/or other materials provided with the
- distribution.
-
- - Neither the name of The Numerical ALgorithms Group Ltd. nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-@
-<<*>>=
-<<license>>
-
-#define _CONTROL2D_C
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <string.h>
-#include <X11/X.h>
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-
-#include "header2.h"
-#include "buttons2d.h1"
-#include "all-2d.h1"
-#include "gfun.h1"
-#include "xspadfill.h1"
-#include "util.h1"
-
-
-#include "mouse11.bitmap"
-#include "mouse11.mask"
-
-/* Defines the pixmap for the arrow displayed in the scale window */
-
-#define scaleArrowN 11
-static XPoint scaleArrow[scaleArrowN] = {
- {55,14},{64,23},{59,23},
- {66,45},{79,45},
- {55,69},
- {31,45},{44,45},
- {51,23},{46,23},{55,14} };
-
-/* Defines the pixmap for the arrows displayed in the translate window */
-
-#define translateArrowN 25
-static XPoint translateArrow[translateArrowN] = {
- {55,2},{60,10},{58,10},{58,37},
- {85,37},{85,35},{93,40},{85,45},{85,43},{58,43},
- {58,70},{60,70},{55,78},{50,70},{52,70},{52,43},
- {25,43}, {25,45}, {17,40}, {25,35}, {25,37}, {52,37},
- {52,10},{50,10},{55,2} };
-
-/****************************
- * void writeControlTitle() *
- ****************************/
-
-void
-writeControlTitle(void)
-{
-
- int strlength;
-
- s = viewport->title;
- strlength = strlen(s);
- XClearArea(dsply,control->controlWindow,0,0,controlWidth,potA,False);
- GSetForeground(anotherGC,(float)controlTitleColor,Xoption);
- GDrawImageString(anotherGC,control->controlWindow,
- centerX(anotherGC,s,strlength,controlWidth),
- 15,s,strlength,Xoption);
-
-} /* writeControlTitle() */
-
-void
-makeMessageFromData(int whichGraph)
-{
- if (viewport->haveControl) {
- if ((graphStateArray[whichGraph].scaleX) > 99.0) {
- strcpy(scaleXReport,"big");
- } else {
- sprintf(scaleXReport,"%4.1f",graphStateArray[whichGraph].scaleX);
- }
- if ((graphStateArray[whichGraph].scaleY) > 99.0) {
- strcpy(scaleYReport,"big");
- } else {
- sprintf(scaleYReport,"%4.1f",graphStateArray[whichGraph].scaleY);
- }
- if ((graphStateArray[whichGraph].centerX) > 999.0) {
- strcpy(deltaXReport,"+big");
- } else if ((graphStateArray[whichGraph].centerX) < -999.0) {
- strcpy(deltaXReport,"-big");
- } else {
- sprintf(deltaXReport,"%4.0f",
- -graphStateArray[whichGraph].centerX /
- graphArray[whichGraph].unitX);
- }
- if ((graphStateArray[whichGraph].centerY) > 999.0) {
- strcpy(deltaYReport,"+big");
- } else if ((graphStateArray[whichGraph].centerY) < -999.0) {
- strcpy(deltaYReport,"-big");
- } else {
- sprintf(deltaYReport,"%4.0f",
- -graphStateArray[whichGraph].centerY /
- graphArray[whichGraph].unitY);
- }
- sprintf(viewport->controlPanel->message,"[%s,%s] >%d< [%s,%s]",
- scaleXReport,scaleYReport,whichGraph+1,deltaXReport,deltaYReport);
- } /* if haveControl */
-
-} /* makeMessageFromData() */
-
-
-void
-writeControlMessage(void)
-{
- int strlength;
- controlPanelStruct *cp;
- XWindowAttributes cwInfo;
-
- cp = viewport->controlPanel;
- XGetWindowAttributes(dsply,cp->controlWindow,&cwInfo);
- strlength = strlen(cp->message);
-
-
-
- GDrawImageString(controlMessageGC,cp->controlWindow,
- centerX(globalGC1,cp->message,strlength,controlWidth),
- controlMessageY + globalFont->max_bounds.ascent - 2,
- cp->message,strlength,Xoption);
-}
-
-/*********************************/
-/*** void drawControlPanel() ***/
-/*********************************/
-
-void
-drawControlPanel(void)
-{
-
- controlPanelStruct *cp;
- int i,strlength;
- char *s;
-
- cp = viewport->controlPanel;
- /* Draw border lines to separate the potentiometer, message, graph select
- and button regions of the control panel. */
- GSetForeground(trashGC,(float)foregroundColor,Xoption);
- GSetLineAttributes(trashGC,3,LineSolid,CapButt,JoinMiter,Xoption);
- GDrawLine(trashGC, cp->controlWindow, 0, potA, controlWidth, potA, Xoption);
- GSetLineAttributes(trashGC,2,LineSolid,CapButt,JoinMiter,Xoption);
- GDrawLine(trashGC, cp->controlWindow, 0, potB, controlWidth, potB, Xoption);
- GDrawLine(trashGC, cp->controlWindow, 0, messageBot,
- controlWidth, messageBot, Xoption);
- GDrawLine(trashGC, cp->controlWindow, 0, 286, controlWidth, 286, Xoption);
-
- /** put the line width as 1 last because used below as well **/
- GSetLineAttributes(trashGC,1,LineSolid,CapButt,JoinMiter,Xoption);
- GDrawRectangle(trashGC,cp->controlWindow,closeLeft,closeTop,
- (controlWidth-closeLeft+8),(controlHeight-closeTop+8),Xoption);
-
- /* Write potentiometer titles on the control panel. */
- writeControlTitle();
- GSetForeground(globGC,(float)controlPotHeaderColor,Xoption);
- s = "Scale";
- strlength = strlen(s);
- GDrawString(globGC,cp->controlWindow,
- centerX(globGC,s,strlength,
- cp->buttonQueue[scale2D].buttonWidth) +
- cp->buttonQueue[scale2D].buttonX,
31+headerHeight,s,strlength,Xoption);
-
- s = "Translate";
- strlength = strlen(s);
- GDrawString(globGC,cp->controlWindow,
- centerX(globGC,s,strlength,
- cp->buttonQueue[translate2D].buttonWidth) +
- cp->buttonQueue[translate2D].buttonX,
- 31+headerHeight,s,strlen(s),Xoption);
-
- GSetForeground(globGC,(float)controlColorColor,Xoption);
-
- /* Write title of the graph selection window. */
- s = "Graphs";
- strlength = strlen(s);
- GDrawString(globGC,cp->controlWindow,
- centerX(globGC,s,strlength,controlWidth),graphHeaderHeight,
- s,strlength,Xoption);
-
- /* Write titles on regular buttons and draw pixmaps on potentiometers. */
-
- for (i=0; i<(maxButtons2D); i++) {
- if ((cp->buttonQueue[i]).pot) {
-
- GSetForeground(globalGC1,(float)buttonColor,Xoption);
- GDrawRectangle(globalGC1,cp->controlWindow,
- (cp->buttonQueue[i]).buttonX,
- (cp->buttonQueue[i]).buttonY,
- (cp->buttonQueue[i]).buttonWidth,
- (cp->buttonQueue[i]).buttonHeight,Xoption);
-
- GSetForeground(trashGC,
- (float)monoColor((cp->buttonQueue[i]).textColor),Xoption);
-
- GDrawLine(globalGC1,cp->controlWindow, /* trashGC, */
- (cp->buttonQueue[i]).buttonX + (cp->buttonQueue[i]).xHalf,
- (cp->buttonQueue[i]).buttonY,
- (cp->buttonQueue[i]).buttonX + (cp->buttonQueue[i]).xHalf,
- (cp->buttonQueue[i]).buttonY +
2*(cp->buttonQueue[i]).yHalf,Xoption);
- GDrawLine(globalGC1,cp->controlWindow, /* trashGC, */
- (cp->buttonQueue[i]).buttonX,
- (cp->buttonQueue[i]).buttonY + (cp->buttonQueue[i]).yHalf,
- (cp->buttonQueue[i]).buttonX + 2*(cp->buttonQueue[i]).xHalf,
- (cp->buttonQueue[i]).buttonY +
(cp->buttonQueue[i]).yHalf,Xoption);
- switch (i) {
- case scale2D:
- GDrawLines(trashGC,cp->controlWindow,scaleArrow,
- scaleArrowN,CoordModeOrigin,Xoption);
- break;
- case translate2D:
- GDrawLines(trashGC,cp->controlWindow,translateArrow,
- translateArrowN,CoordModeOrigin,Xoption);
- break;
- } /* switch i */
- } else if (cp->buttonQueue[i].graphNum) {
-
- if (mono) {
- if (graphStateArray[i-graphStart].showing) {
- GSetForeground(graphGC,(float)backgroundColor,Xoption);
- GSetBackground(graphGC,(float)foregroundColor,Xoption);
- } else {
- GSetForeground(graphGC,(float)foregroundColor,Xoption);
- GSetBackground(graphGC,(float)backgroundColor,Xoption);
- }
- strlength = strlen((cp->buttonQueue[i]).text);
- GDrawImageString(graphGC,cp->controlWindow,
- (cp->buttonQueue[i]).buttonX +
- centerX(graphGC,cp->buttonQueue[i].text,
- strlength,(cp->buttonQueue[i]).buttonWidth),
- (cp->buttonQueue[i]).buttonY +
- centerY(graphGC,(cp->buttonQueue[i]).buttonHeight),
- cp->buttonQueue[i].text,strlength,Xoption);
- } else {
- if (graphStateArray[i-graphStart].showing)
- GSetForeground(graphGC,(float)graphBarShowingColor,Xoption);
- else
- GSetForeground(graphGC,(float)graphBarHiddenColor,Xoption);
- strlength = strlen((cp->buttonQueue[i]).text);
- GDrawString(graphGC,cp->controlWindow,
- (cp->buttonQueue[i]).buttonX +
- centerX(graphGC,cp->buttonQueue[i].text,
- strlength,(cp->buttonQueue[i]).buttonWidth),
- (cp->buttonQueue[i]).buttonY +
- centerY(graphGC,(cp->buttonQueue[i]).buttonHeight),
- cp->buttonQueue[i].text,strlength,Xoption);
- }
- } else if (cp->buttonQueue[i].graphSelect) {
- /* The select characters are defined as: "^" for on and "-" for off. */
- if (graphStateArray[i-graphSelectStart].selected) {
- GSetForeground(graphGC,(float)graphBarSelectColor,Xoption);
- strcpy((cp->buttonQueue[i]).text,"^");
- } else {
- GSetForeground(graphGC,(float)graphBarNotSelectColor,Xoption);
- *(cp->buttonQueue[i]).text = '-';
- strcpy((cp->buttonQueue[i]).text,"-");
- }
- GDrawString(graphGC,cp->controlWindow,
- (cp->buttonQueue[i]).buttonX +
- centerX(graphGC,cp->buttonQueue[i].text,
- strlength,(cp->buttonQueue[i]).buttonWidth),
- (cp->buttonQueue[i]).buttonY +
- centerY(graphGC,(cp->buttonQueue[i]).buttonHeight),
- cp->buttonQueue[i].text,strlength,Xoption);
- }
- else { /* a regular button */
- int isOn = 1;
-
- switch(i) {
- case pointsOnOff:
- isOn = pointsON = graphStateArray[0].pointsOn;
- if (graphStateArray[0].pointsOn)
- strcpy((cp->buttonQueue[i]).text,"Pts On ");
- else
- strcpy((cp->buttonQueue[i]).text,"Pts Off");
- break;
-
- case spline2D:
- isOn = splineON = graphStateArray[0].splineOn;
- if (graphStateArray[0].splineOn)
- strcpy((cp->buttonQueue[i]).text, "Box On ");
- else
- strcpy((cp->buttonQueue[i]).text, "Box Off");
- break;
-
- case connectOnOff:
- isOn = connectON = graphStateArray[0].connectOn;
- if (graphStateArray[0].connectOn)
- strcpy((cp->buttonQueue[i]).text, "Lines On ");
- else
- strcpy((cp->buttonQueue[i]).text, "Lines Off");
- break;
-
- case axesOnOff2D:
- isOn = axesON = graphStateArray[0].axesOn;
- if (graphStateArray[0].axesOn)
- strcpy((cp->buttonQueue[i]).text , "Axes On ");
- else
- strcpy((cp->buttonQueue[i]).text , "Axes Off");
- break;
-
- case unitsOnOff2D:
- isOn = unitsON = graphStateArray[0].unitsOn;
- if (graphStateArray[0].unitsOn)
- strcpy( (cp->buttonQueue[i]).text , "Units On ");
- else
- strcpy( (cp->buttonQueue[i]).text , "Units Off");
- break;
- case closeAll2D:
- isOn = 0;
-
- default:
- break;
- } /* switch i */
-
- s = (cp->buttonQueue[i]).text;
- strlength = strlen(s);
-
- GDrawPushButton(dsply, globalGC1, trashGC, processGC, cp->controlWindow,
- (cp->buttonQueue[i]).buttonX, (cp->buttonQueue[i]).buttonY,
- (cp->buttonQueue[i]).buttonWidth, (cp->buttonQueue[i]).buttonHeight,
- isOn, s,buttonColor,
- monoColor((cp->buttonQueue[i]).textColor), Xoption);
-
- } /* else a regular button */
- } /* for each button */
-
- /* Refresh the latest message */
- makeMessageFromData(0);
- writeControlMessage();
- XFlush(dsply);
-
-} /*** drawControlPanel ***/
-
-controlXY
-getControlXY(int whereDoYouWantPanel)
-{
- XWindowAttributes wAttr, wAttrib;
- controlXY cXY;
- int tmp=1;
- Window rootW, parentW, *childrenWs, tmpW;
- unsigned int nChildren;
-
- tmpW = viewport->titleWindow;
- while(tmp) {
- XQueryTree(dsply,tmpW,&rootW,&parentW,&childrenWs,&nChildren);
- XFree(childrenWs);
- if (parentW == rtWindow) tmp = 0;
- else tmpW = parentW;
- }
- XGetWindowAttributes(dsply,tmpW,&wAttrib);
-
- XGetWindowAttributes(dsply,viewport->titleWindow,&wAttr);
- if (whereDoYouWantPanel) {
- switch (whereDoYouWantPanel) {
- case 1: /* right */
- cXY.putX = wAttrib.x + wAttrib.width;
- cXY.putY = wAttrib.y;
- break;
- case 2: /* bottom */
- cXY.putX = wAttrib.x + (wAttr.width - controlWidth)/2; /* center it */
- cXY.putY = wAttrib.y + wAttrib.height;
- break;
- case 3: /* left */
- cXY.putX = wAttrib.x - controlWidth - borderWidth;
- cXY.putY = wAttrib.y;
- break;
- case 4: /* top */
- cXY.putX = wAttrib.x + (wAttr.width - controlWidth)/2;
- cXY.putY = wAttrib.y - controlHeight - borderHeight;
- }
- } else {
- if ((physicalWidth - (wAttrib.x + wAttr.width)) >= controlWidth) {
- cXY.putX = wAttrib.x + wAttrib.width;
- cXY.putY = wAttrib.y;
- } else if ((physicalHeight - (wAttrib.y + wAttr.height)) >=
- controlHeight) {
- cXY.putX = wAttrib.x + (wAttr.width - controlWidth)/2;
- cXY.putY = wAttrib.y + wAttrib.height;
- } else if (wAttrib.x >= controlWidth) {
- cXY.putX = wAttrib.x - controlWidth - borderWidth;
- cXY.putY = wAttrib.y;
- } else if (wAttrib.y >= controlHeight) {
- cXY.putX = wAttrib.x + (wAttr.width - controlWidth)/2;
- cXY.putY = wAttrib.y - controlHeight - borderHeight;
- } else { /* put inside of viewport */
- cXY.putX = wAttrib.x + wAttr.width - controlWidth;
- cXY.putY = wAttrib.y + wAttr.height - controlHeight;
- }
- }
- return(cXY);
-
-}
-
-/************************************************/
-/*** controlPanelStruct *makeControlPanel() ***/
-/************************************************/
-
-controlPanelStruct *
-makeControlPanel(void)
-{
-
- Window cw;
- int i,num;
- controlPanelStruct *control;
- buttonStruct *buttons;
- controlXY cXY;
- XSetWindowAttributes cwAttrib, controlAttrib;
- XSizeHints sizehints;
- Pixmap mousebits,mousemask;
- XColor foreColor, backColor;
-
- if (!(control = (controlPanelStruct *)malloc(sizeof(controlPanelStruct)))) {
- fprintf(stderr,"Ran out of memory trying to create a control panel.\n");
- exitWithAck(RootWindow(dsply,scrn),Window,-1);
- }
-
- cXY = getControlXY(0);
-
- /* Define and assign a mouse cursor. */
- mousebits = XCreateBitmapFromData(dsply,rtWindow,mouseBitmap_bits,
- mouseBitmap_width,mouseBitmap_height);
- mousemask = XCreateBitmapFromData(dsply,rtWindow,mouseMask_bits,
- mouseMask_width,mouseMask_height);
- cwAttrib.background_pixel = backgroundColor; /* controlBackground; */
- cwAttrib.border_pixel = foregroundColor;
- cwAttrib.backing_store = WhenMapped;
- cwAttrib.event_mask = controlMASK;
- cwAttrib.colormap = colorMap;
- cwAttrib.override_redirect = overrideManager;
- foreColor.pixel = controlCursorForeground;
- XQueryColor(dsply,colorMap,&foreColor);
- backColor.pixel = controlCursorBackground;
- XQueryColor(dsply,colorMap,&backColor);
- cwAttrib.cursor = XCreatePixmapCursor(dsply,mousebits,mousemask,
- &foreColor,&backColor,
- mouseBitmap_x_hot,mouseBitmap_y_hot);
-
- cw = XCreateWindow(dsply,rtWindow,
- cXY.putX,cXY.putY,controlWidth,controlHeight,3,
- CopyFromParent,InputOutput,CopyFromParent,
- controlCreateMASK,&cwAttrib);
-
- sizehints.flags = PPosition | PSize;
- sizehints.x = cXY.putX;
- sizehints.y = cXY.putY;
- sizehints.width = controlWidth;
- sizehints.height = controlHeight;
-
- /*** the None stands for icon pixmap...change.... ***/
-
- XSetNormalHints(dsply,cw,&sizehints);
- XSetStandardProperties(dsply,cw,"2D Control Panel","2D Control Panel",
- None,NULL,0,&sizehints);
-
- control->controlWindow = cw;
- num = initButtons(control->buttonQueue);
- control->numOfButtons = num;
- buttons = control->buttonQueue;
-
- for (i=0; i<num; i++) {
- controlAttrib.event_mask = (control->buttonQueue[i]).mask;
- (control->buttonQueue[i]).self = XCreateWindow(dsply,cw,
- (control->buttonQueue[i]).buttonX,
- (control->buttonQueue[i]).buttonY,
- (control->buttonQueue[i]).buttonWidth,
- (control->buttonQueue[i]).buttonHeight,
- 0,0,InputOnly,CopyFromParent,
- buttonCreateMASK,&controlAttrib);
-
- XMakeAssoc(dsply,table,(control->buttonQueue[i]).self,
- &((control->buttonQueue[i]).buttonKey));
- /* Use buttonKey instead of i because buttonKey has a permanent address */
- XMapWindow(dsply,(control->buttonQueue[i]).self);
- }
-
- /* Create message window */
- control->messageWindow = XCreateWindow(dsply,cw,0,controlMessageY,
- controlWidth,controlMessageHeight,
- 0,0,InputOnly,CopyFromParent,
- messageCreateMASK,&cwAttrib);
- XMapWindow(dsply,control->messageWindow);
-
- for (i=0; i<scaleArrowN; i++) {
- scaleArrow[i].x += buttons[scale2D].buttonX;
- scaleArrow[i].y += buttons[scale2D].buttonY;
- }
- for (i=0; i<translateArrowN; i++) {
- translateArrow[i].x += buttons[translate2D].buttonX;
- translateArrow[i].y += buttons[translate2D].buttonY;
- }
-
- viewport->justMadeControl = yes;
- return(control);
-
-} /* makeControlPanel() */
-
-
-
-
-
-
-/*****************************************/
-/*** void putControlPanelSomewhere() ***/
-/*****************************************/
-
-/* This routine puts up the control panel associated with the viewport
- passed in. It first tries to put it to the right of the viewport. If
- there isn't enough room there, it tries the bottom and so on going
- clockwise. If the viewport is too big and there is no room to put the
- control panel outside of it, it placed the control panel in the bottom
- right hand corner of the viewport window. */
-
-void
-putControlPanelSomewhere(int whereDoesPanelGo)
-{
- controlPanelStruct *control;
- controlXY whereControl;
-
- control = viewport->controlPanel;
- whereControl = getControlXY(whereDoesPanelGo);
-
- viewport->haveControl = yes;
-
- XRaiseWindow(dsply,control->controlWindow);
- XMoveWindow(dsply,control->controlWindow,whereControl.putX,
- whereControl.putY);
-
- drawControlPanel();
- if (viewport->justMadeControl) {
- XMapWindow(dsply,control->controlWindow);
- viewport->justMadeControl = no;
- }
- XMapWindow(dsply,control->controlWindow);
-}
-
-
-
-
-
-/************************************/
-/*** void clearControlMessage() ***/
-/************************************/
-
-void
-clearControlMessage(void)
-{
-
- strcpy(viewport->controlPanel->message,"");
-
- XClearArea(dsply,viewport->controlPanel->controlWindow,
- 0,controlMessageY-2,controlWidth,controlMessageHeight,False);
-}
-
-
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/view2d/globals2.h b/src/graph/view2d/globals2.h
deleted file mode 100755
index de0d132..0000000
--- a/src/graph/view2d/globals2.h
+++ /dev/null
@@ -1,89 +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.
-*/
-
-extern int scrn;
-extern Display *dsply;
-extern XFontStruct *globalFont,*buttonFont,*headerFont,*titleFont,
- *graphFont,*unitFont,*serverFont;
-extern XrmDatabase rDB;
-
-extern char scaleXReport[5],scaleYReport[5],deltaXReport[5],
- deltaYReport[5];
-extern unsigned long *spadColors;
-extern int followMouse,viewportKeyNum;
-extern Window rtWindow,viewman;
-extern GC globalGC1,globalGC2,anotherGC,globGC,trashGC,
- controlMessageGC,graphGC,unitGC;
-extern HashTable *table;
-extern Colormap colorMap;
-extern int Socket,ack;
-
-extern GC processGC;
-extern viewPoints *viewport;
-extern controlPanelStruct *control;
-extern XGCValues gcVals;
-extern char *s;
-extern int someInt;
-
-extern unsigned long foregroundColor, backgroundColor;
-
-extern int drawMore;
-extern int spadMode,spadDraw;
-extern jmp_buf jumpFlag;
-
-extern graphStruct graphArray[maxGraphs];
-extern graphStateStruct graphStateArray[maxGraphs],
- graphStateBackupArray[maxGraphs];
-extern xPointStruct xPointsArray[maxGraphs];
-
-extern int pointsON, connectON, splineON, axesON, unitsON, zoomXON, zoomYON;
-extern int transXON, transYON;
-
-extern char errorStr[80];
-
-extern int currentGraph;
-extern int queriedGraph;
-extern int picking,dropping;
-
-extern char filename[256];
-
-extern char *xDefault;
-
-extern int viewAloned;
-
-extern int mono, totalColors,
- totalHues, totalSolidShades, totalDitheredAndSolids,totalShades;
-
-extern float aspectR;
-
-extern Atom wm_delete_window;
diff --git a/src/graph/view2d/graph2d.c.pamphlet
b/src/graph/view2d/graph2d.c.pamphlet
deleted file mode 100644
index 3b15acb..0000000
--- a/src/graph/view2d/graph2d.c.pamphlet
+++ /dev/null
@@ -1,177 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph/view2d graph2d.c}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in
- the documentation and/or other materials provided with the
- distribution.
-
- - Neither the name of The Numerical ALgorithms Group Ltd. nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-@
-<<*>>=
-<<license>>
-
-#define _GRAPH2D_C
-
-#include <stdio.h>
-#include <unistd.h>
-#include <stdlib.h>
-
-#include "header2.h"
-
-#include "all-2d.h1"
-#include "util.h1"
-
-
-void
-getGraphFromViewman(int i)
-{
- /** This routine should be called right after a read of the graph key
- was made from the viewport manager (or defined in some other way). **/
-
- int j,k,xPointsNeeded;
- pointListStruct *llPtr;
- pointStruct *p;
-
- readViewman(&(graphArray[i].xmin),floatSize);
- readViewman(&(graphArray[i].xmax),floatSize);
- readViewman(&(graphArray[i].ymin),floatSize);
- readViewman(&(graphArray[i].ymax),floatSize);
- readViewman(&(graphArray[i].xNorm),floatSize);
- readViewman(&(graphArray[i].yNorm),floatSize);
- readViewman(&(graphArray[i].spadUnitX),floatSize);
- readViewman(&(graphArray[i].spadUnitY),floatSize);
- readViewman(&(graphArray[i].unitX),floatSize);
- readViewman(&(graphArray[i].unitY),floatSize);
- readViewman(&(graphArray[i].originX),floatSize);
- readViewman(&(graphArray[i].originY),floatSize);
- readViewman(&(graphArray[i].numberOfLists),intSize);
-
- if (!(llPtr = (pointListStruct *)malloc(graphArray[i].numberOfLists *
sizeof(pointListStruct)))) {
- fprintf(stderr,"VIEW2D: Fatal Error>> Ran out of memory trying to receive
a graph.\n");
- exitWithAck(RootWindow(dsply,scrn),Window,-1);
- }
- graphArray[i].listOfListsOfPoints = llPtr;
-
- xPointsNeeded = 0;
- for (j=0; j<graphArray[i].numberOfLists; j++) {
- readViewman(&(llPtr->numberOfPoints),intSize);
- if (!(p = (pointStruct *)malloc(llPtr->numberOfPoints *
sizeof(pointStruct)))) {
- fprintf(stderr,"VIEW2D: (pointStruct) ran out of memory trying to create
a new graph.\n");
- exitWithAck(RootWindow(dsply,scrn),Window,-1);
- }
- llPtr->listOfPoints = p; /** point to current point list **/
- for (k=0; k<llPtr->numberOfPoints; k++) {
- readViewman(&(p->x),floatSize);
- readViewman(&(p->y),floatSize);
- readViewman(&(p->hue),floatSize);
- readViewman(&(p->shade),floatSize);
- p++;
- } /* for k in list of points */
- readViewman(&(llPtr->pointColor),intSize);
- readViewman(&(llPtr->lineColor),intSize);
- readViewman(&(llPtr->pointSize),intSize);
-
- xPointsNeeded += llPtr->numberOfPoints;
- llPtr++;
- } /* for j in list of lists of points */
-
- /* read in graph state for the existing graph (override default values) */
- readViewman(&(graphStateArray[i].scaleX),floatSize);
- readViewman(&(graphStateArray[i].scaleY),floatSize);
- readViewman(&(graphStateArray[i].deltaX),floatSize);
- readViewman(&(graphStateArray[i].deltaY),floatSize);
- readViewman(&(graphStateArray[i].pointsOn),intSize);
- readViewman(&(graphStateArray[i].connectOn),intSize);
- readViewman(&(graphStateArray[i].splineOn),intSize);
- readViewman(&(graphStateArray[i].axesOn),intSize);
- readViewman(&(graphStateArray[i].axesColor),intSize);
- readViewman(&(graphStateArray[i].unitsOn),intSize);
- readViewman(&(graphStateArray[i].unitsColor),intSize);
- readViewman(&(graphStateArray[i].showing),intSize);
- graphStateArray[i].selected = yes;
- graphStateBackupArray[i] = graphStateArray[i];
-
- graphStateArray[i].deltaX = graphStateArray[0].deltaX;
- graphStateArray[i].deltaY = graphStateArray[0].deltaY;
- graphStateArray[i].scaleX = graphStateArray[0].scaleX;
- graphStateArray[i].scaleY = graphStateArray[0].scaleY;
-
- /* allocate memory for xPoints (used in drawViewport) */
- if (!(xPointsArray[i].xPoint = (XPoint *)malloc(xPointsNeeded *
sizeof(XPoint)))) {
- fprintf(stderr,"VIEW2D: (XPoint) Ran out of memory (malloc) trying to
create a new graph.\n");
- exitWithAck(RootWindow(dsply,scrn),Window,-1);
- }
- if (!(xPointsArray[i].x10Point = (Vertex *)malloc(xPointsNeeded *
sizeof(Vertex)))) {
- fprintf(stderr,
- "VIEW2D: (X10Point) Ran out of memory (malloc) trying to create a
new graph.\n");
- exitWithAck(RootWindow(dsply,scrn),Window,-1);
- }
- if (!(xPointsArray[i].arc = (XArc *)malloc(xPointsNeeded * sizeof(XArc)))) {
- fprintf(stderr,"VIEW2D: (XArc) Ran out of memory (malloc) trying to create
a new graph.\n");
- exitWithAck(RootWindow(dsply,scrn),Window,-1);
- }
-
-} /* getGraphFromViewman */
-
-
-
-void
-freeGraph(int i)
-{
- int j;
- pointListStruct *llPtr;
-
- if (graphArray[i].key) {
- graphArray[i].key = 0; /* 0 means no graph */
- for (j=0,llPtr=graphArray[i].listOfListsOfPoints;
- j<graphArray[i].numberOfLists; j++,llPtr++)
- free(llPtr->listOfPoints);
- free(llPtr);
- free(xPointsArray[i].xPoint);
- } else {
- }
-
-}
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/view2d/header2.h b/src/graph/view2d/header2.h
deleted file mode 100755
index 18e3040..0000000
--- a/src/graph/view2d/header2.h
+++ /dev/null
@@ -1,283 +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.
-*/
-
-#include <X11/Xlib.h>
-#include <X11/Xresource.h>
-#include <setjmp.h>
-
-/* for xdefs */
-#define view2d
-
-#include "hash.h"
-#include "nox10.h"
-#include "view.h"
-#include "view2d.h"
-#include "actions.h"
-#include "viewcommand.h"
-#include "xdefs.h"
-#include "override.h"
-#include "g.h" /* Gdraw functions header file */
-
-
-
-#define carefullySetFont(gc,font) if (font != serverFont)
XSetFont(dsply,gc,font->fid)
-
-#define controlMASK (ButtonPressMask + ExposureMask)
-#define potMASK (ButtonPressMask + ButtonReleaseMask + ButtonMotionMask +
LeaveWindowMask)
-#define buttonMASK (ButtonPressMask + ButtonReleaseMask + LeaveWindowMask)
-#define colorMASK (ButtonPressMask + ButtonReleaseMask + LeaveWindowMask)
-
-/* make mouse grab for stationery mouse on a potentiometer slower */
-#define mouseWait 50
-
-#define controlCreateMASK (CWBackPixel | CWBorderPixel | CWEventMask |
CWCursor |CWColormap | CWOverrideRedirect)
-#define buttonCreateMASK CWEventMask
-#define messageCreateMASK 0
-#define colormapCreateMASK CWEventMask
-
-#define controlWidth 236
-#define controlHeight 400
-
-#define closeLeft cp->buttonQueue[closeAll2D].buttonX - 5
-#define closeTop cp->buttonQueue[closeAll2D].buttonY - 5
-
-#define controlBackground WhitePixel(dsply,scrn)
-#define controlCursorForeground monoColor(4)
-#define controlCursorBackground monoColor(44)
-#define controlTitleColor monoColor(36)
-#define controlPotHeaderColor monoColor(52)
-#define controlColorColor monoColor(13)
-#define controlColorSignColor monoColor(22)
-
-#define controlMessageHeight globalFont->max_bounds.ascent +
globalFont->max_bounds.descent+4
-#define messageBot controlMessageY + controlMessageHeight
-
-#define headerHeight headerFont->max_bounds.ascent
-#define graphHeaderHeight messageBot + headerHeight
-
-#define graphBarTop graphHeaderHeight + 12
-#define graphBarLeft 66
-#define graphBarWidth graphFont->max_bounds.width
-#define graphBarHeight graphFont->max_bounds.ascent +
graphFont->max_bounds.descent
-
-#define colormapX 10
-#define colormapY 235
-#define colormapW 280
-#define colormapH 60
-
-#define colorWidth 8
-#define colorHeight 12
-
-#define colorOffset 3
-#define colorOffsetX 24
-#define colorOffsetY 20
-#define colorPointer 18
-
-#define buttonColor monoColor(105)
-
-#define graphBarDefaultColor monoColor(15)
-#define graphBarShowingColor monoColor(15)
-#define graphBarHiddenColor monoColor(138)
-#define graphBarSelectColor monoColor(15)
-#define graphBarNotSelectColor monoColor(138)
-
-#define viewportCreateMASK
(CWBackPixel|CWBorderPixel|CWEventMask|CWCursor|CWColormap)
-#define viewportTitleCreateMASK
(CWBackPixel|CWBorderPixel|CWCursor|CWColormap|CWEventMask|CWOverrideRedirect)
-
-#define viewportMASK (KeyPressMask + ButtonPressMask + ExposureMask)
-#define titleMASK ExposureMask
-
-#define lineWidth 1
-#define lineHeight 1
-
-#define titleColor monoColor(36)
-#define titleHeight 24
-#define appendixHeight 0
-
-#define viewWidth 400
-#define viewHeight 400
-
-#define viewBorderWidth 0
-#define borderWidth 22
-#define borderHeight 45
-
-#define initDeltaX 0.0
-#define initDeltaY 0.0
-#define initScale 1.3
-
-#define minScale 0.01
-#define maxScale 1000.0
-#define maxDelta 1000.0
-
-#define scaleFactor 0.5
-#define translateFactor 10
-
-#define viewCursorForeground monoColor(166)
-#define viewCursorBackground monoColor(5)
-
-#define axisLength 100.0
-
-#define axesColorDefault 35
-#define labelColor 22
-
-#define meshOutline monoColor(132)
-#define opaqueOutline monoColor(53)
-#define opaqueForeground monoColor(236)
-
-#define drawWireFrame 0
-#define drawOpaque 1
-#define drawRendered 2
-
-
-#define numOfColors 240
-
-#define totalHuesConst 27
-#define totalShadesConst 8
-#define hueEnd 360
-#define hueStep hueEnd/totalHuesConst
-
-#define numPlanes 1
-#define numColors 10
-#define startColor 0
-#define endColor startColor+numColors
-#define maxColors DisplayCells(dsply,scrn)-1
-
-#define colorStep (maxColors+1)/numColors
-
-
-#define physicalWidth DisplayWidth(dsply,scrn)
-#define physicalHeight DisplayHeight(dsply,scrn)
-#define deep DisplayPlanes(dsply,scrn)
-
-#define basicScreen 19
-
-#define yes 1
-#define no 0
-
-#define potA 25 /* line dividing potentiometers from stuff above it */
-#define potB 173 /* line dividing potentiometers from title */
-#define butA 260 /* line dividing buttons from stuff above it */
-
-#define controlMessageY 181
-#define controlMessageColor monoColor(29)
-
-#define pi_half 1.570796326794896619231321691639751442099
-#define pi 3.141592653589793238462643383279502884197
-#define three_pi_halves 4.712388980384689857693965074919254326296
-#define two_pi 6.283185307179586476925286766559005768394
-
-#define degrees_in_two_pi 57
-#define d2Pi 57
-
-#define viewBackground 0
-
-#define nbuckets 128
-
-#define anywhere 0
-
-
-#define intSize sizeof(int)
-#define floatSize sizeof(float)
-
-/* type is X, PS,... */
-
-#define drawViewport(type) drawTheViewport(type);
-#define spadDrawViewport() spadMode++; drawTheViewport(X); spadMode--;
-
-
-typedef struct _buttonStruct {
- int buttonKey, pot, mask, graphNum, graphSelect;
- short buttonX,buttonY,buttonWidth,buttonHeight,xHalf,yHalf;
- Window self;
- char text[40];
- int textColor, textHue, textShade;
-} buttonStruct;
-
-typedef struct _controlPanelStruct {
- int numOfButtons;
- Window controlWindow,messageWindow,colormapWindow;
- char message[40];
- struct _buttonStruct buttonQueue[maxButtons2D];
-} controlPanelStruct;
-
-typedef struct _mouseCoord {
- float x,y;
-} mouseCoord;
-
-typedef struct _viewPoints {
- int viewportKey;
- char title[80];
- Window viewWindow,titleWindow;
- controlPanelStruct *controlPanel;
- int justMadeControl,haveControl,
- axesOn,unitsOn,pointsOn,linesOn,splineOn,closing,
- allowDraw;
- struct _viewPoints *prevViewport,*nextViewport;
-} viewPoints;
-
-
-typedef struct _controlXY {
- int putX,putY;
-} controlXY;
-
-
-typedef struct _xPointStruct {
- XPoint *xPoint;
- Vertex *x10Point;
- XArc *arc;
-} xPointStruct;
-
-
-
-#define calcUnitX(ii) (vwInfo.width * \
- ((graphArray[0].unitX * ii + \
- graphArray[0].originX - graphStateArray[0].centerX) *\
- graphStateArray[0].scaleX + 0.5))
-#define calcUnitY(ii) (vwInfo.height * aspectR * \
- (1 - ((graphArray[0].unitY*aspectR * ii + \
- graphArray[0].originY*aspectR - \
- graphStateArray[0].centerY) * \
- graphStateArray[0].scaleY + 0.5*aspectR )))
-
-#define projX(x,w,i) ((((float)x/w-0.5)/graphStateArray[i].scaleX + \
- graphStateArray[i].centerX + 0.5) / \
- graphArray[i].xNorm + graphArray[i].xmin)
-
-#define projY(y,h,i) (((0.5-(float)y/h*aspectR)/graphStateArray[i].scaleY + \
- graphStateArray[i].centerY + 0.5) / \
- graphArray[i].yNorm + graphArray[i].ymin)
-
-#define isNaN(v) (v != v)
-
-#include "globals2.h"
-
diff --git a/src/graph/view2d/main2d.c.pamphlet
b/src/graph/view2d/main2d.c.pamphlet
deleted file mode 100644
index c4ac10c..0000000
--- a/src/graph/view2d/main2d.c.pamphlet
+++ /dev/null
@@ -1,514 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph/view2d main2d.c}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in
- the documentation and/or other materials provided with the
- distribution.
-
- - Neither the name of The Numerical ALgorithms Group Ltd. nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-@
-<<*>>=
-<<license>>
-
-#define _MAIN2D_C
-
-#include <string.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <signal.h>
-
-#include "header2.h"
-#include "bsdsignal.h"
-#include "globals2.h"
-#include "bsdsignal.h1"
-#include "all-2d.h1"
-#include "gfun.h1"
-#include "util.h1"
-#include "xspadfill.h1"
-
-
-/**********************/
-/** global variables **/
-/**********************/
-Window rtWindow,viewman;
-Display *dsply;
-XFontStruct *globalFont,
- *buttonFont,
- *headerFont,
- *titleFont,
- *graphFont,
- *unitFont,
- *serverFont;
-GC globalGC1,
- globalGC2,
- anotherGC,
- globGC,
- trashGC,
- controlMessageGC,
- graphGC,
- unitGC,
- processGC;
-XGCValues gcVals;
-HashTable *table;
-Colormap colorMap;
-
-XrmDatabase rDB; /* Resource database */
-
-
-char scaleXReport[5],
- scaleYReport[5],
- deltaXReport[5],
- deltaYReport[5],
- *s,
- errorStr[80],
- filename[256], /** For writing viewport data out to a file **/
- *xDefault; /** used for accessing .XDefaults **/
-
-
-unsigned long *spadColors;
-unsigned long foregroundColor, backgroundColor;
-
-int followMouse = no,
- viewportKeyNum = 0,
- scrn,
- Socket = 1,
- ack = 1,
- someInt,
- drawMore,
- spadMode=no, /* yes if receiving AXIOM command and calling drawViewport */
- spadDraw=no, /* yes if drawing viewport because of a AXIOM command */
- pointsON = yes, /* these would affect the choices in buttons.c */
- connectON = yes,
- splineON = no,
- axesON = yes,
- unitsON = no,
- zoomXON = yes,
- zoomYON = yes,
- transXON = yes,
- transYON = yes,
- currentGraph = 0, /* last graph selected */
- queriedGraph = 0, /* current graph queried */
- picking=0,
- dropping=0,
- viewAloned, /** if not connected to AXIOM **/
- mono,
- totalColors,
- totalSolid,
- totalDithered,
- maxGreyShade,
- totalHues,
- totalSolidShades,
- totalDitheredAndSolids,
- totalShades;
-/* totalShades is initially set to totalShadesConst (probably 8).
- If X cannot allocate 8 shades for each hue, totalShades is
- decremented. There is currently only a check for this value
- to be positive. ---> something to add: change over to monochrome
- if totalShades=0. Just modify the spadcolors.c file.
- spadcolors.c has been modified so that it returns the value for
- totalShades. Since the return value had previously been unused,
- a modification in this way ensures continued support of other
- routines calling this function (e.g. hyperDoc stuff). */
-
-viewPoints *viewport;
-controlPanelStruct *control;
-jmp_buf jumpFlag;
-graphStruct graphArray[maxGraphs];
-graphStateStruct graphStateArray[maxGraphs],
- graphStateBackupArray[maxGraphs];
-xPointStruct xPointsArray[maxGraphs];
-float aspectR = 1.0;
-/* global ps variables */
-int psInit=no; /* need to call globalInitPs() each run */
-GCptr GChead=NULL; /* ptr to head of ps GC linked list */
-char *PSfilename, /* output file name used in user directory */
- *envAXIOM; /* used as ps file pathnames */
-
-int
-main(void)
-{
-
- XGCValues controlGCVals;
- int i,code;
- view2DStruct viewData;
-
- char property[256];
- char *prop = &property[0];
- char *str_type[20];
- XrmValue value;
-
-
- /**** Set up display ****/
- if ((dsply = XOpenDisplay(getenv("DISPLAY"))) == NULL)
- fprintf(stderr,"Could not open the display.\n");
- scrn = DefaultScreen(dsply);
- rtWindow = RootWindow(dsply,scrn);
-
- /**** link Xwindows to viewports - X10 feature ****/
- table = XCreateAssocTable(nbuckets);
-
- /**** Create AXIOM color map ****/
- totalColors = XInitSpadFill(dsply,scrn,&colorMap,
- &totalHues,&totalSolidShades,
- &totalDitheredAndSolids,&totalShades);
-
- if (totalColors < 0) {
- fprintf(stderr,">>Error: Could not allocate all the necessary colors.\n");
- exitWithAck(RootWindow(dsply,scrn),Window,-1);
- }
-
- mergeDatabases();
-
-
- /*** Determine whether monochrome or color is used ***/
- if (XrmGetResource(rDB,"Axiom.2D.monochrome","",str_type,&value) == True)
- (void) strncpy(prop,value.addr,(int)value.size);
- else
- (void) strcpy(prop, "off");
-
- mono = ((totalSolid == 2) || (strcmp(prop,"on") == 0));
-
- if (XrmGetResource(rDB,"Axiom.2D.inverse","",str_type,&value) == True)
- (void) strncpy(prop,value.addr,(int)value.size);
- else
- (void) strcpy(prop, "off");
-
- if (mono)
- if (strcmp(prop,"on") == 0) { /* 0 if equal (inverse video) */
- foregroundColor = WhitePixel(dsply,scrn);
- backgroundColor = BlackPixel(dsply,scrn);
- } else { /* off (no inverse video) */
- foregroundColor = BlackPixel(dsply,scrn);
- backgroundColor = WhitePixel(dsply,scrn);
- }
- else /* inverse of inverse in color (for some strange reason) */
- if (strcmp(prop,"on") == 0) { /* 0 if equal (inverse video) */
- foregroundColor = WhitePixel(dsply,scrn);
- backgroundColor = BlackPixel(dsply,scrn);
- } else { /* off (no inverse video) */
- foregroundColor = BlackPixel(dsply,scrn);
- backgroundColor = WhitePixel(dsply,scrn);
- }
-
-
- /* read default file name for postScript output */
- if (XrmGetResource(rDB,
- "Axiom.2D.postscriptFile",
- "",
- str_type, &value) == True)
- (void) strncpy(prop,value.addr,(int)value.size);
- else
- (void) strcpy(prop, "axiom2d.ps");
-
- PSfilename = (char *)malloc(strlen(prop)+1);
- strcpy(PSfilename,prop);
-
-
-
- /**** Open global fonts ****/
- serverFont = XQueryFont(dsply,XGContextFromGC(DefaultGC(dsply,scrn)));
-
- if (XrmGetResource(rDB,
- "Axiom.2D.messageFont",
- "Axiom.2D.Font",
- str_type, &value) == True)
- (void) strncpy(prop,value.addr,(int)value.size);
- else
- (void) strcpy(prop,messageFontDefault);
- if ((globalFont = XLoadQueryFont(dsply, prop)) == NULL) {
- fprintf(stderr,
- "Warning: could not get the %s font for messageFont\n",prop);
- globalFont = serverFont;
- }
-
- if (XrmGetResource(rDB,
- "Axiom.2D.buttonFont",
- "Axiom.2D.Font",
- str_type, &value) == True)
- (void) strncpy(prop,value.addr,(int)value.size);
- else
- (void) strcpy(prop,buttonFontDefault);
- if ((buttonFont = XLoadQueryFont(dsply, prop)) == NULL) {
- fprintf(stderr,
- "Warning: could not get the %s font for buttonFont\n",prop);
- buttonFont = serverFont;
- }
-
- if (XrmGetResource(rDB,
- "Axiom.2D.headerFont",
- "Axiom.2D.Font",
- str_type, &value) == True)
- (void) strncpy(prop,value.addr,(int)value.size);
- else
- (void) strcpy(prop,headerFontDefault);
-
- if ((headerFont = XLoadQueryFont(dsply, prop)) == NULL) {
- fprintf(stderr,
- "Warning: could not get the %s font for headerFont\n",prop);
- headerFont = serverFont;
- }
-
- if (XrmGetResource(rDB,
- "Axiom.2D.titleFont",
- "Axiom.2D.Font",
- str_type,&value) == True)
- (void) strncpy(prop,value.addr,(int)value.size);
- else
- (void) strcpy(prop,titleFontDefault);
-
- if ((titleFont = XLoadQueryFont(dsply, prop)) == NULL) {
- fprintf(stderr,
- "Warning: could not get the %s font for titleFont\n",prop);
- titleFont = serverFont;
- }
-
- if (XrmGetResource(rDB,
- "Axiom.2D.graphFont",
- "Axiom.2D.Font",
- str_type,&value) == True)
- (void) strncpy(prop,value.addr,(int)value.size);
- else
- (void) strcpy(prop,graphFontDefault);
-
- if ((graphFont = XLoadQueryFont(dsply, prop)) == NULL) {
- fprintf(stderr,
- "Warning: could not get the %s font for graphFont\n",prop);
- graphFont = serverFont;
- }
-
- if (XrmGetResource(rDB,
- "Axiom.2D.unitFont",
- "Axiom.2D.Font",
- str_type,&value) == True)
- (void) strncpy(prop,value.addr,(int)value.size);
- else
- (void) strcpy(prop,unitFontDefault);
-
- if ((unitFont = XLoadQueryFont(dsply, prop)) == NULL) {
- fprintf(stderr,
- "Warning: could not get the %s font for unitFont\n",prop);
- unitFont = serverFont;
- }
-
-
- /**** Create widely used Graphic Contexts ****/
- PSGlobalInit();
- /* must initiate before using any G/PS functions
- need character name: used as postscript GC variable
- need to create ps GCs for all GCs used by drawings in viewWindow */
-
- /* globalGC1 */
-
- controlGCVals.foreground = monoColor(axesColorDefault);
- controlGCVals.background = backgroundColor;
- globalGC1 = XCreateGC(dsply,rtWindow,GCForeground | GCBackground ,
- &controlGCVals);
- carefullySetFont(globalGC1,globalFont);
-
-
- /* create the equivalent GCs for ps */
- PSCreateContext(globalGC1, "globalGC1", psNormalWidth, psButtCap,
- psMiterJoin, psWhite, psBlack);
-
- /* controlMessageGC */
-
- controlGCVals.foreground = controlMessageColor;
- controlMessageGC = XCreateGC(dsply,rtWindow,GCForeground | GCBackground
- ,&controlGCVals);
- carefullySetFont(controlMessageGC,globalFont);
-
- /* globalGC2 */
-
- controlGCVals.foreground = monoColor(labelColor);
- controlGCVals.background = backgroundColor;
- globalGC2 = XCreateGC(dsply,rtWindow,GCForeground | GCBackground,
- &controlGCVals);
- carefullySetFont(globalGC2,buttonFont);
- PSCreateContext(globalGC2, "globalGC2", psNormalWidth, psButtCap,
- psMiterJoin, psWhite, psBlack);
-
- /* trashGC */
-
- trashGC = XCreateGC(dsply,rtWindow,0,&controlGCVals);
- carefullySetFont(trashGC,buttonFont);
- PSCreateContext(trashGC, "trashGC", psNormalWidth, psButtCap,
- psMiterJoin, psWhite, psBlack);
-
- /* globGC */
-
- globGC = XCreateGC(dsply,rtWindow,0,&controlGCVals);
- carefullySetFont(globGC,headerFont);
- PSCreateContext(globGC, "globGC", psNormalWidth, psButtCap,
- psMiterJoin, psWhite, psBlack);
-
- /* anotherGC */
-
- controlGCVals.line_width = colorWidth;
- anotherGC = XCreateGC(dsply,rtWindow,GCBackground,&controlGCVals);
- carefullySetFont(anotherGC,titleFont);
- PSCreateContext(anotherGC, "anotherGC", psNormalWidth, psButtCap,
- psMiterJoin, psWhite, psBlack);
-
- /* processGC */
-
- gcVals.background = backgroundColor;
- processGC = XCreateGC(dsply,rtWindow,GCBackground ,&gcVals);
- carefullySetFont(processGC,buttonFont);
-
- /* graphGC */
-
- graphGC = XCreateGC(dsply,rtWindow,GCBackground,&gcVals);
- carefullySetFont(graphGC,graphFont);
- PSCreateContext(graphGC, "graphGC", psNormalWidth, psButtCap,
- psMiterJoin, psWhite, psBlack);
-
- /* unitGC */
-
- unitGC = XCreateGC(dsply,rtWindow,GCBackground ,&gcVals);
- carefullySetFont(unitGC,unitFont);
- PSCreateContext(unitGC, "unitGC", psNormalWidth, psButtCap,
- psMiterJoin, psWhite, psBlack);
-
- /**** Initialize Graph States ****/
-
- for (i=0; i<maxGraphs; i++) {
- graphStateArray[i].scaleX = 0.9;
- graphStateArray[i].scaleY = 0.9;
- graphStateArray[i].deltaX = 0.0;
- graphStateArray[i].deltaY = 0.0;
- graphStateArray[i].centerX = 0.0;
- graphStateArray[i].centerY = 0.0;
- graphStateArray[i].pointsOn = yes;
- graphStateArray[i].connectOn = yes;
- graphStateArray[i].splineOn = no;
- graphStateArray[i].axesOn = yes;
- graphStateArray[i].unitsOn = no;
- graphStateArray[i].showing = no;
- graphStateArray[i].selected = no;
- graphStateBackupArray[i] = graphStateArray[i];
- }
-
- /**** Get Data from the Viewport Manager ****/
-
- i = 123;
- code=check(write(Socket,&i,intSize));
-
- /* Check if I am getting stuff from AXIOM or, if I am viewAlone. */
- readViewman(&viewAloned,intSize);
- readViewman(&viewData,sizeof(view2DStruct));
- readViewman(&i,intSize);
-
- if (!(viewData.title = (char *)malloc(i))) {
- fprintf(stderr,
- "ERROR: Ran out of memory trying to receive the title.\n");
- exitWithAck(RootWindow(dsply,scrn),Window,-1);
- }
- readViewman(viewData.title,i);
-
- for (i=0; i<maxGraphs; i++) {
- readViewman(&(graphArray[i].key),intSize);
- if (graphArray[i].key) { /** this graph slot has data **/
- getGraphFromViewman(i);
- } /* if graph exists (graphArray[i].key is not zero) */
- } /* for i in graphs */
-
- viewport = makeView2D(&viewData);
- control = viewport->controlPanel;
-
- bsdSignal(SIGTERM,goodbye,DontRestartSystemCalls);
-
- /* send acknowledgement to viewport manager */
- i = 345;
- check(write(Socket,&(viewport->viewWindow),sizeof(Window)));
-
- processEvents();
-
- goodbye(-1);
- return(0); /* control never reaches here but compiler complains */
-} /* main() */
-
-void
-mergeDatabases(void)
-{
- /* using global
- rDB
- dsply
- */
- XrmDatabase homeDB,serverDB,applicationDB;
- char filenamebuf[1024];
- char *filename = &filenamebuf[0];
- char *classname = "Axiom";
- char name[255];
-
- (void) XrmInitialize();
- (void) strcpy(name, "/usr/lib/X11/app-defaults/");
- (void) strcat(name, classname);
- applicationDB = XrmGetFileDatabase(name);
- (void) XrmMergeDatabases(applicationDB, &rDB);
-
- if (XResourceManagerString(dsply) != NULL)
- serverDB = XrmGetStringDatabase(XResourceManagerString(dsply));
- else {
- (void) strcpy(filename,getenv("HOME"));
- (void) strcat(filename,"/.Xdefaults");
- serverDB = XrmGetFileDatabase(filename);
- }
- XrmMergeDatabases(serverDB,&rDB);
- if ( getenv ("XENVIRONMENT") == NULL) {
- int len;
- (void) strcpy(filename,getenv("HOME"));
- (void) strcat(filename,"/.Xdefaults-");
- len = strlen(filename);
- (void) gethostname(filename+len,1024-len);
- }
- else
- (void) strcpy (filename,getenv ("XENVIRONMENT"));
-
- homeDB = XrmGetFileDatabase(filename);
- XrmMergeDatabases(homeDB,&rDB);
-}
-
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/view2d/pot2d.c.pamphlet
b/src/graph/view2d/pot2d.c.pamphlet
deleted file mode 100644
index f383737..0000000
--- a/src/graph/view2d/pot2d.c.pamphlet
+++ /dev/null
@@ -1,77 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph/view2d pot2d.c}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in
- the documentation and/or other materials provided with the
- distribution.
-
- - Neither the name of The Numerical ALgorithms Group Ltd. nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-@
-<<*>>=
-<<license>>
-
-#define _POT2D_C
-
-#include "header2.h"
-
-#include "all-2d.h1"
-
-mouseCoord
-getPotValue(short eX,short eY,short xH,short yH)
-{
-
- mouseCoord whereMouse;
- float x,y;
-
- x = (float)eX/xH - 1;
- y = -((float)eY/yH -1);
- /* make non-linear potentiometer */
- whereMouse.x = x*x*x;
- whereMouse.y = y*y*y;
-
- return(whereMouse);
-
-} /* getPotValue() */
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/view2d/process2d.c.pamphlet
b/src/graph/view2d/process2d.c.pamphlet
deleted file mode 100644
index 7c0f7f1..0000000
--- a/src/graph/view2d/process2d.c.pamphlet
+++ /dev/null
@@ -1,922 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph/view2d process2d.c}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in
- the documentation and/or other materials provided with the
- distribution.
-
- - Neither the name of The Numerical ALgorithms Group Ltd. nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-@
-<<*>>=
-<<license>>
-
-#define _PROCESS2D_C
-
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#ifdef RIOSplatform
-#include <sys/select.h>
-#endif
-
-#include "header2.h"
-
-#include "all-2d.h1"
-#include "util.h1"
-#include "gfun.h1"
-#include "xspadfill.h1"
-
-
-static int doit=0; /* globish variable for picking/dropping/clearing - all
sorts of
- 2 button sequence events (command & graph #). */
-
-
-void
-doPick (int i,int bKey)
-{
- int vCommand=pick2D;
-
- picking = no;
- /* reset indicator so that we're not in pick/drop/query mode anymore */
- doit = 0;
- if (graphArray[currentGraph].key) {
- check(write(Socket,&vCommand,intSize));
- check(write(Socket,&(graphArray[currentGraph].key),intSize));
- check(write(Socket,&(graphStateArray[currentGraph]),
- sizeof(graphStateStruct)));
- sprintf(control->message,"%s%d","Picked up graph ",currentGraph+1);
- } else
- sprintf(control->message,"%s","This graph is empty!");
- writeControlMessage();
-
-
-}
-
-
-void
-doDrop (int i,int bKey)
-{
- int vCommand=drop2D;
- int viewGoAhead;
-
- dropping = no;
- /* reset indicator so that we're not in pick/drop/query mode anymore */
- doit = 0;
- check(write(Socket,&(vCommand),intSize));
- readViewman(&viewGoAhead,intSize);
- if (viewGoAhead < 0) {
- sprintf(control->message,"%s%d","Couldn't drop to graph ",currentGraph+1);
- writeControlMessage();
- } else {
- sprintf(control->message,"%s%d","Dropped onto graph ",currentGraph+1);
- writeControlMessage();
- freeGraph(currentGraph);
- readViewman(&(graphArray[currentGraph].key),intSize);
- getGraphFromViewman(currentGraph);
- /* simulate a button press to turn display number on and select on */
- /* need !yes since it will be inverted */
- graphStateArray[currentGraph].selected = no;
- graphStateArray[currentGraph].showing =
- !(graphStateArray[currentGraph].showing);
- clickedOnGraph(currentGraph,currentGraph+graphStart);
- clickedOnGraphSelect(currentGraph,currentGraph+graphSelectStart);
- }
-}
-
-void
-clickedOnGraphSelect (int i,int bKey)
-{
- int strlength;
-
- switch (doit) {
- case pick2D:
- currentGraph = i;
- doPick(i,bKey);
- break;
- case drop2D:
- currentGraph = i;
- doDrop(i,bKey);
- break;
- case query2D:
- queriedGraph = i;
- makeMessageFromData(queriedGraph);
- writeControlMessage();
- /* reset indicator so that we're not in pick/drop/query mode anymore */
- doit = 0;
- break;
- default:
- graphStateArray[i].selected = !(graphStateArray[i].selected);
- if (graphStateArray[i].selected) {
- GSetForeground(graphGC,(float)graphBarSelectColor,Xoption);
- strcpy(control->buttonQueue[bKey].text,"^");
- strlength = strlen(control->buttonQueue[bKey].text);
- } else {
- GSetForeground(graphGC,(float)graphBarNotSelectColor,Xoption);
- strcpy(control->buttonQueue[bKey].text,"-");
- strlength = strlen(control->buttonQueue[bKey].text);
- }
- /* just to make sure the background is reset from clickedOnGraph */
- if (mono) {
- GSetForeground(graphGC,(float)foregroundColor,Xoption);
- GSetBackground(graphGC,(float)backgroundColor,Xoption);
- }
-
- GDrawImageString(graphGC,control->controlWindow,
- control->buttonQueue[bKey].buttonX +
- centerX(graphGC,
- control->buttonQueue[bKey].text,strlength,
- control->buttonQueue[bKey].buttonWidth),
- control->buttonQueue[bKey].buttonY +
- centerY(graphGC,
- control->buttonQueue[bKey].buttonHeight),
- control->buttonQueue[bKey].text,strlength,Xoption);
- GSetForeground(trashGC,(float)foregroundColor,Xoption);
- GSetLineAttributes(trashGC,2,LineSolid,CapButt,JoinMiter,Xoption);
- GDrawLine(trashGC,control->controlWindow,0,286,controlWidth,286,Xoption);
- break;
- } /* switch doit */
-
-}
-
-
-static void
-drawControlPushButton(int isOn, int index)
-{
- GDrawPushButton(dsply, processGC, processGC, processGC,
- control->controlWindow,
- (control->buttonQueue[index]).buttonX,
- (control->buttonQueue[index]).buttonY,
- (control->buttonQueue[index]).buttonWidth,
- (control->buttonQueue[index]).buttonHeight,
- isOn,
- (control->buttonQueue[index]).text,
- buttonColor,
- monoColor((control->buttonQueue[index]).textColor), Xoption);
- XSync(dsply,False);
-}
-
-
-
-void
-buttonAction (int bKey)
-{
- int i;
-
- switch (bKey) {
-
- case pick2D:
- if (viewAloned) {
- sprintf(control->message,"%s","Cannot pick without AXIOM!");
- writeControlMessage();
- XSync(dsply,False);
- }
- else {
- doit = pick2D;
- sprintf(control->message,"%s","Click on the graph to pick");
- writeControlMessage();
- XSync(dsply,False);
- }
- break;
-
- case drop2D:
- if (viewAloned) {
- sprintf(control->message,"%s","Cannot drop without AXIOM!");
- writeControlMessage();
- XSync(dsply,False);
- } else {
- doit = drop2D;
- sprintf(control->message,"%s","Click on the graph to drop");
- writeControlMessage();
- XSync(dsply,False);
- }
- break;
-
- case query2D:
- doit = query2D;
- sprintf(control->message,"%s","Click on the graph to query");
- writeControlMessage();
- XSync(dsply,False);
- break;
-
-
- case zoom2Dx:
- if (zoomXON)
- strcpy((control->buttonQueue[zoom2Dx]).text ,
- "X Off");
- else
- strcpy((control->buttonQueue[zoom2Dx]).text ,
- "X On ");
- zoomXON = !zoomXON;
-
- drawControlPushButton(zoomXON, zoom2Dx);
- XSync(dsply,False);
- break;
-
- case zoom2Dy:
- if (zoomYON) strcpy((control->buttonQueue[zoom2Dy]).text,
- "Y Off");
- else strcpy((control->buttonQueue[zoom2Dy]).text ,
- "Y On ");
- zoomYON = !zoomYON;
- drawControlPushButton(zoomYON, zoom2Dy);
- XSync(dsply,False);
- break;
-
-
- case translate2Dx:
- if (transXON) strcpy((control->buttonQueue[translate2Dx]).text,
- "X Off");
- else strcpy( (control->buttonQueue[translate2Dx]).text,
- "X On ");
- transXON = !transXON;
- drawControlPushButton(transXON, translate2Dx);
- XSync(dsply,False);
- break;
-
- case translate2Dy:
- if (transYON) strcpy((control->buttonQueue[translate2Dy]).text,
- "Y Off");
- else strcpy( (control->buttonQueue[translate2Dy]).text,
- "Y On");
- transYON = !transYON;
- drawControlPushButton(transYON, translate2Dy);
- XSync(dsply,False);
- break;
-
- case pointsOnOff:
- if (pointsON) strcpy((control->buttonQueue[pointsOnOff]).text,
- "Pts Off");
- else strcpy( (control->buttonQueue[pointsOnOff]).text,
- "Pts On ");
- pointsON = !pointsON;
- for (i=0; i<maxGraphs; i++)
- if (graphStateArray[i].showing && graphStateArray[i].selected)
- graphStateArray[i].pointsOn = pointsON;
-
- drawControlPushButton(pointsON, pointsOnOff);
- drawViewport(Xoption);
- break;
-
- case connectOnOff:
- if (connectON) strcpy((control->buttonQueue[connectOnOff]).text,
- "Lines Off");
- else strcpy( (control->buttonQueue[connectOnOff]).text,
- "Lines On ");
- connectON = !connectON;
- for (i=0; i<maxGraphs; i++)
- if (graphStateArray[i].showing && graphStateArray[i].selected)
- graphStateArray[i].connectOn = connectON;
-
- drawControlPushButton(connectON, connectOnOff);
- drawViewport(Xoption);
- break;
-
- case spline2D:
- if (splineON) strcpy((control->buttonQueue[spline2D]).text,
- "Box Off");
- else strcpy ((control->buttonQueue[spline2D]).text ,
- "Box On ");
- splineON = !splineON;
- for (i=0; i<maxGraphs; i++)
- if (graphStateArray[i].showing && graphStateArray[i].selected)
- graphStateArray[i].splineOn = splineON;
-
- drawControlPushButton(splineON, spline2D);
- drawViewport(Xoption);
- break;
-
- case axesOnOff2D:
- if (axesON)
- strcpy ((control->buttonQueue[axesOnOff2D]).text,
- "Axes Off");
- else
- strcpy ((control->buttonQueue[axesOnOff2D]).text ,
- "Axes On ");
- axesON = !axesON;
- for (i=0; i<maxGraphs; i++)
- if (graphStateArray[i].showing && graphStateArray[i].selected)
- graphStateArray[i].axesOn = axesON;
-
- drawControlPushButton(axesON, axesOnOff2D);
- drawViewport(Xoption);
- break;
-
- case unitsOnOff2D:
- if (unitsON)
- strcpy( (control->buttonQueue[unitsOnOff2D]).text,
- "Units Off");
- else
- strcpy ((control->buttonQueue[unitsOnOff2D]).text,
- "Units On ");
- unitsON = !unitsON;
- for (i=0; i<maxGraphs; i++)
- if (graphStateArray[i].showing && graphStateArray[i].selected)
- graphStateArray[i].unitsOn = unitsON;
-
- drawControlPushButton(unitsON, unitsOnOff2D);
- drawViewport(Xoption);
- break;
-
- case ps2D:
- strcpy(control->message,"Creating postscript now ...");
- writeControlMessage();
- drawControlPushButton(1, ps2D);
-
- if (PSInit(viewport->viewWindow, viewport->titleWindow) == psError) {
- strcpy(control->message,"Aborted: PSInit error.");
- writeControlMessage();
- drawControlPushButton(0, ps2D);
- XSync(dsply,False);
- return; /* make new temp name for new file */
- }
-
- drawViewport(PSoption); /* draw picture in PS; create ps script file */
-
- if (PSCreateFile(viewBorderWidth,
- viewport->viewWindow,
- viewport->titleWindow,
- viewport->title) == psError) {
- strcpy(control->message,"Aborted: PSCreateFile error.");
- writeControlMessage();
- drawControlPushButton(0, ps2D);
- XSync(dsply,False);
- return;
- }
-
- clearControlMessage();
- strcpy(control->message,PSfilename);
- strcat(control->message," in working dir ");
- writeControlMessage();
- drawControlPushButton(0, ps2D);
- XSync(dsply,False);
- break;
-
- case hideControl2D:
- if (viewport->haveControl) {
- viewport->haveControl = no;
- XUnmapWindow(dsply,control->controlWindow);
- XSync(dsply,False);
- }
- break;
-
- case reset2D:
- /* reset view */
- for (i=0; i<maxGraphs; i++)
- if (graphStateArray[i].showing && graphStateArray[i].selected)
- graphStateArray[i] = graphStateBackupArray[i];
-
- unitsON = no;
- strcpy( (control->buttonQueue[unitsOnOff2D]).text,s = "Units Off");
- for (i=0; i<maxGraphs; i++)
- if (graphStateArray[i].showing && graphStateArray[i].selected)
- graphStateArray[i].unitsOn = no;
- drawControlPushButton(unitsON, unitsOnOff2D);
-
- pointsON = yes;
- strcpy ((control->buttonQueue[pointsOnOff]).text ,"Pts On ");
- for (i=0; i<maxGraphs; i++)
- if (graphStateArray[i].showing && graphStateArray[i].selected)
- graphStateArray[i].pointsOn = yes;
- drawControlPushButton(pointsON, pointsOnOff);
-
- axesON = yes;
- strcpy ((control->buttonQueue[axesOnOff2D]).text,"Axes On ");
- for (i=0; i<maxGraphs; i++)
- if (graphStateArray[i].showing && graphStateArray[i].selected)
- graphStateArray[i].axesOn = yes;
- drawControlPushButton(axesON, axesOnOff2D);
-
- connectON = yes;
- strcpy((control->buttonQueue[connectOnOff]).text,"Lines On ");
- for (i=0; i<maxGraphs; i++)
- if (graphStateArray[i].showing && graphStateArray[i].selected)
- graphStateArray[i].connectOn = yes;
- drawControlPushButton(connectON, connectOnOff);
-
- splineON = no;
- strcpy( (control->buttonQueue[connectOnOff]).text ,"Box Off");
- for (i=0; i<maxGraphs; i++)
- if (graphStateArray[i].showing && graphStateArray[i].selected)
- graphStateArray[i].splineOn = splineON;
- drawControlPushButton(splineON, spline2D);
- drawViewport(Xoption);
-
- break;
-
- case closeAll2D:
- strcpy(control->message," Click again to confirm ");
- writeControlMessage();
- drawControlPushButton(1, closeAll2D);
- XSync(dsply,False);
- viewport->closing = yes;
- break;
-
- case clear2D:
- for (i=0; i<maxGraphs; i++) graphStateArray[i].selected = 1;
- clickedOnGraphSelect(0,graphSelect1);
- clickedOnGraphSelect(1,graphSelect2);
- clickedOnGraphSelect(2,graphSelect3);
- clickedOnGraphSelect(3,graphSelect4);
- clickedOnGraphSelect(4,graphSelect5);
- clickedOnGraphSelect(5,graphSelect6);
- clickedOnGraphSelect(6,graphSelect7);
- clickedOnGraphSelect(7,graphSelect8);
- clickedOnGraphSelect(8,graphSelect9);
- XSync(dsply,False);
- break;
-
- case graph1:
- case graph2:
- case graph3:
- case graph4:
- case graph5:
- case graph6:
- case graph7:
- case graph8:
- case graph9:
- clickedOnGraph(bKey-graphStart,bKey);
- XSync(dsply,False);
- break;
-
- case graphSelect1:
- case graphSelect2:
- case graphSelect3:
- case graphSelect4:
- case graphSelect5:
- case graphSelect6:
- case graphSelect7:
- case graphSelect8:
- case graphSelect9:
- clickedOnGraphSelect(bKey-graphSelectStart,bKey);
- XSync(dsply,False);
- break;
-
- } /* switch (action) */
-}
-
-/*********************** X Event Processing ***************************/
-void
-processEvents(void)
-{
-
- XEvent *event,
- tempEvent;
- Window whichWindow;
- XWindowAttributes graphWindowAttrib;
- buttonStruct *controlButton;
- mouseCoord mouseXY;
- int i,
- someInt,
- mouseW4,
- mouseH4,
- toggleReady,
- gotToggle = no,
- checkButton = no,
- firstTime = yes,
- gotEvent = 0,
- buttonTablePtr,
- Xcon,
- len,
- externalControl;
- fd_set rd;
-
-
- externalControl=0;
- Xcon = ConnectionNumber(dsply);
-
-
- if (!(event = (XEvent *)malloc(sizeof(XEvent)))) {
- fprintf(stderr,"Ran out of memory initializing event processing.\n");
- exitWithAck(RootWindow(dsply,scrn),Window,-1);
- }
-
- controlButton = control->buttonQueue;
-
- while(1) {
-
- len=0;
- while(len<=0) {
- FD_ZERO(&rd);
- if (externalControl==0) FD_SET(0, &rd);
- FD_SET(Xcon,&rd);
-
- if (XEventsQueued(dsply, QueuedAlready)) {
- len=1;
- break;
- }
- if (!followMouse)
- len=select(FD_SETSIZE,(void *) &rd,0,0,0);
- else
- len=1;
- }
- if (FD_ISSET(Xcon,&rd)||
- XEventsQueued(dsply, QueuedAfterFlush) ||
- followMouse) {
-
- if (followMouse) {
- if (XPending(dsply))
- XNextEvent(dsply,event);
- gotEvent++;
- } else {
- XNextEvent(dsply,event);
- gotEvent++;
- }
-
- if (gotToggle || !followMouse)
- checkButton = no;
-
- if (gotEvent) {
- whichWindow = ((XButtonEvent *)event)->window;
- firstTime = no;
-
- switch(((XEvent *)event)->type) {
-
- case ClientMessage:
- if (event->xclient.data.l[0] == wm_delete_window) {
- goodbye(-1);
- }
- else {
- fprintf(stderr,"Unknown Client Message ...\n");
- }
- break;
- case Expose:
- if (whichWindow == viewport->titleWindow) {
- /* get rid of redundant events */
- XCheckWindowEvent(dsply,
- viewport->titleWindow,
- ExposureMask,
- &tempEvent);
- writeTitle();
- XGetWindowAttributes(dsply,
- whichWindow,
- &graphWindowAttrib);
- XResizeWindow(dsply,
- viewport->viewWindow,
- graphWindowAttrib.width,
- graphWindowAttrib.height-titleHeight);
- XSync(dsply,False);
- break;
- } else if (whichWindow == viewport->viewWindow) {
- XCheckWindowEvent(dsply,
- viewport->viewWindow,
- ExposureMask,
- &tempEvent);
- XGetWindowAttributes(dsply,
- viewport->titleWindow,
- &graphWindowAttrib);
- XResizeWindow(dsply,
- viewport->viewWindow,
- graphWindowAttrib.width,
- graphWindowAttrib.height-titleHeight);
- drawViewport(Xoption);
- XMapWindow(dsply,whichWindow);
- XSync(dsply,False);
- break;
- } else { /* it's gotta be the control panel */
- XGetWindowAttributes(dsply,
- control->controlWindow,
- &graphWindowAttrib);
- /* do not allow resizing of control panel */
- if ((graphWindowAttrib.width != controlWidth) ||
- (graphWindowAttrib.height != controlHeight)) {
- XResizeWindow(dsply,
- control->controlWindow,
- controlWidth,
- controlHeight);
- }
- drawControlPanel();
- XSync(dsply,False);
- break;
- }
- break;
-
- case MotionNotify:
- if (followMouse) {
- while (XCheckMaskEvent(dsply,
- ButtonMotionMask,
- event));
- mouseXY = getPotValue(((XButtonEvent *)event)->x,
- ((XButtonEvent *)event)->y,
- controlButton->xHalf,
- controlButton->yHalf);
- }
- if (controlButton->pot) {
- gotToggle = no;
- checkButton = yes;
- }
- break;
-
- case ButtonRelease:
- if (followMouse==yes) {
- followMouse = no;
- toggleReady = yes;
- checkButton = no;
- drawViewport(Xoption);
- } else {
- followMouse = no;
- toggleReady = yes;
- checkButton = no;
- }
- break;
-
- case LeaveNotify:
- /*
- We still follow the mouse when we leave the pots.
- */
- /*
- followMouse = no;
- toggleReady = yes;
- checkButton = no;
- */
-
- break;
-
- case ButtonPress:
- if (whichWindow == viewport->viewWindow) {
-
- /* mouse clicked on viewport */
-
- switch (((XButtonEvent *)event)->button) {
- case Button3:
-
- /* print out (x,y) object-space coordinates in message area */
-
- XGetWindowAttributes(dsply,whichWindow,&graphWindowAttrib);
- sprintf(viewport->controlPanel->message,
- " >%d<: [%6.2f,%6.2f] ",
- queriedGraph+1,
- projX((((XButtonEvent *)event)->x),
- graphWindowAttrib.width,queriedGraph),
- projY((((XButtonEvent *)event)->y),
- graphWindowAttrib.height,queriedGraph));
- writeControlMessage();
- XFlush(dsply);
- break;
- default:
-
- /* Find where mouse is on the viewport => where to put the CP */
-
- XGetWindowAttributes(dsply,
- whichWindow,
- &graphWindowAttrib);
- mouseW4 = graphWindowAttrib.width/4;
- if (((XButtonEvent *)event)->x >
- (graphWindowAttrib.width - mouseW4))
- someInt = 1;
- else {
- mouseH4 = graphWindowAttrib.height/4;
- if (((XButtonEvent *)event)->y >
- (graphWindowAttrib.height - mouseH4))
- someInt = 2;
- else if (((XButtonEvent *)event)->x < mouseW4)
- someInt = 3;
- else if (((XButtonEvent *)event)->y < mouseH4)
- someInt = 4;
- else someInt = 0;
- }
- if (viewport->haveControl) {
- XUnmapWindow(dsply,control->controlWindow);
- }
- putControlPanelSomewhere(someInt);
- XMapWindow(dsply,control->controlWindow);
- XSync(dsply,False);
- break;
- } /* switch on mouse button */
- } else if (whichWindow == control->colormapWindow) {
-
- /* mouse clicked on colormap */
-
- followMouse = yes;
- gotToggle = no;
- checkButton = yes;
- firstTime = yes;
- } else if (whichWindow != control->controlWindow) {
-
- /* mouse clicked on control window (not colormap) */
-
- if (controlButton->self != whichWindow) {
- buttonTablePtr = *((int *)XLookUpAssoc(dsply,table,whichWindow));
- controlButton = &(control->buttonQueue[buttonTablePtr]);
- }
-
- if (controlButton->pot) {
- /* figure out [x,y] for this button in the range [-1..1,-1..1] */
- mouseXY = getPotValue(((XButtonEvent *)event)->x,
- ((XButtonEvent *)event)->y,
- controlButton->xHalf,
- controlButton->yHalf);
- followMouse = yes;
- gotToggle = no;
- } else {
- followMouse = no;
- gotToggle = yes; /* auto-repeat on toggle buttons not allowed */
- if (toggleReady) {
- toggleReady = no;
- }
- }
- checkButton = yes;
- firstTime = yes;
- }
- break;
-
- } /* switch */
- gotEvent--;
- } /* if gotEvent */
-
-
- /* Allow repeat polling when mouse button clicked on a potentiometer. */
-
- if (followMouse && !firstTime && (followMouse++ > mouseWait)) {
- followMouse = yes; /* reset for next timing loop */
- checkButton = yes;
- }
- if (checkButton) {
- if (viewport->closing && (controlButton->buttonKey == closeAll2D)) {
- goodbye(-1);
- } else {
- clearControlMessage();
- viewport->closing = no;
- drawControlPushButton(0, closeAll2D);
- if ((doit) &&
- ((controlButton->buttonKey < graphStart) &&
- (controlButton->buttonKey > (graphSelectStart + maxGraphs))))
- doit = 0;
-
- switch(controlButton->buttonKey) {
-
- case translate2D:
- for (i=0; i<maxGraphs; i++) {
- if (graphStateArray[i].showing && graphStateArray[i].selected) {
- if (transXON) {
- graphStateArray[i].centerX -= mouseXY.x * 0.1;
- if (graphStateArray[i].centerX > maxDelta)
- graphStateArray[i].centerX = maxDelta;
- else if (graphStateArray[i].centerX < -maxDelta)
- graphStateArray[i].centerX = maxDelta;
- }
- if (transYON) {
- graphStateArray[i].centerY -= mouseXY.y * 0.1;
- if (graphStateArray[i].centerY > maxDelta)
- graphStateArray[i].centerY = maxDelta;
- else if (graphStateArray[i].centerY < -maxDelta)
- graphStateArray[i].centerY = maxDelta;
- }
- } /* graph showing or selected */
- } /* for graphs */
- drawViewport(Xoption);
- break;
-
- case scale2D:
- for (i=0; i<maxGraphs; i++) {
- if (graphStateArray[i].showing && graphStateArray[i].selected) {
- if (zoomXON) {
- graphStateArray[i].scaleX *= (1 - mouseXY.y * 0.3);
- if (graphStateArray[i].scaleX > maxScale)
- graphStateArray[i].scaleX = maxScale;
- else if (graphStateArray[i].scaleX < minScale)
- graphStateArray[i].scaleX = minScale;
- }
- if (zoomYON) {
- graphStateArray[i].scaleY *= (1 - mouseXY.y * 0.3);
- if (graphStateArray[i].scaleY > maxScale)
- graphStateArray[i].scaleY = maxScale;
- else if (graphStateArray[i].scaleY < minScale)
- graphStateArray[i].scaleY = minScale;
- }
- } /* graph showing or selected */
- } /* for graphs */
- drawViewport(Xoption);
- break;
-
- default:
- buttonAction(controlButton->buttonKey);
- } /* switch on buttonKey */
- } /* else - not closing */
- } /* if checkButton */
- } /* if FD_ISSET(Xcon.... */
- else if FD_ISSET(0,&rd) {
- externalControl=spadAction(); /* returns (-1) if broken ,0 if success */
- if (spadDraw && (externalControl==0)) drawViewport(Xoption);
- }
- } /* while */
-} /* processEvents() */
-
-
-
-
-
-
-void
-clickedOnGraph (int i,int bKey)
-{
-
- switch (doit) {
- case pick2D:
- currentGraph = queriedGraph = i;
- doPick(i,bKey);
- break;
- case drop2D:
- currentGraph = queriedGraph = i;
- doDrop(i,bKey);
- break;
- case query2D:
- queriedGraph = i;
- makeMessageFromData(queriedGraph);
- writeControlMessage();
- /* reset indicator so that we're not in pick/drop/query mode anymore */
- doit = 0;
- break;
- default:
- graphStateArray[i].showing = !(graphStateArray[i].showing);
- if (mono) {
- if (graphStateArray[i].showing) {
- GSetForeground(graphGC,(float)backgroundColor,Xoption);
- GSetBackground(graphGC,(float)foregroundColor,Xoption);
- } else {
- GSetForeground(graphGC,(float)foregroundColor,Xoption);
- GSetBackground(graphGC,(float)backgroundColor,Xoption);
- }
- GDrawImageString(graphGC,
- control->controlWindow,
- (control->buttonQueue[bKey]).buttonX +
- centerX(graphGC,(control->buttonQueue[bKey]).text,1,
- (control->buttonQueue[bKey]).buttonWidth),
- (control->buttonQueue[bKey]).buttonY +
-
centerY(graphGC,(control->buttonQueue[bKey]).buttonHeight),
- (control->buttonQueue[bKey]).text,
- 1,
- Xoption);
- } else {
- if (graphStateArray[i].showing)
- GSetForeground(graphGC,(float)graphBarShowingColor,Xoption);
- else
- GSetForeground(graphGC,(float)graphBarHiddenColor,Xoption);
- GDrawString(graphGC,
- control->controlWindow,
- (control->buttonQueue[bKey]).buttonX +
- centerX(graphGC,(control->buttonQueue[bKey]).text,1,
- (control->buttonQueue[bKey]).buttonWidth),
- (control->buttonQueue[bKey]).buttonY +
- centerY(graphGC,(control->buttonQueue[bKey]).buttonHeight),
- (control->buttonQueue[bKey]).text,1,Xoption);
- }
- drawViewport(Xoption);
- break;
- } /* switch doit */
-
-}
-
-
-
-
-
-
-
-
-
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/view2d/spadaction2d.c.pamphlet
b/src/graph/view2d/spadaction2d.c.pamphlet
deleted file mode 100644
index e9deb42..0000000
--- a/src/graph/view2d/spadaction2d.c.pamphlet
+++ /dev/null
@@ -1,308 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph/view2d spadaction2d.c}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in
- the documentation and/or other materials provided with the
- distribution.
-
- - Neither the name of The Numerical ALgorithms Group Ltd. nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-@
-<<*>>=
-<<license>>
-
-#define _SPADACTION2D_C
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-#include "header2.h"
-
-#include "all-2d.h1"
-#include "util.h1"
-
-
-/******************************
- * int readViewman(info,size) *
- ******************************/
-
-int
-readViewman(void * info,int size)
-{
- int mold = 0;
-
- sprintf(errorStr,"%s %d %s","read of ",size,
- " bytes from viewport manager\n");
- mold = check(read(0,info,size));
- return(mold);
-
-}
-
-/********************
- * int spadAction() *
- ********************/
-extern int viewAloned;
-int
-spadAction(void)
-{
- int code,viewCommand;
- float f1,f2;
- int i1,i2,i3,viewGoAhead;
- static int ack = 1;
-
- if (viewAloned==yes) {
- close(0);
- return(-1);
- }
- readViewman(&viewCommand,intSize);
-
- switch (viewCommand) {
-
- case hideControl2D:
- readViewman(&i1,intSize);
- if (i1) { /* show control panel */
- if (viewport->haveControl) XUnmapWindow(dsply,control->controlWindow);
- putControlPanelSomewhere(someInt);
- } else { /* turn off control panel */
- if (viewport->haveControl) {
- viewport->haveControl = no;
- XUnmapWindow(dsply,control->controlWindow);
- }
- }
- break;
-
- case changeTitle:
- readViewman(&i1,intSize);
- readViewman(viewport->title,i1);
- viewport->title[i1] = '\0';
- writeTitle();
- writeControlTitle();
- XFlush(dsply);
- spadDraw=no;
- break;
-
- case writeView:
- readViewman(&i1,intSize);
- readViewman(filename,i1);
- filename[i1] = '\0';
- sprintf(errorStr,"writing of viewport data");
- i3 = 0;
- readViewman(&i2,intSize);
- while (i2) {
- i3 = i3 | (1<<i2);
- readViewman(&i2,intSize);
- }
- if (writeViewport(i3) < 0)
- fprintf(stderr," Nothing was written\n");
- break;
-
- case closeAll2D:
- code = check(write(Socket,&ack,intSize));
- goodbye(-1);
-
- case ps2D:
- readViewman(&i1,intSize);
- buttonAction(viewCommand);
- break;
-
- case axesOnOff2D:
- readViewman(&i1,intSize);
- i1--;
- readViewman(&i2,intSize);
- graphStateArray[i1].axesOn = i2;
- if (graphStateArray[i1].showing) spadDraw=yes;
- break;
-
- case axesColor2D:
- readViewman(&i1,intSize);
- i1--;
- readViewman(&i2,intSize);
- graphStateArray[i1].axesColor = i2;
- if (graphStateArray[i1].showing) spadDraw=yes;
- break;
-
- case unitsOnOff2D:
- readViewman(&i1,intSize);
- i1--;
- readViewman(&i2,intSize);
- graphStateArray[i1].unitsOn = i2;
- if (graphStateArray[i1].showing) spadDraw=yes;
- break;
-
- case unitsColor2D:
- readViewman(&i1,intSize);
- i1--;
- readViewman(&i2,intSize);
- graphStateArray[i1].unitsColor = i2;
- if (graphStateArray[i1].showing) spadDraw=yes;
- break;
-
- case connectOnOff:
- readViewman(&i1,intSize);
- i1--;
- readViewman(&i2,intSize);
- graphStateArray[i1].connectOn = i2;
- if (graphStateArray[i1].showing) spadDraw=yes;
- break;
-
- case pointsOnOff:
- readViewman(&i1,intSize);
- i1--;
- readViewman(&i2,intSize);
- graphStateArray[i1].pointsOn = i2;
- if (graphStateArray[i1].showing) spadDraw=yes;
- break;
-
- case spline2D:
- readViewman(&i1,intSize);
- i1--;
- readViewman(&i2,intSize);
- graphStateArray[i1].splineOn = i2;
- if (graphStateArray[i1].showing) spadDraw=yes;
- break;
-
- case showing2D:
- readViewman(&i1,intSize);
- i1--;
- readViewman(&i2,intSize);
- /* simulate a button press to turn display number on/off */
- graphStateArray[i1].showing = !i2;
- clickedOnGraph(i1,i1+graphStart);
- break;
-
- case scale2D:
- readViewman(&i1,intSize);
- i1--; /* passed index is [1..9] but internal representation is [0..8] */
- readViewman(&f1,floatSize);
- readViewman(&f2,floatSize);
- graphStateArray[i1].scaleX = f1;
- graphStateArray[i1].scaleY = f2;
- if (graphStateArray[i1].scaleX > maxScale)
- graphStateArray[i1].scaleX = maxScale;
- else
- if (graphStateArray[i1].scaleX < minScale)
- graphStateArray[i1].scaleX = minScale;
- if (graphStateArray[i1].scaleY > maxScale)
- graphStateArray[i1].scaleY = maxScale;
- else
- if (graphStateArray[i1].scaleY < minScale)
- graphStateArray[i1].scaleY = minScale;
- if (graphStateArray[i1].showing) spadDraw=yes;
- break; /* scale2D */
-
-
- case translate2D:
- readViewman(&i1,intSize);
- i1--; /* passed index is [1..9] but internal representation is [0..8] */
- readViewman(&f1,floatSize);
- readViewman(&f2,floatSize);
- graphStateArray[i1].centerX = f1;
- graphStateArray[i1].centerY = f2;
- if (graphStateArray[i1].centerX > maxDelta)
- graphStateArray[i1].centerX = maxDelta;
- else if (graphStateArray[i1].centerX < -maxDelta)
- graphStateArray[i1].centerX = maxDelta;
- if (graphStateArray[i1].centerY > maxDelta)
- graphStateArray[i1].centerY = maxDelta;
- else if (graphStateArray[i1].centerY < -maxDelta)
- graphStateArray[i1].centerY = maxDelta;
- if (graphStateArray[i1].showing) spadDraw=yes;
- break; /* translate2D */
-
- case moveViewport:
- readViewman(&i1,intSize);
- readViewman(&i2,intSize);
- XMoveWindow(dsply,viewport->titleWindow,i1,i2);
- XSync(dsply,False);
- break;
-
- case resizeViewport:
- readViewman(&i1,intSize);
- readViewman(&i2,intSize);
- XResizeWindow(dsply,viewport->titleWindow,i1,i2+titleHeight);
- XResizeWindow(dsply,viewport->viewWindow,i1,i2);
- spadDraw=yes;
- break;
-
- case putGraph:
- readViewman(&i1,intSize); /* key of graph to get */
- readViewman(&i2,intSize); /* slot to drop graph onto 0..8*/
- readViewman(&viewGoAhead,intSize);
- if (viewGoAhead < 0) {
- sprintf(control->message,"%s%d","Couldn't put into graph ",i2+1);
- writeControlMessage();
- } else {
- sprintf(control->message,"%s%d","Dropped onto graph ",i2+1);
- writeControlMessage();
- freeGraph(i2);
- graphArray[i2].key = i1;
- getGraphFromViewman(i2);
- /* simulate a button press to turn display number on and select on */
- /* need !yes since it will be inverted */
- graphStateArray[i2].selected = no;
- graphStateArray[i2].connectOn = yes;
- graphStateArray[i2].showing = !(graphStateArray[i2].showing);
- clickedOnGraph(i2,i2+graphStart);
- clickedOnGraphSelect(i2,i2+graphSelectStart);
- }
- break;
-
- case spadPressedAButton:
- readViewman(&i1,intSize);
- buttonAction(i1);
- break;
-
- default:
- return(-1);
- } /* switch */
-
-
- ack++;
- code = check(write(Socket,&ack,intSize));
- return(0);
-
-}
-
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/view2d/stuff2d.c.pamphlet
b/src/graph/view2d/stuff2d.c.pamphlet
deleted file mode 100644
index b2ce101..0000000
--- a/src/graph/view2d/stuff2d.c.pamphlet
+++ /dev/null
@@ -1,134 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph/view2d stuff2d.c}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in
- the documentation and/or other materials provided with the
- distribution.
-
- - Neither the name of The Numerical ALgorithms Group Ltd. nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-@
-<<*>>=
-<<license>>
-
-#define _STUFF2D_C
-
-#include <unistd.h>
-#include <stdlib.h>
-
-#include "header2.h"
-
-#include "all-2d.h1"
-#include "gfun.h1"
-#include "util.h1"
-
-
-/**************************/
-/*** float absolute(x) ***/
-/**************************/
-
-float
-absolute(float x)
-{
- if (x<0.0) {
- return(-x);
- } else {
- return(x);
- }
-}
-
-
-
-/************************/
-/*** void goodbye() ***/
-/************************/
-
-void
-goodbye(int sig)
-{
- int Command,i;
-
-#ifdef DEBUG
- fprintf(stderr,"view2d: Tidying up and exiting\n");
-#endif
- PSClose(); /* free PS file and data structure space */
-
- XFreeGC(dsply,globalGC1);
- XFreeGC(dsply,globalGC2);
- XFreeGC(dsply,globGC);
- XFreeGC(dsply,trashGC);
- XFreeGC(dsply,anotherGC);
- XFreeGC(dsply,controlMessageGC);
- XFreeGC(dsply,graphGC);
- XFreeGC(dsply,unitGC);
-
- XFreeFont(dsply,globalFont);
- XFreeFont(dsply,buttonFont);
- XFreeFont(dsply,headerFont);
- XFreeFont(dsply,titleFont);
- XFreeFont(dsply,graphFont);
- XFreeFont(dsply,unitFont);
-
- XFreeColormap(dsply,colorMap);
-
- /** send off the current graphs to viewport manager **/
-
- Command = viewportClosing;
- check(write(Socket,&Command,intSize));
-
- for (i=0; i<maxGraphs;i++) {
- check(write(Socket,&graphArray[i].key,intSize));
- }
- close(Socket);
- XCloseDisplay(dsply);
- exit(0);
-
-}
-
-
-
-
-
-
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/view2d/viewport2d.c.pamphlet
b/src/graph/view2d/viewport2d.c.pamphlet
deleted file mode 100644
index 5bacedb..0000000
--- a/src/graph/view2d/viewport2d.c.pamphlet
+++ /dev/null
@@ -1,712 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph/view2d viewport2d}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in
- the documentation and/or other materials provided with the
- distribution.
-
- - Neither the name of The Numerical ALgorithms Group Ltd. nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-@
-<<*>>=
-<<license>>
-
-#define _VIEWPORT2D_C
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <math.h>
-#include <X11/X.h>
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-#include <limits.h>
-
-#define NotPoint (SHRT_MAX)
-#define eqNANQ(x) (x == NotPoint)
-
-#include "header2.h"
-
-#include "all-2d.h1"
-#include "gfun.h1"
-#include "util.h1"
-#include "xspadfill.h1"
-
-#include "spadbitmap.bitmap"
-#include "spadmask.mask"
-
-#define rint(z) ((int)(z))
-
-Atom wm_delete_window;
-
-
-/***************************
- *** void writeTitle() ***
- ***************************/
-
-void
-writeTitle(void)
-{
-
- int strlength;
- XWindowAttributes attribInfo;
-
- XGetWindowAttributes(dsply,viewport->titleWindow,&attribInfo);
- if (mono) GSetForeground(anotherGC,(float)foregroundColor,Xoption);
- else GSetForeground(anotherGC,(float)titleColor,Xoption);
- XClearWindow(dsply,viewport->titleWindow); /* it's behind the viewWindow */
- strlength = strlen(viewport->title);
- GDrawImageString(anotherGC,viewport->titleWindow,
- centerX(anotherGC,viewport->title,strlength,attribInfo.width),
- 15,viewport->title,strlength,Xoption);
-
-}
-
-
-/********************************/
-/*** void drawTheViewport() ***/
-/********************************/
-
-void
-drawTheViewport(int dFlag)
-{
-
- Window vw;
- XWindowAttributes vwInfo;
- pointListStruct *aList;
- pointStruct *aPoint;
- XPoint *anXPoint,*tempXpt;
- XArc *anXarc;
- Vertex *anX10Point;
- float jj,diffX, diffY, tickStart,oneTickUnit;
- int i,j,k,ii,halfSize;
- int charlength,strlength,halflength,halfheight;
- int ptX,ptY,ptX1,ptY1,clipped, clipped1;
- int xAxis,yAxis,dummyInt, ascent, descent;
- int unitWidth,boxX,boxY,boxW,boxH;
- char aunit[20];
- XCharStruct overall;
-
- drawMore = yes;
- vw = viewport->viewWindow;
- XGetWindowAttributes(dsply,vw,&vwInfo);
- aspectR = (float)vwInfo.width/(float)vwInfo.height;
-
- XTextExtents(unitFont,"o",1,&dummyInt,&ascent,&descent,&overall);
- halfheight = (ascent + descent) / 2;
-
- /* Calculate various factors for use in projection. */
- /* Scale the plot, so that the scaling between the axes remains
- constant and fits within the smaller of the two dimensions. */
-
- charlength = overall.width;
-
- if (dFlag==Xoption) XClearWindow(dsply,vw);
-
- for (i=0; i<maxGraphs; i++) {
-
- if ((graphArray[i].key) && (graphStateArray[i].showing)) {
-
- /* Scale y coordinate dimensions relative to viewport aspect ratio. */
-
- graphArray[i].yNorm = 1.0/((graphArray[i].ymax-graphArray[i].ymin) *
- aspectR);
- graphArray[i].originY = -graphArray[i].ymin*graphArray[i].yNorm
- - 0.5/aspectR;
- graphArray[i].unitY = graphArray[i].spadUnitY*graphArray[i].yNorm;
-
- xAxis = rint(vwInfo.width *
- ((graphArray[0].originX - graphStateArray[0].centerX) *
- graphStateArray[0].scaleX + 0.5));
- yAxis= rint(vwInfo.height * aspectR *
- (1 - ((graphArray[0].originY*aspectR -
- graphStateArray[0].centerY) *
- graphStateArray[0].scaleY + 0.5*aspectR )));
-
- if (graphStateArray[i].axesOn) {
- if (dFlag==Xoption) /* do only for X, ps uses default of black */
- GSetForeground(globalGC1,
- (float)monoColor(graphStateArray[i].axesColor),
- dFlag);
-
- if ((yAxis >=0) && (yAxis <= vwInfo.height))
- GDrawLine(globalGC1,vw,
- 0,yAxis,
- vwInfo.width,yAxis,
- dFlag);
- if ((xAxis >=0) && (xAxis <= vwInfo.width))
- GDrawLine(globalGC1,vw,
- xAxis,0,
- xAxis,vwInfo.height,
- dFlag);
- }
-
-
- tempXpt = anXPoint = xPointsArray[i].xPoint;
- anX10Point = xPointsArray[i].x10Point;
- anXarc = xPointsArray[i].arc;
-
- for (j=0,aList=graphArray[i].listOfListsOfPoints;
- (j<graphArray[i].numberOfLists);
- j++, aList++) {
-
- for (k=0,aPoint=aList->listOfPoints;
- (k<aList->numberOfPoints);
- k++,aPoint++) {
-
- if (graphStateArray[i].scaleX > 99.0)
- graphStateArray[i].scaleX = 99.0;
- if (graphStateArray[i].scaleY > 99.0)
- graphStateArray[0].scaleY = 99.0;
- if (i > 0) {
- if (isNaN(aPoint->x)) {
- anXPoint->x = anX10Point->x = NotPoint;
- }
- else {
- diffX = graphArray[i].xmax-graphArray[i].xmin;
- anXPoint->x = anX10Point->x = vwInfo.width *
- ((aPoint->x * diffX/(graphArray[0].xmax-graphArray[0].xmin)
- + (graphArray[0].originX - graphArray[i].originX*diffX /
- (graphArray[0].xmax-graphArray[0].xmin))
- - graphStateArray[0].centerX)*graphStateArray[i].scaleX+0.5);
- }
- if (isNaN(aPoint->y)) {
- anXPoint->y = anX10Point->y = NotPoint;
- }
- else {
- diffY = graphArray[i].ymax-graphArray[i].ymin;
- anXPoint->y = anX10Point->y = vwInfo.height * aspectR *
- (1 - ((aPoint->y * diffY/(graphArray[0].ymax-graphArray[0].ymin)
- + (graphArray[0].originY - graphArray[i].originY* diffY/
- (graphArray[0].ymax-graphArray[0].ymin))*aspectR
- - graphStateArray[0].centerY) *
- graphStateArray[i].scaleY + 0.5*aspectR));
- }
- } else {
- if (isNaN(aPoint->x)) {
- anXPoint->x = anX10Point->x = NotPoint;
- }
- else {
- anXPoint->x = anX10Point->x = vwInfo.width *
- ((aPoint->x - graphStateArray[i].centerX) *
- graphStateArray[i].scaleX + 0.5);
- }
- if (isNaN(aPoint->y)) {
- anXPoint->y = anX10Point->y = NotPoint;
- }
- else {
- anXPoint->y = anX10Point->y = vwInfo.height * aspectR *
- (1 - ((aPoint->y - graphStateArray[i].centerY) *
- graphStateArray[i].scaleY + 0.5*aspectR));
- }
- }
-
- /* first or last point */
- if (k == 0 || k == (aList->numberOfPoints - 1)) {
- anX10Point->flags = 0;
- } else {
- anX10Point->flags = VertexCurved;
- }
-
- anXPoint++;
- anX10Point++;
- anXarc++;
- } /* for aPoint in pointList */
-
- aPoint--; /* make it legal, the last one*/
- if (graphStateArray[i].connectOn || graphStateArray[i].pointsOn) {
- halfSize = aList->pointSize/2;
- ptX = tempXpt->x;
- ptY = tempXpt->y;
- clipped = ptX > vwInfo.x && ptX < vwInfo.width &&
- ptY > 0 && ptY < vwInfo.height;
- if (graphStateArray[i].pointsOn) {
- if (dFlag==Xoption) {
- if (mono) {
- GSetForeground(globalGC1,
- (float)monoColor((int)(aPoint->hue)),
- dFlag);
- } else {
- GSetForeground(globalGC1,
- (float)XSolidColor((int)(aPoint->hue),
- (int)(aPoint->shade)),
- dFlag);
- }
- }
- if (clipped && !eqNANQ(ptX) && !eqNANQ(ptY))
- GFillArc(globalGC1,vw,ptX-halfSize,
- ptY-halfSize,aList->pointSize,aList->pointSize,
- 0,360*64, dFlag);
-
- } /* if points on */
- for (ii=0, aPoint=aList->listOfPoints;
- ii<aList->numberOfPoints;
- ++ii, ++tempXpt, ++aPoint) {
- ptX1 = tempXpt->x;
- ptY1 = tempXpt->y;
- clipped1 = ptX1 > vwInfo.x && ptX1 < vwInfo.width &&
- ptY1 > 0 && ptY1 < vwInfo.height;
- if (graphStateArray[i].connectOn) {
- if (dFlag==Xoption) {
- if (mono) {
- GSetForeground(globalGC1,
- (float)monoColor((int)(aList->lineColor-1)/5),
- dFlag);
- } else {
- GSetForeground(globalGC1,
- (float)XSolidColor((int)(aList->lineColor-1)/5,
- (int)((aList->lineColor-1)%5)/2),
- dFlag);
- }
- } /* if X */
- if ((clipped || clipped1) && !eqNANQ(ptX) && !eqNANQ(ptY) &&
- !eqNANQ(ptX1) && !eqNANQ(ptY1))
- GDrawLine(globalGC1,vw,
- ptX,ptY,ptX1,ptY1,
- dFlag);
- } /* if lines on */
- if (graphStateArray[i].pointsOn) {
- if (dFlag==Xoption) {
- if (mono) {
- GSetForeground(globalGC1,
- (float)monoColor((int)(aPoint->hue)),
- dFlag);
- } else {
- GSetForeground(globalGC1,
- (float)XSolidColor((int)(aPoint->hue),
- (int)(aPoint->shade)),
- dFlag);
- }
- }
- if (clipped1 && !eqNANQ(ptX1) && !eqNANQ(ptY1))
- GFillArc(globalGC1,vw,ptX1-halfSize,
- ptY1-halfSize,aList->pointSize,aList->pointSize,
- 0,360*64, dFlag);
- } /* if points on */
- ptX = ptX1; ptY = ptY1; clipped = clipped1;
- } /* for all points */
- } /* if points or lines on */
-
- if (graphStateArray[i].splineOn) { /* need spline color as well */
- if (dFlag==Xoption) /* do only for X, ps uses default of black */
- GSetForeground(globalGC1,
- (float)monoColor(148),
- dFlag);
- boxX = vwInfo.width *
- ((-0.5 - graphStateArray[i].centerX)*
- graphStateArray[i].scaleX + 0.5);
- boxY = vwInfo.height * aspectR *
- (1 - ((0.5 - graphStateArray[i].centerY)*
- graphStateArray[i].scaleY + 0.5*aspectR));
-
- boxW = graphStateArray[i].scaleX * vwInfo.width + 1;
- boxH = graphStateArray[i].scaleY * vwInfo.height * aspectR + 1;
-
- GDrawRectangle(globalGC1,vw,
- boxX,boxY,boxW,boxH,
- dFlag);
- }
-
- tempXpt = anXPoint;
- } /* for a aList in listofListsOfPoints */
- if (graphStateArray[i].unitsOn) {
- /* do only for X, ps uses default of black */
- if (dFlag==Xoption)
- GSetForeground(unitGC,
- (float)monoColor(graphStateArray[i].unitsColor),
- dFlag);
-
-
- tickStart = calcUnitX(0);
- oneTickUnit = calcUnitX(1) - tickStart;
-
- /* ticks along the positive X axis */
-
- unitWidth = 5*overall.width; /* limit on acceptable
separation : 5 chars */
- k = floor(unitWidth/oneTickUnit) +1; /* get skipping integer */
- for (ii=0, jj = tickStart;
- jj < vwInfo.width;
- ii=ii+k,jj =jj+k* oneTickUnit) {
- if (jj >= 0) {
-
- /* ticks stuck to viewport*/
- GDrawLine(unitGC,vw,
-
(int)rint(jj),vwInfo.height-8,(int)rint(jj),vwInfo.height-4,
- dFlag);
-
- sprintf(aunit,"%0.3g",ii*graphArray[0].spadUnitX);
- strlength=strlen(aunit);
- halflength=XTextWidth(unitFont,aunit,strlength)/2;
-
- if (dFlag == Xoption) GDrawImageString(unitGC,
- vw,
- (int)rint(jj) - halflength,
- vwInfo.height -8 -descent,
- aunit,
- strlength,
- dFlag);
- if (dFlag == PSoption) GDrawImageString(unitGC,
- vw,
- (int)rint(jj) -(strlength*3) ,
- vwInfo.height -14,
- aunit,
- strlength,
- dFlag);
- /* these are "eyeball" parameters for the given PS font */
-
- }
-
- }
- /* ticks along the negative X axis */
- for (ii=-k,jj=tickStart - k*oneTickUnit;
- jj > 0;
- ii=ii-k,jj = jj-k*oneTickUnit) {
- if (jj <= vwInfo.width) {
-
- /* ticks stuck to viewport*/
- GDrawLine(unitGC,vw,
-
(int)rint(jj),vwInfo.height-8,(int)rint(jj),vwInfo.height-4,
- dFlag);
-
- sprintf(aunit,"%0.3g",ii*graphArray[0].spadUnitX);
- strlength=strlen(aunit);
- halflength=XTextWidth(unitFont,aunit,strlength)/2;
-
- if (dFlag == Xoption) GDrawImageString(unitGC,
- vw,
- (int)rint(jj) - halflength,
- vwInfo.height -8 -descent,
- aunit,
- strlength,
- dFlag);
- if (dFlag == PSoption) GDrawImageString(unitGC,
- vw,
- (int)rint(jj) -(strlength*3) ,
- vwInfo.height -14,
- aunit,
- strlength,
- dFlag);
- /* these are "eyeball" parameters for the given PS font */
- }
- }
-
- tickStart = calcUnitY(0);
- oneTickUnit = calcUnitY(1) - tickStart;
-
- /* ticks along the positive Y axis */
- unitWidth = 2*(ascent+descent); /* limit of acceptable
separation */
- k = floor(unitWidth/fabs(oneTickUnit)) +1; /* get skipping integer */
- for (ii=0,jj = tickStart;
- jj > 0;
- ii=ii+k,jj =jj+k*oneTickUnit ) {
- if (jj < vwInfo.height) {
-
- /* ticks stuck to viewport*/
- /* on the right */
- /*
- GDrawLine(unitGC,vw,
- vwInfo.width-6,(int)rint(jj),
- vwInfo.width-2,(int)rint(jj),dFlag);
- */
- /* on the left */
- GDrawLine(unitGC,vw,
- 2,(int)rint(jj),
- 6,(int)rint(jj),
- dFlag);
- sprintf(aunit,"%0.3g",ii*graphArray[0].spadUnitY);
- strlength=strlen(aunit);
- XTextExtents(unitFont,aunit,strlength,&dummyInt,
- &ascent,&descent,&overall);
- halflength=overall.width; /* let's reuse that variable */
-
- if(dFlag == Xoption){
- /* on the right */
- /*
- GDrawImageString(unitGC, vw,
- vwInfo.width-halflength -6-descent,
- (int)rint(jj)+ascent/2 ,
- aunit, strlength, dFlag);
- */
- /* on the left */
- GDrawImageString(unitGC, vw,
- 8 + charlength/2,
- (int)rint(jj)+ascent/2 ,
- aunit, strlength, dFlag);
- }
- if(dFlag == PSoption){
- /* on the right */
- /*
- GDrawImageString(unitGC, vw,
- vwInfo.width - 6 - (strlength*6),
- (int)rint(jj)+4,
- aunit, strlength, dFlag);
- */
- /* on the left */
- GDrawImageString(unitGC, vw,
- 8,(int)rint(jj)+4,
- aunit, strlength, dFlag);
- /* these are "eyeball" parameters for the given PS font */
- }
- }
- }
-
- /* ticks along the negative Y axis */
-
- for (ii=(-k),jj = tickStart - k*oneTickUnit;
- jj < vwInfo.height;
- ii=ii-k,jj =jj-k*oneTickUnit) {
- if (jj > 0) {
-
- /* ticks stuck to viewport*/
- /* on the right */
- /*
- GDrawLine(unitGC,vw,
- vwInfo.width-6,(int)rint(jj),
- vwInfo.width-2,(int)rint(jj),
- dFlag);
- */
- /* on the left */
- GDrawLine(unitGC,vw,
- 2,(int)rint(jj),
- 6,(int)rint(jj),
- dFlag);
-
- sprintf(aunit,"%0.3g",ii*graphArray[0].spadUnitY);
- strlength=strlen(aunit);
- XTextExtents(unitFont,aunit,strlength,&dummyInt,
- &ascent,&descent,&overall);
- halflength=overall.width; /* let's reuse that variable */
-
- if(dFlag == Xoption){
- /* on the right */
- /*
- GDrawImageString(unitGC, vw,
- vwInfo.width-halflength -6-descent,
- (int)rint(jj)+ascent/2 ,
- aunit, strlength, dFlag);
- */
- /* on the left */
- GDrawImageString(unitGC, vw,
- 8 + charlength/2,
- (int)rint(jj)+ascent/2 ,
- aunit, strlength, dFlag);
- }
- if(dFlag == PSoption){
- /* on the right */
- /*
- GDrawImageString(unitGC, vw,
- vwInfo.width -6 -(strlength*6),
- (int)rint(jj)+4 ,
- aunit, strlength, dFlag);
- */
- /* on the left */
- GDrawImageString(unitGC, vw,
- 8,
- (int)rint(jj)+4 ,
- aunit, strlength, dFlag);
- /* these are "eyeball" parameters for the given PS font */
- }
- }
- }
-
- } /* if unitsOn */
- } /* if graph i exists and is showing */
- } /* for i in graphs */
-
-
- if (dFlag==Xoption) {
- if (!followMouse) {
- /* no need to do this while autorepeating */
- makeMessageFromData(queriedGraph);
- writeControlMessage();
- }
- XFlush(dsply);
- }
-
-} /* drawViewport() */
-
-
-
-/************************************
- *** viewPoints *makeViewport() ***
- ************************************/
-
-viewPoints *
-makeViewport(char *title,int vX,int vY,int vW,int vH,int showCP)
-{
- Pixmap spadbits,spadmask;
- XSetWindowAttributes viewAttrib;
- XSizeHints titleSizeHints,viewSizeHints;
- Window viewTitleWindow,viewGraphWindow;
- XColor foreColor, backColor;
-
-#ifdef DEBUG
- fprintf(stderr,"view2d: About to make a viewport\n");
-#endif
-
- /* Create a viewport */
- if (!(viewport = (viewPoints *)malloc(sizeof(viewPoints)))) {
- fprintf(stderr,"Ran out of memory (malloc) trying to create a
viewport.\n");
- sleep(5);
- exitWithAck(RootWindow(dsply,scrn),Window,-1);
- }
-
-#ifdef DEBUG
- fprintf(stderr,"view2d: Made a viewport\n");
-#endif
-
- strcpy(viewport->title,title);
-
- viewport->closing = no;
- viewport->allowDraw = yes; /* just draw axes the first time around */
- viewport->axesOn = axesON;
- viewport->unitsOn = unitsON;
- viewport->pointsOn = pointsON;
- viewport->linesOn = connectON;
- viewport->splineOn = splineON;
-
- /**** Make the windows for the viewport ****/
- spadbits = XCreateBitmapFromData(dsply,rtWindow,
- spadBitmap_bits,
- spadBitmap_width,spadBitmap_height);
- spadmask = XCreateBitmapFromData(dsply,rtWindow,
- spadMask_bits,
- spadMask_width,spadMask_height);
- viewAttrib.background_pixel = backgroundColor;
- viewAttrib.border_pixel = foregroundColor;
- viewAttrib.override_redirect = overrideManager;
- viewAttrib.colormap = colorMap;
-
- foreColor.pixel = foregroundColor;
- backColor.pixel = backgroundColor;
- XQueryColor(dsply,colorMap,&foreColor);
- XQueryColor(dsply,colorMap,&backColor);
- viewAttrib.cursor = XCreatePixmapCursor(dsply,spadbits,spadmask,
- &foreColor,&backColor,spadBitmap_x_hot,spadBitmap_y_hot);
-
- viewAttrib.event_mask = titleMASK;
- if (vW) {
- titleSizeHints.flags = PPosition | PSize;
- titleSizeHints.x = vX;
- titleSizeHints.y = vY;
- titleSizeHints.width = vW;
- titleSizeHints.height = vH;
- } else {
- titleSizeHints.flags = PSize;
- titleSizeHints.width = viewWidth;
- titleSizeHints.height = viewHeight;
- }
-
- viewTitleWindow = XCreateWindow(dsply,rtWindow,vX,vY,vW,vH,
- viewBorderWidth,
- CopyFromParent,InputOutput,CopyFromParent,
- viewportTitleCreateMASK,&viewAttrib);
-
- wm_delete_window = XInternAtom(dsply, "WM_DELETE_WINDOW", False);
- (void) XSetWMProtocols(dsply, viewTitleWindow, &wm_delete_window, 1);
-
- XSetNormalHints(dsply,viewTitleWindow,&titleSizeHints);
- XSetStandardProperties(dsply,viewTitleWindow,"AXIOM 2D",viewport->title,
- None,NULL,0,&titleSizeHints);
-
- viewport->titleWindow = viewTitleWindow;
- viewAttrib.event_mask = viewportMASK;
- viewSizeHints.flags = PPosition | PSize;
- viewSizeHints.x = -viewBorderWidth;
- viewSizeHints.y = titleHeight;
- viewSizeHints.width = titleSizeHints.width;
- viewSizeHints.height = titleSizeHints.height -
- (titleHeight + appendixHeight);
- viewGraphWindow = XCreateWindow(dsply,viewTitleWindow,
- viewSizeHints.x,viewSizeHints.y,
- viewSizeHints.width,viewSizeHints.height,
- viewBorderWidth,
- CopyFromParent,InputOutput,CopyFromParent,
- viewportCreateMASK,&viewAttrib);
- XSetNormalHints(dsply,viewGraphWindow,&viewSizeHints);
- XSetStandardProperties(dsply,viewGraphWindow,"2D Viewport","2D Viewport",
- None,NULL,0,&viewSizeHints);
-
- viewport->viewWindow = viewGraphWindow;
-
- /*Make the control panel for the viewport. */
- viewport->controlPanel = makeControlPanel();
- if ((viewport->haveControl = showCP)) putControlPanelSomewhere(anywhere);
-
- XSync(dsply,False);
- return(viewport);
-
-}
-
-
-/*********************************************
- ***** viewPoints *makeView2D(viewdata) ****
- *********************************************/
-
-
-viewPoints *
-makeView2D(view2DStruct *viewdata)
-{
- viewPoints *vPoints;
-
- vPoints = makeViewport(viewdata->title, viewdata->vX,viewdata->vY,
- viewdata->vW,viewdata->vH,viewdata->showCP);
-
- vPoints->allowDraw = yes; /* draw everything from now on */
-
- if (viewdata->showCP) clearControlMessage();
-
- writeTitle();
-
- XMapWindow(dsply,vPoints->viewWindow);
- XMapWindow(dsply,vPoints->titleWindow);
- XSync(dsply,0);
-
- drawViewport(Xoption); /* draw viewport with X routines (as opposed to
PS) */
- return(vPoints);
-
-} /* makeView2D */
-
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/graph/view2d/write2d.c.pamphlet
b/src/graph/view2d/write2d.c.pamphlet
deleted file mode 100644
index 4e089c2..0000000
--- a/src/graph/view2d/write2d.c.pamphlet
+++ /dev/null
@@ -1,219 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/graph/view2d write2d.c}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in
- the documentation and/or other materials provided with the
- distribution.
-
- - Neither the name of The Numerical ALgorithms Group Ltd. nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-@
-<<*>>=
-<<license>>
-
-#define _WRITE2D_C
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "header2.h"
-#include "write.h"
-
-#include "all-2d.h1"
-#include "pixmap.h1"
-#include "gfun.h1"
-
-
-#define numBits (8*sizeof(int))
-
-int
-writeViewport(int thingsToWrite)
-{
-
- FILE *viewDataFile;
- char viewDirName[80],
- viewBitmapFilename[80],viewDataFilename[80],command[80];
- int i,j,k,code,ii;
- pointListStruct *aList;
- pointStruct *aPoint;
- XWindowAttributes vwInfo;
-
- XGetWindowAttributes(dsply,viewport->titleWindow,&vwInfo);
- sprintf(viewDirName,"%s%s",filename,".view");
- sprintf(command,"%s%s%s","rm -r ",viewDirName," > /dev/null 2>&1");
- code = system(command);
- sprintf(command,"%s%s%s","mkdir ",viewDirName," > /dev/null 2>&1");
- if (system(command)) {
- fprintf(stderr," Error: Cannot create %s\n",viewDirName);
- return(-1);
- } else {
- /*** Create the data file ***/
- sprintf(viewDataFilename,"%s%s",viewDirName,"/data");
- if ((viewDataFile = fopen(viewDataFilename,"w")) == NULL) {
- fprintf(stderr," Error: Cannot create %s\n",viewDataFilename);
- perror("fopen");
- return(-1);
- } else {
- /*** write out the view2DStruct stuff ***/
- fprintf(viewDataFile,"%d\n",view2DType);
- fprintf(viewDataFile,"%s\n",viewport->title);
- fprintf(viewDataFile,"%d %d %d %d\n",vwInfo.x,vwInfo.y,
- vwInfo.width,vwInfo.height);
- for (i=0; i<maxGraphs; i++) {
- fprintf(viewDataFile,"%d\n",graphArray[i].key);
- fprintf(viewDataFile,"%g %g\n",
- graphStateArray[i].scaleX,graphStateArray[i].scaleY);
- fprintf(viewDataFile,"%g %g\n",
- graphStateArray[i].deltaX,graphStateArray[i].deltaY);
- fprintf(viewDataFile,"%g %g\n",
- graphStateArray[i].centerX,graphStateArray[i].centerY);
- fprintf(viewDataFile,"%d %d %d %d %d %d %d\n",
- graphStateArray[i].pointsOn,graphStateArray[i].connectOn,
- graphStateArray[i].splineOn,
- graphStateArray[i].axesOn, graphStateArray[i].axesColor,
- graphStateArray[i].unitsOn, graphStateArray[i].unitsColor);
- fprintf(viewDataFile,"%d %d\n",
- graphStateArray[i].showing,graphStateArray[i].selected);
- }
- fclose(viewDataFile);
- for (i=0; i<maxGraphs; i++) {
- if (graphArray[i].key) {
- sprintf(viewDataFilename,"%s%s%d",viewDirName,"/graph",i);
- if ((viewDataFile = fopen(viewDataFilename,"w")) == NULL) {
- fprintf(stderr," Error: Cannot create %s\n",viewDataFilename);
- perror("fopen");
- return(-1);
- } else {
- fprintf(viewDataFile,"%g %g %g %g\n",
- graphArray[i].xmin,graphArray[i].ymin,
- graphArray[i].xmax,graphArray[i].ymax);
- fprintf(viewDataFile,"%g %g\n",
- graphArray[i].xNorm,graphArray[i].yNorm);
- fprintf(viewDataFile,"%g %g\n",
- graphArray[i].originX,graphArray[i].originY);
- fprintf(viewDataFile,"%g %g\n",
- graphArray[i].spadUnitX,graphArray[i].spadUnitY);
- fprintf(viewDataFile,"%g %g\n",
- graphArray[i].unitX,graphArray[i].unitY);
- fprintf(viewDataFile,"%d\n",graphArray[i].numberOfLists);
- for (j=0,aList=graphArray[i].listOfListsOfPoints;
- j<graphArray[i].numberOfLists;
- j++, aList++) {
- fprintf(viewDataFile,"%d\n",aList->numberOfPoints);
- fprintf(viewDataFile,"%d %d %d\n",
- aList->pointColor,aList->lineColor,aList->pointSize);
- for (k=0,aPoint=aList->listOfPoints;
- k<aList->numberOfPoints;
- k++,aPoint++)
- fprintf(viewDataFile,"%g %g %g %g\n",
- aPoint->x,aPoint->y,aPoint->hue,aPoint->shade);
- } /* for j, aList */
- fclose(viewDataFile);
- } /* else graph i */
- } /* if */
- } /* for */
- } /* else */
-
- /* write out special files */
- for (ii=1; ii<numBits; ii++) { /* write.h is one-based */
- if (thingsToWrite & (1<<ii)) {
- switch (ii) {
- case Pixmap:
- /*** Create the pixmap (bitmaps need leaf name) ***/
- sprintf(viewBitmapFilename,"%s%s",viewDirName,"/image.xpm");
- XGetWindowAttributes(dsply,viewport->viewWindow,&vwInfo);
- write_pixmap_file(dsply,scrn,viewBitmapFilename,
- viewport->titleWindow,0,0,vwInfo.width,
- vwInfo.height+titleHeight);
- break;
- case Bitmap:
- /*** Create the bitmap (bitmaps need leaf name) ***/
- sprintf(viewBitmapFilename,"%s%s",viewDirName,"/image.bm");
- XGetWindowAttributes(dsply,viewport->viewWindow,&vwInfo);
- code = XWriteBitmapFile(dsply,viewBitmapFilename,
- viewport->titleWindow,vwInfo.width,
- vwInfo.height+vwInfo.border_width+20,-1,-1);
- break;
- case Image:
- /*** Create the pixmap (bitmaps need leaf name) ***/
- sprintf(viewBitmapFilename,"%s%s",viewDirName,"/image.xpm");
- XResizeWindow(dsply,viewport->titleWindow,300,300+titleHeight);
- XResizeWindow(dsply,viewport->viewWindow,300,300);
- XGetWindowAttributes(dsply,viewport->viewWindow,&vwInfo);
- drawViewport(Xoption);
- writeTitle();
- write_pixmap_file(dsply,scrn,viewBitmapFilename,
- viewport->titleWindow,0,0,vwInfo.width,
- vwInfo.height+titleHeight);
- /*** Create the bitmap (bitmaps need leaf name) ***/
- mono = 1;
- drawViewport(Xoption);
- writeTitle();
- sprintf(viewBitmapFilename,"%s%s%s",viewDirName,"/","image.bm");
- code = XWriteBitmapFile(dsply,viewBitmapFilename,
- viewport->titleWindow,vwInfo.width,
- vwInfo.height+vwInfo.border_width+20,-1,-1);
- mono = 0;
- break;
-
- case Postscript:
- /*** Create postscript output for viewport (in axiom2d.ps) ***/
- sprintf(PSfilename,"%s%s",viewDirName,"/axiom2d.ps");
- if (PSInit(viewport->viewWindow,viewport->titleWindow) == psError)
- return (-1);
- drawViewport(PSoption); /* write new script file in /tmp */
- if (PSCreateFile(viewBorderWidth,viewport->viewWindow,
- viewport->titleWindow, viewport->title) == psError)
- return(-1); /* concat script & proc into axiom2d.ps */
- break;
-
- } /* switch on ii */
- } /* if thingsToWrite >> ii */
- } /* for ii */
-
- return(0);
- } /* else create directory okay */
-
-}
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Axiom-developer] 20080603.01.tpd.patch (remove src/graph/view2d),
daly <=