]> de.git.xonotic.org Git - xonotic/netradiant.git/blob - contrib/bobtoolz/DWinding.h
transfer from internal tree r5311 branches/1.4-gpl
[xonotic/netradiant.git] / contrib / bobtoolz / DWinding.h
1 /*\r
2 BobToolz plugin for GtkRadiant\r
3 Copyright (C) 2001 Gordon Biggans\r
4 \r
5 This library is free software; you can redistribute it and/or\r
6 modify it under the terms of the GNU Lesser General Public\r
7 License as published by the Free Software Foundation; either\r
8 version 2.1 of the License, or (at your option) any later version.\r
9 \r
10 This library is distributed in the hope that it will be useful,\r
11 but WITHOUT ANY WARRANTY; without even the implied warranty of\r
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
13 Lesser General Public License for more details.\r
14 \r
15 You should have received a copy of the GNU Lesser General Public\r
16 License along with this library; if not, write to the Free Software\r
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
18 */\r
19 \r
20 // DWinding.h: interface for the DWinding class.\r
21 //\r
22 //////////////////////////////////////////////////////////////////////\r
23 \r
24 #if !defined(AFX_DWINDING_H__35B2C524_F0A7_11D4_ACF7_004095A18133__INCLUDED_)\r
25 #define AFX_DWINDING_H__35B2C524_F0A7_11D4_ACF7_004095A18133__INCLUDED_\r
26 \r
27 #if _MSC_VER > 1000\r
28 #pragma once\r
29 #endif // _MSC_VER > 1000\r
30 \r
31 class DPlane;\r
32 \r
33 class DWinding  \r
34 {\r
35 public:\r
36         DWinding();\r
37         virtual ~DWinding();\r
38 \r
39         void AllocWinding(int points);\r
40 \r
41         bool ChopWinding(DPlane* chopPlane);\r
42         bool ChopWindingInPlace(DPlane* chopPlane, vec_t ON_EPSILON);\r
43         void ClipWindingEpsilon(DPlane* chopPlane, vec_t epsilon, DWinding** front, DWinding** back);\r
44 \r
45         void CheckWinding();\r
46         void WindingCentre(vec3_t centre);\r
47         void WindingBounds(vec3_t mins, vec3_t maxs);\r
48         void RemoveColinearPoints();\r
49 \r
50         DWinding* ReverseWinding();\r
51         DWinding* CopyWinding();\r
52         DPlane* WindingPlane();\r
53 \r
54         int WindingOnPlaneSide(vec3_t normal, vec_t dist);\r
55 \r
56         vec_t WindingArea();\r
57 \r
58 //      members\r
59         int             numpoints;\r
60         vec3_t* p;\r
61   vec3_t  clr;\r
62 };\r
63 \r
64 #define MAX_POINTS_ON_WINDING   64\r
65 \r
66 #define ON_EPSILON      0.01\r
67 \r
68 #endif // !defined(AFX_DWINDING_H__35B2C524_F0A7_11D4_ACF7_004095A18133__INCLUDED_)\r