]> de.git.xonotic.org Git - xonotic/netradiant.git/blob - plugins/imagem8/m32.cpp
transfer from internal tree r5311 branches/1.4-gpl
[xonotic/netradiant.git] / plugins / imagem8 / m32.cpp
1 /*\r
2 Copyright (C) 1999-2007 id Software, Inc. and contributors.\r
3 For a list of contributors, see the accompanying CONTRIBUTORS file.\r
4 \r
5 This file is part of GtkRadiant.\r
6 \r
7 GtkRadiant is free software; you can redistribute it and/or modify\r
8 it under the terms of the GNU General Public License as published by\r
9 the Free Software Foundation; either version 2 of the License, or\r
10 (at your option) any later version.\r
11 \r
12 GtkRadiant is distributed in the hope that it will be useful,\r
13 but WITHOUT ANY WARRANTY; without even the implied warranty of\r
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
15 GNU General Public License for more details.\r
16 \r
17 You should have received a copy of the GNU General Public License\r
18 along with GtkRadiant; if not, write to the Free Software\r
19 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA\r
20 */\r
21 \r
22 #include <stdio.h>\r
23 #include <string.h>\r
24 #include <glib.h>\r
25 #include "m32.h"\r
26 \r
27 void LoadM32(const char *name, unsigned char **pic, int *width, int *height)\r
28 {\r
29     FILE        *f;\r
30     m32_header_t        *m32_header;\r
31     //rgb_t     *palette;\r
32     int         i, num_pixels, size;\r
33     char        text_buf[255];\r
34     unsigned int        length;\r
35     unsigned char       *palette_ent, *buf_temp;\r
36     unsigned char       *buffer, *m32_file_buffer;\r
37 \r
38     // open file\r
39     if ( length = vfsLoadFile ((char *) name, (void **) &m32_file_buffer) == (unsigned int) -1)\r
40     {\r
41         Sys_Printf("Unable to open file %s\n",name);\r
42         return;\r
43     }\r
44 \r
45     m32_header = (m32_header_t *)m32_file_buffer;\r
46 \r
47     // make sure we have a valid bitmap file\r
48     if ( m32_header->version != M32_VERSION)\r
49     {\r
50             vfsFreeFile(m32_file_buffer);\r
51             Sys_Printf("Invalid M32 file %s\n", name);\r
52     }\r
53 \r
54     // Get M32 Info\r
55     *width    = m32_header->width[0];           // Only interested in 1st MIP\r
56     *height   = m32_header->height[0];\r
57     num_pixels = (*width) * (*height);\r
58     size = num_pixels*4;\r
59 \r
60     // Allocate buffer\r
61     buf_temp = (unsigned char *)(g_malloc(size));\r
62     *pic = buf_temp;\r
63 \r
64     // Image data\r
65     buffer = m32_file_buffer + m32_header->offsets[0];\r
66 \r
67 \r
68     // Load texture into buffer\r
69     palette_ent = buffer;\r
70     for(i=0; i<size; i++, palette_ent++)\r
71     {\r
72         *buf_temp++ = *palette_ent;\r
73     }\r
74 \r
75     vfsFreeFile(m32_file_buffer);\r
76 }\r
77 \r