FreeWRL/FreeX3D
3.0.0
Main Page
Related Pages
Data Structures
Files
File List
nurbstess.h
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
/*
32
* nurbstess.h
33
*
34
*/
35
36
#ifndef __glunurbstess_h_
37
#define __glunurbstess_h_
38
39
#include "mysetjmp.h"
40
#include "subdivider.h"
41
#include "renderhints.h"
42
#include "backend.h"
43
#include "maplist.h"
44
#include "reader.h"
45
#include "nurbsconsts.h"
46
47
struct
Knotvector
;
48
class
Quilt
;
49
class
DisplayList
;
50
class
BasicCurveEvaluator
;
51
class
BasicSurfaceEvaluator
;
52
53
class
NurbsTessellator
{
54
public
:
55
NurbsTessellator
(
BasicCurveEvaluator
&c,
56
BasicSurfaceEvaluator
&e );
57
virtual
~
NurbsTessellator
(
void
);
58
59
void
getnurbsproperty(
long
, INREAL * );
60
void
getnurbsproperty(
long
,
long
, INREAL * );
61
void
setnurbsproperty(
long
, INREAL );
62
void
setnurbsproperty(
long
,
long
, INREAL );
63
void
setnurbsproperty(
long
,
long
, INREAL * );
64
void
setnurbsproperty(
long
,
long
, INREAL *,
long
,
long
);
65
66
// called before a tessellation begins/ends
67
virtual
void
bgnrender(
void
);
68
virtual
void
endrender(
void
);
69
70
// called to make a display list of the output vertices
71
virtual
void
makeobj(
int
n );
72
virtual
void
closeobj(
void
);
73
74
// called when a error occurs
75
virtual
void
errorHandler(
int
);
76
77
void
bgnsurface(
long
);
78
void
endsurface(
void
);
79
void
bgntrim(
void
);
80
void
endtrim(
void
);
81
void
bgncurve(
long
);
82
void
endcurve(
void
);
83
void
pwlcurve(
long
, INREAL[],
long
,
long
);
84
void
nurbscurve(
long
, INREAL[],
long
, INREAL[],
long
,
long
);
85
void
nurbssurface(
long
, INREAL[],
long
, INREAL[],
long
,
long
,
86
INREAL[],
long
,
long
,
long
);
87
88
void
defineMap(
long
,
long
,
long
);
89
void
redefineMaps(
void
);
90
91
// recording of input description
92
void
discardRecording(
void
* );
93
void
* beginRecording(
void
);
94
void
endRecording(
void
);
95
void
playRecording(
void
* );
96
97
//for optimizing untrimmed nurbs in the case of domain distance sampling
98
void
set_domain_distance_u_rate(REAL u_rate);
99
void
set_domain_distance_v_rate(REAL v_rate);
100
void
set_is_domain_distance_sampling(
int
flag);
101
102
103
protected
:
104
Renderhints
renderhints;
105
Maplist
maplist;
106
Backend
backend;
107
108
private
:
109
110
void
resetObjects(
void
);
111
int
do_check_knots(
Knotvector
*,
const
char
* );
112
void
do_nurbserror(
int
);
113
void
do_bgncurve(
O_curve
* );
114
void
do_endcurve(
void
);
115
void
do_freeall(
void
);
116
void
do_freecurveall(
O_curve
* );
117
void
do_freebgntrim(
O_trim
* );
118
void
do_freebgncurve(
O_curve
* );
119
void
do_freepwlcurve(
O_pwlcurve
* );
120
void
do_freenurbscurve(
O_nurbscurve
* );
121
void
do_freenurbssurface(
O_nurbssurface
* );
122
void
do_freebgnsurface(
O_surface
* );
123
void
do_bgnsurface(
O_surface
* );
124
void
do_endsurface(
void
);
125
void
do_bgntrim(
O_trim
* );
126
void
do_endtrim(
void
);
127
void
do_pwlcurve(
O_pwlcurve
* );
128
void
do_nurbscurve(
O_nurbscurve
* );
129
void
do_nurbssurface(
O_nurbssurface
* );
130
void
do_freenurbsproperty(
Property
* );
131
void
do_setnurbsproperty(
Property
* );
132
void
do_setnurbsproperty2(
Property
* );
133
134
Subdivider
subdivider;
135
JumpBuffer* jumpbuffer;
136
Pool
o_pwlcurvePool;
137
Pool
o_nurbscurvePool;
138
Pool
o_curvePool;
139
Pool
o_trimPool;
140
Pool
o_surfacePool;
141
Pool
o_nurbssurfacePool;
142
Pool
propertyPool;
143
public
:
144
Pool
quiltPool;
145
private
:
146
TrimVertexPool
extTrimVertexPool;
147
148
int
inSurface;
/* bgnsurface seen */
149
int
inCurve;
/* bgncurve seen */
150
int
inTrim;
/* bgntrim seen */
151
int
isCurveModified;
/* curve changed */
152
int
isTrimModified;
/* trim curves changed */
153
int
isSurfaceModified;
/* surface changed */
154
int
isDataValid;
/* all data is good */
155
int
numTrims;
/* valid trim regions */
156
int
playBack;
157
158
O_trim
** nextTrim;
/* place to link o_trim */
159
O_curve
** nextCurve;
/* place to link o_curve */
160
O_nurbscurve
** nextNurbscurve;
/* place to link o_nurbscurve */
161
O_pwlcurve
** nextPwlcurve;
/* place to link o_pwlcurve */
162
O_nurbssurface
** nextNurbssurface;
/* place to link o_nurbssurface */
163
164
O_surface
* currentSurface;
165
O_trim
* currentTrim;
166
O_curve
* currentCurve;
167
168
DisplayList
*dl;
169
170
};
171
172
#endif
/* __glunurbstess_h_ */
Quilt
Definition:
quilt.h:64
BasicSurfaceEvaluator
Definition:
basicsurfeval.h:43
BasicCurveEvaluator
Definition:
basiccrveval.h:43
Subdivider
Definition:
subdivider.h:55
O_curve
Definition:
reader.h:55
Maplist
Definition:
maplist.h:46
Knotvector
Definition:
knotvector.h:41
TrimVertexPool
Definition:
trimvertpool.h:45
O_surface
Definition:
reader.h:112
Pool
Definition:
bufpool.h:50
Property
Definition:
reader.h:120
O_trim
Definition:
reader.h:94
NurbsTessellator
Definition:
nurbstess.h:53
Backend
Definition:
backend.h:46
DisplayList
Definition:
displaylist.h:64
Renderhints
Definition:
renderhints.h:41
O_nurbssurface
Definition:
reader.h:101
O_pwlcurve
Definition:
reader.h:83
O_nurbscurve
Definition:
reader.h:70
src
libnurbs
internals
nurbstess.h
Generated on Thu Dec 14 2017 12:15:25 for FreeWRL/FreeX3D by
1.8.6