ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

bezierPatchMesh.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.