From 6e07ce8f0c6c77b61cfa2f8be54781160018ff91 Mon Sep 17 00:00:00 2001 From: dos-reis Date: Sun, 9 Mar 2008 03:47:21 +0000 Subject: * graph/: Depamphletize. * include/addfile.h: Move from hyper. * include/addfile.H1: Move external declarations into addfile.h. Remove. --- src/graph/view2D/control2d.c.pamphlet | 641 ---------------------------------- 1 file changed, 641 deletions(-) delete mode 100644 src/graph/view2D/control2d.c.pamphlet (limited to 'src/graph/view2D/control2d.c.pamphlet') diff --git a/src/graph/view2D/control2d.c.pamphlet b/src/graph/view2D/control2d.c.pamphlet deleted file mode 100644 index c45ba400..00000000 --- a/src/graph/view2D/control2d.c.pamphlet +++ /dev/null @@ -1,641 +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} -<>= -/* -Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - - Neither the name of The Numerical ALgorithms Group Ltd. nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED -TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER -OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -@ -<<*>>= -<> - -#define _CONTROL2D_C -#include "axiom-c-macros.h" - -#include -#include -#include -#include -#include -#include -#include - -#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 -#ifdef _NO_PROTO -writeControlTitle() -#else -writeControlTitle(void) -#endif -{ - - 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 -#ifdef _NO_PROTO -makeMessageFromData(whichGraph) -int whichGraph; -#else -makeMessageFromData(int whichGraph) -#endif -{ - 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 -#ifdef _NO_PROTO -writeControlMessage() -#else -writeControlMessage(void) -#endif -{ - 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 -#ifdef _NO_PROTO -drawControlPanel() -#else -drawControlPanel(void) -#endif -{ - - 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 -#ifdef _NO_PROTO -getControlXY(whereDoYouWantPanel) -int whereDoYouWantPanel; -#else -getControlXY(int whereDoYouWantPanel) -#endif -{ - 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 * -#ifdef _NO_PROTO -makeControlPanel() -#else -makeControlPanel(void) -#endif -{ - - 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; ibuttonQueue[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; ijustMadeControl = 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 -#ifdef _NO_PROTO -putControlPanelSomewhere(whereDoesPanelGo) -int whereDoesPanelGo; -#else -putControlPanelSomewhere(int whereDoesPanelGo) -#endif -{ - 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 -#ifdef _NO_PROTO -clearControlMessage() -#else -clearControlMessage(void) -#endif -{ - - 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} -- cgit v1.2.3