aboutsummaryrefslogtreecommitdiff
path: root/src/graph/view3D/buttons3d.c.pamphlet
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2007-08-14 05:14:52 +0000
committerdos-reis <gdr@axiomatics.org>2007-08-14 05:14:52 +0000
commitab8cc85adde879fb963c94d15675783f2cf4b183 (patch)
treec202482327f474583b750b2c45dedfc4e4312b1d /src/graph/view3D/buttons3d.c.pamphlet
downloadopen-axiom-ab8cc85adde879fb963c94d15675783f2cf4b183.tar.gz
Initial population.
Diffstat (limited to 'src/graph/view3D/buttons3d.c.pamphlet')
-rw-r--r--src/graph/view3D/buttons3d.c.pamphlet450
1 files changed, 450 insertions, 0 deletions
diff --git a/src/graph/view3D/buttons3d.c.pamphlet b/src/graph/view3D/buttons3d.c.pamphlet
new file mode 100644
index 00000000..9727e581
--- /dev/null
+++ b/src/graph/view3D/buttons3d.c.pamphlet
@@ -0,0 +1,450 @@
+\documentclass{article}
+\usepackage{axiom}
+\begin{document}
+\title{\$SPAD/src/graph/view3D buttons3d.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 _BUTTONS3D_C
+#include "axiom-c-macros.h"
+#include "useproto.h"
+
+#include "header.h"
+#include "cpanel.h"
+
+#include "all_3d.H1"
+#define BH 31 /* button window height */
+#define PH 80 /* potentiometer window height */
+#define XEDGE 5 /* leftmost button starts here */
+
+/*****************************************************
+ * int initButtons(buttons) *
+ * *
+ * Creates the fields for each button window in the *
+ * three dimensional control panel, and returns the *
+ * number of buttons created. *
+ * *
+ *****************************************************/
+
+int
+#ifdef _NO_PROTO
+initButtons (buttons)
+ buttonStruct *buttons;
+#else
+initButtons (buttonStruct *buttons)
+#endif
+{
+
+ int PBY = 297; /* panel button Y coordinate at which buttons appear */
+ int ii, num = 0;
+
+ /* Rotate, Zoom, and Translate Potentiometer Buttons */
+
+ /* Title: "Rotate" */
+ ii = rotate;
+ buttons[ii].buttonX = XEDGE; buttons[ii].buttonY = 85;
+ buttons[ii].buttonWidth = 110; buttons[ii].buttonHeight = PH;
+ buttons[ii].buttonKey = ii;
+ buttons[ii].pot = yes; /* rotate is a potentiometer */
+ buttons[ii].mask = potMASK;
+ buttons[ii].textColor = 139; /* line color of rotate dial */
+ buttons[ii].xHalf = buttons[ii].buttonWidth/2;
+ buttons[ii].yHalf = buttons[ii].buttonHeight/2;
+ ++num;
+
+ /* Title: "Scale" */
+ ii = zoom;
+ buttons[ii].buttonX = 121; buttons[ii].buttonY = 85;
+ buttons[ii].buttonWidth = 58; buttons[ii].buttonHeight = PH;
+ buttons[ii].buttonKey = ii;
+ buttons[ii].pot = yes; /* zoom(scale) is a potentiometer */
+ buttons[ii].mask = potMASK;
+ buttons[ii].textColor = 165; /* line color of scale arrow */
+ buttons[ii].xHalf = buttons[ii].buttonWidth/2;
+ buttons[ii].yHalf = buttons[ii].buttonHeight/2;
+ ++num;
+
+
+ /* Title: "Translate" */
+ ii = translate;
+ buttons[ii].buttonX = 185; buttons[ii].buttonY = 85;
+ buttons[ii].buttonWidth = 110; buttons[ii].buttonHeight = PH;
+ buttons[ii].buttonKey = ii;
+ buttons[ii].pot = yes; /* translate is a potentiometer */
+ buttons[ii].mask = potMASK;
+ buttons[ii].textColor = 21; /* line color of translate arrows */
+ buttons[ii].xHalf = buttons[ii].buttonWidth/2;
+ buttons[ii].yHalf = buttons[ii].buttonHeight/2;
+ ++num;
+
+ /* All the rest of the buttons are regular, toggle only buttons and
+ have the potentiometer variable set to "no". */
+
+ /* First Row of Buttons */
+ /* The four rendering mode buttons:
+ wireframe, hiddenline solid, hiddenline shaded and smooth shaded **/
+
+ /* Wirefram mesh */
+ ii = transparent;
+ buttons[ii].buttonX = XEDGE; buttons[ii].buttonY = PBY;
+ buttons[ii].buttonWidth = 45; buttons[ii].buttonHeight = BH;
+ buttons[ii].buttonKey = ii;
+ buttons[ii].pot = no;
+ buttons[ii].mask = buttonMASK;
+ buttons[ii].text = "Wire";
+ buttons[ii].textColor = modeColor;
+ buttons[ii].xHalf = buttons[ii].buttonWidth/2;
+ buttons[ii].yHalf = buttons[ii].buttonHeight/2;
+ ++num;
+
+ /* Hidden surface mesh */
+ ii = opaqueMesh;
+ buttons[ii].buttonX = 55; buttons[ii].buttonY = PBY;
+ buttons[ii].buttonWidth = 53; buttons[ii].buttonHeight = BH;
+ buttons[ii].buttonKey = ii;
+ buttons[ii].pot = no;
+ buttons[ii].mask = buttonMASK;
+ buttons[ii].text = "Solid";
+ buttons[ii].textColor = modeColor;
+ buttons[ii].xHalf = buttons[ii].buttonWidth/2;
+ buttons[ii].yHalf = buttons[ii].buttonHeight/2;
+ ++num;
+
+ /* Lambertian polygon fill with phong illumination model */
+ ii = render;
+ buttons[ii].buttonX = 113; buttons[ii].buttonY = PBY;
+ buttons[ii].buttonWidth = 53; buttons[ii].buttonHeight = BH;
+ buttons[ii].buttonKey = ii;
+ buttons[ii].pot = no;
+ buttons[ii].mask = buttonMASK;
+ buttons[ii].text = "Shade";
+ buttons[ii].textColor = modeColor;
+ buttons[ii].xHalf = buttons[ii].buttonWidth/2;
+ buttons[ii].yHalf = buttons[ii].buttonHeight/2;
+ ++num;
+
+ /* Phong smooth shading and illumination */
+ ii = smooth;
+ buttons[ii].buttonX = 171; buttons[ii].buttonY = PBY;
+ buttons[ii].buttonWidth = 59; buttons[ii].buttonHeight = BH;
+ buttons[ii].buttonKey = ii;
+ buttons[ii].pot = no;
+ buttons[ii].mask = buttonMASK;
+ buttons[ii].text = "Smooth";
+ buttons[ii].textColor = modeColor;
+ buttons[ii].xHalf = buttons[ii].buttonWidth/2;
+ buttons[ii].yHalf = buttons[ii].buttonHeight/2;
+ ++num;
+
+ /* Reset View Position Button */
+ ii = resetView;
+ buttons[ii].buttonX = 240; buttons[ii].buttonY = PBY;
+ buttons[ii].buttonWidth = 53; buttons[ii].buttonHeight = BH;
+ buttons[ii].buttonKey = ii;
+ buttons[ii].pot = no;
+ buttons[ii].mask = buttonMASK;
+ buttons[ii].text = "Reset";
+ buttons[ii].textColor = 149;
+ buttons[ii].xHalf = buttons[ii].buttonWidth/2;
+ buttons[ii].yHalf = buttons[ii].buttonHeight/2;
+ ++num;
+
+
+ /* Second Row of Buttons */
+
+ /* update y displacement of buttons row */
+ PBY=PBY+BH+3;
+
+ /* Bounding Region On/Off */
+ ii = region3D;
+ buttons[ii].buttonX = XEDGE; buttons[ii].buttonY = PBY;
+ buttons[ii].buttonWidth = 58; buttons[ii].buttonHeight = BH;
+ buttons[ii].buttonKey = ii;
+ buttons[ii].pot = no;
+ buttons[ii].mask = buttonMASK;
+ buttons[ii].text = "Bounds";
+ buttons[ii].textColor = 6;
+ buttons[ii].xHalf = buttons[ii].buttonWidth/2;
+ buttons[ii].yHalf = buttons[ii].buttonHeight/2;
+ ++num;
+
+ /* Axes Turned On/Off */
+ ii = axesOnOff;
+ buttons[ii].buttonX = 68; buttons[ii].buttonY = PBY;
+ buttons[ii].buttonWidth = 49; buttons[ii].buttonHeight = BH;
+ buttons[ii].buttonKey = ii;
+ buttons[ii].pot = no;
+ buttons[ii].mask = buttonMASK;
+ buttons[ii].text = "Axes";
+ buttons[ii].textColor = offColor;
+ buttons[ii].xHalf = buttons[ii].buttonWidth/2;
+ buttons[ii].yHalf = buttons[ii].buttonHeight/2;
+ ++num;
+
+ /* Outline polygons with black lines in render mode */
+ ii = outlineOnOff;
+ buttons[ii].buttonX = 122; buttons[ii].buttonY = PBY;
+ buttons[ii].buttonWidth = 70; buttons[ii].buttonHeight = BH;
+ buttons[ii].buttonKey = ii;
+ buttons[ii].pot = no;
+ buttons[ii].mask = buttonMASK;
+ buttons[ii].text = "Outline";
+ buttons[ii].textColor = offColor;
+ buttons[ii].xHalf = buttons[ii].buttonWidth/2;
+ buttons[ii].yHalf = buttons[ii].buttonHeight/2;
+ ++num;
+
+ /* Display as if a 1-bit plane image */
+ ii = bwColor;
+ buttons[ii].buttonX = 197; buttons[ii].buttonY = PBY;
+ buttons[ii].buttonWidth = 33; buttons[ii].buttonHeight = BH;
+ buttons[ii].buttonKey = ii;
+ buttons[ii].pot = no;
+ buttons[ii].mask = buttonMASK;
+ buttons[ii].text = "BW";
+ buttons[ii].textColor = offColor;
+ buttons[ii].xHalf = buttons[ii].buttonWidth/2;
+ buttons[ii].yHalf = buttons[ii].buttonHeight/2;
+ ++num;
+
+ /* Hide Control Panel */
+ ii = hideControl;
+ buttons[ii].buttonX = 240; buttons[ii].buttonY = PBY;
+ buttons[ii].buttonWidth = 53; buttons[ii].buttonHeight = BH;
+ buttons[ii].buttonKey = ii;
+ buttons[ii].pot = no;
+ buttons[ii].mask = buttonMASK;
+ buttons[ii].text = "Hide";
+ buttons[ii].textColor = 149;
+ buttons[ii].xHalf = buttons[ii].buttonWidth/2;
+ buttons[ii].yHalf = buttons[ii].buttonHeight/2;
+ ++num;
+
+
+ /* Third Row of Buttons */
+
+ /* update y displacement of buttons row */
+ PBY=PBY+BH+3;
+
+ /* Shows Lighting Control Panel */
+ ii = lighting;
+ buttons[ii].buttonX = XEDGE; buttons[ii].buttonY = PBY;
+ buttons[ii].buttonWidth = 65; buttons[ii].buttonHeight = BH;
+ buttons[ii].buttonKey = ii;
+ buttons[ii].pot = no;
+ buttons[ii].mask = buttonMASK;
+ buttons[ii].text = "Light";
+ buttons[ii].textColor = 149;
+ buttons[ii].xHalf = buttons[ii].buttonWidth/2;
+ buttons[ii].yHalf = buttons[ii].buttonHeight/2;
+ ++num;
+
+ /* Shows View Volume Control Panel */
+ ii = viewVolume;
+ buttons[ii].buttonX = 75; buttons[ii].buttonY = PBY;
+ buttons[ii].buttonWidth = 100; buttons[ii].buttonHeight = BH;
+ buttons[ii].buttonKey = ii;
+ buttons[ii].pot = no;
+ buttons[ii].mask = buttonMASK;
+ buttons[ii].text = "View Volume";
+ buttons[ii].textColor = 149;
+ buttons[ii].xHalf = buttons[ii].buttonWidth/2;
+ buttons[ii].yHalf = buttons[ii].buttonHeight/2;
+ ++num;
+
+ /* Shows Save Panel */
+ ii = saveit;
+ buttons[ii].buttonX = 180; buttons[ii].buttonY = PBY;
+ buttons[ii].buttonWidth = 50; buttons[ii].buttonHeight = BH;
+ buttons[ii].buttonKey = ii;
+ buttons[ii].pot = no;
+ buttons[ii].mask = buttonMASK;
+ buttons[ii].text = "Save";
+ buttons[ii].textColor = 149;
+ buttons[ii].xHalf = buttons[ii].buttonWidth/2;
+ buttons[ii].yHalf = buttons[ii].buttonHeight/2;
+ ++num;
+
+ /* Exits from the viewport running */
+ ii = closeAll;
+ buttons[ii].buttonX = 240; buttons[ii].buttonY = PBY;
+ buttons[ii].buttonWidth = 53; buttons[ii].buttonHeight = BH;
+ buttons[ii].buttonKey = ii;
+ buttons[ii].pot = no;
+ buttons[ii].mask = buttonMASK;
+ buttons[ii].text = "Quit";
+ buttons[ii].textColor = offColor;
+ buttons[ii].xHalf = buttons[ii].buttonWidth/2;
+ buttons[ii].yHalf = buttons[ii].buttonHeight/2;
+ ++num;
+
+ /* Buttons to control potentiometers */
+ /* These buttons appear above the potentiometer windows which they affect. */
+
+ /* Rotate potentiometer buttons */
+
+ /* Rotate about the origin indicated by the axes */
+ /* Red is off, Green is on */
+ ii = originr;
+ buttons[ii].buttonX = XEDGE; buttons[ii].buttonY = 55;
+ buttons[ii].buttonWidth = 53; buttons[ii].buttonHeight = 25;
+ buttons[ii].buttonKey = ii;
+ buttons[ii].pot = no;
+ buttons[ii].mask = buttonMASK;
+ buttons[ii].text = "origin";
+ buttons[ii].textColor = onColor;
+ buttons[ii].xHalf = buttons[ii].buttonWidth/2;
+ buttons[ii].yHalf = buttons[ii].buttonHeight/2;
+ ++num;
+
+ /* Rotate about the objects center of volume */
+ /* Red is off, Green is on */
+ ii = objectr;
+ 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].mask = buttonMASK;
+ buttons[ii].text = "object";
+ buttons[ii].textColor = offColor;
+ buttons[ii].xHalf = buttons[ii].buttonWidth/2;
+ buttons[ii].yHalf = buttons[ii].buttonHeight/2;
+ ++num;
+
+ /* Scale potentiometer buttons */
+
+ /* Scale along X axis: Red is off, Green is on */
+ ii = zoomx;
+ buttons[ii].buttonX = 121; buttons[ii].buttonY = 55;
+ buttons[ii].buttonWidth = 17; buttons[ii].buttonHeight = 25;
+ buttons[ii].buttonKey = ii;
+ buttons[ii].pot = no;
+ buttons[ii].mask = buttonMASK;
+ buttons[ii].text = "x";
+ buttons[ii].textColor = onColor;
+ buttons[ii].xHalf = buttons[ii].buttonWidth/2;
+ buttons[ii].yHalf = buttons[ii].buttonHeight/2;
+ ++num;
+
+ /* Scale along Y axis: Red is off, Green is on */
+ ii = zoomy;
+ buttons[ii].buttonX = 141; buttons[ii].buttonY = 55;
+ buttons[ii].buttonWidth = 17; buttons[ii].buttonHeight = 25;
+ buttons[ii].buttonKey = ii;
+ buttons[ii].pot = no;
+ buttons[ii].mask = buttonMASK;
+ buttons[ii].text = "y";
+ buttons[ii].textColor = onColor;
+ buttons[ii].xHalf = buttons[ii].buttonWidth/2;
+ buttons[ii].yHalf = buttons[ii].buttonHeight/2;
+ ++num;
+
+ /* Zoom along Z axis: Red is off, Green is on */
+ ii = zoomz;
+ buttons[ii].buttonX = 161; buttons[ii].buttonY = 55;
+ buttons[ii].buttonWidth = 17; buttons[ii].buttonHeight = 25;
+ buttons[ii].buttonKey = ii;
+ buttons[ii].pot = no;
+ buttons[ii].mask = buttonMASK;
+ buttons[ii].text = "z";
+ buttons[ii].textColor = onColor;
+ buttons[ii].xHalf = buttons[ii].buttonWidth/2;
+ buttons[ii].yHalf = buttons[ii].buttonHeight/2;
+ ++num;
+
+ /* Translate potentiometer buttons */
+
+ /* Indicates an orthographic projection of the xy-plane,
+ translation is in x and y coordinates */
+ ii = xy;
+ buttons[ii].buttonX = 185; buttons[ii].buttonY = 55;
+ buttons[ii].buttonWidth= 34; buttons[ii].buttonHeight = 25;
+ buttons[ii].buttonKey = ii;
+ buttons[ii].pot = no;
+ buttons[ii].mask = buttonMASK;
+ buttons[ii].text = "xy";
+ buttons[ii].textColor = 35;
+ buttons[ii].xHalf = buttons[ii].buttonWidth/2;
+ buttons[ii].yHalf = buttons[ii].buttonHeight/2;
+ ++num;
+
+ /* Indicates an orthographic projection of the xz-plane,
+ translation is in x and z coordinates */
+ ii = xz;
+ buttons[ii].buttonX = 223; buttons[ii].buttonY = 55;
+ buttons[ii].buttonWidth= 34; buttons[ii].buttonHeight = 25;
+ buttons[ii].buttonKey = ii;
+ buttons[ii].pot = no;
+ buttons[ii].mask = buttonMASK;
+ buttons[ii].text = "xz";
+ buttons[ii].textColor = 35;
+ buttons[ii].xHalf = buttons[ii].buttonWidth/2;
+ buttons[ii].yHalf = buttons[ii].buttonHeight/2;
+ ++num;
+
+ /* Indicates an orthographic projection of the yz-plane,
+ translation is in y and z coordinates */
+ ii = yz;
+ buttons[ii].buttonX = 261; buttons[ii].buttonY = 55;
+ buttons[ii].buttonWidth= 34; buttons[ii].buttonHeight = 25;
+ buttons[ii].buttonKey = ii;
+ buttons[ii].pot = no;
+ buttons[ii].mask = buttonMASK;
+ buttons[ii].text = "yz";
+ buttons[ii].textColor = 35;
+ buttons[ii].xHalf = buttons[ii].buttonWidth/2;
+ buttons[ii].yHalf = buttons[ii].buttonHeight/2;
+ ++num;
+
+ return(num);
+
+} /* initButtons() */
+
+@
+\eject
+\begin{thebibliography}{99}
+\bibitem{1} nothing
+\end{thebibliography}
+\end{document}