| /* $Id: tess.h,v 1.1.1.1 1999/08/19 00:55:42 jtg Exp $ */ |
| |
| /* |
| * Mesa 3-D graphics library |
| * Version: 3.1 |
| * Copyright (C) 1995-1998 Brian Paul |
| * |
| * This library is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU Library General Public |
| * License as published by the Free Software Foundation; either |
| * version 2 of the License, or (at your option) any later version. |
| * |
| * This library is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| * Library General Public License for more details. |
| * |
| * You should have received a copy of the GNU Library General Public |
| * License along with this library; if not, write to the Free |
| * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
| */ |
| |
| |
| /* |
| * $Log: tess.h,v $ |
| * Revision 1.1.1.1 1999/08/19 00:55:42 jtg |
| * Imported sources |
| * |
| * Revision 1.5 1999/02/27 13:55:31 brianp |
| * fixed BeOS-related GLU typedef problems |
| * |
| * Revision 1.4 1999/01/03 03:23:15 brianp |
| * now using GLAPIENTRY and GLCALLBACK keywords (Ted Jump) |
| * |
| * Revision 1.3 1997/10/29 02:02:20 brianp |
| * various MS Windows compiler changes (David Bucciarelli, v20 3dfx driver) |
| * |
| * Revision 1.2 1997/05/24 13:30:58 brianp |
| * added TESS_H multi-inclusion prevention test |
| * |
| * Revision 1.1 1996/09/27 01:19:39 brianp |
| * Initial revision |
| * |
| */ |
| |
| |
| /* |
| * This file is part of the polygon tesselation code contributed by |
| * Bogdan Sikorski |
| */ |
| |
| |
| #ifndef TESS_H |
| #define TESS_H |
| |
| |
| #include "gluP.h" |
| |
| #define EPSILON 1e-06 /* epsilon for double precision compares */ |
| |
| typedef enum |
| { |
| OXY, |
| OYZ, |
| OXZ |
| } projection_type; |
| |
| typedef struct callbacks_str |
| { |
| void (GLCALLBACK *begin)( GLenum mode ); |
| void (GLCALLBACK *edgeFlag)( GLboolean flag ); |
| void (GLCALLBACK *vertex)( GLvoid *v ); |
| void (GLCALLBACK *end)( void ); |
| void (GLCALLBACK *error)( GLenum err ); |
| } tess_callbacks; |
| |
| typedef struct vertex_str |
| { |
| void *data; |
| GLdouble location[3]; |
| GLdouble x,y; |
| GLboolean edge_flag; |
| struct vertex_str *shadow_vertex; |
| struct vertex_str *next,*previous; |
| } tess_vertex; |
| |
| typedef struct contour_str |
| { |
| GLenum type; |
| GLuint vertex_cnt; |
| GLdouble area; |
| GLenum orientation; |
| struct vertex_str *vertices,*last_vertex; |
| struct contour_str *next,*previous; |
| } tess_contour; |
| |
| typedef struct polygon_str |
| { |
| GLuint vertex_cnt; |
| GLdouble A,B,C,D; |
| GLdouble area; |
| GLenum orientation; |
| struct vertex_str *vertices,*last_vertex; |
| } tess_polygon; |
| |
| struct GLUtesselator |
| { |
| tess_contour *contours,*last_contour; |
| GLuint contour_cnt; |
| tess_callbacks callbacks; |
| tess_polygon *current_polygon; |
| GLenum error; |
| GLdouble A,B,C,D; |
| projection_type projection; |
| }; |
| |
| |
| extern void tess_call_user_error(GLUtriangulatorObj *,GLenum); |
| |
| |
| #endif |