Retired Document
Important: This sample code may not represent best practices for current development. The project may use deprecated symbols and illustrate technologies and techniques that are no longer recommended.
gle/port.h
/* |
* port.h |
* |
* FUNCTION: |
* This file contains defines for porting the tubing toolkit from GL to |
* OpenGL to some callback scheme. |
* |
* HISTORY: |
* Created by Linas Vepstas -- February 1993 |
* Added auto texture coord generation hacks, Linas April 1994 |
*/ |
#ifndef __GLE_PORT_H__ |
#define __GLE_PORT_H__ |
#ifndef TRUE |
#define TRUE 1 |
#endif |
#ifndef FALSE |
#define FALSE 0 |
#endif |
#ifndef M_PI |
#define M_PI 3.14159265358979323846 |
#endif |
/* ====================================================== */ |
/* Some compilers can't handle multiply-subscripted array's */ |
#ifdef FUNKY_C |
typedef gleDouble gleVector; |
#define AVAL(arr,n,i,j) arr(6*n+3*i+j) |
#define VVAL(arr,n,i) arr(3*n+i) |
#else /* FUNKY_C */ |
typedef double gleVector[3]; |
typedef double glePoint[2]; |
#define AVAL(arr,n,i,j) arr[n][i][j] |
#define VVAL(arr,n,i) arr[n][i]; |
#endif /* FUNKY_C */ |
/* ====================================================== */ |
/* These are used to convey info about topography to the |
* texture mapping routines */ |
#define FRONT 1 |
#define BACK 2 |
#define FRONT_CAP 3 |
#define BACK_CAP 4 |
#define FILLET 5 |
/* ====================================================== */ |
#define __GLE_DOUBLE |
/* ====================================================== */ |
#ifdef __GLE_DOUBLE |
#ifndef gleDouble |
#define gleDouble double |
#endif |
#define urot_axis(a,b,c) urot_axis_d(a,b,c) |
#define uview_direction(a,b,c) uview_direction_d(a,b,c) |
#define uviewpoint(a,b,c,d) uviewpoint_d(a,b,c,d) |
#define MULTMATRIX(m) MULTMATRIX_D(m) |
#define LOADMATRIX(m) LOADMATRIX_D(m) |
#define V3F(x,j,id) V3F_D(x,j,id) |
#define N3F(x) N3F_D(x) |
#define T2F(x,y) T2F_D(x,y) |
#else |
#define gleDouble float |
#define urot_axis(a,b,c) urot_axis_f(a,b,c) |
#define uview_direction(a,b,c) uview_direction_f(a,b,c) |
#define uviewpoint(a,b,c,d) uviewpoint_f(a,b,c,d) |
#define MULTMATRIX(m) MULTMATRIX_F(m) |
#define LOADMATRIX(m) LOADMATRIX_F(m) |
#define V3F(x,j,id) V3F_F(x,j,id) |
#define N3F(x) N3F_F(x) |
#define T2F(x,y) T2F_F(x,y) |
#endif |
/* ====================================================== */ |
#if (defined DEBUG_GL_32 || DEBUG_OPENGL_10) |
#undef GL_32 |
#undef OPENGL_10 |
#define BGNTMESH(i,len) printf ("bgntmesh() \n"); |
#define ENDTMESH() printf ("endtmesh() \n"); |
#define BGNPOLYGON() printf ("bgnpolygon() \n"); |
#define ENDPOLYGON() printf ("endpolygon() \n"); |
#define V3F_F(x,j,id) printf ("v3f(x) %f %f %f \n", x[0], x[1], x[2]); |
#define V3F_D(x,j,id) printf ("v3d(x) %f %f %f \n", x[0], x[1], x[2]); |
#define N3F_F(x) printf ("n3f(x) %f %f %f \n", x[0], x[1], x[2]); |
#define N3F_D(x) printf ("n3d(x) %f %f %f \n", x[0], x[1], x[2]); |
#define C3F(x) printf ("c3f(x) %f %f %f \n", x[0], x[1], x[2]); |
#define POPMATRIX() printf ("popmatrix () \n"); |
#define PUSHMATRIX() printf ("pushmatrix() \n"); |
#define MULTMATRIX_F(x) MULTMATRIX_D(x) |
#define LOADMATRIX_F(x) LOADMATRIX_D(x) |
#define LOADMATRIX_D(x) { \ |
int i, j; \ |
printf ("loadmatrix (x) \n"); \ |
for (i=0; i<4; i++) { \ |
for (j=0; j<4; j++) { \ |
printf ( "%f ", x[i][j]); \ |
} \ |
printf (" \n"); \ |
} \ |
} |
#define MULTMATRIX_D(x) { \ |
int i, j; \ |
printf ("multmatrix (x) \n"); \ |
for (i=0; i<4; i++) { \ |
for (j=0; j<4; j++) { \ |
printf ( "%f ", x[i][j]); \ |
} \ |
printf (" \n"); \ |
} \ |
} |
#define __IS_LIGHTING_ON (1) |
#endif |
/* ====================================================== */ |
#ifdef GL_32 |
#include <gl/gl.h> |
#define BGNTMESH(i,len) bgntmesh() |
#define ENDTMESH() endtmesh() |
#define BGNPOLYGON() bgnpolygon() |
#define ENDPOLYGON() endpolygon() |
#define V3F_F(x,j,id) v3f(x) |
#define V3F_D(x,j,id) v3d(x) |
#define N3F_F(x) n3f(x) |
#define T2F_F(x,y) |
#define T2F_D(x,y) |
#define C3F(x) c3f(x) |
#define POPMATRIX() popmatrix () |
#define PUSHMATRIX() pushmatrix() |
#define MULTMATRIX_F(x) multmatrix (x) |
#define LOADMATRIX_F(x) loadmatrix (x) |
#define N3F_D(x) { \ |
float nnn[3]; \ |
nnn[0] = (float) x[0]; \ |
nnn[1] = (float) x[1]; \ |
nnn[2] = (float) x[2]; \ |
n3f (nnn); \ |
} |
#define LOADMATRIX_D(x) { \ |
int i, j; \ |
float mmm[4][4]; \ |
for (i=0; i<4; i++) { \ |
for (j=0; j<4; j++) { \ |
mmm[i][j] = (float) x[i][j]; \ |
} \ |
} \ |
loadmatrix(mmm); \ |
} |
#define MULTMATRIX_D(x) { \ |
int i, j; \ |
float mmm[4][4]; \ |
for (i=0; i<4; i++) { \ |
for (j=0; j<4; j++) { \ |
mmm[i][j] = (float) x[i][j]; \ |
} \ |
} \ |
multmatrix(mmm); \ |
} |
/* #define __IS_LIGHTING_ON (MSINGLE == getmmode()) */ |
#define __IS_LIGHTING_ON (extrusion_join_style & TUBE_LIGHTING_ON) |
#endif /* GL_32 */ |
/* ====================================================== */ |
#ifdef OPENGL_10 |
#if defined(_WIN32) |
#include <windows.h> |
#pragma warning (disable:4244) /* disable bogus conversion warnings */ |
#endif |
#include <OpenGL/gl.h> |
#include <OpenGL/glu.h> |
/* |
#define N3F_F(x) { \ |
float nnn[3]; \ |
nnn[0] = - (float) x[0]; \ |
nnn[1] = - (float) x[1]; \ |
nnn[2] = - (float) x[2]; \ |
glNormal3fv (nnn); \ |
} |
#define N3F_D(x) { \ |
float nnn[3]; \ |
nnn[0] = - (float) x[0]; \ |
nnn[1] = - (float) x[1]; \ |
nnn[2] = - (float) x[2]; \ |
glNormal3fv (nnn); \ |
} |
*/ |
#define C3F(x) glColor3fv(x) |
#define T2F_F(x,y) glTexCoord2f(x,y) |
#define T2F_D(x,y) glTexCoord2d(x,y) |
#define POPMATRIX() glPopMatrix() |
#define PUSHMATRIX() glPushMatrix() |
#define MULTMATRIX_F(x) glMultMatrixf ((const GLfloat *)x) |
#define LOADMATRIX_F(x) glLoadMatrixf ((const GLfloat *)x) |
#define MULTMATRIX_D(x) glMultMatrixd ((const GLdouble *)x) |
#define LOADMATRIX_D(x) glLoadMatrixd ((const GLdouble *)x) |
#define __IS_LIGHTING_ON (glIsEnabled(GL_LIGHTING)) |
/* ====================================================== */ |
#ifdef AUTO_TEXTURE |
#define BGNTMESH(i,len) { \ |
if(_gle_gc -> bgn_gen_texture) (*(_gle_gc -> bgn_gen_texture))(i,len);\ |
glBegin (GL_TRIANGLE_STRIP); \ |
} |
#define BGNPOLYGON() { \ |
if(_gle_gc -> bgn_gen_texture) (*(_gle_gc -> bgn_gen_texture))();\ |
glBegin (GL_POLYGON); \ |
} |
#define N3F_F(x) { \ |
if(_gle_gc -> n3f_gen_texture) (*(_gle_gc -> n3f_gen_texture))(x); \ |
glNormal3fv(x); \ |
} |
#define N3F_D(x) { \ |
if(_gle_gc -> n3d_gen_texture) (*(_gle_gc -> n3d_gen_texture))(x); \ |
glNormal3dv(x); \ |
} |
#define V3F_F(x,j,id) { \ |
if(_gle_gc -> v3f_gen_texture) (*(_gle_gc -> v3f_gen_texture))(x,j,id);\ |
glVertex3fv(x); \ |
} |
#define V3F_D(x,j,id) { \ |
if(_gle_gc -> v3d_gen_texture) (*(_gle_gc -> v3d_gen_texture))(x,j,id); \ |
glVertex3dv(x); \ |
} |
#define ENDTMESH() { \ |
if(_gle_gc -> end_gen_texture) (*(_gle_gc -> end_gen_texture))(); \ |
glEnd (); \ |
} |
#define ENDPOLYGON() { \ |
if(_gle_gc -> end_gen_texture) (*(_gle_gc -> end_gen_texture))(); \ |
glEnd (); \ |
} |
/* ====================================================== */ |
#else /* AUTO_TEXTURE */ |
#define BGNTMESH(i,len) glBegin (GL_TRIANGLE_STRIP); |
#define BGNPOLYGON() glBegin (GL_POLYGON); |
#define N3F_F(x) glNormal3fv(x) |
#define N3F_D(x) glNormal3dv(x) |
#define V3F_F(x,j,id) glVertex3fv(x); |
#define V3F_D(x,j,id) glVertex3dv(x); |
#define ENDTMESH() glEnd () |
#define ENDPOLYGON() glEnd() |
#endif /* AUTO_TEXTURE */ |
#endif /* OPENGL_10 */ |
/* ====================================================== */ |
#endif /* __GLE_PORT_H__ */ |
/* ================== END OF FILE ======================= */ |
Copyright © 2008 Apple Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2008-02-08