]> de.git.xonotic.org Git - xonotic/netradiant.git/blob - contrib/bobtoolz/DPatch.h
Merge branch 'NateEag-master-patch-12920' into 'master'
[xonotic/netradiant.git] / contrib / bobtoolz / DPatch.h
1 /*
2    BobToolz plugin for GtkRadiant
3    Copyright (C) 2001 Gordon Biggans
4
5    This library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Lesser General Public
7    License as published by the Free Software Foundation; either
8    version 2.1 of the License, or (at your option) any later version.
9
10    This library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Lesser General Public License for more details.
14
15    You should have received a copy of the GNU Lesser General Public
16    License along with this library; if not, write to the Free Software
17    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18  */
19
20 // DPatch.h: interface for the DPatch class.
21 //
22 //////////////////////////////////////////////////////////////////////
23
24 #if !defined( AFX_DPATCH_H__26C6B083_CE5B_420B_836B_1DDA733C04CE__INCLUDED_ )
25 #define AFX_DPATCH_H__26C6B083_CE5B_420B_836B_1DDA733C04CE__INCLUDED_
26
27 #include <list>
28 #include <stdlib.h>
29
30 typedef struct
31 {
32         bool mergable;
33         int pos1;
34         int pos2;
35 } patch_merge_t;
36
37 typedef struct {
38         float xyz[3];
39         float st[2];
40         float normal[3];
41         float lightmap[2];
42 } drawVert_t;
43
44 namespace scene
45 {
46 class Node;
47 class Instance;
48 }
49
50 const int MAX_PATCH_WIDTH = 32;
51 const int MAX_PATCH_HEIGHT = 32;
52 const int MIN_PATCH_WIDTH = 3;
53 const int MIN_PATCH_HEIGHT = 3;
54
55 class DPatch
56 {
57 public:
58 std::list<DPatch> SplitRows();
59 std::list<DPatch> SplitCols();
60 std::list<DPatch> Split();
61 void Transpose();
62 //DPatch* TransposePatch(DPatch* p1);
63 //void DebugPrint();
64 void Invert();
65 DPatch* MergePatches( patch_merge_t merge_info, DPatch* p1, DPatch* p2 );
66 patch_merge_t IsMergable( DPatch* other );
67 bool ResetTextures( const char *oldTextureName, const char *newTextureName );
68 scene::Node* QER_entity;
69 scene::Node* QER_brush;
70 void LoadFromPatch( scene::Instance& patch );
71 void BuildInRadiant( scene::Node* entity = NULL );
72 void SetTexture( const char* textureName );
73 char texture[256];
74 int width, height;
75 drawVert_t points[MAX_PATCH_WIDTH][MAX_PATCH_HEIGHT];
76 DPatch();
77 virtual ~DPatch();
78
79 };
80
81 #endif // !defined(AFX_DPATCH_H__26C6B083_CE5B_420B_836B_1DDA733C04CE__INCLUDED_)