windows-nt/Source/XPSP1/NT/multimedia/opengl/glu/libnurbs/arctess.c

858 lines
28 KiB
C
Raw Permalink Normal View History

2020-09-26 03:20:57 -05:00
/*
** 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 */