ROOT
master
Reference Guide
Loading...
Searching...
No Matches
sweep.h
Go to the documentation of this file.
1
/*
2
* SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
3
* Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
4
*
5
* Permission is hereby granted, free of charge, to any person obtaining a
6
* copy of this software and associated documentation files (the "Software"),
7
* to deal in the Software without restriction, including without limitation
8
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
9
* and/or sell copies of the Software, and to permit persons to whom the
10
* Software is furnished to do so, subject to the following conditions:
11
*
12
* The above copyright notice including the dates of first publication and
13
* either this permission notice or a reference to
14
* http://oss.sgi.com/projects/FreeB/
15
* shall be included in all copies or substantial portions of the Software.
16
*
17
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
20
* SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
21
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
22
* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
* SOFTWARE.
24
*
25
* Except as contained in this notice, the name of Silicon Graphics, Inc.
26
* shall not be used in advertising or otherwise to promote the sale, use or
27
* other dealings in this Software without prior written authorization from
28
* Silicon Graphics, Inc.
29
*/
30
/*
31
** Author: Eric Veach, July 1994.
32
**
33
*/
34
35
#ifndef __sweep_h_
36
#define __sweep_h_
37
38
#include "
mesh.h
"
39
40
/* __gl_computeInterior( tess ) computes the planar arrangement specified
41
* by the given contours, and further subdivides this arrangement
42
* into regions. Each region is marked "inside" if it belongs
43
* to the polygon, according to the rule given by tess->windingRule.
44
* Each interior region is guaranteed be monotone.
45
*/
46
int
__gl_computeInterior
(
GLUtesselator
*tess );
47
48
49
/* The following is here *only* for access by debugging routines */
50
51
#include "
dict.h
"
52
53
/* For each pair of adjacent edges crossing the sweep line, there is
54
* an ActiveRegion to represent the region between them. The active
55
* regions are kept in sorted order in a dynamic dictionary. As the
56
* sweep line crosses each vertex, we update the affected regions.
57
*/
58
59
struct
ActiveRegion
{
60
GLUhalfEdge
*
eUp
;
/* upper edge, directed right to left */
61
DictNode
*
nodeUp
;
/* dictionary node corresponding to eUp */
62
int
windingNumber
;
/* used to determine which regions are
63
* inside the polygon */
64
GLboolean
inside
;
/* is this region inside the polygon? */
65
GLboolean
sentinel
;
/* marks fake edges at t = +/-infinity */
66
GLboolean
dirty
;
/* marks regions where the upper or lower
67
* edge has changed, but we haven't checked
68
* whether they intersect yet */
69
GLboolean
fixUpperEdge
;
/* marks temporary edges introduced when
70
* we process a "right vertex" (one without
71
* any edges leaving to the right) */
72
};
73
74
#define RegionBelow(r) ((ActiveRegion *) dictKey(dictPred((r)->nodeUp)))
75
#define RegionAbove(r) ((ActiveRegion *) dictKey(dictSucc((r)->nodeUp)))
76
77
#endif
GLboolean
unsigned char GLboolean
Definition
GL_glu.h:267
DictNode
#define DictNode
Definition
dict-list.h:42
dict.h
mesh.h
ActiveRegion
Definition
sweep.h:59
ActiveRegion::fixUpperEdge
GLboolean fixUpperEdge
Definition
sweep.h:69
ActiveRegion::dirty
GLboolean dirty
Definition
sweep.h:66
ActiveRegion::eUp
GLUhalfEdge * eUp
Definition
sweep.h:60
ActiveRegion::windingNumber
int windingNumber
Definition
sweep.h:62
ActiveRegion::inside
GLboolean inside
Definition
sweep.h:64
ActiveRegion::nodeUp
DictListNode * nodeUp
Definition
sweep.h:61
ActiveRegion::sentinel
GLboolean sentinel
Definition
sweep.h:65
GLUhalfEdge
Definition
mesh.h:138
GLUtesselator
Definition
tess.h:59
__gl_computeInterior
int __gl_computeInterior(GLUtesselator *tess)
Definition
sweep.c:1301
graf3d
eve7
glu
sweep.h
ROOT master - Reference Guide Generated on Sat Nov 16 2024 09:37:51 (GVA Time) using Doxygen 1.9.8