diff options
Diffstat (limited to 'mesalib/src/glu/sgi/libnurbs/internals/subdivider.h')
-rw-r--r-- | mesalib/src/glu/sgi/libnurbs/internals/subdivider.h | 200 |
1 files changed, 0 insertions, 200 deletions
diff --git a/mesalib/src/glu/sgi/libnurbs/internals/subdivider.h b/mesalib/src/glu/sgi/libnurbs/internals/subdivider.h deleted file mode 100644 index 4d5395181..000000000 --- a/mesalib/src/glu/sgi/libnurbs/internals/subdivider.h +++ /dev/null @@ -1,200 +0,0 @@ -/* - * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008) - * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice including the dates of first publication and - * either this permission notice or a reference to - * http://oss.sgi.com/projects/FreeB/ - * shall be included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF - * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Except as contained in this notice, the name of Silicon Graphics, Inc. - * shall not be used in advertising or otherwise to promote the sale, use or - * other dealings in this Software without prior written authorization from - * Silicon Graphics, Inc. - */ - -/* - * subdivider.h - * - */ - -#ifndef __glusubdivider_h_ -#define __glusubdivider_h_ - -#include "mysetjmp.h" -#include "bin.h" -#include "flist.h" -#include "slicer.h" -#include "arctess.h" -#include "trimvertex.h" -#include "trimvertpool.h" - -class Arc; -class Pool; -class Renderhints; -class Quilt; -class Patchlist; -class Curvelist; -struct JumpBuffer; - -class Subdivider { -public: - Subdivider( Renderhints&, Backend& ); - ~Subdivider( void ); - void clear( void ); - - void beginTrims( void ) {} - void beginLoop( void ); - void addArc( REAL *, Quilt *, long ); - void addArc( int, TrimVertex *, long ); - void endLoop( void ) {} - void endTrims( void ) {} - - void beginQuilts( void ); - void addQuilt( Quilt * ); - void endQuilts( void ) {} - - void drawCurves( void ); - void drawSurfaces( long ); - - int ccwTurn_sl( Arc_ptr, Arc_ptr ); - int ccwTurn_sr( Arc_ptr , Arc_ptr ); - int ccwTurn_tl( Arc_ptr , Arc_ptr ); - int ccwTurn_tr( Arc_ptr , Arc_ptr ); - - void setJumpbuffer( JumpBuffer * ); - - void set_domain_distance_u_rate(REAL u_rate) - { - domain_distance_u_rate = u_rate; - } - void set_domain_distance_v_rate(REAL v_rate) - { - domain_distance_v_rate = v_rate; - } - void set_is_domain_distance_sampling(int flag) - { - is_domain_distance_sampling = flag; - } - -private: - void classify_headonleft_s( Bin &, Bin &, Bin &, REAL ); - void classify_tailonleft_s( Bin &, Bin &, Bin &, REAL ); - void classify_headonright_s( Bin &, Bin &, Bin &, REAL ); - void classify_tailonright_s( Bin &, Bin &, Bin &, REAL ); - void classify_headonleft_t( Bin &, Bin &, Bin &, REAL ); - void classify_tailonleft_t( Bin &, Bin &, Bin &, REAL ); - void classify_headonright_t( Bin &, Bin &, Bin &, REAL ); - void classify_tailonright_t( Bin &, Bin &, Bin &, REAL ); - - enum dir { down, same, up, none }; - void tessellate( Arc_ptr, REAL ); - void monotonize( Arc_ptr , Bin & ); - int isMonotone( Arc_ptr ); - int decompose( Bin &, REAL ); - - - Slicer slicer; - ArcTessellator arctessellator; - Pool arcpool; - Pool bezierarcpool; - Pool pwlarcpool; - TrimVertexPool trimvertexpool; - - JumpBuffer* jumpbuffer; - Renderhints& renderhints; - Backend& backend; - - Bin initialbin; - Arc_ptr pjarc; - int s_index; - int t_index; - Quilt * qlist; - Flist spbrkpts; - Flist tpbrkpts; - Flist smbrkpts; - Flist tmbrkpts; - REAL stepsizes[4]; - int showDegenerate; - int isArcTypeBezier; - - void samplingSplit( Curvelist&, int ); - - void subdivideInS( Bin& ); - void splitInS( Bin&, int, int ); - void splitInT( Bin&, int, int ); - void samplingSplit( Bin&, Patchlist&, int, int ); - void nonSamplingSplit( Bin&, Patchlist&, int, int ); - void tessellation( Bin&, Patchlist& ); - void monosplitInS( Bin&, int, int ); - void monosplitInT( Bin&, int, int ); - - void outline( Bin & ); - void freejarcs( Bin & ); - void render( Bin & ); - void split( Bin &, Bin &, Bin &, int, REAL ); - void tessellate( Bin &, REAL, REAL, REAL, REAL ); - - inline void setDegenerate( void ) { showDegenerate = 1; } - inline void setNonDegenerate( void ) { showDegenerate = 0; } - inline int showingDegenerate( void ) { return showDegenerate; } - inline void setArcTypeBezier( void ) { isArcTypeBezier = 1; } - inline void setArcTypePwl( void ) { isArcTypeBezier = 0; } - inline int isBezierArcType( void ) { return isArcTypeBezier; } - - void makeBorderTrim( const REAL *, const REAL * ); - void split( Bin &, int, const REAL *, int, int ); - void partition( Bin &, Bin &, Bin &, Bin &, Bin &, int, REAL ); - void findIrregularS( Bin & ); - void findIrregularT( Bin & ); - - - inline int bbox( TrimVertex *, TrimVertex *, TrimVertex *, int ); - static int bbox( REAL, REAL, REAL, REAL, REAL, REAL ); - static int ccw( TrimVertex *, TrimVertex *, TrimVertex * ); - void join_s( Bin &, Bin &, Arc_ptr, Arc_ptr ); - void join_t( Bin &, Bin &, Arc_ptr , Arc_ptr ); - int arc_split( Arc_ptr , int, REAL, int ); - void check_s( Arc_ptr , Arc_ptr ); - void check_t( Arc_ptr , Arc_ptr ); - inline void link( Arc_ptr , Arc_ptr , Arc_ptr , Arc_ptr ); - inline void simple_link( Arc_ptr , Arc_ptr ); - - Bin* makePatchBoundary( const REAL *from, const REAL *to ); - - /*in domain distance method, the tessellation is controled by two numbers: - *GLU_U_STEP: number of u-segments per unit u length of domain - *GLU_V_STEP: number of v-segments per unit v length of domain - *These two numbers are normally stored in mapdesc->maxs(t)rate. - *I (ZL) put these two numbers here so that I can optimize the untrimmed - *case in the case of domain distance sampling. - *These two numbers are set by set_domain_distance_u_rate() and ..._v_..(). - */ - REAL domain_distance_u_rate; - REAL domain_distance_v_rate; - int is_domain_distance_sampling; -}; - -inline void -Subdivider::beginLoop( void ) -{ - pjarc = 0; -} - - -#endif /* __glusubdivider_h_ */ |