From f306efab085aad776ebaaeee730714b154a454c4 Mon Sep 17 00:00:00 2001 From: Robert Holcomb Date: Sun, 28 Jan 2007 05:34:17 +0000 Subject: [PATCH] Added type checking to color space splitting nodes and hsv node. Will uncommit pipeline.c and creator.c since committed in error. --- .../blenkernel/intern/node_composite.c | 61 ++++++++++--------- source/creator/creator.c | 6 +- 2 files changed, 35 insertions(+), 32 deletions(-) diff --git a/source/blender/blenkernel/intern/node_composite.c b/source/blender/blenkernel/intern/node_composite.c index 7e7657b7c56..e9208e03aea 100644 --- a/source/blender/blenkernel/intern/node_composite.c +++ b/source/blender/blenkernel/intern/node_composite.c @@ -1641,12 +1641,16 @@ static void node_composit_exec_hue_sat(void *data, bNode *node, bNodeStack **in, } else { /* make output size of input image */ - CompBuf *cbuf= in[1]->data; - CompBuf *stackbuf= alloc_compbuf(cbuf->x, cbuf->y, CB_RGBA, 1); /* allocs */ + CompBuf *cbuf= dupalloc_compbuf(in[1]->data); + CompBuf *stackbuf=typecheck_compbuf(cbuf,CB_RGBA); - composit2_pixel_processor(node, stackbuf, cbuf, in[1]->vec, in[0]->data, in[0]->vec, do_hue_sat_fac, CB_RGBA, CB_VAL); + composit2_pixel_processor(node, stackbuf, stackbuf, in[1]->vec, in[0]->data, in[0]->vec, do_hue_sat_fac, CB_RGBA, CB_VAL); out[0]->data= stackbuf; + + /* get rid of intermediary cbuf if it's extra */ + if(stackbuf!=cbuf) + free_compbuf(cbuf); } } @@ -2129,24 +2133,23 @@ static void node_composit_exec_sephsva(void *data, bNode *node, bNodeStack **in, } else if ((out[0]->hasoutput) || (out[1]->hasoutput) || (out[2]->hasoutput) || (out[3]->hasoutput)) { /* make output size of input image */ - CompBuf *cbuf= in[0]->data; - - CompBuf *stackbuf= alloc_compbuf(cbuf->x, cbuf->y, CB_RGBA, 1); /* allocs */ + CompBuf *cbuf= typecheck_compbuf(in[0]->data,CB_RGBA); /* convert the RGB stackbuf to an HSV representation */ - composit1_pixel_processor(node, stackbuf, in[0]->data, in[0]->vec, do_sephsva, CB_RGBA); + composit1_pixel_processor(node, cbuf, in[0]->data, in[0]->vec, do_sephsva, CB_RGBA); /* separate each of those channels */ if(out[0]->hasoutput) - out[0]->data= valbuf_from_rgbabuf(stackbuf, CHAN_R); + out[0]->data= valbuf_from_rgbabuf(cbuf, CHAN_R); if(out[1]->hasoutput) - out[1]->data= valbuf_from_rgbabuf(stackbuf, CHAN_G); + out[1]->data= valbuf_from_rgbabuf(cbuf, CHAN_G); if(out[2]->hasoutput) - out[2]->data= valbuf_from_rgbabuf(stackbuf, CHAN_B); + out[2]->data= valbuf_from_rgbabuf(cbuf, CHAN_B); if(out[3]->hasoutput) - out[3]->data= valbuf_from_rgbabuf(stackbuf, CHAN_A); + out[3]->data= valbuf_from_rgbabuf(cbuf, CHAN_A); - free_compbuf(stackbuf); + if(cbuf!=in[0]->data) + free_compbuf(cbuf); } } @@ -4260,24 +4263,23 @@ static void node_composit_exec_sepyuva(void *data, bNode *node, bNodeStack **in, } else if ((out[0]->hasoutput) || (out[1]->hasoutput) || (out[2]->hasoutput) || (out[3]->hasoutput)) { /* make output size of input image */ - CompBuf *cbuf= in[0]->data; - - CompBuf *stackbuf= alloc_compbuf(cbuf->x, cbuf->y, CB_RGBA, 1); /* allocs */ + CompBuf *cbuf= typecheck_compbuf(in[0]->data,CB_RGBA); /* convert the RGB stackbuf to an YUV representation */ - composit1_pixel_processor(node, stackbuf, in[0]->data, in[0]->vec, do_sepyuva, CB_RGBA); + composit1_pixel_processor(node, cbuf, in[0]->data, in[0]->vec, do_sepyuva, CB_RGBA); /* separate each of those channels */ if(out[0]->hasoutput) - out[0]->data= valbuf_from_rgbabuf(stackbuf, CHAN_R); + out[0]->data= valbuf_from_rgbabuf(cbuf, CHAN_R); if(out[1]->hasoutput) - out[1]->data= valbuf_from_rgbabuf(stackbuf, CHAN_G); + out[1]->data= valbuf_from_rgbabuf(cbuf, CHAN_G); if(out[2]->hasoutput) - out[2]->data= valbuf_from_rgbabuf(stackbuf, CHAN_B); + out[2]->data= valbuf_from_rgbabuf(cbuf, CHAN_B); if(out[3]->hasoutput) - out[3]->data= valbuf_from_rgbabuf(stackbuf, CHAN_A); + out[3]->data= valbuf_from_rgbabuf(cbuf, CHAN_A); - free_compbuf(stackbuf); + if(cbuf!=in[0]->data) + free_compbuf(cbuf); } } @@ -4334,24 +4336,23 @@ static void node_composit_exec_sepycca(void *data, bNode *node, bNodeStack **in, } else if ((out[0]->hasoutput) || (out[1]->hasoutput) || (out[2]->hasoutput) || (out[3]->hasoutput)) { /* make output size of input image */ - CompBuf *cbuf= in[0]->data; - - CompBuf *stackbuf= alloc_compbuf(cbuf->x, cbuf->y, CB_RGBA, 1); /* allocs */ + CompBuf *cbuf= typecheck_compbuf(in[0]->data, CB_RGBA); /* convert the RGB stackbuf to an HSV representation */ - composit1_pixel_processor(node, stackbuf, in[0]->data, in[0]->vec, do_sepycca, CB_RGBA); + composit1_pixel_processor(node, cbuf, in[0]->data, in[0]->vec, do_sepycca, CB_RGBA); /* separate each of those channels */ if(out[0]->hasoutput) - out[0]->data= valbuf_from_rgbabuf(stackbuf, CHAN_R); + out[0]->data= valbuf_from_rgbabuf(cbuf, CHAN_R); if(out[1]->hasoutput) - out[1]->data= valbuf_from_rgbabuf(stackbuf, CHAN_G); + out[1]->data= valbuf_from_rgbabuf(cbuf, CHAN_G); if(out[2]->hasoutput) - out[2]->data= valbuf_from_rgbabuf(stackbuf, CHAN_B); + out[2]->data= valbuf_from_rgbabuf(cbuf, CHAN_B); if(out[3]->hasoutput) - out[3]->data= valbuf_from_rgbabuf(stackbuf, CHAN_A); + out[3]->data= valbuf_from_rgbabuf(cbuf, CHAN_A); - free_compbuf(stackbuf); + if(cbuf!=in[0]->data) + free_compbuf(cbuf); } } diff --git a/source/creator/creator.c b/source/creator/creator.c index 25d3c9ce88b..595df06a71d 100644 --- a/source/creator/creator.c +++ b/source/creator/creator.c @@ -239,10 +239,12 @@ int main(int argc, char **argv) /* temporary: prevent people to make/use 64 bits versions without them knowing it might be risky. I don't know for sure yet if we get problems, but I rather not get the burden of having to fix all faulty saved 64 bits files (ton) */ - if(sizeof(void *)==8) { +/* if(sizeof(void *)==8) { printf("64 bits compiles will give incorrectly saved .blend files. Do not use it. For testing purposes please remove this line from creator.c\n"); exit(0); - } + +}*/ + #else if(sizeof(void *)==8) { printf("64 bits compiles will give incorrectly saved .blend files. Do not use it.\n\n"