FreeWRL / FreeX3D
4.3.0
reader.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
* reader.h
33
*
34
*/
35
36
#ifndef __glureader_h_
37
#define __glureader_h_
38
39
#include "bufpool.h"
40
#include "types.h"
41
42
enum
Curvetype { ct_nurbscurve, ct_pwlcurve, ct_none };
43
44
struct
Property
;
45
struct
O_surface
;
46
struct
O_nurbssurface
;
47
struct
O_trim
;
48
class
O_pwlcurve
;
49
struct
O_nurbscurve
;
50
struct
O_curve
;
51
class
Quilt
;
52
class
TrimVertex
;
53
54
55
struct
O_curve
:
public
PooledObj
{
56
union
{
57
O_nurbscurve
*o_nurbscurve;
58
O_pwlcurve
*o_pwlcurve;
59
} curve;
60
Curvetype curvetype;
/* arc type: pwl or nurbs */
61
O_curve
* next;
/* next arc in loop */
62
O_surface
* owner;
/* owning surface */
63
int
used;
/* curve called in cur surf */
64
int
save;
/* 1 if in display list */
65
long
nuid;
66
O_curve
() { next = 0; used = 0; owner = 0;
67
curve.o_pwlcurve = 0; }
68
};
69
70
struct
O_nurbscurve
:
public
PooledObj
{
71
Quilt
*bezier_curves;
/* array of bezier curves */
72
long
type;
/* range descriptor */
73
REAL tesselation;
/* tesselation tolerance */
74
int
method;
/* tesselation method */
75
O_nurbscurve
* next;
/* next curve in list */
76
int
used;
/* curve called in cur surf */
77
int
save;
/* 1 if in display list */
78
O_curve
* owner;
/* owning curve */
79
O_nurbscurve
(
long
_type )
80
{ type = _type; owner = 0; next = 0; used = 0; }
81
};
82
83
class
O_pwlcurve
:
public
PooledObj
{
84
public
:
85
TrimVertex
*pts;
/* array of trim vertices */
86
int
npts;
/* number of trim vertices */
87
O_pwlcurve
* next;
/* next curve in list */
88
int
used;
/* curve called in cur surf */
89
int
save;
/* 1 if in display list */
90
O_curve
* owner;
/* owning curve */
91
O_pwlcurve
(
long
,
long
, INREAL *,
long
,
TrimVertex
* );
92
};
93
94
struct
O_trim
:
public
PooledObj
{
95
O_curve
*o_curve;
/* closed trim loop */
96
O_trim
* next;
/* next loop along trim */
97
int
save;
/* 1 if in display list */
98
O_trim
() { next = 0; o_curve = 0; }
99
};
100
101
struct
O_nurbssurface
:
public
PooledObj
{
102
Quilt
* bezier_patches;
/* array of bezier patches */
103
long
type;
/* range descriptor */
104
O_surface
* owner;
/* owning surface */
105
O_nurbssurface
* next;
/* next surface in chain */
106
int
save;
/* 1 if in display list */
107
int
used;
/* 1 if prev called in block */
108
O_nurbssurface
(
long
_type )
109
{ type = _type; owner = 0; next = 0; used = 0; }
110
};
111
112
struct
O_surface
:
public
PooledObj
{
113
O_nurbssurface
* o_nurbssurface;
/* linked list of surfaces */
114
O_trim
* o_trim;
/* list of trim loops */
115
int
save;
/* 1 if in display list */
116
long
nuid;
117
O_surface
() { o_trim = 0; o_nurbssurface = 0; }
118
};
119
120
struct
Property
:
public
PooledObj
{
121
long
type;
122
long
tag;
123
REAL value;
124
int
save;
/* 1 if in display list */
125
Property
(
long
_type,
long
_tag, INREAL _value )
126
{ type = _type; tag = _tag; value = (REAL) _value; }
127
Property
(
long
_tag, INREAL _value )
128
{ type = 0; tag = _tag; value = (REAL) _value; }
129
};
130
131
class
NurbsTessellator
;
132
#endif
/* __glureader_h_ */
NurbsTessellator
Definition
nurbstess.h:53
O_pwlcurve
Definition
reader.h:83
PooledObj
Definition
bufpool.h:118
Quilt
Definition
quilt.h:64
TrimVertex
Definition
trimvertex.h:43
O_curve
Definition
reader.h:55
O_nurbscurve
Definition
reader.h:70
O_nurbssurface
Definition
reader.h:101
O_surface
Definition
reader.h:112
O_trim
Definition
reader.h:94
Property
Definition
reader.h:120
src
libnurbs
internals
reader.h
Generated by
1.11.0