]> de.git.xonotic.org Git - xonotic/netradiant.git/blob - contrib/gtkgensurf/heretic.cpp
Revert partially (auto) "reformat code! now the code is only ugly on the *inside*"
[xonotic/netradiant.git] / contrib / gtkgensurf / heretic.cpp
1 /*
2    GenSurf plugin for GtkRadiant
3    Copyright (C) 2001 David Hyde, Loki software and qeradiant.com
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 #include <stdlib.h>
21 #include <math.h>
22 #include <stdio.h>
23 #include "gensurf.h"
24
25 // Heretic 2 - specific routines
26
27 typedef struct palette_s
28 {
29         guint8 r,g,b;
30 } palette_t;
31
32 #define MIP_VERSION     2
33 #define PAL_SIZE        256
34 #define MIPLEVELS       16
35
36 typedef struct miptex_s
37 {
38         int version;
39         char name[32];
40         unsigned width[MIPLEVELS], height[MIPLEVELS];
41         unsigned offsets[MIPLEVELS];        // four mip maps stored
42         char animname[32];                  // next frame in animation chain
43         palette_t palette[PAL_SIZE];
44         int flags;
45         int contents;
46         int value;
47 } miptex_t;
48
49 //=============================================================
50 int GetDefSurfaceProps( char *Tex ){
51         return 0; // leo: only used for Heretic 2, fix later
52         /*
53            char         path[NAME_MAX];
54            char        *p;
55            int         flags;
56            miptex_t     *mt;
57            FILE     *f;
58            int         length;
59            int         pos;
60
61            if(Game != HERETIC2) return 0;
62            if(!strlen(Tex)) return 0;
63
64            mt = NULL;
65            flags = 0;
66            if(UsePak[Game])
67            {
68               FILE         *fpak;
69               pak_header_t pakheader;
70               pak_item_t   pakitem;
71               int          i;
72               int          num;
73               int          numitems;
74
75               if (NULL != (fpak = fopen(pakfile[Game], "rb")))
76               {
77                   sprintf(path,"textures/%s.m8",Tex);
78                   g_strdown(path);
79                   num=fread(&pakheader,1,sizeof(pak_header_t),fpak);
80                   if((size_t)num < sizeof(pak_header_t))
81                   {
82                       fclose(fpak);
83                       return 0;
84                   }
85                   if(strncmp(pakheader.id,"PACK",4))
86                   {
87                       fclose(fpak);
88                       return 0;
89                   }
90                   numitems = pakheader.dsize/sizeof(pak_item_t);
91                   fseek(fpak,pakheader.dstart,SEEK_SET);
92                   for(i=0; i<numitems; i++)
93                   {
94                       fread(&pakitem,1,sizeof(pak_item_t),fpak);
95                       if(strstr(pakitem.name,path))
96                       {
97                           fseek(fpak,pakitem.start,SEEK_SET);
98                           if((mt = (miptex_t*)malloc(sizeof(miptex_t)))==NULL)
99                           {
100                               fclose(fpak);
101                               return 0;
102                           }
103                           else
104                           {
105                               fread(mt, 1, sizeof(miptex_t), fpak);
106                               flags = mt->flags;
107                               free(mt);
108                           }
109                       }
110                   }
111                   fclose(fpak);
112               }
113            }
114            else
115            {
116               // Assume .map will be output to gamedir/maps, then back up
117               // to the gamedir and append /textures. Ugly but it should work
118               strcpy(path,gszMapFile);
119               g_strdown(path);
120               p = strstr(path,"maps");
121               if(!p) return 0;
122               p[0] = '\0';
123               strcat(path,"textures/");
124               strcat(path,Tex);
125               strcat(path,".m8");
126               f = fopen (path, "rb");
127               if (!f)
128                   flags = 0;
129               else
130               {
131                   pos = ftell (f);
132                   fseek (f, 0, SEEK_END);
133                   length = ftell (f);
134                   fseek (f, pos, SEEK_SET);
135                   if((mt = (miptex_t*)malloc(length+1))==NULL)
136                       flags = 0;
137                   else
138                   {
139                       ((char *)mt)[length] = 0;
140                       fread(mt, 1, length, f);
141                       fclose (f);
142                       flags = mt->flags;
143                       free(mt);
144                   }
145               }
146            }
147            return flags;
148          */
149 }