]> git.xonotic.org Git - xonotic/netradiant.git/blobdiff - plugins/image/pcx.cpp
reformat code! now the code is only ugly on the *inside*
[xonotic/netradiant.git] / plugins / image / pcx.cpp
index 8853cb49cc4de85d118688f999bd4018b976c762..8d658a7994228332c144d29f03dd62c412d4cfff 100644 (file)
@@ -1,23 +1,23 @@
 /*
-Copyright (C) 1999-2006 Id Software, Inc. and contributors.
-For a list of contributors, see the accompanying CONTRIBUTORS file.
+   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.
+   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 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.
+   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
-*/
+   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 "pcx.h"
 
@@ -31,192 +31,181 @@ typedef unsigned char byte;
 #include "bytestreamutils.h"
 
 /*
-=================================================================
-
-PCX LOADING
-
-=================================================================
-*/
-
-typedef struct
-{
-  unsigned char manufacturer;
-  unsigned char version;
-  unsigned char encoding;
-  unsigned char bits_per_pixel;
-  unsigned short xmin, ymin, xmax, ymax;
-  unsigned short hres, vres;
-  unsigned char palette[48];
-  unsigned char reserved;
-  unsigned char color_planes;
-  unsigned short bytes_per_line;
-  unsigned short palette_type;
-  unsigned char filler[58];
-  unsigned char data;          // unbounded
+   =================================================================
+
+   PCX LOADING
+
+   =================================================================
+ */
+
+typedef struct {
+    unsigned char manufacturer;
+    unsigned char version;
+    unsigned char encoding;
+    unsigned char bits_per_pixel;
+    unsigned short xmin, ymin, xmax, ymax;
+    unsigned short hres, vres;
+    unsigned char palette[48];
+    unsigned char reserved;
+    unsigned char color_planes;
+    unsigned short bytes_per_line;
+    unsigned short palette_type;
+    unsigned char filler[58];
+    unsigned char data;     // unbounded
 } pcx_t;
 
 /*
-==============
-LoadPCX
-==============
-*/
-
-struct PCXRLEPacket
-{
-  byte data;
-  int length;
+   ==============
+   LoadPCX
+   ==============
+ */
+
+struct PCXRLEPacket {
+    byte data;
+    int length;
 };
 
-inline void ByteStream_readPCXRLEPacket(PointerInputStream& inputStream, PCXRLEPacket& packet)
+inline void ByteStream_readPCXRLEPacket(PointerInputStream &inputStream, PCXRLEPacket &packet)
 {
-  byte d;
-  inputStream.read(&d, 1);
-  if((d & 0xC0) == 0xC0)
-  {
-    packet.length = d & 0x3F;
-    inputStream.read(&packet.data, 1); 
-  }
-  else
-  {
-    packet.length = 1;
-    packet.data = d;
-  }
+    byte d;
+    inputStream.read(&d, 1);
+    if ((d & 0xC0) == 0xC0) {
+        packet.length = d & 0x3F;
+        inputStream.read(&packet.data, 1);
+    } else {
+        packet.length = 1;
+        packet.data = d;
+    }
 }
 
-void LoadPCXBuff(byte* buffer, std::size_t len, byte **pic, byte **palette, int *width, int *height )
+void LoadPCXBuff(byte *buffer, std::size_t len, byte **pic, byte **palette, int *width, int *height)
 {
-  *pic = 0;
-
-  pcx_t        pcx;
-  int          x, y, lsize;
-  byte *out, *pix;
-
-  /* parse the PCX file */
-
-  PointerInputStream inputStream(buffer);
-  
-  pcx.manufacturer = istream_read_byte(inputStream);
-  pcx.version = istream_read_byte(inputStream);
-  pcx.encoding = istream_read_byte(inputStream);
-  pcx.bits_per_pixel = istream_read_byte(inputStream);
-  pcx.xmin = istream_read_int16_le(inputStream);
-  pcx.ymin = istream_read_int16_le(inputStream);
-  pcx.xmax = istream_read_int16_le(inputStream);
-  pcx.ymax = istream_read_int16_le(inputStream);
-  pcx.hres = istream_read_int16_le(inputStream);
-  pcx.vres = istream_read_int16_le(inputStream);
-  inputStream.read(pcx.palette, 48);
-  pcx.reserved = istream_read_byte(inputStream);
-  pcx.color_planes = istream_read_byte(inputStream);
-  pcx.bytes_per_line = istream_read_int16_le(inputStream);
-  pcx.palette_type = istream_read_int16_le(inputStream);
-  inputStream.read(pcx.filler, 58);
-
-  
-  if (pcx.manufacturer != 0x0a
-    || pcx.version != 5
-    || pcx.encoding != 1
-    || pcx.bits_per_pixel != 8)
-    return;
-
-  if (width)
-    *width = pcx.xmax+1;
-  if (height)
-    *height = pcx.ymax+1;
-
-  if (!pic)
-    return;
-
-  out = (byte *)malloc ( (pcx.ymax+1) * (pcx.xmax+1) );
-
-  *pic = out;
-  pix = out;
-       
-  /* RR2DO2: pcx fix  */
-  lsize = pcx.color_planes * pcx.bytes_per_line;
-       
-  /* go scanline by scanline */
-  for( y = 0; y <= pcx.ymax; y++, pix += pcx.xmax + 1 )
-  {
-    /* do a scanline */
-    for( x=0; x <= pcx.xmax; )
-    {
-      /* RR2DO2 */
-      PCXRLEPacket packet;
-      ByteStream_readPCXRLEPacket(inputStream, packet);
-      
-      while(packet.length-- > 0)
-      {
-        pix[ x++ ] = packet.data;
-      }
+    *pic = 0;
+
+    pcx_t pcx;
+    int x, y, lsize;
+    byte *out, *pix;
+
+    /* parse the PCX file */
+
+    PointerInputStream inputStream(buffer);
+
+    pcx.manufacturer = istream_read_byte(inputStream);
+    pcx.version = istream_read_byte(inputStream);
+    pcx.encoding = istream_read_byte(inputStream);
+    pcx.bits_per_pixel = istream_read_byte(inputStream);
+    pcx.xmin = istream_read_int16_le(inputStream);
+    pcx.ymin = istream_read_int16_le(inputStream);
+    pcx.xmax = istream_read_int16_le(inputStream);
+    pcx.ymax = istream_read_int16_le(inputStream);
+    pcx.hres = istream_read_int16_le(inputStream);
+    pcx.vres = istream_read_int16_le(inputStream);
+    inputStream.read(pcx.palette, 48);
+    pcx.reserved = istream_read_byte(inputStream);
+    pcx.color_planes = istream_read_byte(inputStream);
+    pcx.bytes_per_line = istream_read_int16_le(inputStream);
+    pcx.palette_type = istream_read_int16_le(inputStream);
+    inputStream.read(pcx.filler, 58);
+
+
+    if (pcx.manufacturer != 0x0a
+        || pcx.version != 5
+        || pcx.encoding != 1
+        || pcx.bits_per_pixel != 8) {
+        return;
     }
 
-    /* RR2DO2: discard any other data */
-    PCXRLEPacket packet;
-    while( x < lsize )
-    {
-      ByteStream_readPCXRLEPacket(inputStream, packet);
-      x++;
+    if (width) {
+        *width = pcx.xmax + 1;
     }
-    while( packet.length-- > 0 )
-    {
-      x++;
+    if (height) {
+        *height = pcx.ymax + 1;
+    }
+
+    if (!pic) {
+        return;
     }
-  }
-       
-  /* validity check */
-  if( std::size_t(inputStream.get() - buffer) > len)
-  {
-    *pic = 0;
-  }
 
-  if (palette)
-  {
-    *palette = (byte *)malloc(768);
-    memcpy (*palette, buffer + len - 768, 768);
-  }
+    out = (byte *) malloc((pcx.ymax + 1) * (pcx.xmax + 1));
+
+    *pic = out;
+    pix = out;
+
+    /* RR2DO2: pcx fix  */
+    lsize = pcx.color_planes * pcx.bytes_per_line;
+
+    /* go scanline by scanline */
+    for (y = 0; y <= pcx.ymax; y++, pix += pcx.xmax + 1) {
+        /* do a scanline */
+        for (x = 0; x <= pcx.xmax;) {
+            /* RR2DO2 */
+            PCXRLEPacket packet;
+            ByteStream_readPCXRLEPacket(inputStream, packet);
+
+            while (packet.length-- > 0) {
+                pix[x++] = packet.data;
+            }
+        }
+
+        /* RR2DO2: discard any other data */
+        PCXRLEPacket packet;
+        while (x < lsize) {
+            ByteStream_readPCXRLEPacket(inputStream, packet);
+            x++;
+        }
+        while (packet.length-- > 0) {
+            x++;
+        }
+    }
+
+    /* validity check */
+    if (std::size_t(inputStream.get() - buffer) > len) {
+        *pic = 0;
+    }
+
+    if (palette) {
+        *palette = (byte *) malloc(768);
+        memcpy(*palette, buffer + len - 768, 768);
+    }
 }
 
 /*
-==============
-LoadPCX32
-==============
-*/
-Image* LoadPCX32Buff(byte* buffer, std::size_t length)
+   ==============
+   LoadPCX32
+   ==============
+ */
+Image *LoadPCX32Buff(byte *buffer, std::size_t length)
 {
-  byte *palette;
-  byte *pic8;
-  int i, c, p, width, height;
-  byte *pic32;
-
-  LoadPCXBuff(buffer, length, &pic8, &palette, &width, &height);
-  if (!pic8)
-  {
-    return 0;
-  }
-
-  RGBAImage* image = new RGBAImage(width, height);
-  c = (width) * (height);
-  pic32 = image->getRGBAPixels();
-  for (i = 0; i < c; i++)
-  {
-    p = pic8[i];
-    pic32[0] = palette[p * 3];
-    pic32[1] = palette[p * 3 + 1];
-    pic32[2] = palette[p * 3 + 2];
-    pic32[3] = 255;
-    pic32 += 4;
-  }
-
-  free (pic8);
-  free (palette);
-
-  return image;
+    byte *palette;
+    byte *pic8;
+    int i, c, p, width, height;
+    byte *pic32;
+
+    LoadPCXBuff(buffer, length, &pic8, &palette, &width, &height);
+    if (!pic8) {
+        return 0;
+    }
+
+    RGBAImage *image = new RGBAImage(width, height);
+    c = (width) * (height);
+    pic32 = image->getRGBAPixels();
+    for (i = 0; i < c; i++) {
+        p = pic8[i];
+        pic32[0] = palette[p * 3];
+        pic32[1] = palette[p * 3 + 1];
+        pic32[2] = palette[p * 3 + 2];
+        pic32[3] = 255;
+        pic32 += 4;
+    }
+
+    free(pic8);
+    free(palette);
+
+    return image;
 }
 
-Image* LoadPCX32(ArchiveFile& file)
+Image *LoadPCX32(ArchiveFile &file)
 {
-  ScopedArchiveBuffer buffer(file);
-  return LoadPCX32Buff(buffer.buffer, buffer.length);
+    ScopedArchiveBuffer buffer(file);
+    return LoadPCX32Buff(buffer.buffer, buffer.length);
 }
-