ReactOS  0.4.15-dev-1201-gb2cf5a4
patch.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 /*
32  * patch.h
33  *
34  */
35 
36 #ifndef __glupatch_h_
37 #define __glupatch_h_
38 
39 #include "types.h"
40 #include "defines.h"
41 
42 class Quilt;
43 class Mapdesc;
44 
45 
46 struct Pspec {
47  REAL range[3];
52 };
53 
54 struct Patchspec : public Pspec {
55  int order;
56  int stride;
57  void clamp( REAL );
58  void getstepsize( REAL );
59  void singleStep( void );
60 };
61 
62 class Patch {
63 public:
64 friend class Subdivider;
65 friend class Quilt;
66 friend class Patchlist;
67  Patch( Quilt *, REAL*, REAL *, Patch * );
68  Patch( Patch &, int, REAL, Patch * );
69  void bbox( void );
70  void clamp( void );
71  void getstepsize( void );
72  int cullCheck( void );
73  int needsSubdivision( int );
74  int needsSamplingSubdivision( void );
75  int needsNonSamplingSubdivision( void );
76 
77  int get_uorder() {return pspec[0].order;}
78  int get_vorder() {return pspec[1].order;}
79 
80 private:
81 
84  int cullval;
85  int notInBbox;
87  REAL cpts[MAXORDER*MAXORDER*MAXCOORDS]; //culling pts
88  REAL spts[MAXORDER*MAXORDER*MAXCOORDS]; //sampling pts
91  void checkBboxConstraint( void );
93 };
94 #endif /* __glupatch_h_ */
Definition: quilt.h:64
REAL spts[MAXORDER *MAXORDER *MAXCOORDS]
Definition: patch.h:88
void checkBboxConstraint(void)
Definition: patch.cc:235
int get_uorder()
Definition: patch.h:77
int stride
Definition: patch.h:56
int order
Definition: patch.h:55
int needsSubdivision(int)
Definition: patch.cc:491
int get_vorder()
Definition: patch.h:78
int cullval
Definition: patch.h:84
void singleStep(void)
Definition: patch.cc:463
void getstepsize(void)
Definition: patch.cc:258
int needsSamplingSubdivision(void)
Definition: patch.cc:479
Patch * next
Definition: patch.h:83
REAL sidestep[2]
Definition: patch.h:48
int needsNonSamplingSubdivision(void)
Definition: patch.cc:485
Definition: patch.h:62
REAL bpts[MAXORDER *MAXORDER *MAXCOORDS]
Definition: patch.h:89
#define MAXORDER
Definition: defines.h:45
void bbox(void)
Definition: patch.cc:245
Patchspec pspec[2]
Definition: patch.h:90
int notInBbox
Definition: patch.h:85
Definition: patch.h:46
void clamp(REAL)
Definition: patch.cc:224
void clamp(void)
Definition: patch.cc:215
void getstepsize(REAL)
Definition: patch.cc:469
GLenum GLint * range
Definition: glext.h:7539
REAL cpts[MAXORDER *MAXORDER *MAXCOORDS]
Definition: patch.h:87
REAL minstepsize
Definition: patch.h:50
int needsSampling
Definition: patch.h:86
REAL bb[2][MAXCOORDS]
Definition: patch.h:92
int needsSubdivision
Definition: patch.h:51
REAL stepsize
Definition: patch.h:49
#define MAXCOORDS
Definition: defines.h:48
float REAL
Definition: types.h:41
Mapdesc * mapdesc
Definition: patch.h:82
Patch(Quilt *, REAL *, REAL *, Patch *)
int cullCheck(void)
Definition: patch.cc:497