diff options
Diffstat (limited to 'src/graph/view3D/quit3d.c')
-rw-r--r-- | src/graph/view3D/quit3d.c | 172 |
1 files changed, 172 insertions, 0 deletions
diff --git a/src/graph/view3D/quit3d.c b/src/graph/view3D/quit3d.c new file mode 100644 index 00000000..3b633852 --- /dev/null +++ b/src/graph/view3D/quit3d.c @@ -0,0 +1,172 @@ +/* + Copyright (C) 1991-2002, The Numerical ALgorithms Group Ltd. + All rights reserved. + Copyright (C) 2007-2008, Gabriel Dos Reis. + 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 _QUIT3D_C +#include "axiom-c-macros.h" + +#include <string.h> +#include "header.h" +#include "cpanel.h" +#include "volume.h" +#include "../include/purty/volume.bitmap" +#include "../include/purty/volume.mask" + +#include "util.H1" +#include "Gfun.H1" +#include "XSpadFill.H1" +#include "all_3d.H1" + +#define quitMASK ExposureMask +#define quitCursorForeground monoColor(55) +#define quitCursorBackground monoColor(197) +#define quitTitleColor monoColor(69) +#define quitButtonColor monoColor(195) +#define quitFontHeight (quitFont->max_bounds.ascent+quitFont->max_bounds.descent) + + +/*************************** + * int makeQuitPanel() * + ***************************/ + +int +#ifdef _NO_PROTO +makeQuitPanel() +#else +makeQuitPanel(void) +#endif +{ + + int i; + XSetWindowAttributes quitter,QuitterAttrib; + XSizeHints sizeh; + Pixmap quitbits, quitmask; + XColor quitterColor,qColor; + + quitbits = XCreateBitmapFromData(dsply,rtWindow, volumeBitmap_bits, + volumeBitmap_width,volumeBitmap_height); + quitmask = XCreateBitmapFromData(dsply,rtWindow,volumeMask_bits, + volumeMask_width,volumeMask_height); + quitter.background_pixel = backgroundColor; + quitter.border_pixel = foregroundColor; + quitter.event_mask = quitMASK; + quitter.colormap = colorMap; + quitter.override_redirect = overrideManager; + quitterColor.pixel = quitCursorForeground; + XQueryColor(dsply,colorMap,&quitterColor); + qColor.pixel = quitCursorBackground; + XQueryColor(dsply,colorMap,&qColor); + quitter.cursor = XCreatePixmapCursor(dsply,quitbits,quitmask, + &quitterColor,&qColor, + volumeBitmap_x_hot,volumeBitmap_y_hot); + quitWindow = XCreateWindow(dsply,control->controlWindow, + controlWidth-quitWidth-2,controlHeight-quitHeight-2, + quitWidth-2,quitHeight-2,2, + CopyFromParent,InputOutput,CopyFromParent, + controlCreateMASK,&quitter); + + sizeh.flags = USPosition | USSize; + sizeh.x = 0; + sizeh.y = 0; + sizeh.width = quitWidth-2; + sizeh.height = quitHeight-2; + + XSetNormalHints(dsply,quitWindow,&sizeh); + XSetStandardProperties(dsply,quitWindow,"Quit Panel","Quit Panel", + None,NULL,0,&sizeh); + + /*** do quit buttons ***/ + initQuitButtons(control->buttonQueue); + for (i=quitButtonsStart; i<(quitButtonsEnd); i++) { + QuitterAttrib.event_mask = (control->buttonQueue[i]).mask; + (control->buttonQueue[i]).self = + XCreateWindow(dsply,quitWindow, + (control->buttonQueue[i]).buttonX, + (control->buttonQueue[i]).buttonY, + (control->buttonQueue[i]).buttonWidth, + (control->buttonQueue[i]).buttonHeight, + 0,0,InputOnly,CopyFromParent, + buttonCreateMASK,&QuitterAttrib); + XMakeAssoc(dsply,table,(control->buttonQueue[i]).self, + &((control->buttonQueue[i]).buttonKey)); + XMapWindow(dsply,(control->buttonQueue[i]).self); + } + + return(0); + +} /* makeQuitPanel() */ + + +/**************************** + * void drawQuitPanel() * + ****************************/ + +void +#ifdef _NO_PROTO +drawQuitPanel() +#else +drawQuitPanel(void) +#endif +{ + + char *s; + int i,strlength; + + s = "Really?"; + strlength = strlen(s); + GSetForeground(anotherGC,(float)quitTitleColor,Xoption); + GDrawString(anotherGC,quitWindow, + centerX(anotherGC,s,strlength,quitWidth),centerY(anotherGC,39),s,strlength,Xoption); + + GSetForeground(anotherGC,(float)quitButtonColor,Xoption); + for (i=quitButtonsStart; i<(quitButtonsEnd); i++) { + GDraw3DButtonOut(quitGC,quitWindow, + (control->buttonQueue[i]).buttonX, + (control->buttonQueue[i]).buttonY, + (control->buttonQueue[i]).buttonWidth, + (control->buttonQueue[i]).buttonHeight,Xoption); + s = (control->buttonQueue[i]).text; + strlength = strlen(s); + GSetForeground(trashGC, + (float)monoColor((control->buttonQueue[i]).textColor),Xoption); + GDrawString(trashGC,quitWindow, + (control->buttonQueue[i]).buttonX + + centerX(processGC,s,strlength, + (control->buttonQueue[i]).buttonWidth), + (control->buttonQueue[i]).buttonY + + centerY(processGC,(control->buttonQueue[i]).buttonHeight), + s,strlen(s),Xoption); + } /* for i in control->buttonQueue */ + +} /* drawQuitPanel */ |