forked from bartvdbraak/blender
Rolled back comments. According to new guidelines, no .c files
should contain doxygen comments.
This commit is contained in:
parent
63537d1e77
commit
17ca22de62
@ -32,15 +32,6 @@
|
|||||||
* ***** END GPL/BL DUAL LICENSE BLOCK *****
|
* ***** END GPL/BL DUAL LICENSE BLOCK *****
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
|
||||||
* \file allocimbuf.c
|
|
||||||
* \ingroup imbuf
|
|
||||||
* \brief Handles de/allocating memory for ImBuf struct variables.
|
|
||||||
*
|
|
||||||
* This file uses free() and MEM_mallocN() to allocate and deallocate memory
|
|
||||||
* to the members of the ImBuf struct. It also zeroes out pointers and
|
|
||||||
* tracks buffer sizes.
|
|
||||||
*/
|
|
||||||
/* It's become a bit messy... Basically, only the IMB_ prefixed files
|
/* It's become a bit messy... Basically, only the IMB_ prefixed files
|
||||||
* should remain. */
|
* should remain. */
|
||||||
|
|
||||||
@ -57,9 +48,6 @@
|
|||||||
#include <config.h>
|
#include <config.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
|
||||||
* Default cmap. Used to initialize the ImBuf->cmap variable.
|
|
||||||
*/
|
|
||||||
static unsigned int dfltcmap[16] = {
|
static unsigned int dfltcmap[16] = {
|
||||||
0x00000000, 0xffffffff, 0x777777ff, 0xccccccff,
|
0x00000000, 0xffffffff, 0x777777ff, 0xccccccff,
|
||||||
0xcc3344ff, 0xdd8844ff, 0xccdd44ff, 0x888833ff,
|
0xcc3344ff, 0xdd8844ff, 0xccdd44ff, 0x888833ff,
|
||||||
@ -67,13 +55,6 @@ static unsigned int dfltcmap[16] = {
|
|||||||
0x8888ddff, 0x4433ccff, 0xcc33ccff, 0xcc88ddff
|
0x8888ddff, 0x4433ccff, 0xcc33ccff, 0xcc88ddff
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* \brief Clears memory associated to the ImBuf* ibuf->planes
|
|
||||||
*
|
|
||||||
* This function uses free() to de-allocate the memory associated with
|
|
||||||
* the planes member of the ImBuf struct, and sets the pointer to 0.
|
|
||||||
* The ibuf->mall also gets the IB_planes bit unset.
|
|
||||||
*/
|
|
||||||
void imb_freeplanesImBuf(struct ImBuf * ibuf)
|
void imb_freeplanesImBuf(struct ImBuf * ibuf)
|
||||||
{
|
{
|
||||||
if (ibuf==0) return;
|
if (ibuf==0) return;
|
||||||
@ -85,13 +66,6 @@ void imb_freeplanesImBuf(struct ImBuf * ibuf)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* \brief Clears memory associated to the ImBuf* ibuf->rect
|
|
||||||
*
|
|
||||||
* This function uses free() to de-allocate the memory associated with
|
|
||||||
* the rect member of the ImBuf struct, and sets the pointer to 0.
|
|
||||||
* The ibuf->mall also gets the IB_rect bit unset.
|
|
||||||
*/
|
|
||||||
void imb_freerectImBuf(struct ImBuf * ibuf)
|
void imb_freerectImBuf(struct ImBuf * ibuf)
|
||||||
{
|
{
|
||||||
if (ibuf==0) return;
|
if (ibuf==0) return;
|
||||||
@ -102,19 +76,6 @@ void imb_freerectImBuf(struct ImBuf * ibuf)
|
|||||||
ibuf->mall &= ~IB_rect;
|
ibuf->mall &= ~IB_rect;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* \brief Clears memory associated to the ImBuf* ibuf->encodedbuffer
|
|
||||||
*
|
|
||||||
* This function uses free() to de-allocate the memory associated with
|
|
||||||
* the encodedbuffer member of the ImBuf struct, and sets the following
|
|
||||||
* variables to 0:
|
|
||||||
*
|
|
||||||
* encodedbuffer
|
|
||||||
* encodedbuffersize
|
|
||||||
* encodedsize
|
|
||||||
*
|
|
||||||
* The ibuf->mall also gets the IB_mem bit unset.
|
|
||||||
*/
|
|
||||||
static void freeencodedbufferImBuf(struct ImBuf * ibuf)
|
static void freeencodedbufferImBuf(struct ImBuf * ibuf)
|
||||||
{
|
{
|
||||||
if (ibuf==0) return;
|
if (ibuf==0) return;
|
||||||
@ -127,13 +88,6 @@ static void freeencodedbufferImBuf(struct ImBuf * ibuf)
|
|||||||
ibuf->mall &= ~IB_mem;
|
ibuf->mall &= ~IB_mem;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* \brief Clears memory associated to the ImBuf* ibuf->zbuf
|
|
||||||
*
|
|
||||||
* This function uses free() to de-allocate the memory associated with
|
|
||||||
* the zbuf member of the ImBuf struct, and sets the pointer to 0.
|
|
||||||
* The ibuf->mall also gets the IB_zbuf bit unset.
|
|
||||||
*/
|
|
||||||
void IMB_freezbufImBuf(struct ImBuf * ibuf)
|
void IMB_freezbufImBuf(struct ImBuf * ibuf)
|
||||||
{
|
{
|
||||||
if (ibuf==0) return;
|
if (ibuf==0) return;
|
||||||
@ -144,13 +98,6 @@ void IMB_freezbufImBuf(struct ImBuf * ibuf)
|
|||||||
ibuf->mall &= ~IB_zbuf;
|
ibuf->mall &= ~IB_zbuf;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* \brief Clears memory associated to the ImBuf* ibuf->cmap
|
|
||||||
*
|
|
||||||
* This function uses free() to de-allocate the memory associated with
|
|
||||||
* the cmap member of the ImBuf struct, and sets the pointer to 0.
|
|
||||||
* The ibuf->mall also gets the IB_cmap bit unset.
|
|
||||||
*/
|
|
||||||
void IMB_freecmapImBuf(struct ImBuf * ibuf)
|
void IMB_freecmapImBuf(struct ImBuf * ibuf)
|
||||||
{
|
{
|
||||||
if (ibuf == 0) return;
|
if (ibuf == 0) return;
|
||||||
@ -162,13 +109,6 @@ void IMB_freecmapImBuf(struct ImBuf * ibuf)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* \brief Clears memory associated to the ImBuf ibuf
|
|
||||||
*
|
|
||||||
* This function uses the imb_free*ImBuf() functions to free the
|
|
||||||
* memory associated to the ibuf argument, and then frees the ibuf
|
|
||||||
* pointer using free()
|
|
||||||
*/
|
|
||||||
void IMB_freeImBuf(struct ImBuf * ibuf)
|
void IMB_freeImBuf(struct ImBuf * ibuf)
|
||||||
{
|
{
|
||||||
if (ibuf){
|
if (ibuf){
|
||||||
@ -181,18 +121,6 @@ void IMB_freeImBuf(struct ImBuf * ibuf)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* \brief Allocates memory to the zbuf member of the ImBuf struct.
|
|
||||||
*
|
|
||||||
* This function uses MEM_mallocN(int,char *) to allocate memory to
|
|
||||||
* the zbuf member of the ImBuf struct. Any memory associated to the
|
|
||||||
* zbuf member is overwritten.
|
|
||||||
*
|
|
||||||
* The IB_zbuf bit of the ibuf->mall variable is set.
|
|
||||||
* \return Returns FALSE if ibuf==0 or if MEM_mallocN() fails, otherwise
|
|
||||||
* returns TRUE
|
|
||||||
*/
|
|
||||||
static short addzbufImBuf(struct ImBuf * ibuf)
|
static short addzbufImBuf(struct ImBuf * ibuf)
|
||||||
{
|
{
|
||||||
int size;
|
int size;
|
||||||
@ -210,21 +138,6 @@ static short addzbufImBuf(struct ImBuf * ibuf)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* \brief Allocates memory to the encodedbuffer member of the ImBuf struct.
|
|
||||||
*
|
|
||||||
* This function uses MEM_mallocN(int,char *) to allocate memory to
|
|
||||||
* the encodedbuffer member of the ImBuf struct. Any memory associated to the
|
|
||||||
* encodedbuffer member is overwritten.
|
|
||||||
*
|
|
||||||
* The ibuf->encodedbuffersize is set to 10000 if it was previously 0.
|
|
||||||
*
|
|
||||||
* The ibuf->encodedsize is set to 0.
|
|
||||||
*
|
|
||||||
* The IB_mem bit of the ibuf->mall variable is set.
|
|
||||||
* \return Returns FALSE if ibuf==0 or if MEM_mallocN() fails, otherwise
|
|
||||||
* returns TRUE
|
|
||||||
*/
|
|
||||||
short imb_addencodedbufferImBuf(struct ImBuf * ibuf)
|
short imb_addencodedbufferImBuf(struct ImBuf * ibuf)
|
||||||
{
|
{
|
||||||
if (ibuf==0) return(FALSE);
|
if (ibuf==0) return(FALSE);
|
||||||
@ -245,19 +158,6 @@ short imb_addencodedbufferImBuf(struct ImBuf * ibuf)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* \brief Adds memory to ibuf->encodedbuffer
|
|
||||||
*
|
|
||||||
* This function doubles the size of encodedbuffer if it is less than 10000,
|
|
||||||
* otherwise sets encodedbuffersize to 10000.
|
|
||||||
*
|
|
||||||
* The ibuf members encodedbuffersize and encoded size also get set.
|
|
||||||
* \return Returns FALSE if:
|
|
||||||
* - ibuf==0
|
|
||||||
* - ibuf->encodedbuffersize < ibuf->encodedsize
|
|
||||||
* - MEM_mallocN() fails (returns NULL)
|
|
||||||
* otherwise, returns TRUE
|
|
||||||
*/
|
|
||||||
short imb_enlargeencodedbufferImBuf(struct ImBuf * ibuf)
|
short imb_enlargeencodedbufferImBuf(struct ImBuf * ibuf)
|
||||||
{
|
{
|
||||||
unsigned int newsize, encodedsize;
|
unsigned int newsize, encodedsize;
|
||||||
@ -294,17 +194,6 @@ short imb_enlargeencodedbufferImBuf(struct ImBuf * ibuf)
|
|||||||
return (TRUE);
|
return (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* \brief Allocates memory to the rect member of the ImBuf struct.
|
|
||||||
*
|
|
||||||
* This function uses MEM_mallocN(int,char *) to allocate memory to
|
|
||||||
* the rect member of the ImBuf struct. Any memory associated to the
|
|
||||||
* rect member is overwritten.
|
|
||||||
*
|
|
||||||
* The IB_rect bit of the ibuf->mall variable is set.
|
|
||||||
* \return Returns FALSE if ibuf==0 or if MEM_mallocN() fails, otherwise
|
|
||||||
* returns TRUE
|
|
||||||
*/
|
|
||||||
|
|
||||||
short imb_addrectImBuf(struct ImBuf * ibuf)
|
short imb_addrectImBuf(struct ImBuf * ibuf)
|
||||||
{
|
{
|
||||||
@ -324,19 +213,6 @@ short imb_addrectImBuf(struct ImBuf * ibuf)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* \brief Allocates memory to the cmap member of the ImBuf struct.
|
|
||||||
*
|
|
||||||
* This function uses MEM_mallocN(int,char *) to allocate memory to
|
|
||||||
* the cmap member of the ImBuf struct. Any memory associated to the
|
|
||||||
* cmap member is overwritten.
|
|
||||||
*
|
|
||||||
* The memory is initialized to the value of the dfltcmap variable.
|
|
||||||
*
|
|
||||||
* The IB_cmap bit of the ibuf->mall variable is set.
|
|
||||||
* \return Returns FALSE if ibuf==0 or if MEM_mallocN() fails, otherwise
|
|
||||||
* returns TRUE
|
|
||||||
*/
|
|
||||||
short imb_addcmapImBuf(struct ImBuf *ibuf)
|
short imb_addcmapImBuf(struct ImBuf *ibuf)
|
||||||
{
|
{
|
||||||
int min;
|
int min;
|
||||||
@ -359,19 +235,6 @@ short imb_addcmapImBuf(struct ImBuf *ibuf)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* \brief Adds memory to the planes member of ibuf.
|
|
||||||
*
|
|
||||||
* This function adds ibuf->depth number of planes to ibuf.
|
|
||||||
*
|
|
||||||
* Sets:
|
|
||||||
* - ibuf->skipx
|
|
||||||
* - IB_planes bit of ibuf->mall
|
|
||||||
* \return Returns FALSE if:
|
|
||||||
* - ibuf==0
|
|
||||||
* - MEM_mallocN() fails (returns 0)
|
|
||||||
* Otherwise, returns TRUE
|
|
||||||
*/
|
|
||||||
short imb_addplanesImBuf(struct ImBuf *ibuf)
|
short imb_addplanesImBuf(struct ImBuf *ibuf)
|
||||||
{
|
{
|
||||||
int size;
|
int size;
|
||||||
@ -404,21 +267,7 @@ short imb_addplanesImBuf(struct ImBuf *ibuf)
|
|||||||
return (TRUE);
|
return (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* \brief This functions allocates memory to an ImBuf struct.
|
|
||||||
*
|
|
||||||
* This function allocates memory for an ImBuf struct and returns a pointer
|
|
||||||
* to the struct. The MEM_callocN() function us used to allocate the memory.
|
|
||||||
*
|
|
||||||
* The x and y parameters define the resolution of the image, the d parameter
|
|
||||||
* defines the (bit?) depth, the flags parameter defines whether the rect, zbuf or
|
|
||||||
* planes members should exist. The bitmap flag will set the IB_planes bit in the
|
|
||||||
* flags variable.
|
|
||||||
*
|
|
||||||
* \return Returns 0 if any of the imb_add*ImBuf() functions return FALSE. If the
|
|
||||||
* memory for ibuf is not allocated, the return also should be 0. Otherwise, returns
|
|
||||||
* a pointer to an ImBuf struct.
|
|
||||||
*/
|
|
||||||
struct ImBuf *IMB_allocImBuf(short x,short y,uchar d,unsigned int flags,uchar bitmap)
|
struct ImBuf *IMB_allocImBuf(short x,short y,uchar d,unsigned int flags,uchar bitmap)
|
||||||
{
|
{
|
||||||
struct ImBuf *ibuf;
|
struct ImBuf *ibuf;
|
||||||
@ -456,12 +305,6 @@ struct ImBuf *IMB_allocImBuf(short x,short y,uchar d,unsigned int flags,uchar bi
|
|||||||
return (ibuf);
|
return (ibuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* \brief Returns a pointer to a new imbuf which is a duplicate of the ibuf1 parameter.
|
|
||||||
*
|
|
||||||
* \return Returns 0 if any memory allocation fails (except for the cmap allocation. Is
|
|
||||||
* this right?), otherwise returns a copy of ibuf1.
|
|
||||||
*/
|
|
||||||
struct ImBuf *IMB_dupImBuf(struct ImBuf *ibuf1)
|
struct ImBuf *IMB_dupImBuf(struct ImBuf *ibuf1)
|
||||||
{
|
{
|
||||||
struct ImBuf *ibuf2, tbuf;
|
struct ImBuf *ibuf2, tbuf;
|
||||||
|
@ -31,14 +31,6 @@
|
|||||||
*
|
*
|
||||||
* ***** END GPL/BL DUAL LICENSE BLOCK *****
|
* ***** END GPL/BL DUAL LICENSE BLOCK *****
|
||||||
*/
|
*/
|
||||||
/**
|
|
||||||
* \file amiga.c
|
|
||||||
* \brief This file handles loading and saving of amiga files.
|
|
||||||
* \ingroup imbuf
|
|
||||||
* \warning This file contains endian code. Some way should be found to move
|
|
||||||
* this code out of here.
|
|
||||||
* \help Endian #defines are in multiple files!
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "imbuf.h"
|
#include "imbuf.h"
|
||||||
#include "imbuf_patch.h"
|
#include "imbuf_patch.h"
|
||||||
@ -56,23 +48,9 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* actually hard coded endianness */
|
/* actually hard coded endianness */
|
||||||
/**
|
|
||||||
* \brief Makes a 4 bit id for a 32 bit value: Big-endian
|
|
||||||
* \todo How is this used?
|
|
||||||
*/
|
|
||||||
#define GET_BIG_LONG(x) (((uchar *) (x))[0] << 24 | ((uchar *) (x))[1] << 16 | ((uchar *) (x))[2] << 8 | ((uchar *) (x))[3])
|
#define GET_BIG_LONG(x) (((uchar *) (x))[0] << 24 | ((uchar *) (x))[1] << 16 | ((uchar *) (x))[2] << 8 | ((uchar *) (x))[3])
|
||||||
/**
|
|
||||||
* \brief Makes a 4 bit id for a 16? bit value: Little-endian
|
|
||||||
* \todo How is this used?
|
|
||||||
*/
|
|
||||||
#define GET_LITTLE_LONG(x) (((uchar *) (x))[3] << 24 | ((uchar *) (x))[2] << 16 | ((uchar *) (x))[1] << 8 | ((uchar *) (x))[0])
|
#define GET_LITTLE_LONG(x) (((uchar *) (x))[3] << 24 | ((uchar *) (x))[2] << 16 | ((uchar *) (x))[1] << 8 | ((uchar *) (x))[0])
|
||||||
/**
|
|
||||||
* \brief Converts between little and big endian: 32 bit values
|
|
||||||
*/
|
|
||||||
#define SWAP_L(x) (((x << 24) & 0xff000000) | ((x << 8) & 0xff0000) | ((x >> 8) & 0xff00) | ((x >> 24) & 0xff))
|
#define SWAP_L(x) (((x << 24) & 0xff000000) | ((x << 8) & 0xff0000) | ((x >> 8) & 0xff00) | ((x >> 24) & 0xff))
|
||||||
/**
|
|
||||||
* \brief Converts between little and big endian: 16 bit values
|
|
||||||
*/
|
|
||||||
#define SWAP_S(x) (((x << 8) & 0xff00) | ((x >> 8) & 0xff))
|
#define SWAP_S(x) (((x << 8) & 0xff00) | ((x >> 8) & 0xff))
|
||||||
|
|
||||||
/* more endianness... should move to a separate file... */
|
/* more endianness... should move to a separate file... */
|
||||||
@ -412,16 +390,6 @@ static uchar *readbody(struct ImBuf *ibuf, uchar *body)
|
|||||||
return body;
|
return body;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* \brief Loads an amiga (.ami) image.
|
|
||||||
* \ingroup imbuf
|
|
||||||
* \param iffmem A pointer to a memory location.
|
|
||||||
* \param flags A set of bit flags determining what parts of the image to load.
|
|
||||||
* \return Returns 0 if loading the image fails, otherwise returns a pointer to an ImBuf.
|
|
||||||
*
|
|
||||||
* I am fairly certain of what is going on in this function, so if I am
|
|
||||||
* wrong, please let me know, so I can update the docs!
|
|
||||||
*/
|
|
||||||
struct ImBuf *imb_loadamiga(int *iffmem,int flags)
|
struct ImBuf *imb_loadamiga(int *iffmem,int flags)
|
||||||
{
|
{
|
||||||
int chunk,totlen,len,*cmap=0,cmaplen,*mem,ftype=0;
|
int chunk,totlen,len,*cmap=0,cmaplen,*mem,ftype=0;
|
||||||
@ -429,45 +397,16 @@ struct ImBuf *imb_loadamiga(int *iffmem,int flags)
|
|||||||
struct BitMapHeader bmhd;
|
struct BitMapHeader bmhd;
|
||||||
struct ImBuf *ibuf=0;
|
struct ImBuf *ibuf=0;
|
||||||
|
|
||||||
/**
|
|
||||||
* \internal The memory address to the data is copiend into mem.
|
|
||||||
*/
|
|
||||||
mem = iffmem;
|
mem = iffmem;
|
||||||
/**
|
|
||||||
* \internal The w member of the BitMapHeader is initialized to 0 because
|
|
||||||
* it will be tested to see if it has been set later.
|
|
||||||
*/
|
|
||||||
bmhd.w = 0;
|
bmhd.w = 0;
|
||||||
|
|
||||||
/**
|
|
||||||
* \internal The first three chunks must have the form: FORMxxxxILBM
|
|
||||||
* else the function returns with 0;
|
|
||||||
* FORM and ILBM are defined in imbuf_patch.h
|
|
||||||
*/
|
|
||||||
if (GET_ID(mem) != FORM) return (0);
|
if (GET_ID(mem) != FORM) return (0);
|
||||||
if (GET_ID(mem+2) != ILBM) return (0);
|
if (GET_ID(mem+2) != ILBM) return (0);
|
||||||
/**
|
|
||||||
* \internal The second chunk is the total size of the image.
|
|
||||||
*/
|
|
||||||
totlen= (GET_BIG_LONG(mem+1) + 1) & ~1;
|
totlen= (GET_BIG_LONG(mem+1) + 1) & ~1;
|
||||||
/**
|
|
||||||
* \internal mem is incremented to skip the first three chunks.
|
|
||||||
*/
|
|
||||||
mem += 3;
|
mem += 3;
|
||||||
/**
|
|
||||||
* \internal Anyone know why the total length is decreased by four here?
|
|
||||||
*/
|
|
||||||
totlen -= 4;
|
totlen -= 4;
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* \internal The while loop retrieves at most four blocks of memory:
|
|
||||||
* - bmhd: the bit map header
|
|
||||||
* - body: which is the image data
|
|
||||||
* - cmap: the color map
|
|
||||||
* - ftype: the file type (what does CAMG stand for?)
|
|
||||||
* The body and the bitmap header are required.
|
|
||||||
*/
|
|
||||||
while(totlen > 0){
|
while(totlen > 0){
|
||||||
chunk = GET_ID(mem);
|
chunk = GET_ID(mem);
|
||||||
len= (GET_BIG_LONG(mem+1) + 1) & ~1;
|
len= (GET_BIG_LONG(mem+1) + 1) & ~1;
|
||||||
@ -500,36 +439,18 @@ struct ImBuf *imb_loadamiga(int *iffmem,int flags)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
mem = (int *)((uchar *)mem +len);
|
mem = (int *)((uchar *)mem +len);
|
||||||
/**
|
|
||||||
* \intern Anything after the first BODY ID is discarded.
|
|
||||||
*/
|
|
||||||
if (body) break;
|
if (body) break;
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* \internal After the while loop, the existance of body and bmhd are detected.
|
|
||||||
*/
|
|
||||||
if (bmhd.w == 0) return (0);
|
if (bmhd.w == 0) return (0);
|
||||||
if (body == 0) return (0);
|
if (body == 0) return (0);
|
||||||
|
|
||||||
/**
|
|
||||||
* \internal if the IB_test bit is set in flags, don't do masking.
|
|
||||||
* (I'm not too sure about this) In any case, allocate the memory
|
|
||||||
* for the imbuf, and return 0 if this fails.
|
|
||||||
*/
|
|
||||||
if (flags & IB_test) ibuf = IMB_allocImBuf(bmhd.w, bmhd.h, bmhd.nPlanes, 0, 0);
|
if (flags & IB_test) ibuf = IMB_allocImBuf(bmhd.w, bmhd.h, bmhd.nPlanes, 0, 0);
|
||||||
else ibuf = IMB_allocImBuf(bmhd.w, bmhd.h, bmhd.nPlanes + (bmhd.masking & 1),0,1);
|
else ibuf = IMB_allocImBuf(bmhd.w, bmhd.h, bmhd.nPlanes + (bmhd.masking & 1),0,1);
|
||||||
|
|
||||||
if (ibuf == 0) return (0);
|
if (ibuf == 0) return (0);
|
||||||
|
|
||||||
/**
|
|
||||||
* \internal Set the AMI bit in ftype.
|
|
||||||
*/
|
|
||||||
ibuf->ftype = (ftype | AMI);
|
ibuf->ftype = (ftype | AMI);
|
||||||
|
|
||||||
/**
|
|
||||||
* \internal If there was a cmap chunk in the data, add the cmap
|
|
||||||
* to the ImBuf and copy the data there.
|
|
||||||
*/
|
|
||||||
if (cmap){
|
if (cmap){
|
||||||
ibuf->mincol = 0;
|
ibuf->mincol = 0;
|
||||||
ibuf->maxcol = cmaplen;
|
ibuf->maxcol = cmaplen;
|
||||||
@ -540,21 +461,11 @@ struct ImBuf *imb_loadamiga(int *iffmem,int flags)
|
|||||||
imb_makecolarray(ibuf, cmap, 0);
|
imb_makecolarray(ibuf, cmap, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* \internal If the IB_test bit of flags was set, we're done:
|
|
||||||
* If the IB_freem bit is set, free the data pointed to by iffmem.
|
|
||||||
* Return the data.
|
|
||||||
*/
|
|
||||||
if (flags & IB_test){
|
if (flags & IB_test){
|
||||||
if (flags & IB_freem) free(iffmem);
|
if (flags & IB_freem) free(iffmem);
|
||||||
return(ibuf);
|
return(ibuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* \internal Check the bitmap header to see if there is any
|
|
||||||
* compression. 0 is no, 1 is horizontal, 2 is vertical.
|
|
||||||
* Load the data according to the type of compression.
|
|
||||||
*/
|
|
||||||
switch (bmhd.compression){
|
switch (bmhd.compression){
|
||||||
case 0:
|
case 0:
|
||||||
body= readbody(ibuf, body);
|
body= readbody(ibuf, body);
|
||||||
@ -568,42 +479,23 @@ struct ImBuf *imb_loadamiga(int *iffmem,int flags)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* \internal If the IB_freem bit is set, free the data pointed to by iffmem.
|
|
||||||
*/
|
|
||||||
if (flags & IB_freem) free(iffmem);
|
if (flags & IB_freem) free(iffmem);
|
||||||
|
|
||||||
/**
|
|
||||||
* \internal If there was some problem loading the body
|
|
||||||
* data, free the memory already allocated in ibuf and
|
|
||||||
* return 0.
|
|
||||||
*/
|
|
||||||
if (body == 0){
|
if (body == 0){
|
||||||
free (ibuf);
|
free (ibuf);
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* \internal Set the bit depth to the number of planes in bmhd.
|
|
||||||
* This discards the "stencil" data (What is the stencil? Alpha channel?)
|
|
||||||
*/
|
|
||||||
/* forget stencil */
|
/* forget stencil */
|
||||||
ibuf->depth = bmhd.nPlanes;
|
ibuf->depth = bmhd.nPlanes;
|
||||||
|
|
||||||
/**
|
|
||||||
* \internal If the IB_rect bit is set in flags, add the rect and
|
|
||||||
* get rid of the planes.
|
|
||||||
*/
|
|
||||||
if (flags & IB_rect){
|
if (flags & IB_rect){
|
||||||
imb_addrectImBuf(ibuf);
|
imb_addrectImBuf(ibuf);
|
||||||
imb_bptolong(ibuf);
|
imb_bptolong(ibuf);
|
||||||
imb_freeplanesImBuf(ibuf);
|
imb_freeplanesImBuf(ibuf);
|
||||||
/**
|
|
||||||
* \internal If the image has a color map, apply it.
|
|
||||||
*/
|
|
||||||
if (ibuf->cmap){
|
if (ibuf->cmap){
|
||||||
if ((flags & IB_cmap) == 0) IMB_applycmap(ibuf);
|
if ((flags & IB_cmap) == 0) IMB_applycmap(ibuf);
|
||||||
} else if (ibuf->depth == 18){ /** \internal No color map, and the bit depths is 18, convert to 24-bit */
|
} else if (ibuf->depth == 18){
|
||||||
int i,col;
|
int i,col;
|
||||||
unsigned int *rect;
|
unsigned int *rect;
|
||||||
|
|
||||||
@ -615,7 +507,7 @@ struct ImBuf *imb_loadamiga(int *iffmem,int flags)
|
|||||||
*rect++ = col;
|
*rect++ = col;
|
||||||
}
|
}
|
||||||
ibuf->depth = 24;
|
ibuf->depth = 24;
|
||||||
} else if (ibuf->depth <= 8) { /** \internal No colormap and no 24 bits, so it's b&w */
|
} else if (ibuf->depth <= 8) { /* no colormap and no 24 bits: b&w */
|
||||||
uchar *rect;
|
uchar *rect;
|
||||||
int size, shift;
|
int size, shift;
|
||||||
|
|
||||||
@ -637,14 +529,8 @@ struct ImBuf *imb_loadamiga(int *iffmem,int flags)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* \internal Anyone know what IB_ttob is? What does IMB_flipy do?
|
|
||||||
*/
|
|
||||||
if ((flags & IB_ttob) == 0) IMB_flipy(ibuf);
|
if ((flags & IB_ttob) == 0) IMB_flipy(ibuf);
|
||||||
|
|
||||||
/**
|
|
||||||
* \internal Last thing to do before returning is to flip the bits from rgba to abgr.
|
|
||||||
*/
|
|
||||||
if (ibuf) {
|
if (ibuf) {
|
||||||
if (ibuf->rect)
|
if (ibuf->rect)
|
||||||
IMB_convert_rgba_to_abgr(ibuf->x*ibuf->y, ibuf->rect);
|
IMB_convert_rgba_to_abgr(ibuf->x*ibuf->y, ibuf->rect);
|
||||||
|
@ -29,33 +29,13 @@
|
|||||||
*
|
*
|
||||||
* ***** END GPL/BL DUAL LICENSE BLOCK *****
|
* ***** END GPL/BL DUAL LICENSE BLOCK *****
|
||||||
*/
|
*/
|
||||||
|
/* DataToC output of file <B_blend> */
|
||||||
/**
|
|
||||||
* \file B.blend.c
|
|
||||||
* \brief DataToC output of file <B_blend>
|
|
||||||
*
|
|
||||||
* Contains the data to create the default initial .blend file that
|
|
||||||
* is loaded. It contains the default user preferences and initial
|
|
||||||
* blend screen with the plane and the camera.
|
|
||||||
*
|
|
||||||
* Referenced in usiblender.c
|
|
||||||
* \ingroup defaultconfig
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
|
||||||
* Array size.
|
|
||||||
* This is generated automatically, and should not be changed.
|
|
||||||
*/
|
|
||||||
int datatoc_B_blend_size= 32472;
|
int datatoc_B_blend_size= 32472;
|
||||||
|
|
||||||
/**
|
|
||||||
* The is an array of characters which creates the .blend file.
|
|
||||||
* This is generated automatically, and should not be changed.
|
|
||||||
*/
|
|
||||||
char datatoc_B_blend[]= {
|
char datatoc_B_blend[]= {
|
||||||
66, 76, 69, 78, 68, 69, 82, 95,118, 50, 49, 50, 82, 69, 78, 68, 32, 0, 0, 0,136,237,255,191,
|
66, 76, 69, 78, 68, 69, 82, 95,118, 50, 49, 50, 82, 69, 78, 68, 32, 0, 0, 0,136,237,255,191,
|
||||||
0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
@ -29,27 +29,9 @@
|
|||||||
*
|
*
|
||||||
* ***** END GPL/BL DUAL LICENSE BLOCK *****
|
* ***** END GPL/BL DUAL LICENSE BLOCK *****
|
||||||
*/
|
*/
|
||||||
/**
|
/* DataToC output of file <blenderbuttons_png> */
|
||||||
* \file blenderbuttons.c
|
|
||||||
* \brief DataToC output of file <blenderbuttons_png>
|
|
||||||
*
|
|
||||||
* Contains an array of image data used to create the buttons used in the
|
|
||||||
* blender gui.
|
|
||||||
*
|
|
||||||
* Referenced in resources.c
|
|
||||||
* \ingroup defaultconfig
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Array size.
|
|
||||||
* This is generated automatically, and should not be changed.
|
|
||||||
*/
|
|
||||||
int datatoc_blenderbuttons_size= 42002;
|
int datatoc_blenderbuttons_size= 42002;
|
||||||
|
|
||||||
/**
|
|
||||||
* The is an array of characters which creates the icon file.
|
|
||||||
* This is generated automatically, and should not be changed.
|
|
||||||
*/
|
|
||||||
char datatoc_blenderbuttons[]= {
|
char datatoc_blenderbuttons[]= {
|
||||||
137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0,
|
137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0,
|
||||||
1,190, 0, 0, 0,242, 8, 2, 0, 0, 0,189, 2, 55, 29, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 11, 19, 0, 0, 11, 19, 1,
|
1,190, 0, 0, 0,242, 8, 2, 0, 0, 0,189, 2, 55, 29, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 11, 19, 0, 0, 11, 19, 1,
|
||||||
|
@ -28,24 +28,9 @@
|
|||||||
* Contributor(s): none yet.
|
* Contributor(s): none yet.
|
||||||
*
|
*
|
||||||
* ***** END GPL/BL DUAL LICENSE BLOCK *****
|
* ***** END GPL/BL DUAL LICENSE BLOCK *****
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* \file mainqueue.c
|
|
||||||
* \brief Just the functions to maintain a central event queue.
|
|
||||||
*
|
*
|
||||||
* Creates the functionality of a FIFO queue for events.
|
* Just the functions to maintain a central event
|
||||||
*
|
* queue.
|
||||||
* \note The documentor (me) doesn't know the full description of
|
|
||||||
* the fields of the QEvent structure, and the parameters to the
|
|
||||||
* functions (event, val, ascii). The comments should be updated
|
|
||||||
* with more detailed descriptions of what is stored in each one.
|
|
||||||
*
|
|
||||||
* \warning This queue structure uses a method that assumes the presence
|
|
||||||
* of allocated memory. As well it doesn't de-allocate memory after
|
|
||||||
* a read off of the queue, thereby causing a situation whereby memory
|
|
||||||
* isn't being freed and can grow with out bound even though there is
|
|
||||||
* a limit on the queue size.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@ -56,49 +41,15 @@
|
|||||||
#include <config.h>
|
#include <config.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
|
||||||
* \struct QEvent
|
|
||||||
* \brief This is the definition for the event queue datastructure
|
|
||||||
*/
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
/**
|
|
||||||
* \var unsigned short event
|
|
||||||
* \brief holds the event type
|
|
||||||
*/
|
|
||||||
unsigned short event;
|
unsigned short event;
|
||||||
/**
|
|
||||||
* \var short val
|
|
||||||
*/
|
|
||||||
short val;
|
short val;
|
||||||
/**
|
|
||||||
* \var char ascii
|
|
||||||
*/
|
|
||||||
char ascii;
|
char ascii;
|
||||||
} QEvent;
|
} QEvent;
|
||||||
|
|
||||||
/**
|
|
||||||
* \var static QEvent mainqueue[MAXQUEUE]
|
|
||||||
* \brief The Main Queue store.
|
|
||||||
*/
|
|
||||||
static QEvent mainqueue[MAXQUEUE];
|
static QEvent mainqueue[MAXQUEUE];
|
||||||
|
|
||||||
/**
|
|
||||||
* \var static unsigned int nevents=0
|
|
||||||
* \brief The count of the events currently stored.
|
|
||||||
*/
|
|
||||||
static unsigned int nevents= 0;
|
static unsigned int nevents= 0;
|
||||||
|
|
||||||
/**
|
|
||||||
* \brief Reads and removes events from the queue and returns the event type,
|
|
||||||
* if the queue is empty return 0.
|
|
||||||
* \param val the val of the event to read into.
|
|
||||||
* \param ascii the buffer of the event to read into.
|
|
||||||
* \return the event type or 0 if no event.
|
|
||||||
*
|
|
||||||
* Pops off the last item in the queue and returns the pieces in their
|
|
||||||
* little parts. The last item was the oldest item in the queue.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
unsigned short mainqread(short *val, char *ascii)
|
unsigned short mainqread(short *val, char *ascii)
|
||||||
{
|
{
|
||||||
if (nevents) {
|
if (nevents) {
|
||||||
@ -111,24 +62,11 @@ unsigned short mainqread(short *val, char *ascii)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* \brief A short cut to mainqenter_ext setting ascii to 0
|
|
||||||
*/
|
|
||||||
void mainqenter(unsigned short event, short val)
|
void mainqenter(unsigned short event, short val)
|
||||||
{
|
{
|
||||||
mainqenter_ext(event, val, 0);
|
mainqenter_ext(event, val, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* \brief Adds event to the beginning of the queue.
|
|
||||||
* \param event the event type.
|
|
||||||
* \param val the val of the event.
|
|
||||||
* \param ascii the event characters.
|
|
||||||
*
|
|
||||||
* If the event isn't nothing, and if the queue still
|
|
||||||
* has some room, then add to the queue. Otherwise the
|
|
||||||
* event is lost.
|
|
||||||
*/
|
|
||||||
void mainqenter_ext(unsigned short event, short val, char ascii)
|
void mainqenter_ext(unsigned short event, short val, char ascii)
|
||||||
{
|
{
|
||||||
if (!event)
|
if (!event)
|
||||||
@ -144,19 +82,6 @@ void mainqenter_ext(unsigned short event, short val, char ascii)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* \brief Pushes and event back on to the front of the queue.
|
|
||||||
* \param event
|
|
||||||
* \param val
|
|
||||||
* \param ascii
|
|
||||||
*
|
|
||||||
* Pushes an event back onto the queue, possibly after a peek
|
|
||||||
* at the item. This method assumes that the memory has already
|
|
||||||
* been allocated and should be mentioned in a precondition.
|
|
||||||
*
|
|
||||||
* \pre This method assumes that the memory is already allocated
|
|
||||||
* for the event.
|
|
||||||
*/
|
|
||||||
void mainqpushback(unsigned short event, short val, char ascii)
|
void mainqpushback(unsigned short event, short val, char ascii)
|
||||||
{
|
{
|
||||||
if (nevents<MAXQUEUE) {
|
if (nevents<MAXQUEUE) {
|
||||||
@ -167,12 +92,6 @@ void mainqpushback(unsigned short event, short val, char ascii)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* \brief Returns the event type from the last item in the queue
|
|
||||||
* (the next one that would be popped off). Probably used as a test
|
|
||||||
* to see if the queue is empty or if a valid event is still around.
|
|
||||||
* \return the event type of the last item in the queue
|
|
||||||
*/
|
|
||||||
unsigned short mainqtest()
|
unsigned short mainqtest()
|
||||||
{
|
{
|
||||||
if (nevents)
|
if (nevents)
|
||||||
|
@ -29,31 +29,14 @@
|
|||||||
*
|
*
|
||||||
* ***** END GPL/BL DUAL LICENSE BLOCK *****
|
* ***** END GPL/BL DUAL LICENSE BLOCK *****
|
||||||
*/
|
*/
|
||||||
/**
|
|
||||||
* \file buildinfo.c
|
|
||||||
* \brief Info on the date, time, os, and type of blender build.
|
|
||||||
* \ingroup mainmodule
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef BUILD_DATE
|
#ifdef BUILD_DATE
|
||||||
/**
|
|
||||||
* Global build date.
|
|
||||||
*/
|
|
||||||
char * build_date=BUILD_DATE;
|
char * build_date=BUILD_DATE;
|
||||||
/**
|
|
||||||
* Global build time.
|
|
||||||
*/
|
|
||||||
char * build_time=BUILD_TIME;
|
char * build_time=BUILD_TIME;
|
||||||
/**
|
|
||||||
* Global build platform.
|
|
||||||
*/
|
|
||||||
char * build_platform=BUILD_PLATFORM;
|
char * build_platform=BUILD_PLATFORM;
|
||||||
/**
|
|
||||||
* Global build type.
|
|
||||||
*/
|
|
||||||
char * build_type=BUILD_TYPE;
|
char * build_type=BUILD_TYPE;
|
||||||
#endif
|
#endif
|
||||||
|
@ -29,23 +29,6 @@
|
|||||||
*
|
*
|
||||||
* ***** END GPL/BL DUAL LICENSE BLOCK *****
|
* ***** END GPL/BL DUAL LICENSE BLOCK *****
|
||||||
*/
|
*/
|
||||||
/**
|
|
||||||
* \file creator.c
|
|
||||||
* \ingroup mainmodule
|
|
||||||
* \brief The main blender function is defined here.
|
|
||||||
*
|
|
||||||
* This file contains the int main(int,char**) function along with some helper
|
|
||||||
* functions.
|
|
||||||
*
|
|
||||||
* For some reason, doxygen wants to say that the build_* info variables are
|
|
||||||
* defined here. They are really defined in buildinfo.c
|
|
||||||
* \todo clear out unnecessary includes
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* \defgroup main_helpers Helpers
|
|
||||||
* \ingroup mainmodule
|
|
||||||
*/
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
@ -127,45 +110,17 @@ extern char * build_platform;
|
|||||||
extern char * build_type;
|
extern char * build_type;
|
||||||
|
|
||||||
/* Local Function prototypes */
|
/* Local Function prototypes */
|
||||||
|
|
||||||
/**
|
|
||||||
* \brief Prints help message
|
|
||||||
*
|
|
||||||
* Prints a help message to the prompt when triggered by the switches:
|
|
||||||
* - "-h"
|
|
||||||
* - "--help"
|
|
||||||
* - "/?"
|
|
||||||
*
|
|
||||||
* \todo document -nofrozen switch
|
|
||||||
*/
|
|
||||||
static void print_help();
|
static void print_help();
|
||||||
|
|
||||||
/* for the callbacks: */
|
/* for the callbacks: */
|
||||||
|
|
||||||
/**
|
|
||||||
* \brief For callback functions. What does this do?
|
|
||||||
* \ingroup main_helpers
|
|
||||||
* \ingroup undoc
|
|
||||||
*/
|
|
||||||
extern int pluginapi_force_ref(void); /* from blenpluginapi:pluginapi.c */
|
extern int pluginapi_force_ref(void); /* from blenpluginapi:pluginapi.c */
|
||||||
|
|
||||||
/**
|
char bprogname[FILE_MAXDIR+FILE_MAXFILE]; /* from blenpluginapi:pluginapi.c */
|
||||||
* \brief Holds the blender program name.
|
|
||||||
*
|
|
||||||
* Copied from argv[0]. Used for playanim and creting runtimes.
|
|
||||||
*/
|
|
||||||
char bprogname[FILE_MAXDIR+FILE_MAXFILE];
|
|
||||||
|
|
||||||
/** \brief Initialise callbacks for the modules that need them */
|
/* Initialise callbacks for the modules that need them */
|
||||||
void setCallbacks(void);
|
void setCallbacks(void);
|
||||||
|
|
||||||
/**
|
|
||||||
* \brief Used for trapping the SIGFPE signal.
|
|
||||||
*
|
|
||||||
* This function is passed to signal() on the following platforms:
|
|
||||||
* - Alpha Linux
|
|
||||||
* - SGI
|
|
||||||
*/
|
|
||||||
static void fpe_handler(int sig)
|
static void fpe_handler(int sig)
|
||||||
{
|
{
|
||||||
// printf("SIGFPE trapped\n");
|
// printf("SIGFPE trapped\n");
|
||||||
@ -217,50 +172,21 @@ static void print_help(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* \todo This function is neither used nor defined in this file!
|
|
||||||
* It is declared in source/blender/blenlib/PIL_time.h
|
|
||||||
* It is defined in source/blender/blenlib/intern/time.c
|
|
||||||
* Should this be here?
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
double PIL_check_seconds_timer(void);
|
double PIL_check_seconds_timer(void);
|
||||||
|
|
||||||
/* This is defined in: ??? */
|
|
||||||
extern void winlay_get_screensize(int *width_r, int *height_r);
|
extern void winlay_get_screensize(int *width_r, int *height_r);
|
||||||
|
|
||||||
/**
|
|
||||||
* \brief The main blender function.
|
|
||||||
*
|
|
||||||
* This is function is compiled into the blender executable. It handles
|
|
||||||
* command line arugments and initialization.
|
|
||||||
*/
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int a, i, stax, stay, sizx, sizy;
|
int a, i, stax, stay, sizx, sizy;
|
||||||
SYS_SystemHandle syshandle;
|
SYS_SystemHandle syshandle;
|
||||||
Scene *sce;
|
Scene *sce;
|
||||||
|
|
||||||
/**
|
|
||||||
* First step is to initialize platform specific variables and functions, and to
|
|
||||||
* set the callbacks.
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* \internal - Turn on audio for WIN32 and linux
|
|
||||||
*/
|
|
||||||
#if defined(WIN32) || defined (__linux__)
|
#if defined(WIN32) || defined (__linux__)
|
||||||
int audio = 1;
|
int audio = 1;
|
||||||
#else
|
#else
|
||||||
int audio = 0;
|
int audio = 0;
|
||||||
#endif
|
#endif
|
||||||
/**
|
|
||||||
* \internal - Call the setCallbacks() function
|
|
||||||
*/
|
|
||||||
setCallbacks();
|
setCallbacks();
|
||||||
/**
|
|
||||||
* \internal Do some apple specific initialization.
|
|
||||||
* \todo Does anyone know why the first #ifdef __APPLE__ is here?
|
|
||||||
*/
|
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
/* patch to ignore argument finder gives us (pid?) */
|
/* patch to ignore argument finder gives us (pid?) */
|
||||||
if (argc==2 && strncmp(argv[1], "-psn_", 5)==0) {
|
if (argc==2 && strncmp(argv[1], "-psn_", 5)==0) {
|
||||||
@ -281,9 +207,6 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
|
||||||
* \internal OS specific stuff for FreeBSD, Linux alpha, and sgi.
|
|
||||||
*/
|
|
||||||
#ifdef __FreeBSD__
|
#ifdef __FreeBSD__
|
||||||
fpsetmask(0);
|
fpsetmask(0);
|
||||||
#endif
|
#endif
|
||||||
@ -296,40 +219,23 @@ int main(int argc, char **argv)
|
|||||||
signal (SIGFPE, fpe_handler);
|
signal (SIGFPE, fpe_handler);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
// copy path to executable in bprogname. playanim and creting runtimes
|
||||||
* \internal copy path to executable in bprogname. playanim and creting runtimes need this.
|
// need this.
|
||||||
*/
|
|
||||||
BLI_where_am_i(bprogname, argv[0]);
|
BLI_where_am_i(bprogname, argv[0]);
|
||||||
|
|
||||||
/** \internal Hack - force inclusion of the plugin api functions,
|
/* Hack - force inclusion of the plugin api functions,
|
||||||
* \internal see blenpluginapi:pluginapi.c
|
* see blenpluginapi:pluginapi.c
|
||||||
* \todo pluginapi_force_ref() is defined as a hack. Fix this?
|
|
||||||
*/
|
*/
|
||||||
pluginapi_force_ref();
|
pluginapi_force_ref();
|
||||||
|
|
||||||
/**
|
|
||||||
* Initialize globals, get the system handle and initialize the messaging system.
|
|
||||||
*/
|
|
||||||
initglobals(); /* blender.c */
|
initglobals(); /* blender.c */
|
||||||
|
|
||||||
syshandle = SYS_GetSystem();
|
syshandle = SYS_GetSystem();
|
||||||
GEN_init_messaging_system();
|
GEN_init_messaging_system();
|
||||||
|
|
||||||
/* first test for background */
|
/* first test for background */
|
||||||
/** \internal The G_SCENESCRIPT is always set. */
|
|
||||||
G.f |= G_SCENESCRIPT; /* scenescript always set! */
|
G.f |= G_SCENESCRIPT; /* scenescript always set! */
|
||||||
/**
|
|
||||||
* The first for loop parses thru the following command line arguments:
|
|
||||||
* - "-h", "--help", and "/?": prints a help message.
|
|
||||||
* - "-a": plays animations (only when it's before the -b switch).
|
|
||||||
* - "-b", "-B": sets blender to run in background mode.
|
|
||||||
* - "-m": obsolete switch.
|
|
||||||
* - "-y": disables python.
|
|
||||||
* - "-Y": explains \e why "-y" is used to disable python.
|
|
||||||
* \todo Put the -h, --help, and /? flags in one if statment.
|
|
||||||
* \todo -a has 2 different meanings, depending on context.
|
|
||||||
* \todo The -m switch has been disabled. Is there any reason to keep it here?
|
|
||||||
*/
|
|
||||||
for(a=1; a<argc; a++) {
|
for(a=1; a<argc; a++) {
|
||||||
|
|
||||||
/* Handle unix and windows style help requests */
|
/* Handle unix and windows style help requests */
|
||||||
@ -388,29 +294,13 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Set a few more options.
|
|
||||||
*/
|
|
||||||
#ifdef __sgi
|
#ifdef __sgi
|
||||||
setuid(getuid()); /* end superuser */
|
setuid(getuid()); /* end superuser */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
RE_init_render_data(); /** Render initializer must be called here because R.winpos from default file */
|
RE_init_render_data(); /* must be called here because R.winpos from default file */
|
||||||
|
|
||||||
/**
|
|
||||||
* If blender is not in background:
|
|
||||||
*/
|
|
||||||
if(G.background==0) {
|
if(G.background==0) {
|
||||||
/**
|
|
||||||
* Parse the following command line arguments:
|
|
||||||
* - "-p": set the prefered window location and size.
|
|
||||||
* - "-d": enables debugging.
|
|
||||||
* - "-w": fullscreen mode.
|
|
||||||
* - "-W": borderless window (MS windows only).
|
|
||||||
* - "-R": registers the blender extensions. (MS windows only).
|
|
||||||
* - "-noaudion", "-nosound": disables audio.
|
|
||||||
* - "-nofrozen": disables frozen python.
|
|
||||||
*/
|
|
||||||
for(a=1; a<argc; a++) {
|
for(a=1; a<argc; a++) {
|
||||||
if(argv[a][0] == '-') {
|
if(argv[a][0] == '-') {
|
||||||
switch(argv[a][1]) {
|
switch(argv[a][1]) {
|
||||||
@ -470,9 +360,9 @@ int main(int argc, char **argv)
|
|||||||
case 'N':
|
case 'N':
|
||||||
if (strcasecmp(argv[a], "-noaudio") == 0|| strcasecmp(argv[a], "-nosound") == 0) {
|
if (strcasecmp(argv[a], "-noaudio") == 0|| strcasecmp(argv[a], "-nosound") == 0) {
|
||||||
/**
|
/**
|
||||||
* \internal The noaudio flag notifies the gameengine that no audio is wanted,
|
notify the gameengine that no audio is wanted, even if the user didn't give
|
||||||
* even if the user didn't give the flag -g noaudio.
|
the flag -g noaudio.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
SYS_WriteCommandLineInt(syshandle,"noaudio",1);
|
SYS_WriteCommandLineInt(syshandle,"noaudio",1);
|
||||||
audio = 0;
|
audio = 0;
|
||||||
@ -488,9 +378,6 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Start the python module, and initialize audio and BIF_init().
|
|
||||||
*/
|
|
||||||
BPY_start_python();
|
BPY_start_python();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -502,11 +389,6 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
BIF_init();
|
BIF_init();
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* If blender is in background:
|
|
||||||
* - Start python.
|
|
||||||
* - Turn audio off.
|
|
||||||
*/
|
|
||||||
else {
|
else {
|
||||||
BPY_start_python();
|
BPY_start_python();
|
||||||
SYS_WriteCommandLineInt(syshandle,"noaudio",1);
|
SYS_WriteCommandLineInt(syshandle,"noaudio",1);
|
||||||
@ -515,9 +397,6 @@ int main(int argc, char **argv)
|
|||||||
if (G.f & G_DEBUG) printf("setting audio to: %d\n", audio);
|
if (G.f & G_DEBUG) printf("setting audio to: %d\n", audio);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Next, initialize more stuff :)
|
|
||||||
*/
|
|
||||||
RE_init_filt_mask();
|
RE_init_filt_mask();
|
||||||
|
|
||||||
#ifdef WITH_QUICKTIME
|
#ifdef WITH_QUICKTIME
|
||||||
@ -543,17 +422,6 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
/* OK we are ready for it */
|
/* OK we are ready for it */
|
||||||
|
|
||||||
/**
|
|
||||||
* The third and final for loop processes the following arguments:
|
|
||||||
* - "-p" (again): This time four args are skipped and then break;
|
|
||||||
* - "-g": passes arguments to the game engine.
|
|
||||||
* - "-f": renders a single frame and saves it.
|
|
||||||
* - "-a": renders an animation. "-b" must be before "-a"
|
|
||||||
* - "-S": sets the starting scene name.
|
|
||||||
* - "-s": sets the start frame.
|
|
||||||
* - "-e": sets the end frame.
|
|
||||||
* - <file>: sets the blender file to open.
|
|
||||||
*/
|
|
||||||
for(a=1; a<argc; a++) {
|
for(a=1; a<argc; a++) {
|
||||||
if (G.afbreek==1) break;
|
if (G.afbreek==1) break;
|
||||||
|
|
||||||
@ -566,13 +434,13 @@ int main(int argc, char **argv)
|
|||||||
case 'g':
|
case 'g':
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* gameengine parameters are automaticly put into system
|
gameengine parameters are automaticly put into system
|
||||||
* -g [paramname = value]
|
-g [paramname = value]
|
||||||
* -g [boolparamname]
|
-g [boolparamname]
|
||||||
* example:
|
example:
|
||||||
* -g novertexarrays
|
-g novertexarrays
|
||||||
* -g maxvertexarraysize = 512
|
-g maxvertexarraysize = 512
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if(++a < argc)
|
if(++a < argc)
|
||||||
{
|
{
|
||||||
@ -649,50 +517,29 @@ int main(int argc, char **argv)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* If the argument does not begin with a dash, it must be a file name.
|
|
||||||
*/
|
|
||||||
else {
|
else {
|
||||||
BKE_read_file(argv[a], NULL);
|
BKE_read_file(argv[a], NULL);
|
||||||
sound_initialize_sounds();
|
sound_initialize_sounds();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* If blender is in background mode, exit.
|
|
||||||
*/
|
|
||||||
if(G.background)
|
if(G.background)
|
||||||
{
|
{
|
||||||
exit_usiblender();
|
exit_usiblender();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Otherwise, initialize the GUI.
|
|
||||||
*/
|
|
||||||
setscreen(G.curscreen);
|
setscreen(G.curscreen);
|
||||||
|
|
||||||
/**
|
|
||||||
* \internal if no scene exists, add one called "1".
|
|
||||||
*/
|
|
||||||
if(G.main->scene.first==0) {
|
if(G.main->scene.first==0) {
|
||||||
sce= add_scene("1");
|
sce= add_scene("1");
|
||||||
set_scene(sce);
|
set_scene(sce);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Start the main GUI loop.
|
|
||||||
*/
|
|
||||||
screenmain();
|
screenmain();
|
||||||
|
|
||||||
/**
|
|
||||||
* If everything went well, return with 0.
|
|
||||||
*/
|
|
||||||
return 0;
|
return 0;
|
||||||
} /* end of int main(argc,argv) */
|
} /* end of int main(argc,argv) */
|
||||||
|
|
||||||
/**
|
|
||||||
* Helper function for setCallbacks().
|
|
||||||
*/
|
|
||||||
static void error_cb(char *err)
|
static void error_cb(char *err)
|
||||||
{
|
{
|
||||||
error("%s", err);
|
error("%s", err);
|
||||||
|
Loading…
Reference in New Issue
Block a user