aboutsummaryrefslogtreecommitdiff
path: root/src/graph/view2D/main2d.c.pamphlet
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2008-03-09 03:47:21 +0000
committerdos-reis <gdr@axiomatics.org>2008-03-09 03:47:21 +0000
commit6e07ce8f0c6c77b61cfa2f8be54781160018ff91 (patch)
tree91e5069719c924bd58242e932bd585d3e676112b /src/graph/view2D/main2d.c.pamphlet
parent3f7d906f8cd6edd2597a49f629bd31914de8ca08 (diff)
downloadopen-axiom-6e07ce8f0c6c77b61cfa2f8be54781160018ff91.tar.gz
* graph/: Depamphletize.
* include/addfile.h: Move from hyper. * include/addfile.H1: Move external declarations into addfile.h. Remove.
Diffstat (limited to 'src/graph/view2D/main2d.c.pamphlet')
-rw-r--r--src/graph/view2D/main2d.c.pamphlet523
1 files changed, 0 insertions, 523 deletions
diff --git a/src/graph/view2D/main2d.c.pamphlet b/src/graph/view2D/main2d.c.pamphlet
deleted file mode 100644
index 72135f9a..00000000
--- a/src/graph/view2D/main2d.c.pamphlet
+++ /dev/null
@@ -1,523 +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 "axiom-c-macros.h"
-
-#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
-#ifdef _NO_PROTO
-main()
-#else
-main(void)
-#endif
-{
-
- 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
-#ifdef _NO_PROTO
-mergeDatabases()
-#else
-mergeDatabases(void)
-#endif
-{
- /* using global
- rDB
- dsply
- */
- XrmDatabase homeDB,serverDB,applicationDB;
- char filenamebuf[1024];
- char *filename = &filenamebuf[0];
- char *classname = "OpenAxiom";
- 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}