]> de.git.xonotic.org Git - voretournament/voretournament.git/blobdiff - misc/mediasource/netradiant-src/tools/quake2/qdata_heretic2/pics.c
Move the netradiant and fteqcc sources
[voretournament/voretournament.git] / misc / mediasource / netradiant-src / tools / quake2 / qdata_heretic2 / pics.c
diff --git a/misc/mediasource/netradiant-src/tools/quake2/qdata_heretic2/pics.c b/misc/mediasource/netradiant-src/tools/quake2/qdata_heretic2/pics.c
new file mode 100644 (file)
index 0000000..61ecfb5
--- /dev/null
@@ -0,0 +1,198 @@
+/*
+Copyright (C) 1999-2006 Id Software, Inc. and contributors.
+For a list of contributors, see the accompanying CONTRIBUTORS file.
+
+This file is part of GtkRadiant.
+
+GtkRadiant is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+GtkRadiant is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GtkRadiant; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+
+#include "qdata.h"
+
+byte                   *byteimage, *lbmpalette;
+int                            byteimagewidth, byteimageheight;
+
+qboolean               TrueColorImage;
+unsigned               *longimage;
+int                            longimagewidth, longimageheight;
+
+char                   pic_prefix[1024];
+extern         char            *g_outputDir;
+
+/*
+===============
+Cmd_Pic
+===============
+*/
+
+void Cmd_Pic (void)
+{
+       int             xl,yl,xh,yh,w,h;
+       byte            *dest, *source;
+       int                             flags, value, contents;
+       char                    lumpname[128];
+       char                    animname[128];
+       byte                    buffer[256*256];
+       unsigned                bufferl[256*256];
+       char                    filename[1024];
+       unsigned        *destl, *sourcel;
+       int             linedelta, x, y;
+       int                             size;
+       miptex_t                *qtex;
+       miptex32_t              *qtex32;
+       float                   scale_x, scale_y;
+
+       GetScriptToken (false);
+       strcpy (lumpname, token);
+       
+       GetScriptToken (false);
+       xl = atoi (token);
+       GetScriptToken (false);
+       yl = atoi (token);
+       GetScriptToken (false);
+       w = atoi (token);
+       GetScriptToken (false);
+       h = atoi (token);
+
+       total_x += w;
+       total_y += h;
+       total_textures++;
+
+       if ( (w & 7) || (h & 7) )
+               Error ("line %i: miptex sizes must be multiples of 8", scriptline);
+
+       flags = 0;
+       contents = 0;
+       value = 0;
+
+       animname[0] = 0;
+
+       scale_x = scale_y = 0.5;
+
+       if (TrueColorImage)
+       {
+               sprintf (filename, "%spics/%s/%s.m32", g_outputDir, pic_prefix, lumpname);
+               if (g_release)
+                       return; // textures are only released by $maps
+
+               xh = xl+w;
+               yh = yl+h;
+
+               if (xl >= longimagewidth || xh > longimagewidth ||
+                       yl >= longimageheight || yh > longimageheight)
+               {
+                       Error ("line %i: bad clip dimmensions (%d,%d) (%d,%d) > image (%d,%d)", scriptline, xl,yl,w,h,longimagewidth,longimageheight);
+               }
+
+               sourcel = longimage + (yl*longimagewidth) + xl;
+               destl = bufferl;
+               linedelta = (longimagewidth - w);
+
+               for (y=yl ; y<yh ; y++)
+               {
+                       for (x=xl ; x<xh ; x++)
+                       {
+                               *destl++ = *sourcel++;  // RGBA
+                       }
+                       sourcel += linedelta;
+               }
+
+               qtex32 = CreateMip32(bufferl, w, h, &size, false);
+
+               qtex32->flags |= LittleLong(flags);
+               qtex32->contents = contents;
+               qtex32->value = value;
+               qtex32->scale_x = scale_x;
+               qtex32->scale_y = scale_y;
+               sprintf (qtex32->name, "%s/%s", pic_prefix, lumpname);
+               if (animname[0])
+                       sprintf (qtex32->animname, "%s/%s", pic_prefix, animname);
+               
+       //
+       // write it out
+       //
+               printf ("writing %s\n", filename);
+               SaveFile (filename, (byte *)qtex32, size);
+
+               free (qtex32);
+       }
+       else
+       {
+               sprintf (filename, "%spics/%s/%s.m8", g_outputDir, pic_prefix, lumpname);
+               if (g_release)
+                       return; // textures are only released by $maps
+
+               xh = xl+w;
+               yh = yl+h;
+
+               if (xl >= byteimagewidth || xh > byteimagewidth ||
+                       yl >= byteimageheight || yh > byteimageheight)
+               {
+                       Error ("line %i: bad clip dimmensions (%d,%d) (%d,%d) > image (%d,%d)", scriptline, xl,yl,w,h,byteimagewidth,byteimageheight);
+               }
+
+               source = byteimage + yl*byteimagewidth + xl;
+               dest = buffer;
+               linedelta = byteimagewidth - w;
+
+               for (y=yl ; y<yh ; y++)
+               {
+                       for (x=xl ; x<xh ; x++)
+                       {
+                               *dest++ = *source++;
+                       }
+                       source += linedelta;
+               }
+
+               qtex = CreateMip(buffer, w, h, lbmpalette, &size, false);
+
+               qtex->flags = flags;
+               qtex->contents = contents;
+               qtex->value = value;
+               sprintf (qtex->name, "%s/%s", pic_prefix, lumpname);
+               if (animname[0])
+                       sprintf (qtex->animname, "%s/%s", pic_prefix, animname);
+               
+       //
+       // write it out
+       //
+               printf ("writing %s\n", filename);
+               SaveFile (filename, (byte *)qtex, size);
+
+               free (qtex);
+       }
+}
+
+
+/*
+===============
+Cmd_picdir
+===============
+*/
+void Cmd_Picdir (void)
+{
+       char    filename[1024];
+
+       GetScriptToken (false);
+       strcpy (pic_prefix, token);
+       // create the directory if needed
+       sprintf (filename, "%sPics", g_outputDir);
+       Q_mkdir (filename); 
+       sprintf (filename, "%sPics/%s", g_outputDir, pic_prefix);
+       Q_mkdir (filename); 
+}
+
+