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

monoTriangulation.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/monoTriangulation.h,v 1.1 2004/02/02 16:39:13 navaraf Exp $
00038 */
00039 
00040 #ifndef _MONO_TRIANGULATION_H
00041 #define _MONO_TRIANGULATION_H
00042 
00043 #include "definitions.h"
00044 #include "primitiveStream.h"
00045 #include "directedLine.h"
00046 
00047 class Backend;
00048 class Arc;
00049 typedef Arc *Arc_ptr;
00050 
00051 class reflexChain{
00052   Real2 *queue;
00053   /*the order of the polygon vertices: either q[0],q[1].., or
00054    * q[n-1], q[n-2], ..., q[0]
00055    *this order determines the interior of the polygon, so it
00056    *also used to determines whether a chain is reflex or convex
00057    */
00058   Int isIncreasing;
00059   Int index_queue;
00060   Int size_queue; /*allocated size*/
00061 
00062 public:
00063   reflexChain(Int size, Int isIncreasing);
00064   ~reflexChain();
00065 
00066   void insert(Real u, Real v);
00067   void insert(Real v[2]);
00068 
00069   void processNewVertex(Real v[2], primStream* pStream);
00070   void outputFan(Real v[2], primStream* pStream);
00071 
00072   void processNewVertex(Real v[2], Backend* backend);
00073   void outputFan(Real v[2], Backend* backend);
00074 
00075   void print();
00076 };
00077 
00078 /*dynamic array of pointers to reals.
00079  *Intended to store an array of (u,v).
00080  *Notice that it doesn't allocate or dealocate the space
00081  *for the (u,v) themselfs. So it assums that someone else
00082  *is taking care of them, while this class only plays with
00083  *the pointers.
00084  */
00085 class vertexArray{
00086   Real** array;
00087   Int index;
00088   Int size;
00089 public:
00090   vertexArray(Int s);
00091   vertexArray(Real vertices[][2], Int nVertices);
00092   ~vertexArray();
00093   void appendVertex(Real* ptr); /*the content (pointed by ptr is NOT copied*/
00094   Real* getVertex(Int i) {return array[i];}
00095   Real** getArray() {return array;}
00096   Int getNumElements() {return index;}
00097   Int findIndexAbove(Real v);
00098   Int findIndexAboveGen(Real v, Int startIndex, Int EndIndex);
00099   Int findIndexBelowGen(Real v, Int startIndex, Int EndIndex);
00100   Int findIndexStrictBelowGen(Real v, Int startIndex, Int EndIndex);
00101   Int findIndexFirstAboveEqualGen(Real v, Int startIndex, Int endIndex);
00102   Int skipEqualityFromStart(Real v, Int start, Int end);
00103   //return i such that fron [i+1, end] is strictly U-monotone (left to right
00104   Int findDecreaseChainFromEnd(Int begin, Int end);
00105   void print();
00106 };
00107 
00108 void monoTriangulation(directedLine* monoPolygon, primStream* pStream);
00109 
00110 void monoTriangulationRec(Real* topVertex, Real* botVertex,
00111               vertexArray* inc_chain, Int inc_current,
00112               vertexArray* dec_chain, Int dec_current,
00113               primStream* pStream);
00114 
00115 void monoTriangulationRec(directedLine* inc_chain, Int inc_index,
00116               directedLine* dec_chain, Int dec_index,
00117               directedLine* topVertex, Int top_index,
00118               directedLine* botVertex,
00119               primStream* pStream);
00120 
00121 /*the chain could be increasing or decreasing, although we use the
00122  * name inc_chain.
00123  *the argument  is_increase_chain indicates whether this chain
00124  *is increasing (left chain in V-monotone case) or decreaing (right chain
00125  *in V-monotone case).
00126  */
00127 void monoTriangulation2(Real* topVertex, Real* botVertex,
00128             vertexArray* inc_chain, Int inc_smallIndex,
00129             Int inc_largeIndex,
00130             Int is_increase_chain,
00131             primStream* pStream);
00132 void monoTriangulationRecGen(Real* topVertex, Real* botVertex,
00133               vertexArray* inc_chain, Int inc_current, Int inc_end,
00134               vertexArray* dec_chain, Int dec_current, Int dec_end,
00135               primStream* pStream);
00136 
00137 void monoTriangulationRecGenOpt(Real* topVertex, Real* botVertex,
00138               vertexArray* inc_chain, Int inc_current, Int inc_end,
00139               vertexArray* dec_chain, Int dec_current, Int dec_end,
00140               primStream* pStream);
00141 
00142 void triangulateXYMonoTB(Int n_left, Real** leftVerts,
00143                Int n_right, Real** rightVerts,
00144                primStream* pStream);
00145 
00146 void monoTriangulationRecGenTBOpt(Real* topVertex, Real* botVertex,
00147               vertexArray* inc_chain, Int inc_current, Int inc_end,
00148               vertexArray* dec_chain, Int dec_current, Int dec_end,
00149               primStream* pStream);
00150 
00151 void monoTriangulationRecOpt(Real* topVertex, Real* botVertex,
00152                  vertexArray* left_chain, Int left_current,
00153                  vertexArray* right_chain, Int right_current,
00154                  primStream* pStream);
00155 
00156 void monoTriangulationRecFunGen(Real* topVertex, Real* botVertex,
00157               vertexArray* inc_chain, Int inc_current, Int inc_end,
00158               vertexArray* dec_chain, Int dec_current, Int dec_end,
00159               Int  (*compFun)(Real*, Real*),
00160               primStream* pStream);
00161 
00162 void monoTriangulationRecFun(Real* topVertex, Real* botVertex,
00163               vertexArray* inc_chain, Int inc_current,
00164               vertexArray* dec_chain, Int dec_current,
00165                Int (*compFun)(Real*, Real*),
00166               primStream* pStream);
00167 void monoTriangulationFun(directedLine* monoPolygon,
00168               Int (*compFun)(Real*, Real*), primStream* pStream);
00169 
00170 
00171 
00172 
00173 void monoTriangulationRec(Real* topVertex, Real* botVertex,
00174               vertexArray* inc_chain, Int inc_current,
00175               vertexArray* dec_chain, Int dec_current,
00176               Backend* backend);
00177 
00178 void monoTriangulationFunBackend(Arc_ptr loop, Int (*compFun)(Real*, Real*), Backend* backend);
00179 
00180 void monoTriangulationRecFunBackend(Real* topVertex, Real* botVertex,
00181               vertexArray* inc_chain, Int inc_current,
00182               vertexArray* dec_chain, Int dec_current,
00183               Int  (*compFun)(Real*, Real*),
00184               Backend* backend);
00185 
00186 void monoTriangulationOpt(directedLine* poly, primStream* pStream);
00187 
00188 #endif
00189 
00190 
00191 
00192 

Generated on Sun May 27 2012 04:23:49 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.