56#ifdef FOR_TRITE_TEST_PROGRAM 
   59#define DebugEvent( tess ) 
   94#define MAX(x,y)  ((x) >= (y) ? (x) : (y)) 
   95#define MIN(x,y)  ((x) <= (y) ? (x) : (y)) 
  100#define AddWinding(eDst,eSrc) (eDst->winding += eSrc->winding, \ 
  101                                 eDst->Sym->winding += eSrc->Sym->winding) 
 
  128  if( 
e1->Dst == event ) {
 
  129    if( 
e2->Dst == event ) {
 
  140  if( 
e2->Dst == event ) {
 
 
  153  if( 
reg->fixUpperEdge ) {
 
 
  188  } 
while( 
reg->eUp->Org == 
org );
 
  193  if( 
reg->fixUpperEdge ) {
 
 
  209  } 
while( 
reg->eUp->Dst == 
dst );
 
 
  240  switch( 
tess->windingRule ) {
 
  250    return (
n >= 2) || (
n <= -2);
 
 
  308    if( 
e->Org != 
ePrev->Org ) {
 
  309      if( ! 
reg->fixUpperEdge ) {
 
 
  378    if( 
e->Org != 
ePrev->Org ) 
break;
 
  386    reg->windingNumber = 
regPrev->windingNumber - 
e->winding;
 
 
  418  coords[0] = 
isect->coords[0];
 
  419  coords[1] = 
isect->coords[1];
 
  420  coords[2] = 
isect->coords[2];
 
  427    } 
else if( ! 
tess->fatalError ) {
 
 
  446  GLfloat weights[4] = { 0.5, 0.5, 0.0, 0.0 };
 
 
  467  weights[0] = 0.5 * 
t2 / (
t1 + 
t2);
 
  468  weights[1] = 0.5 * 
t1 / (
t1 + 
t2);
 
  469  isect->coords[0] += weights[0]*
org->coords[0] + weights[1]*
dst->coords[0];
 
  470  isect->coords[1] += weights[0]*
org->coords[1] + weights[1]*
dst->coords[1];
 
  471  isect->coords[2] += weights[0]*
org->coords[2] + weights[1]*
dst->coords[2];
 
 
  540    } 
else if( eUp->
Org != 
eLo->Org ) {
 
 
  591    e->Lface->inside = 
regUp->inside;
 
  600    e->Rface->inside = 
regUp->inside;
 
 
  775    while( 
regLo->dirty ) {
 
  779    if( ! 
regUp->dirty ) {
 
  791    if( eUp->Dst != 
eLo->Dst ) {
 
  799   if( 
regLo->fixUpperEdge ) {
 
  804   } 
else if( 
regUp->fixUpperEdge ) {
 
  812    if( eUp->
Org != 
eLo->Org ) {
 
  813      if(    eUp->Dst != 
eLo->Dst
 
  814     && ! 
regUp->fixUpperEdge && ! 
regLo->fixUpperEdge
 
  815     && (eUp->Dst == 
tess->event || 
eLo->Dst == 
tess->event) )
 
  836    if( eUp->
Org == 
eLo->Org && eUp->Dst == 
eLo->Dst ) {
 
 
  888  if( eUp->Dst != 
eLo->Dst ) {
 
  928  eNew->Sym->activeRegion->fixUpperEdge = 
TRUE;
 
 
  939#define TOLERANCE_NONZERO  FALSE 
  965    if( 
regUp->fixUpperEdge ) {
 
  983  if( 
reg->fixUpperEdge ) {
 
 
 1025  tmp.eUp = 
vEvent->anEdge->Sym;
 
 1043  if( 
regUp->inside || 
reg->fixUpperEdge) {
 
 1053    if( 
reg->fixUpperEdge ) {
 
 
 1085  while( 
e->activeRegion == 
NULL ) {
 
 
 1126#define SENTINEL_COORD  (4 * GLU_TESS_MAX_COORD) 
 1145  tess->event = 
e->Dst;    
 
 1148  reg->windingNumber = 0;
 
 
 1187    if( ! 
reg->sentinel ) {
 
 
 1212    if( 
VertEq( 
e->Org, 
e->Dst ) && 
e->Lnext->Lnext != 
e ) {
 
 
 1244  if (pq == 
NULL) 
return 0;
 
 1246  vHead = &
tess->mesh->vHead;
 
 1251  if (
v != vHead || !
pqInit( pq ) ) { 
 
 
 1292    if( 
e->Lnext->Lnext == 
e ) {
 
 
#define GLU_TESS_WINDING_NONZERO
 
#define GLU_TESS_WINDING_POSITIVE
 
#define GLU_TESS_WINDING_NEGATIVE
 
#define GLU_TESS_WINDING_ODD
 
#define GLU_TESS_NEED_COMBINE_CALLBACK
 
#define GLU_TESS_WINDING_ABS_GEQ_TWO
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t org
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void reg
 
#define dictInsert(dict, key)
 
#define dictDeleteDict(dict)
 
#define dictSearch(dict, key)
 
#define dictDelete(dict, node)
 
#define dictInsertBefore(dict, node, key)
 
#define dictNewDict(frame, leq)
 
void __gl_edgeIntersect(GLUvertex *o1, GLUvertex *d1, GLUvertex *o2, GLUvertex *d2, GLUvertex *v)
 
int __gl_vertLeq(GLUvertex *u, GLUvertex *v)
 
#define EdgeSign(u, v, w)
 
#define EdgeEval(u, v, w)
 
GLUhalfEdge * __gl_meshMakeEdge(GLUmesh *mesh)
 
GLUhalfEdge * __gl_meshSplitEdge(GLUhalfEdge *eOrg)
 
void __gl_meshCheckMesh(GLUmesh *mesh)
 
GLUhalfEdge * __gl_meshConnect(GLUhalfEdge *eOrg, GLUhalfEdge *eDst)
 
int __gl_meshDelete(GLUhalfEdge *eDel)
 
int __gl_meshSplice(GLUhalfEdge *eOrg, GLUhalfEdge *eDst)
 
#define pqNewPriorityQ(leq)
 
#define pqDeletePriorityQ(pq)
 
#define pqDelete(pq, handle)
 
#define pqInsert(pq, key)
 
static void InitEdgeDict(GLUtesselator *tess)
 
static int FixUpperEdge(ActiveRegion *reg, GLUhalfEdge *newEdge)
 
#define AddWinding(eDst, eSrc)
 
static GLboolean IsWindingInside(GLUtesselator *tess, int n)
 
static void RemoveDegenerateEdges(GLUtesselator *tess)
 
static int CheckForRightSplice(GLUtesselator *tess, ActiveRegion *regUp)
 
static void CallCombine(GLUtesselator *tess, GLUvertex *isect, void *data[4], GLfloat weights[4], int needed)
 
static int RemoveDegenerateFaces(GLUmesh *mesh)
 
int __gl_computeInterior(GLUtesselator *tess)
 
static GLUhalfEdge * FinishLeftRegions(GLUtesselator *tess, ActiveRegion *regFirst, ActiveRegion *regLast)
 
static void FinishRegion(GLUtesselator *tess, ActiveRegion *reg)
 
static void SweepEvent(GLUtesselator *tess, GLUvertex *vEvent)
 
static ActiveRegion * TopLeftRegion(ActiveRegion *reg)
 
static ActiveRegion * AddRegionBelow(GLUtesselator *tess, ActiveRegion *regAbove, GLUhalfEdge *eNewUp)
 
static int InitPriorityQ(GLUtesselator *tess)
 
static void AddRightEdges(GLUtesselator *tess, ActiveRegion *regUp, GLUhalfEdge *eFirst, GLUhalfEdge *eLast, GLUhalfEdge *eTopLeft, GLboolean cleanUp)
 
static void GetIntersectData(GLUtesselator *tess, GLUvertex *isect, GLUvertex *orgUp, GLUvertex *dstUp, GLUvertex *orgLo, GLUvertex *dstLo)
 
static void DeleteRegion(GLUtesselator *tess, ActiveRegion *reg)
 
static void VertexWeights(GLUvertex *isect, GLUvertex *org, GLUvertex *dst, GLfloat *weights)
 
static ActiveRegion * TopRightRegion(ActiveRegion *reg)
 
static void WalkDirtyRegions(GLUtesselator *tess, ActiveRegion *regUp)
 
static void ConnectLeftVertex(GLUtesselator *tess, GLUvertex *vEvent)
 
static int CheckForIntersect(GLUtesselator *tess, ActiveRegion *regUp)
 
static int EdgeLeq(GLUtesselator *tess, ActiveRegion *reg1, ActiveRegion *reg2)
 
static void ConnectRightVertex(GLUtesselator *tess, ActiveRegion *regUp, GLUhalfEdge *eBottomLeft)
 
static void DoneEdgeDict(GLUtesselator *tess)
 
static void ComputeWinding(GLUtesselator *tess, ActiveRegion *reg)
 
static void ConnectLeftDegenerate(GLUtesselator *tess, ActiveRegion *regUp, GLUvertex *vEvent)
 
static int CheckForLeftSplice(GLUtesselator *tess, ActiveRegion *regUp)
 
static void DonePriorityQ(GLUtesselator *tess)
 
#define TOLERANCE_NONZERO
 
static void SpliceMergeVertices(GLUtesselator *tess, GLUhalfEdge *e1, GLUhalfEdge *e2)
 
static void AddSentinel(GLUtesselator *tess, GLdouble t)
 
#define CALL_ERROR_OR_ERROR_DATA(a)
 
#define CALL_COMBINE_OR_COMBINE_DATA(a, b, c, d)