summaryrefslogtreecommitdiff
path: root/progs/windml/uglteapot.c
diff options
context:
space:
mode:
Diffstat (limited to 'progs/windml/uglteapot.c')
-rw-r--r--progs/windml/uglteapot.c295
1 files changed, 0 insertions, 295 deletions
diff --git a/progs/windml/uglteapot.c b/progs/windml/uglteapot.c
deleted file mode 100644
index 651fe0990e..0000000000
--- a/progs/windml/uglteapot.c
+++ /dev/null
@@ -1,295 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * The MIT License
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * Linux Magazine July 2001
- * Conversion to UGL/Mesa from GLUT by Stephane Raimbault, 2001
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <math.h>
-
-#include <ugl/ugl.h>
-#include <ugl/uglevent.h>
-#include <ugl/uglinput.h>
-#include <ugl/uglucode.h>
-
-#include <GL/uglmesa.h>
-#include <GL/glu.h>
-
-/* Need GLUT_SHAPES */
-
-#include <GL/uglglutshapes.h>
-
-#ifndef PI
-#define PI 3.14159265
-#endif
-
-UGL_LOCAL UGL_EVENT_SERVICE_ID eventServiceId;
-UGL_LOCAL UGL_EVENT_Q_ID qId;
-UGL_LOCAL UGL_MESA_CONTEXT umc;
-UGL_LOCAL volatile UGL_BOOL stopWex;
-
-UGL_LOCAL GLint angle;
-UGL_LOCAL GLfloat Sin[360], Cos[360];
-UGL_LOCAL GLfloat L0pos[]={0.0, 2.0, -1.0};
-UGL_LOCAL GLfloat L0dif[]={0.3, 0.3, 0.8};
-UGL_LOCAL GLfloat L1pos[]={2.0, 2.0, 2.0};
-UGL_LOCAL GLfloat L1dif[]={0.5, 0.5, 0.5};
-UGL_LOCAL GLfloat Mspec[3];
-UGL_LOCAL GLfloat Mshiny;
-UGL_LOCAL GLuint theTeapot;
-
-UGL_LOCAL void calcTableCosSin()
-{
- int i;
- for(i=0;i<360;i++) {
- Cos[i] = cos(((float)i)/180.0*PI);
- Sin[i] = sin(((float)i)/180.0*PI);
- }
-}
-
-UGL_LOCAL void initGL(void)
- {
- glClearColor(0.0, 0.0, 0.0, 0.0);
- glColor3f(1.0, 0.0, 0.0);
- glEnable(GL_DEPTH_TEST);
-
- glShadeModel(GL_SMOOTH);
- glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE);
- glEnable(GL_LIGHTING);
- glEnable(GL_LIGHT0);
- glEnable(GL_LIGHT1);
- glLightfv(GL_LIGHT0, GL_DIFFUSE, L0dif);
- glLightfv(GL_LIGHT0, GL_SPECULAR, L0dif);
- glLightfv(GL_LIGHT1, GL_DIFFUSE, L1dif);
- glLightfv(GL_LIGHT1, GL_SPECULAR, L1dif);
-
- glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, Mspec);
- glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, Mshiny);
-
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- gluPerspective(45.0, 1.0, 0.1, 10.0);
- glMatrixMode(GL_MODELVIEW);
-
- theTeapot = glGenLists(1);
- glNewList(theTeapot, GL_COMPILE);
- glutSolidTeapot(1.0);
- glEndList();
-
- }
-
-UGL_LOCAL void drawGL()
- {
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
- glLoadIdentity();
-
- gluLookAt(4.5*Cos[angle], 2.0,4.5*Sin[angle],0.0,0.0,0.0,0.0,
- 1.0,0.0);
- glLightfv(GL_LIGHT0, GL_POSITION, L0pos);
- glLightfv(GL_LIGHT1, GL_POSITION, L1pos);
-
- glCallList(theTeapot);
-
- glFlush();
-
- uglMesaSwapBuffers();
- }
-
-UGL_LOCAL void echoUse(void)
- {
- printf("tTeapot keys:\n");
- printf(" Left Counter clockwise rotation (y-axis)\n");
- printf(" Right Clockwise rotation (y-axis)\n");
- printf(" j Enable/disable Light0\n");
- printf(" k Enable/disable Light1\n");
- printf(" m Add specular\n");
- printf(" l Remove specular\n");
- printf(" o Add shininess\n");
- printf(" p Remove shininess\n");
- printf(" ESC Exit\n");
- }
-
-
-UGL_LOCAL void readKey (UGL_WCHAR key)
- {
- switch(key)
- {
- case UGL_UNI_RIGHT_ARROW:
- angle +=2;
- if (angle>= 360)
- angle-=360;
- break;
- case UGL_UNI_LEFT_ARROW:
- angle -=2;
- if (angle<0)
- angle+=360;
- break;
- case 'j':
- glIsEnabled(GL_LIGHT0) ?
- glDisable(GL_LIGHT0) : glEnable(GL_LIGHT0);
- break;
- case 'k':
- glIsEnabled(GL_LIGHT1) ?
- glDisable(GL_LIGHT1) : glEnable(GL_LIGHT1);
- break;
- case 'm':
- Mspec[0]+=0.1;
- if(Mspec[0]>1)
- Mspec[0]=1;
- Mspec[1]+=0.1;
- if(Mspec[1]>1)
- Mspec[1]=1;
- Mspec[2]+=0.1;
- if(Mspec[2]>1)
- Mspec[2]=1;
- glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, Mspec);
- break;
- case 'l':
- Mspec[0]-=0.1;
- if(Mspec[0]>1)
- Mspec[0]=1;
- Mspec[1]-=0.1;
- if(Mspec[1]>1)
- Mspec[1]=1;
- Mspec[2]-=0.1;
- if(Mspec[2]>1)
- Mspec[2]=1;
- glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, Mspec);
- break;
- case 'o':
- Mshiny -= 1;
- if (Mshiny<0)
- Mshiny=0;
- glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, Mshiny);
- break;
- case 'p':
- Mshiny += 1;
- if (Mshiny>128)
- Mshiny=128;
- glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, Mshiny);
- break;
- case UGL_UNI_ESCAPE:
- stopWex = UGL_TRUE;
- break;
- }
- }
-
-UGL_LOCAL void loopEvent(void)
- {
- UGL_EVENT event;
- UGL_INPUT_EVENT * pInputEvent;
-
- UGL_FOREVER
- {
- if (uglEventGet (qId, &event, sizeof (event), UGL_NO_WAIT)
- != UGL_STATUS_Q_EMPTY)
- {
- pInputEvent = (UGL_INPUT_EVENT *)&event;
-
- if (pInputEvent->header.type == UGL_EVENT_TYPE_KEYBOARD &&
- pInputEvent->modifiers & UGL_KEYBOARD_KEYDOWN)
- readKey(pInputEvent->type.keyboard.key);
- }
-
- drawGL();
- if (stopWex)
- break;
- }
- }
-
-void windMLTeapot (UGL_BOOL windMLMode);
-
-void uglteapot (void)
- {
- taskSpawn ("tTeapot", 210, VX_FP_TASK, 100000, (FUNCPTR)windMLTeapot,
- UGL_FALSE,1,2,3,4,5,6,7,8,9);
- }
-
-void windMLTeapot (UGL_BOOL windMLMode)
- {
- UGL_INPUT_DEVICE_ID keyboardDevId;
- GLsizei displayWidth, displayHeight;
- GLsizei x, y, w, h;
-
- angle = 45;
- Mspec[0] = 0.5;
- Mspec[1] = 0.5;
- Mspec[2] = 0.5;
- Mshiny = 50;
-
- uglInitialize ();
-
- uglDriverFind (UGL_KEYBOARD_TYPE, 0,
- (UGL_UINT32 *)&keyboardDevId);
-
- uglDriverFind (UGL_EVENT_SERVICE_TYPE, 0, (UGL_UINT32 *)&eventServiceId);
-
- qId = uglEventQCreate (eventServiceId, 100);
-
- /* Double buffering */
- if (windMLMode)
- umc = uglMesaCreateNewContext(UGL_MESA_DOUBLE
- | UGL_MESA_WINDML_EXCLUSIVE, NULL);
- else
- umc = uglMesaCreateNewContext(UGL_MESA_DOUBLE, NULL);
-
- if (umc == NULL)
- {
- uglDeinitialize ();
- return;
- }
-
- uglMesaMakeCurrentContext (umc, 0, 0, 1, 1);
-
- uglMesaGetIntegerv(UGL_MESA_DISPLAY_WIDTH, &displayWidth);
- uglMesaGetIntegerv(UGL_MESA_DISPLAY_HEIGHT, &displayHeight);
-
- h = (displayHeight*2)/3;
- w = h;
- x = (displayWidth-w)/2;
- y = (displayHeight-h)/2;
-
- uglMesaMoveToWindow(x, y);
- uglMesaResizeToWindow(w, h);
-
- calcTableCosSin();
-
- initGL ();
-
- echoUse();
-
- stopWex = UGL_FALSE;
- loopEvent();
-
- uglEventQDestroy (eventServiceId, qId);
-
- uglMesaDestroyContext();
- uglDeinitialize ();
-
- return;
- }