ReactOS
0.4.16-dev-109-gf4cb10f
curvelist.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
* curvelist.c++
37
*
38
*/
39
40
//#include "glimports.h"
41
//#include "myassert.h"
42
//#include "mystdio.h"
43
#include "
quilt.h
"
44
#include "
curvelist.h
"
45
#include "
curve.h
"
46
//#include "types.h"
47
48
Curvelist::Curvelist
(
Quilt
*quilts,
REAL
pta,
REAL
ptb )
49
{
50
curve
= 0;
51
for
(
Quilt
*
q
= quilts;
q
;
q
=
q
->next )
52
curve
=
new
Curve
(
q
, pta, ptb,
curve
);
53
range
[0] = pta;
54
range
[1] = ptb;
55
range
[2] = ptb - pta;
56
needsSubdivision
= 0;
57
stepsize
= 0;
58
}
59
60
Curvelist::Curvelist
(
Curvelist
&upper,
REAL
value
)
61
{
62
curve
= 0;
63
for
(
Curve
*
c
= upper.
curve
;
c
;
c
=
c
->
next
)
64
curve
=
new
Curve
( *
c
,
value
,
curve
);
65
66
range
[0] = upper.
range
[0];
67
range
[1] =
value
;
68
range
[2] =
value
- upper.
range
[0];
69
upper.
range
[0] =
value
;
70
upper.
range
[2] = upper.
range
[1] -
value
;
71
needsSubdivision
= 0;
72
stepsize
= 0;
73
}
74
75
Curvelist::~Curvelist
()
76
{
77
while
(
curve
) {
78
Curve
*
c
=
curve
;
79
curve
=
curve
->
next
;
80
delete
c
;
81
}
82
}
83
84
int
85
Curvelist::cullCheck
(
void
)
86
{
87
for
(
Curve
*
c
=
curve
;
c
;
c
=
c
->
next
)
88
if
(
c
->cullCheck() ==
CULL_TRIVIAL_REJECT
)
89
return
CULL_TRIVIAL_REJECT
;
90
return
CULL_ACCEPT
;
91
}
92
93
void
94
Curvelist::getstepsize
(
void
)
95
{
96
stepsize
=
range
[2];
97
Curve
*
c
;
98
for
(
c
=
curve
;
c
;
c
=
c
->
next
) {
99
c
->getstepsize();
100
c
->clamp();
101
stepsize
= ((
c
->stepsize <
stepsize
) ?
c
->stepsize :
stepsize
);
102
if
(
c
->needsSamplingSubdivision() )
break
;
103
}
104
needsSubdivision
= (
c
) ? 1 : 0;
105
}
106
107
int
108
Curvelist::needsSamplingSubdivision
(
void
)
109
{
110
return
needsSubdivision
;
111
}
112
Curve
Definition:
curve.h:46
Curve::next
Curve * next
Definition:
curve.h:51
Curvelist
Definition:
curvelist.h:47
Curvelist::getstepsize
void getstepsize(void)
Definition:
curvelist.cc:94
Curvelist::range
float range[3]
Definition:
curvelist.h:58
Curvelist::stepsize
float stepsize
Definition:
curvelist.h:60
Curvelist::cullCheck
int cullCheck(void)
Definition:
curvelist.cc:85
Curvelist::~Curvelist
~Curvelist(void)
Definition:
curvelist.cc:75
Curvelist::needsSubdivision
int needsSubdivision
Definition:
curvelist.h:59
Curvelist::Curvelist
Curvelist(Quilt *, REAL, REAL)
Definition:
curvelist.cc:48
Curvelist::needsSamplingSubdivision
int needsSamplingSubdivision()
Definition:
curvelist.cc:108
Curvelist::curve
Curve * curve
Definition:
curvelist.h:57
Quilt
Definition:
quilt.h:64
curve.h
curvelist.h
CULL_ACCEPT
#define CULL_ACCEPT
Definition:
defines.h:42
CULL_TRIVIAL_REJECT
#define CULL_TRIVIAL_REJECT
Definition:
defines.h:40
REAL
float REAL
Definition:
types.h:41
q
GLdouble GLdouble GLdouble GLdouble q
Definition:
gl.h:2063
c
const GLubyte * c
Definition:
glext.h:8905
range
GLenum GLint * range
Definition:
glext.h:7539
c
#define c
Definition:
ke_i.h:80
quilt.h
define::next
struct define * next
Definition:
compiler.c:65
value
Definition:
pdh_main.c:94
dll
opengl
glu32
src
libnurbs
internals
curvelist.cc
Generated on Wed Oct 9 2024 06:09:22 for ReactOS by
1.9.6