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

gridWrap.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/nurbtess/gridWrap.h,v 1.1 2004/02/02 16:39:13 navaraf Exp $
00038 */
00039 
00040 #ifndef _GRIDWRAP_H
00041 #define _GRIDWRAP_H
00042 
00043 #include <stdio.h>
00044 #include "definitions.h"
00045 
00046 #include "primitiveStream.h"
00047 #include "zlassert.h"
00048 
00049 class gridWrap{
00050   Int n_ulines;
00051   Int n_vlines;
00052   Real u_min, u_max;
00053   Real v_min, v_max;
00054 
00055   /*cache the coordinate values for efficiency.
00056    *these are redundant information when
00057    *the grid is uniform.
00058    */
00059   Real* u_values; /*size is n_ulines*/
00060   Real* v_values; /*size is n_vlines*/
00061 
00062   Int is_uniform;
00063 
00064 public:
00065   //uniform grid constructor
00066   gridWrap(Int nUlines, Int nVlines,
00067        Real uMin, Real uMax,
00068        Real vMin, Real vMax
00069        );
00070 
00071   //nonuniform grid constructor.
00072   gridWrap(Int nUlines, Real *uvals,
00073        Int nVlines, Real *vvlas
00074        );
00075   ~gridWrap();
00076 
00077   void print();
00078   Int get_n_ulines() {return n_ulines;}
00079   Int get_n_vlines() {return n_vlines;}
00080   Real get_u_min() {return u_min;}
00081   Real get_u_max() {return u_max;}
00082   Real get_v_min() {return v_min;}
00083   Real get_v_max() {return v_max;}
00084 
00085   Real get_u_value(Int i)
00086     {
00087       assert(i<n_ulines);
00088       /*if(i>=n_ulines){printf("ERROR, n_ulines=%i,i=%i\n",n_ulines,i);exit(0);}*/
00089       return u_values[i];}
00090   Real get_v_value(Int j) {return v_values[j];}
00091 
00092   Real* get_u_values() {return u_values;}
00093   Real* get_v_values() {return v_values;}
00094 
00095   void outputFanWithPoint(Int v, Int uleft, Int uright,
00096               Real vert[2], primStream* pStream);
00097 
00098   void draw();
00099 
00100   Int isUniform() {return is_uniform;}
00101 };
00102 
00103 class gridBoundaryChain{
00104   gridWrap* grid;
00105   Int firstVlineIndex;
00106   Int nVlines;
00107   Int* ulineIndices; /*each v line has a boundary*/
00108   Int* innerIndices; /*the segment of the vertical gridline from */
00109                      /*(innerIndices[i], i) to (innerIndices[i+1], i-1) */
00110                      /*is inside the polygon: i=1,...,nVlines-1*/
00111 
00112   Real2* vertices; /*one grid point at each grid V-line, cached for efficiency*/
00113 
00114 public:
00115   gridBoundaryChain(gridWrap* gr, Int first_vline_index, Int n_vlines, Int* uline_indices, Int* inner_indices);
00116 
00117   ~gridBoundaryChain()
00118     {
00119       free(innerIndices);
00120       free(ulineIndices);
00121       free(vertices);
00122     }
00123 
00124   /*i indexes the vlines in this chain.
00125    */
00126   Int getVlineIndex(Int i) {return firstVlineIndex-i;}
00127   Int getUlineIndex(Int i) {return ulineIndices[i];}
00128   Real get_u_value(Int i) {return vertices[i][0];}
00129   Real get_v_value(Int i) {return vertices[i][1];}
00130   Int get_nVlines() {return nVlines;}
00131   Int getInnerIndex(Int i) {return innerIndices[i];}
00132   Real getInner_u_value(Int i) {return grid->get_u_value(innerIndices[i]);}
00133 
00134   Real* get_vertex(Int i) {return vertices[i];}
00135   gridWrap* getGrid() {return grid;}
00136   void leftEndFan(Int i, primStream* pStream);
00137   void rightEndFan(Int i, primStream* pStream);
00138 
00139   Int lookfor(Real v, Int i1, Int i2); //find i in [i1,i2] so that  vertices[i][1]>= v > vertices[i+1][1]
00140   void draw();
00141   void drawInner();
00142 };
00143 
00144 #endif

Generated on Sat May 26 2012 04:22:19 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.