Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > DoxygenbezierPatchMesh.h
Go to the documentation of this file.
00001 /* 00002 ** License Applicability. Except to the extent portions of this file are 00003 ** made subject to an alternative license as permitted in the SGI Free 00004 ** Software License B, Version 1.1 (the "License"), the contents of this 00005 ** file are subject only to the provisions of the License. You may not use 00006 ** this file except in compliance with the License. You may obtain a copy 00007 ** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 00008 ** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: 00009 ** 00010 ** http://oss.sgi.com/projects/FreeB 00011 ** 00012 ** Note that, as provided in the License, the Software is distributed on an 00013 ** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS 00014 ** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND 00015 ** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A 00016 ** PARTICULAR PURPOSE, AND NON-INFRINGEMENT. 00017 ** 00018 ** Original Code. The Original Code is: OpenGL Sample Implementation, 00019 ** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, 00020 ** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. 00021 ** Copyright in any portions created by third parties is as indicated 00022 ** elsewhere herein. All Rights Reserved. 00023 ** 00024 ** Additional Notice Provisions: The application programming interfaces 00025 ** established by SGI in conjunction with the Original Code are The 00026 ** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released 00027 ** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version 00028 ** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X 00029 ** Window System(R) (Version 1.3), released October 19, 1998. This software 00030 ** was created using the OpenGL(R) version 1.2.1 Sample Implementation 00031 ** published by SGI, but has not been independently verified as being 00032 ** compliant with the OpenGL(R) version 1.2.1 Specification. 00033 ** 00034 ** $Date: 2007-10-19 23:21:45 +0000 (Fri, 19 Oct 2007) $ $Revision: 1.1 $ 00035 */ 00036 /* 00037 ** $Header: /cygdrive/c/RCVS/CVS/ReactOS/reactos/lib/glu32/libnurbs/interface/bezierPatchMesh.h,v 1.1 2004/02/02 16:39:08 navaraf Exp $ 00038 */ 00039 00040 #ifndef _BEZIERPATCHMESH_H 00041 #define _BEZIERPATCHMESH_H 00042 00043 #include "bezierPatch.h" 00044 00045 typedef struct bezierPatchMesh{ 00046 bezierPatch *bpatch; /*vertex*/ 00047 bezierPatch *bpatch_normal; 00048 bezierPatch *bpatch_texcoord; /*s,t,r,q*/ 00049 bezierPatch *bpatch_color; /*RGBA*/ 00050 00051 float *UVarray; /*all UV components of all vertices of all strips*/ 00052 int *length_array; /*[i] is the number of vertices in the ith strip*/ 00053 GLenum *type_array; /*[i] is the type of the ith primitive*/ 00054 00055 /*to support dynamic insertion*/ 00056 int size_UVarray; 00057 int index_UVarray; 00058 int size_length_array; 00059 int index_length_array; 00060 00061 int counter; /*track the current strip size*/ 00062 GLenum type; /*track the current type: 0: GL_TRIANGLES, 1: GL_TRIANGLE_STRIP*/ 00063 00064 /*we eventually want to evaluate from (u,v) to (x,y,z) and draw them*/ 00065 float *vertex_array; /*each vertex contains three components*/ 00066 float *normal_array; /*each normal contains three components*/ 00067 float *color_array; 00068 float *texcoord_array; 00069 00070 /*in case we need a linked list*/ 00071 struct bezierPatchMesh *next; 00072 } bezierPatchMesh; 00073 00074 #ifdef __cplusplus 00075 extern "C" { 00076 #endif 00077 00078 00079 00080 bezierPatchMesh *bezierPatchMeshMake(int maptype, float umin, float umax, int ustride, int uorder, float vmin, float vmax, int vstride, int vorder, float *ctlpoints, int size_UVarray, int size_length_array); 00081 00082 /*initilize patches to be null*/ 00083 bezierPatchMesh *bezierPatchMeshMake2(int size_UVarray, int size_length_array); 00084 00085 void bezierPatchMeshPutPatch(bezierPatchMesh *bpm, int maptype, float umin, float umax, int ustride, int uorder, float vmin, float vmax, int vstride, int vorder, float *ctlpoints); 00086 00087 void bezierPatchMeshDelete(bezierPatchMesh *bpm); 00088 00089 void bezierPatchMeshBeginStrip(bezierPatchMesh *bpm, GLenum type); 00090 00091 void bezierPatchMeshEndStrip(bezierPatchMesh *bpm); 00092 00093 void bezierPatchMeshInsertUV(bezierPatchMesh *bpm, float u, float v); 00094 00095 void bezierPatchMeshPrint(bezierPatchMesh *bpm); 00096 00097 bezierPatchMesh* bezierPatchMeshListInsert(bezierPatchMesh* list, bezierPatchMesh* bpm); 00098 00099 void bezierPatchMeshListPrint(bezierPatchMesh* list); 00100 00101 int bezierPatchMeshListTotalStrips(bezierPatchMesh* list); 00102 00103 int bezierPatchMeshListTotalVert(bezierPatchMesh* list); 00104 int bezierPatchMeshNumTriangles(bezierPatchMesh* bpm); 00105 int bezierPatchMeshListNumTriangles(bezierPatchMesh* list); 00106 00107 void bezierPatchMeshDelDeg(bezierPatchMesh* bpm); 00108 00109 00110 void bezierPatchMeshEval(bezierPatchMesh* bpm); 00111 00112 void bezierPatchMeshDraw(bezierPatchMesh* bpm); 00113 00114 void bezierPatchMeshListDraw(bezierPatchMesh* list); 00115 void bezierPatchMeshListEval(bezierPatchMesh* list); 00116 void bezierPatchMeshListCollect(bezierPatchMesh* list, float **vertex_array, float **normal_array, int **length_array, GLenum **type_array, int *num_strips); 00117 00118 void bezierPatchMeshListDelDeg(bezierPatchMesh* list); 00119 void bezierPatchMeshListDelete(bezierPatchMesh *list); 00120 bezierPatchMesh* bezierPatchMeshListReverse(bezierPatchMesh* list); 00121 void drawStrips(float *vertex_array, float *normal_array, int *length_array, GLenum *type_array, int num_strips); 00122 00123 #ifdef __cplusplus 00124 } 00125 #endif 00126 00127 #endif Generated on Sat May 26 2012 04:22:14 for ReactOS by
1.7.6.1
|