ReactOS
0.4.16-dev-424-ge4748fe
Toggle main menu visibility
Main Page
Related Pages
Modules
Namespaces
Namespace List
Namespace Members
All
_
a
b
c
d
e
f
g
h
i
l
m
n
o
p
r
s
t
u
v
w
x
Functions
_
a
b
c
d
e
f
g
h
i
l
m
o
p
r
s
t
u
v
w
Variables
_
c
d
e
f
g
h
i
l
n
o
p
s
t
u
x
Typedefs
_
a
b
c
d
e
f
g
h
i
l
m
o
p
r
s
t
u
v
w
x
Enumerations
_
c
d
f
i
l
m
o
p
s
t
w
x
Enumerator
a
b
c
d
e
f
g
h
i
m
n
o
p
r
s
t
u
v
w
x
Classes
Class List
Class Index
Class Hierarchy
Class Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Enumerations
_
a
b
c
d
e
f
h
i
k
l
m
n
o
p
r
s
t
u
v
w
z
Enumerator
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Properties
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Related Functions
_
a
b
c
d
e
f
g
h
i
l
m
n
o
p
q
r
s
t
v
x
Files
File List
File Members
All
$
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
$
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Variables
$
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Enumerations
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Enumerator
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Macros
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Examples
hull.cc
Go to the documentation of this file.
1
/*
2
** License Applicability. Except to the extent portions of this file are
3
** made subject to an alternative license as permitted in the SGI Free
4
** Software License B, Version 1.1 (the "License"), the contents of this
5
** file are subject only to the provisions of the License. You may not use
6
** this file except in compliance with the License. You may obtain a copy
7
** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
8
** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
9
**
10
** http://oss.sgi.com/projects/FreeB
11
**
12
** Note that, as provided in the License, the Software is distributed on an
13
** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
14
** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
15
** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
16
** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
17
**
18
** Original Code. The Original Code is: OpenGL Sample Implementation,
19
** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
20
** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
21
** Copyright in any portions created by third parties is as indicated
22
** elsewhere herein. All Rights Reserved.
23
**
24
** Additional Notice Provisions: The application programming interfaces
25
** established by SGI in conjunction with the Original Code are The
26
** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
27
** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
28
** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
29
** Window System(R) (Version 1.3), released October 19, 1998. This software
30
** was created using the OpenGL(R) version 1.2.1 Sample Implementation
31
** published by SGI, but has not been independently verified as being
32
** compliant with the OpenGL(R) version 1.2.1 Specification.
33
*/
34
35
/*
36
* hull.c++
37
*
38
*/
39
40
//#include "glimports.h"
41
//#include "myassert.h"
42
//#include "mystdio.h"
43
#include "
hull.h
"
44
//#include "gridvertex.h"
45
//#include "gridtrimvertex.h"
46
//#include "gridline.h"
47
//#include "trimline.h"
48
//#include "uarray.h"
49
//#include "trimregion.h"
50
51
Hull::Hull
(
void
)
52
{}
53
54
Hull::~Hull
(
void
)
55
{}
56
57
/*----------------------------------------------------------------------
58
* Hull:init - this routine does the initialization needed before any
59
* calls to nextupper or nextlower can be made.
60
*----------------------------------------------------------------------
61
*/
62
void
63
Hull::init
(
void
)
64
{
65
TrimVertex
*lfirst =
left
.first();
66
TrimVertex
*llast =
left
.last();
67
if
( lfirst->
param
[0] <= llast->
param
[0] ) {
68
fakeleft
.
init
(
left
.first() );
69
upper
.
left
= &
fakeleft
;
70
lower
.
left
= &
left
;
71
}
else
{
72
fakeleft
.
init
(
left
.last() );
73
lower
.
left
= &
fakeleft
;
74
upper
.
left
= &
left
;
75
}
76
upper
.
left
->
last
();
77
lower
.
left
->
first
();
78
79
if
(
top
.ustart <=
top
.uend ) {
80
upper
.
line
= &
top
;
81
upper
.
index
=
top
.ustart;
82
}
else
83
upper
.
line
= 0;
84
85
if
(
bot
.
ustart
<=
bot
.
uend
) {
86
lower
.
line
= &
bot
;
87
lower
.
index
=
bot
.
ustart
;
88
}
else
89
lower
.
line
= 0;
90
91
TrimVertex
*rfirst =
right
.first();
92
TrimVertex
*rlast =
right
.last();
93
if
( rfirst->
param
[0] <= rlast->
param
[0] ) {
94
fakeright
.
init
(
right
.last() );
95
lower
.
right
= &
fakeright
;
96
upper
.
right
= &
right
;
97
}
else
{
98
fakeright
.
init
(
right
.first() );
99
upper
.
right
= &
fakeright
;
100
lower
.
right
= &
right
;
101
}
102
upper
.
right
->
first
();
103
lower
.
right
->
last
();
104
}
105
106
/*----------------------------------------------------------------------
107
* nextupper - find next vertex on upper hull of trim region.
108
* - if vertex is on trim curve, set vtop point to
109
* that vertex. if vertex is on grid, set vtop to
110
* point to temporary area and stuff coordinants into
111
* temporary vertex. Also, place grid coords in temporary
112
* grid vertex.
113
*----------------------------------------------------------------------
114
*/
115
GridTrimVertex
*
116
Hull::nextupper
(
GridTrimVertex
*gv )
117
{
118
if
(
upper
.
left
) {
119
gv->
set
(
upper
.
left
->
prev
() );
120
if
( gv->
isTrimVert
() )
return
gv;
121
upper
.
left
= 0;
122
}
123
124
if
(
upper
.
line
) {
125
assert
(
upper
.
index
<=
upper
.
line
->
uend
);
126
gv->
set
(
uarray
.
uarray
[
upper
.
index
],
upper
.
line
->
vval
);
127
gv->
set
(
upper
.
index
,
upper
.
line
->
vindex
);
128
if
(
upper
.
index
++ ==
upper
.
line
->
uend
)
upper
.
line
= 0;
129
return
gv;
130
}
131
132
if
(
upper
.
right
) {
133
gv->
set
(
upper
.
right
->
next
() );
134
if
( gv->
isTrimVert
() )
return
gv;
135
upper
.
right
= 0;
136
}
137
138
return
0;
139
}
140
141
GridTrimVertex
*
142
Hull::nextlower
(
GridTrimVertex
*gv )
143
{
144
if
(
lower
.
left
) {
145
gv->
set
(
lower
.
left
->
next
() );
146
if
( gv->
isTrimVert
() )
return
gv;
147
lower
.
left
= 0;
148
}
149
150
if
(
lower
.
line
) {
151
gv->
set
(
uarray
.
uarray
[
lower
.
index
],
lower
.
line
->
vval
);
152
gv->
set
(
lower
.
index
,
lower
.
line
->
vindex
);
153
if
(
lower
.
index
++ ==
lower
.
line
->
uend
)
lower
.
line
= 0;
154
return
gv;
155
}
156
157
if
(
lower
.
right
) {
158
gv->
set
(
lower
.
right
->
prev
() );
159
if
( gv->
isTrimVert
() )
return
gv;
160
lower
.
right
= 0;
161
}
162
163
return
0;
164
}
165
GridTrimVertex
Definition:
gridtrimvertex.h:45
GridTrimVertex::isTrimVert
int isTrimVert()
Definition:
gridtrimvertex.h:59
GridTrimVertex::set
void set(long, long)
Definition:
gridtrimvertex.h:64
Hull::upper
Side upper
Definition:
hull.h:63
Hull::Hull
Hull(void)
Definition:
hull.cc:51
Hull::init
void init(void)
Definition:
hull.cc:63
Hull::nextupper
GridTrimVertex * nextupper(GridTrimVertex *)
Definition:
hull.cc:116
Hull::nextlower
GridTrimVertex * nextlower(GridTrimVertex *)
Definition:
hull.cc:142
Hull::fakeleft
Trimline fakeleft
Definition:
hull.h:64
Hull::lower
Side lower
Definition:
hull.h:62
Hull::fakeright
Trimline fakeright
Definition:
hull.h:65
Hull::~Hull
~Hull(void)
Definition:
hull.cc:54
TrimRegion::bot
Gridline bot
Definition:
trimregion.h:56
TrimRegion::right
Trimline right
Definition:
trimregion.h:54
TrimRegion::uarray
Uarray uarray
Definition:
trimregion.h:57
TrimRegion::left
Trimline left
Definition:
trimregion.h:53
TrimRegion::top
Gridline top
Definition:
trimregion.h:55
TrimVertex
Definition:
trimvertex.h:43
TrimVertex::param
REAL param[2]
Definition:
trimvertex.h:45
Trimline::prev
TrimVertex * prev(void)
Definition:
trimline.h:87
Trimline::first
TrimVertex * first(void)
Definition:
trimline.h:93
Trimline::init
void init(TrimVertex *)
Definition:
trimline.cc:58
Trimline::last
TrimVertex * last(void)
Definition:
trimline.h:99
Trimline::next
TrimVertex * next(void)
Definition:
trimline.h:81
Uarray::uarray
REAL * uarray
Definition:
uarray.h:52
assert
#define assert(x)
Definition:
debug.h:53
top
GLdouble GLdouble GLdouble GLdouble top
Definition:
glext.h:10859
right
GLdouble GLdouble right
Definition:
glext.h:10859
left
GLint left
Definition:
glext.h:7726
hull.h
Gridline::vval
REAL vval
Definition:
gridline.h:41
Gridline::uend
long uend
Definition:
gridline.h:44
Gridline::ustart
long ustart
Definition:
gridline.h:43
Gridline::vindex
long vindex
Definition:
gridline.h:42
Hull::Side::index
long index
Definition:
hull.h:59
Hull::Side::left
Trimline * left
Definition:
hull.h:56
Hull::Side::right
Trimline * right
Definition:
hull.h:58
Hull::Side::line
Gridline * line
Definition:
hull.h:57
dll
opengl
glu32
src
libnurbs
internals
hull.cc
Generated on Mon Jan 6 2025 06:05:44 for ReactOS by
1.9.6