Cycles: svn merge -r41225:41232 ^/trunk/blender
[blender.git] / intern / cycles / subd / subd_edge.h
1 /*
2  * Original code in the public domain -- castanyo@yahoo.es
3  * 
4  * Modifications copyright (c) 2011, Blender Foundation.
5  * All rights reserved.
6  * 
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions are
9  * met:
10  * * Redistributions of source code must retain the above copyright
11  *   notice, this list of conditions and the following disclaimer.
12  * * Redistributions in binary form must reproduce the above copyright
13  *   notice, this list of conditions and the following disclaimer in the
14  *   documentation and/or other materials provided with the distribution.
15  * 
16  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20  * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  */
28
29 #ifndef __SUBD_EDGE_H__
30 #define __SUBD_EDGE_H__
31
32 #include "subd_mesh.h"
33
34 CCL_NAMESPACE_BEGIN
35
36 /* Subd Half Edge */
37
38 class SubdEdge
39 {
40 public:
41         int id;
42         
43         SubdEdge *next;
44         SubdEdge *prev;
45         SubdEdge *pair;
46         SubdVert *vert;
47         SubdFace *face;
48
49         SubdEdge(int id_)
50         {
51                 id = id_;
52                 next = NULL;
53                 prev = NULL;
54                 pair = NULL;
55                 vert = NULL;
56                 face = NULL;
57         }
58         
59         /* vertex queries */
60         SubdVert *from() { return vert; }
61         SubdVert *to() { return next->vert; }
62
63         /* face queries */
64         bool is_boundary() { return !(face && pair->face); }
65 };
66
67 CCL_NAMESPACE_END
68
69 #endif /* __SUBD_EDGE_H__ */
70