|
|
/*
** Copyright 1992, Silicon Graphics, Inc. ** All Rights Reserved. ** ** This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.; ** the contents of this file may not be disclosed to third parties, copied or ** duplicated in any form, in whole or in part, without the prior written ** permission of Silicon Graphics, Inc. ** ** RESTRICTED RIGHTS LEGEND: ** Use, duplication or disclosure by the Government is subject to restrictions ** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** rights reserved under the Copyright Laws of the United States. ** */
#include <stdlib.h>
#include <setjmp.h>
struct JumpBuffer { jmp_buf buf; };
#define mysetjmp(x) setjmp((x)->buf)
#define mylongjmp(x,y) longjmp((x)->buf, y)
/* <<AT&T USL C++ Language System <3.0.1> 02/03/92>> */ /* < ../core/arctess.c++ > */
void *__vec_new (void *, int , int , void *);
void __vec_ct (void *, int , int , void *);
void __vec_dt (void *, int , int , void *);
void __vec_delete (void *, int , int , void *, int , int ); typedef int (*__vptp)(void); struct __mptr {short d; short i; __vptp f; };
typedef unsigned int size_t ;
// extern void *malloc (size_t );
// extern void free (void *);
typedef float REAL ; typedef void (*Pfvv )(void ); typedef void (*Pfvf )(float *); typedef int (*cmpfunc )(void *, void *); typedef REAL Knot ;
typedef REAL *Knot_ptr ;
struct Buffer;
struct Buffer {
struct Buffer *next__6Buffer ; }; struct Pool;
enum __Q2_4Pool5Magic { is_allocated__Q2_4Pool5Magic = 62369, is_free__Q2_4Pool5Magic = 61858} ;
struct Pool {
struct Buffer *freelist__4Pool ; char *blocklist__4Pool [32]; int nextblock__4Pool ; char *curblock__4Pool ; int buffersize__4Pool ; int nextsize__4Pool ; int nextfree__4Pool ; int initsize__4Pool ;
char *name__4Pool ; int magic__4Pool ; };
void __glgrow__4PoolFv (struct Pool *);
struct PooledObj;
struct PooledObj {
char __W3__9PooledObj ; };
struct TrimVertex;
struct PwlArc;
struct PwlArc {
char __W3__9PooledObj ;
struct TrimVertex *pts__6PwlArc ; int npts__6PwlArc ; long type__6PwlArc ; };
struct TrimVertex;
struct TrimVertex { REAL param__10TrimVertex [2]; long nuid__10TrimVertex ; };
typedef struct TrimVertex *TrimVertex_p ;
struct Bin;
struct Arc;
struct BezierArc;
typedef struct Arc *Arc_ptr ; enum arc_side { arc_none = 0, arc_right = 1, arc_top = 2, arc_left = 3, arc_bottom = 4} ;
struct Arc;
struct Arc {
char __W3__9PooledObj ;
Arc_ptr prev__3Arc ; Arc_ptr next__3Arc ; Arc_ptr link__3Arc ; struct BezierArc *bezierArc__3Arc ; struct PwlArc *pwlArc__3Arc ; long type__3Arc ; long nuid__3Arc ; };
extern int __glbezier_tag__3Arc ; extern int __glarc_tag__3Arc ; extern int __gltail_tag__3Arc ;
struct BezierArc;
struct TrimVertexPool;
struct ArcTessellator;
struct ArcTessellator {
struct Pool *pwlarcpool__14ArcTessellator ; struct TrimVertexPool *trimvertexpool__14ArcTessellator ; };
extern REAL __glgl_Bernstein__14ArcTessell0 [][24][24];
struct Mapdesc;
struct BezierArc;
struct BezierArc {
char __W3__9PooledObj ;
REAL *cpts__9BezierArc ; int order__9BezierArc ; int stride__9BezierArc ; long type__9BezierArc ; struct Mapdesc *mapdesc__9BezierArc ; };
struct TrimVertexPool;
struct TrimVertexPool {
struct Pool pool__14TrimVertexPool ; struct TrimVertex **vlist__14TrimVertexPool ; int nextvlistslot__14TrimVertexPool ; int vlistsize__14TrimVertexPool ; };
extern struct __mptr* __ptbl_vec_____core_arctess_c_____ct_[];
struct ArcTessellator *__gl__ct__14ArcTessellatorFR140 (struct ArcTessellator *__0this , struct TrimVertexPool *__1t , struct Pool *__1p ) { void *__1__Xp00uzigaiaa ;
if (__0this || (__0this = (struct ArcTessellator *)( (__1__Xp00uzigaiaa = malloc ( (sizeof (struct ArcTessellator))) ), (__1__Xp00uzigaiaa ?(((void *)__1__Xp00uzigaiaa )):(((void *)__1__Xp00uzigaiaa )))) ))( (__0this -> pwlarcpool__14ArcTessellator = __1p ), (__0this -> trimvertexpool__14ArcTessellator = __1t )) ; return __0this ;
}
void __gl__dt__14ArcTessellatorFv (struct ArcTessellator *__0this , int __0__free ) { if (__0this ) if (__0this )if (__0__free & 1)( (((void *)__0this )?( free ( ((void *)__0this )) , 0 ) :( 0 ) )) ;
}
struct TrimVertex *__glget__14TrimVertexPoolFi (struct TrimVertexPool *, int );
void __glbezier__14ArcTessellatorFP0 (struct ArcTessellator *__0this , struct Arc *__1arc , REAL __1s1 , REAL __1s2 , REAL __1t1 , REAL __1t2 ) { ((void )0 ); ((void )0 );
{ struct TrimVertex *__1p ;
struct PwlArc *__0__X5 ;
void *__1__Xbuffer00eohgaiaa ;
__1p = __glget__14TrimVertexPoolFi ( (struct TrimVertexPool *)__0this -> trimvertexpool__14ArcTessellator , 2 ) ; __1arc -> pwlArc__3Arc = ((__0__X5 = (struct PwlArc *)( (((void *)( (((void )0 )), ( (((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> freelist__4Pool ?( ( (__1__Xbuffer00eohgaiaa = (((void *)((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> freelist__4Pool ))), (((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> freelist__4Pool = ((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> freelist__4Pool -> next__6Buffer )) , 0 ) :( ( ((! ((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> nextfree__4Pool )?( __glgrow__4PoolFv ( ((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )) , 0 ) :( 0 ) ), ( (((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> nextfree__4Pool -= ((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> buffersize__4Pool ), ( (__1__Xbuffer00eohgaiaa = (((void *)(((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> curblock__4Pool + ((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> nextfree__4Pool ))))) ) ) , 0 ) ), (((void *)__1__Xbuffer00eohgaiaa ))) ) ))) )?( (((struct PwlArc *)__0__X5 )-> pts__6PwlArc = __1p ), ( (((struct PwlArc *)__0__X5 )-> npts__6PwlArc = 2 ), ( (((struct PwlArc *)__0__X5 )-> type__6PwlArc = 0x8 ), ((((struct PwlArc *)__0__X5 )))) ) ) :0 ); ((__1p [0 ]). param__10TrimVertex [0 ])= __1s1 ; ((__1p [0 ]). param__10TrimVertex [1 ])= __1t1 ; ((__1p [1 ]). param__10TrimVertex [0 ])= __1s2 ; ((__1p [1 ]). param__10TrimVertex [1 ])= __1t2 ; ((void )0 ); ( (((struct Arc *)__1arc )-> type__3Arc |= __glbezier_tag__3Arc )) ;
} }
void __glmakeSide__3ArcFP6PwlArc8ar0 (struct Arc *, struct PwlArc *, int );
void __glpwl_left__14ArcTessellator0 (struct ArcTessellator *__0this , struct Arc *__1arc , REAL __1s , REAL __1t1 , REAL __1t2 , REAL __1rate ) { ((void )0 ); ((void )0 );
{ int __1nsteps ; REAL __1stepsize ;
struct TrimVertex *__1newvert ;
__1nsteps = (1 + (((int )((__1t1 - __1t2 )/ __1rate )))); __1stepsize = ((__1t1 - __1t2 )/ (((float )__1nsteps )));
__1newvert = __glget__14TrimVertexPoolFi ( (struct TrimVertexPool *)__0this -> trimvertexpool__14ArcTessellator , __1nsteps + 1 ) ; { { int __1i ;
struct PwlArc *__0__X6 ;
void *__1__Xbuffer00eohgaiaa ;
__1i = __1nsteps ;
for(;__1i > 0 ;__1i -- ) { ((__1newvert [__1i ]). param__10TrimVertex [0 ])= __1s ; ((__1newvert [__1i ]). param__10TrimVertex [1 ])= __1t2 ; __1t2 += __1stepsize ; } ((__1newvert [__1i ]). param__10TrimVertex [0 ])= __1s ; ((__1newvert [__1i ]). param__10TrimVertex [1 ])= __1t1 ;
__glmakeSide__3ArcFP6PwlArc8ar0 ( (struct Arc *)__1arc , (__0__X6 = (struct PwlArc *)( (((void *)( (((void )0 )), ( (((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> freelist__4Pool ?( ( (__1__Xbuffer00eohgaiaa = (((void *)((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> freelist__4Pool ))), (((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> freelist__4Pool = ((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> freelist__4Pool -> next__6Buffer )) , 0 ) :( ( ((! ((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> nextfree__4Pool )?( __glgrow__4PoolFv ( ((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )) , 0 ) :( 0 ) ), ( (((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> nextfree__4Pool -= ((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> buffersize__4Pool ), ( (__1__Xbuffer00eohgaiaa = (((void *)(((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> curblock__4Pool + ((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> nextfree__4Pool ))))) ) ) , 0 ) ), (((void *)__1__Xbuffer00eohgaiaa ))) ) ))) )?( (((struct PwlArc *)__0__X6 )-> pts__6PwlArc = __1newvert ), ( (((struct PwlArc *)__0__X6 )-> npts__6PwlArc = (__1nsteps + 1 )), ( (((struct PwlArc *)__0__X6 )-> type__6PwlArc = 0x8 ), ((((struct PwlArc *)__0__X6 )))) ) ) :0 , 3) ;
}
}
} }
void __glpwl_right__14ArcTessellato0 (struct ArcTessellator *__0this , struct Arc *__1arc , REAL __1s , REAL __1t1 , REAL __1t2 , REAL __1rate ) { ((void )0 ); ((void )0 );
{ int __1nsteps ; REAL __1stepsize ;
struct TrimVertex *__1newvert ;
__1nsteps = (1 + (((int )((__1t2 - __1t1 )/ __1rate )))); __1stepsize = ((__1t2 - __1t1 )/ (((float )__1nsteps )));
__1newvert = __glget__14TrimVertexPoolFi ( (struct TrimVertexPool *)__0this -> trimvertexpool__14ArcTessellator , __1nsteps + 1 ) ; { { int __1i ;
struct PwlArc *__0__X7 ;
void *__1__Xbuffer00eohgaiaa ;
__1i = 0 ;
for(;__1i < __1nsteps ;__1i ++ ) { ((__1newvert [__1i ]). param__10TrimVertex [0 ])= __1s ; ((__1newvert [__1i ]). param__10TrimVertex [1 ])= __1t1 ; __1t1 += __1stepsize ; } ((__1newvert [__1i ]). param__10TrimVertex [0 ])= __1s ; ((__1newvert [__1i ]). param__10TrimVertex [1 ])= __1t2 ;
__glmakeSide__3ArcFP6PwlArc8ar0 ( (struct Arc *)__1arc , (__0__X7 = (struct PwlArc *)( (((void *)( (((void )0 )), ( (((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> freelist__4Pool ?( ( (__1__Xbuffer00eohgaiaa = (((void *)((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> freelist__4Pool ))), (((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> freelist__4Pool = ((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> freelist__4Pool -> next__6Buffer )) , 0 ) :( ( ((! ((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> nextfree__4Pool )?( __glgrow__4PoolFv ( ((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )) , 0 ) :( 0 ) ), ( (((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> nextfree__4Pool -= ((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> buffersize__4Pool ), ( (__1__Xbuffer00eohgaiaa = (((void *)(((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> curblock__4Pool + ((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> nextfree__4Pool ))))) ) ) , 0 ) ), (((void *)__1__Xbuffer00eohgaiaa ))) ) ))) )?( (((struct PwlArc *)__0__X7 )-> pts__6PwlArc = __1newvert ), ( (((struct PwlArc *)__0__X7 )-> npts__6PwlArc = (__1nsteps + 1 )), ( (((struct PwlArc *)__0__X7 )-> type__6PwlArc = 0x8 ), ((((struct PwlArc *)__0__X7 )))) ) ) :0 , 1) ;
}
}
} }
void __glpwl_top__14ArcTessellatorF0 (struct ArcTessellator *__0this , struct Arc *__1arc , REAL __1t , REAL __1s1 , REAL __1s2 , REAL __1rate ) { ((void )0 ); ((void )0 );
{ int __1nsteps ; REAL __1stepsize ;
struct TrimVertex *__1newvert ;
__1nsteps = (1 + (((int )((__1s1 - __1s2 )/ __1rate )))); __1stepsize = ((__1s1 - __1s2 )/ (((float )__1nsteps )));
__1newvert = __glget__14TrimVertexPoolFi ( (struct TrimVertexPool *)__0this -> trimvertexpool__14ArcTessellator , __1nsteps + 1 ) ; { { int __1i ;
struct PwlArc *__0__X8 ;
void *__1__Xbuffer00eohgaiaa ;
__1i = __1nsteps ;
for(;__1i > 0 ;__1i -- ) { ((__1newvert [__1i ]). param__10TrimVertex [0 ])= __1s2 ; ((__1newvert [__1i ]). param__10TrimVertex [1 ])= __1t ; __1s2 += __1stepsize ; } ((__1newvert [__1i ]). param__10TrimVertex [0 ])= __1s1 ; ((__1newvert [__1i ]). param__10TrimVertex [1 ])= __1t ;
__glmakeSide__3ArcFP6PwlArc8ar0 ( (struct Arc *)__1arc , (__0__X8 = (struct PwlArc *)( (((void *)( (((void )0 )), ( (((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> freelist__4Pool ?( ( (__1__Xbuffer00eohgaiaa = (((void *)((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> freelist__4Pool ))), (((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> freelist__4Pool = ((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> freelist__4Pool -> next__6Buffer )) , 0 ) :( ( ((! ((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> nextfree__4Pool )?( __glgrow__4PoolFv ( ((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )) , 0 ) :( 0 ) ), ( (((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> nextfree__4Pool -= ((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> buffersize__4Pool ), ( (__1__Xbuffer00eohgaiaa = (((void *)(((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> curblock__4Pool + ((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> nextfree__4Pool ))))) ) ) , 0 ) ), (((void *)__1__Xbuffer00eohgaiaa ))) ) ))) )?( (((struct PwlArc *)__0__X8 )-> pts__6PwlArc = __1newvert ), ( (((struct PwlArc *)__0__X8 )-> npts__6PwlArc = (__1nsteps + 1 )), ( (((struct PwlArc *)__0__X8 )-> type__6PwlArc = 0x8 ), ((((struct PwlArc *)__0__X8 )))) ) ) :0 , 2) ;
}
}
} }
void __glpwl_bottom__14ArcTessellat0 (struct ArcTessellator *__0this , struct Arc *__1arc , REAL __1t , REAL __1s1 , REAL __1s2 , REAL __1rate ) { ((void )0 ); ((void )0 );
{ int __1nsteps ; REAL __1stepsize ;
struct TrimVertex *__1newvert ;
__1nsteps = (1 + (((int )((__1s2 - __1s1 )/ __1rate )))); __1stepsize = ((__1s2 - __1s1 )/ (((float )__1nsteps )));
__1newvert = __glget__14TrimVertexPoolFi ( (struct TrimVertexPool *)__0this -> trimvertexpool__14ArcTessellator , __1nsteps + 1 ) ; { { int __1i ;
struct PwlArc *__0__X9 ;
void *__1__Xbuffer00eohgaiaa ;
__1i = 0 ;
for(;__1i < __1nsteps ;__1i ++ ) { ((__1newvert [__1i ]). param__10TrimVertex [0 ])= __1s1 ; ((__1newvert [__1i ]). param__10TrimVertex [1 ])= __1t ; __1s1 += __1stepsize ; } ((__1newvert [__1i ]). param__10TrimVertex [0 ])= __1s2 ; ((__1newvert [__1i ]). param__10TrimVertex [1 ])= __1t ;
__glmakeSide__3ArcFP6PwlArc8ar0 ( (struct Arc *)__1arc , (__0__X9 = (struct PwlArc *)( (((void *)( (((void )0 )), ( (((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> freelist__4Pool ?( ( (__1__Xbuffer00eohgaiaa = (((void *)((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> freelist__4Pool ))), (((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> freelist__4Pool = ((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> freelist__4Pool -> next__6Buffer )) , 0 ) :( ( ((! ((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> nextfree__4Pool )?( __glgrow__4PoolFv ( ((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )) , 0 ) :( 0 ) ), ( (((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> nextfree__4Pool -= ((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> buffersize__4Pool ), ( (__1__Xbuffer00eohgaiaa = (((void *)(((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> curblock__4Pool + ((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> nextfree__4Pool ))))) ) ) , 0 ) ), (((void *)__1__Xbuffer00eohgaiaa ))) ) ))) )?( (((struct PwlArc *)__0__X9 )-> pts__6PwlArc = __1newvert ), ( (((struct PwlArc *)__0__X9 )-> npts__6PwlArc = (__1nsteps + 1 )), ( (((struct PwlArc *)__0__X9 )-> type__6PwlArc = 0x8 ), ((((struct PwlArc *)__0__X9 )))) ) ) :0 , 4) ;
}
}
} }
void __glpwl__14ArcTessellatorFP3Ar0 (struct ArcTessellator *__0this , struct Arc *__1arc , REAL __1s1 , REAL __1s2 , REAL __1t1 , REAL __1t2 , REAL __1rate ) { ((void )0 );
{ int __1snsteps ; int __1tnsteps ; int __1nsteps ;
REAL __1sstepsize ; REAL __1tstepsize ; struct TrimVertex *__1newvert ;
__1snsteps = (1 + (((int )(( (((__1s2 - __1s1 )< 0.0 )?(- (__1s2 - __1s1 )):(__1s2 - __1s1 ))) / __1rate )))); __1tnsteps = (1 + (((int )(( (((__1t2 - __1t1 )< 0.0 )?(- (__1t2 - __1t1 )):(__1t2 - __1t1 ))) / __1rate )))); __1nsteps = ( ((__1snsteps < __1tnsteps )?__1tnsteps :__1snsteps )) ;
__1sstepsize = ((__1s2 - __1s1 )/ (((float )__1nsteps ))); __1tstepsize = ((__1t2 - __1t1 )/ (((float )__1nsteps ))); __1newvert = __glget__14TrimVertexPoolFi ( (struct TrimVertexPool *)__0this -> trimvertexpool__14ArcTessellator , __1nsteps + 1 ) ; { { long __1i ;
struct PwlArc *__0__X10 ;
void *__1__Xbuffer00eohgaiaa ;
__1i = 0 ;
for(;__1i < __1nsteps ;__1i ++ ) { ((__1newvert [__1i ]). param__10TrimVertex [0 ])= __1s1 ; ((__1newvert [__1i ]). param__10TrimVertex [1 ])= __1t1 ; __1s1 += __1sstepsize ; __1t1 += __1tstepsize ; } ((__1newvert [__1i ]). param__10TrimVertex [0 ])= __1s2 ; ((__1newvert [__1i ]). param__10TrimVertex [1 ])= __1t2 ;
__1arc -> pwlArc__3Arc = ((__0__X10 = (struct PwlArc *)( (((void *)( (((void )0 )), ( (((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> freelist__4Pool ?( ( (__1__Xbuffer00eohgaiaa = (((void *)((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> freelist__4Pool ))), (((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> freelist__4Pool = ((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> freelist__4Pool -> next__6Buffer )) , 0 ) :( ( ((! ((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> nextfree__4Pool )?( __glgrow__4PoolFv ( ((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )) , 0 ) :( 0 ) ), ( (((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> nextfree__4Pool -= ((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> buffersize__4Pool ), ( (__1__Xbuffer00eohgaiaa = (((void *)(((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> curblock__4Pool + ((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> nextfree__4Pool ))))) ) ) , 0 ) ), (((void *)__1__Xbuffer00eohgaiaa ))) ) ))) )?( (((struct PwlArc *)__0__X10 )-> pts__6PwlArc = __1newvert ), ( (((struct PwlArc *)__0__X10 )-> npts__6PwlArc = (__1nsteps + 1 )), ( (((struct PwlArc *)__0__X10 )-> type__6PwlArc = 0x8 ), ((((struct PwlArc *)__0__X10 )))) ) ) :0 );
( (((struct Arc *)__1arc )-> type__3Arc &= (~ __glbezier_tag__3Arc ))) ; ( (((struct Arc *)__1arc )-> type__3Arc &= -1793)) ;
}
}
} }
void __gltessellateLizNear__14ArcTes0 (struct ArcTessellator *__0this , struct Arc *__1arc , REAL __1geo_stepsize , REAL __1arc_stepsize , int __1isrational ) { REAL __1s1 ;
REAL __1s2 ;
REAL __1t1 ;
REAL __1t2 ; REAL __1stepsize ; struct BezierArc *__1b ;
((void )0 ); ;
;
;
; __1stepsize = (__1geo_stepsize * __1arc_stepsize ); __1b = __1arc -> bezierArc__3Arc ;
if (__1isrational ){ __1s1 = ((__1b -> cpts__9BezierArc [0 ])/ (__1b -> cpts__9BezierArc [2 ])); __1t1 = ((__1b -> cpts__9BezierArc [1 ])/ (__1b -> cpts__9BezierArc [2 ])); __1s2 = ((__1b -> cpts__9BezierArc [(__1b -> stride__9BezierArc + 0 )])/ (__1b -> cpts__9BezierArc [(__1b -> stride__9BezierArc + 2 )])); __1t2 = ((__1b -> cpts__9BezierArc [(__1b -> stride__9BezierArc + 1 )])/ (__1b -> cpts__9BezierArc [(__1b -> stride__9BezierArc + 2 )])); } else { __1s1 = (__1b -> cpts__9BezierArc [0 ]); __1t1 = (__1b -> cpts__9BezierArc [1 ]); __1s2 = (__1b -> cpts__9BezierArc [(__1b -> stride__9BezierArc + 0 )]); __1t2 = (__1b -> cpts__9BezierArc [(__1b -> stride__9BezierArc + 1 )]); } if (__1s1 == __1s2 ) if (__1t1 < __1t2 ) __glpwl_right__14ArcTessellato0 ( __0this , __1arc , __1s1 , __1t1 , __1t2 , __1stepsize ) ; else __glpwl_left__14ArcTessellator0 ( __0this , __1arc , __1s1 , __1t1 , __1t2 , __1stepsize ) ; else if (__1t1 == __1t2 ) if (__1s1 < __1s2 ) __glpwl_bottom__14ArcTessellat0 ( __0this , __1arc , __1t1 , __1s1 , __1s2 , __1stepsize ) ; else __glpwl_top__14ArcTessellatorF0 ( __0this , __1arc , __1t1 , __1s1 , __1s2 , __1stepsize ) ; else __glpwl__14ArcTessellatorFP3Ar0 ( __0this , __1arc , __1s1 , __1s2 , __1t1 , __1t2 , __1stepsize ) ; }
void __gltrim_power_coeffs__14ArcTe0 (struct BezierArc *, REAL *, int );
void __gltessellateNonlizNear__14Arc0 (struct ArcTessellator *__0this , struct Arc *__1arc , REAL __1geo_stepsize , REAL __1arc_stepsize , int __1isrational ) { ((void )0 );
{ REAL __1stepsize ;
int __1nsteps ;
struct TrimVertex *__1vert ; REAL __1dp ; struct BezierArc *__1bezierArc ;
struct PwlArc *__0__X11 ;
void *__1__Xbuffer00eohgaiaa ;
__1stepsize = (__1geo_stepsize * __1arc_stepsize );
__1nsteps = (1 + (((int )(1.0 / __1stepsize ))));
__1vert = __glget__14TrimVertexPoolFi ( (struct TrimVertexPool *)__0this -> trimvertexpool__14ArcTessellator , __1nsteps + 1 ) ; __1dp = (1.0 / __1nsteps ); __1bezierArc = __1arc -> bezierArc__3Arc ;
__1arc -> pwlArc__3Arc = ((__0__X11 = (struct PwlArc *)( (((void *)( (((void )0 )), ( (((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> freelist__4Pool ?( ( (__1__Xbuffer00eohgaiaa = (((void *)((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> freelist__4Pool ))), (((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> freelist__4Pool = ((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> freelist__4Pool -> next__6Buffer )) , 0 ) :( ( ((! ((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> nextfree__4Pool )?( __glgrow__4PoolFv ( ((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )) , 0 ) :( 0 ) ), ( (((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> nextfree__4Pool -= ((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> buffersize__4Pool ), ( (__1__Xbuffer00eohgaiaa = (((void *)(((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> curblock__4Pool + ((struct Pool *)__0this -> pwlarcpool__14ArcTessellator )-> nextfree__4Pool ))))) ) ) , 0 ) ), (((void *)__1__Xbuffer00eohgaiaa ))) ) ))) )?( (((struct PwlArc *)__0__X11 )-> type__6PwlArc = 0x8 ), ( (((struct PwlArc *)__0__X11 )-> pts__6PwlArc = 0 ), ( (((struct PwlArc *)__0__X11 )-> npts__6PwlArc = -1), ((((struct PwlArc *)__0__X11 )))) ) ) :0 ); __1arc -> pwlArc__3Arc -> pts__6PwlArc = __1vert ;
if (__1isrational ){ REAL __2pow_u [24];
REAL __2pow_v [24];
REAL __2pow_w [24]; __gltrim_power_coeffs__14ArcTe0 ( __1bezierArc , (float *)__2pow_u , 0 ) ; __gltrim_power_coeffs__14ArcTe0 ( __1bezierArc , (float *)__2pow_v , 1 ) ; __gltrim_power_coeffs__14ArcTe0 ( __1bezierArc , (float *)__2pow_w , 2 ) ;
{ REAL *__2b ;
int __2step ; int __2ocanremove ; register long __2order ;
__2b = __1bezierArc -> cpts__9BezierArc ; (__1vert -> param__10TrimVertex [0 ])= ((__2b [0 ])/ (__2b [2 ])); (__1vert -> param__10TrimVertex [1 ])= ((__2b [1 ])/ (__2b [2 ]));
; __2ocanremove = 0 ; __2order = __1bezierArc -> order__9BezierArc ; for(( (__2step = 1 ), (++ __1vert )) ;__2step < __1nsteps ;( (__2step ++ ), (__1vert ++ )) ) { register REAL __3p ; register REAL __3u ; register REAL __3v ; register REAL __3w ;
__3p = (__1dp * __2step ); __3u = (__2pow_u [0 ]); __3v = (__2pow_v [0 ]); __3w = (__2pow_w [0 ]); { { register int __3i ;
__3i = 1 ;
for(;__3i < __2order ;__3i ++ ) { __3u = ((__3u * __3p )+ (__2pow_u [__3i ])); __3v = ((__3v * __3p )+ (__2pow_v [__3i ])); __3w = ((__3w * __3p )+ (__2pow_w [__3i ])); } (__1vert -> param__10TrimVertex [0 ])= (__3u / __3w ); (__1vert -> param__10TrimVertex [1 ])= (__3v / __3w );
}
}
}
__2b += ((__2order - 1 )* __1bezierArc -> stride__9BezierArc ); (__1vert -> param__10TrimVertex [0 ])= ((__2b [0 ])/ (__2b [2 ])); (__1vert -> param__10TrimVertex [1 ])= ((__2b [1 ])/ (__2b [2 ]));
}
} else { REAL __2pow_u [24];
REAL __2pow_v [24]; __gltrim_power_coeffs__14ArcTe0 ( __1bezierArc , (float *)__2pow_u , 0 ) ; __gltrim_power_coeffs__14ArcTe0 ( __1bezierArc , (float *)__2pow_v , 1 ) ;
{ REAL *__2b ;
int __2step ; int __2ocanremove ; register long __2order ;
__2b = __1bezierArc -> cpts__9BezierArc ; (__1vert -> param__10TrimVertex [0 ])= (__2b [0 ]); (__1vert -> param__10TrimVertex [1 ])= (__2b [1 ]);
; __2ocanremove = 0 ; __2order = __1bezierArc -> order__9BezierArc ; for(( (__2step = 1 ), (++ __1vert )) ;__2step < __1nsteps ;( (__2step ++ ), (__1vert ++ )) ) { register REAL __3p ; register REAL __3u ; register REAL __3v ;
__3p = (__1dp * __2step ); __3u = (__2pow_u [0 ]); __3v = (__2pow_v [0 ]); { { register int __3i ;
__3i = 1 ;
for(;__3i < __1bezierArc -> order__9BezierArc ;__3i ++ ) { __3u = ((__3u * __3p )+ (__2pow_u [__3i ])); __3v = ((__3v * __3p )+ (__2pow_v [__3i ])); } (__1vert -> param__10TrimVertex [0 ])= __3u ; (__1vert -> param__10TrimVertex [1 ])= __3v ;
}
}
}
__2b += ((__2order - 1 )* __1bezierArc -> stride__9BezierArc ); (__1vert -> param__10TrimVertex [0 ])= (__2b [0 ]); (__1vert -> param__10TrimVertex [1 ])= (__2b [1 ]);
} } __1arc -> pwlArc__3Arc -> npts__6PwlArc = ((__1vert - __1arc -> pwlArc__3Arc -> pts__6PwlArc )+ 1 );
}
}
extern REAL __glgl_Bernstein__14ArcTessell0 [][24][24]; REAL __glgl_Bernstein__14ArcTessell0 [][24][24]= { { { 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } , { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } , { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } , { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } , { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } , { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } , { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } , { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } } , { { - 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 } , { 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } , { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } , { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } , { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } , { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } , { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } , { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } } , { { 1 , - 2 , 1 , 0 , 0 , 0 , 0 , 0 } , { - 2 , 2 , 0 , 0 , 0 , 0 , 0 , 0 } , { 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } , { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } , { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } , { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } , { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } , { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } } , { { - 1 , 3 , - 3 , 1 , 0 , 0 , 0 , 0 } , { 3 , - 6 , 3 , 0 , 0 , 0 , 0 , 0 } , { - 3 , 3 , 0 , 0 , 0 , 0 , 0 , 0 } , { 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } , { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } , { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } , { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } , { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } } , { { 1 , - 4 , 6 , - 4 , 1 , 0 , 0 , 0 } , { - 4 , 12 , - 12 , 4 , 0 , 0 , 0 , 0 } , { 6 , - 12 , 6 , 0 , 0 , 0 , 0 , 0 } , { - 4 , 4 , 0 , 0 , 0 , 0 , 0 , 0 } , { 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } , { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } , { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } , { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } } , { { - 1 , 5 , - 10 , 10 , - 5 , 1 , 0 , 0 } , { 5 , - 20 , 30 , - 20 , 5 , 0 , 0 , 0 } , { - 10 , 30 , - 30 , 10 , 0 , 0 , 0 , 0 } , { 10 , - 20 , 10 , 0 , 0 , 0 , 0 , 0 } , { - 5 , 5 , 0 , 0 , 0 , 0 , 0 , 0 } , { 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } , { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } , { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } } , { { 1 , - 6 , 15 , - 20 , 15 , - 6 , 1 , 0 } , { - 6 , 30 , - 60 , 60 , - 30 , 6 , 0 , 0 } , { 15 , - 60 , 90 , - 60 , 15 , 0 , 0 , 0 } , { - 20 , 60 , - 60 , 20 , 0 , 0 , 0 , 0 } , { 15 , - 30 , 15 , 0 , 0 , 0 , 0 , 0 } , { - 6 , 6 , 0 , 0 , 0 , 0 , 0 , 0 } , { 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } , { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } } , { { - 1 , 7 , - 21 , 35 , - 35 , 21 , - 7 , 1 } , { 7 , - 42 , 105 , - 140 , 105 , - 42 , 7 , 0 } , { - 21 , 105 , - 210 , 210 , - 105 , 21 , 0 , 0 } , { 35 , - 140 , 210 , - 140 , 35 , 0 , 0 , 0 } , { - 35 , 105 , - 105 , 35 , 0 , 0 , 0 , 0 } , { 21 , - 42 , 21 , 0 , 0 , 0 , 0 , 0 } , { - 7 , 7 , 0 , 0 , 0 , 0 , 0 , 0 } , { 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } } } ;
void __gltrim_power_coeffs__14ArcTe0 (struct BezierArc *__1bez_arc , REAL *__1p , int __1coord ) { register int __1stride ; register int __1order ; register REAL *__1base ;
REAL (*__1mat )[24][24]; REAL (*__1lrow )[24];
__1stride = __1bez_arc -> stride__9BezierArc ; __1order = __1bez_arc -> order__9BezierArc ; __1base = (__1bez_arc -> cpts__9BezierArc + __1coord );
__1mat = (((REAL (*)[24][24])(__glgl_Bernstein__14ArcTessell0 [(__1order - 1 )]))); __1lrow = (((REAL (*)[24])(((*__1mat ))[__1order ]))); { { REAL (*__1row )[24];
__1row = (((REAL (*)[24])(((*__1mat ))[0 ])));
for(;__1row != __1lrow ;__1row ++ ) { register REAL __2s ; register REAL *__2point ; register REAL *__2mlast ;
__2s = 0.0 ; __2point = __1base ; __2mlast = (float *)(((*__1row ))+ __1order ); { { REAL *__2m ;
__2m = (float *)((*__1row ));
for(;__2m != __2mlast ;( (__2m ++ ), (__2point += __1stride )) ) __2s += (((*__2m ))* ((*__2point ))); ((*(__1p ++ )))= __2s ;
}
} }
}
} }
/* the end */
|