style cleanup: follow style guide for formatting of if/for/while loops, and else...
[blender.git] / source / blender / imbuf / intern / bmp.c
index ada5fcebf73c7f6c4e66668f349b5b6102c1c721..768aa51874294bae4359b84bcdbabfacefcdc7e9 100644 (file)
@@ -1,6 +1,4 @@
-/**
- * $Id$
- *
+/*
  * ***** BEGIN GPL LICENSE BLOCK *****
  *
  * This program is free software; you can redistribute it and/or
@@ -15,7 +13,7 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  *
  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
  * All rights reserved.
  * ***** END GPL LICENSE BLOCK *****
  */
 
+/** \file blender/imbuf/intern/bmp.c
+ *  \ingroup imbuf
+ */
+
+
 #include "BLI_blenlib.h"
 
 #include "imbuf.h"
-#include "imbuf_patch.h"
 
 #include "IMB_imbuf_types.h"
 #include "IMB_imbuf.h"
 #include "IMB_allocimbuf.h"
-#include "IMB_cmap.h"
-#include "IMB_bmp.h"
+#include "IMB_filetype.h"
 
 /* some code copied from article on microsoft.com, copied
-  here for enhanced BMP support in the future
-  http://www.microsoft.com/msj/defaultframe.asp?page=/msj/0197/mfcp1/mfcp1.htm&nav=/msj/0197/newnav.htm
-*/
* here for enhanced BMP support in the future
* http://www.microsoft.com/msj/defaultframe.asp?page=/msj/0197/mfcp1/mfcp1.htm&nav=/msj/0197/newnav.htm
+ */
 
 typedef struct BMPINFOHEADER{
        unsigned int    biSize;
@@ -77,7 +78,8 @@ static int checkbmp(unsigned char *mem)
                if ((mem[0] == 'B') && (mem[1] == 'M')) {
                        /* skip fileheader */
                        mem += BMP_FILEHEADER_SIZE;
-               } else {
+               }
+               else {
                }
 
                /* for systems where an int needs to be 4 bytes aligned */
@@ -98,20 +100,22 @@ static int checkbmp(unsigned char *mem)
        return(ret_val);
 }
 
-int imb_is_a_bmp(void *buf) {
-       
+int imb_is_a_bmp(unsigned char *buf)
+{
        return checkbmp(buf);
 }
 
-struct ImBuf *imb_bmp_decode(unsigned char *mem, int size, int flags)
+struct ImBuf *imb_bmp_decode(unsigned char *mem, size_t size, int flags)
 {
-       struct ImBuf *ibuf = 0;
+       struct ImBuf *ibuf = NULL;
        BMPINFOHEADER bmi;
        int x, y, depth, skip, i;
        unsigned char *bmp, *rect;
        unsigned short col;
+       
+       (void)size; /* unused */
 
-       if (checkbmp(mem) == 0) return(0);
+       if (checkbmp(mem) == 0) return(NULL);
 
        if ((mem[0] == 'B') && (mem[1] == 'M')) {
                /* skip fileheader */
@@ -126,14 +130,18 @@ struct ImBuf *imb_bmp_decode(unsigned char *mem, int size, int flags)
        y = LITTLE_LONG(bmi.biHeight);
        depth = LITTLE_SHORT(bmi.biBitCount);
 
-       /* printf("skip: %d, x: %d y: %d, depth: %d (%x)\n", skip, x, y, 
-               depth, bmi.biBitCount); */
-       /* printf("skip: %d, x: %d y: %d, depth: %d (%x)\n", skip, x, y, 
-               depth, bmi.biBitCount); */
+#if 0
+       printf("skip: %d, x: %d y: %d, depth: %d (%x)\n", skip, x, y,
+              depth, bmi.biBitCount);
+       printf("skip: %d, x: %d y: %d, depth: %d (%x)\n", skip, x, y,
+              depth, bmi.biBitCount);
+#endif
+
        if (flags & IB_test) {
-               ibuf = IMB_allocImBuf(x, y, depth, 0, 0);
-       } else {
-               ibuf = IMB_allocImBuf(x, y, depth, IB_rect, 0);
+               ibuf = IMB_allocImBuf(x, y, depth, 0);
+       }
+       else {
+               ibuf = IMB_allocImBuf(x, y, depth, IB_rect);
                bmp = mem + skip;
                rect = (unsigned char *) ibuf->rect;
 
@@ -148,7 +156,8 @@ struct ImBuf *imb_bmp_decode(unsigned char *mem, int size, int flags)
                                rect += 4; bmp += 2;
                        }
 
-               } else if (depth == 24) {
+               }
+               else if (depth == 24) {
                        for (i = y; i > 0; i--) {
                                int j;
                                for (j = x ; j > 0; j--) {
@@ -162,7 +171,8 @@ struct ImBuf *imb_bmp_decode(unsigned char *mem, int size, int flags)
                                /* for 24-bit images, rows are padded to multiples of 4 */
                                bmp += x % 4;   
                        }
-               } else if (depth == 32) {
+               }
+               else if (depth == 32) {
                        for (i = x * y; i > 0; i--) {
                                rect[0] = bmp[2];
                                rect[1] = bmp[1];
@@ -182,32 +192,36 @@ struct ImBuf *imb_bmp_decode(unsigned char *mem, int size, int flags)
 }
 
 /* Couple of helper functions for writing our data */
-static int putIntLSB(unsigned int ui,FILE *ofile) { 
+static int putIntLSB(unsigned int ui,FILE *ofile)
+{
        putc((ui>>0)&0xFF,ofile); 
        putc((ui>>8)&0xFF,ofile); 
        putc((ui>>16)&0xFF,ofile); 
        return putc((ui>>24)&0xFF,ofile); 
 }
 
-static int putShortLSB(unsigned short us,FILE *ofile) { 
+static int putShortLSB(unsigned short us,FILE *ofile)
+{
        putc((us>>0)&0xFF,ofile); 
        return putc((us>>8)&0xFF,ofile); 
 } 
 
 /* Found write info at http://users.ece.gatech.edu/~slabaugh/personal/c/bitmapUnix.c */
-short imb_savebmp(struct ImBuf *ibuf, char *name, int flags) {
-
+int imb_savebmp(struct ImBuf *ibuf, const char *name, int flags)
+{
        BMPINFOHEADER infoheader;
        int bytesize, extrabytes, x, y, t, ptr;
        uchar *data;
        FILE *ofile;
+       
+       (void)flags; /* unused */
 
        extrabytes = (4 - ibuf->x*3 % 4) % 4;
        bytesize = (ibuf->x * 3 + extrabytes) * ibuf->y;
 
        data = (uchar *) ibuf->rect;
-       ofile = fopen(name,"wb");
-        if (!ofile) return 0;
+       ofile = BLI_fopen(name,"wb");
+               if (!ofile) return 0;
 
        putShortLSB(19778,ofile); /* "BM" */
        putIntLSB(0,ofile); /* This can be 0 for BI_RGB bitmaps */