[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11224] trunk/blender/source/blender/nodes /intern/CMP_nodes/CMP_math.c: After chatting with Broken about grs comments on the default behavior
Robert Holcomb
bob_holcomb at hotmail.com
Wed Jul 11 05:00:44 CEST 2007
Revision: 11224
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11224
Author: scourage
Date: 2007-07-11 05:00:39 +0200 (Wed, 11 Jul 2007)
Log Message:
-----------
After chatting with Broken about grs comments on the default behavior
of the nodes, I realized I had strayed from the path of enlightened blending
by causing the math node to create an output the size of the larger of the
two inputs.
It has been corrected create the output the size of the
first image, and in its abscense the second image. In the event of
nether input containing image data the node does not function. I also
added some early out checks at the beginning of the function to speed it
up a tad in these cases and commented the code a bit more.
Modified Paths:
--------------
trunk/blender/source/blender/nodes/intern/CMP_nodes/CMP_math.c
Modified: trunk/blender/source/blender/nodes/intern/CMP_nodes/CMP_math.c
===================================================================
--- trunk/blender/source/blender/nodes/intern/CMP_nodes/CMP_math.c 2007-07-11 01:55:25 UTC (rev 11223)
+++ trunk/blender/source/blender/nodes/intern/CMP_nodes/CMP_math.c 2007-07-11 03:00:39 UTC (rev 11224)
@@ -140,31 +140,25 @@
CompBuf *cbuf=in[0]->data;
CompBuf *cbuf2=in[1]->data;
CompBuf *stackbuf;
- int maxx=-1, maxy=-1;
- /* stack order out: bw */
- /* stack order in: col */
-
- if(out[0]->hasoutput==0)
- return;
- /* check max size */
+ /* check for inputs and outputs for early out*/
+ if(in[0]->hasinput==0 || in[1]->hasinput==0) return;
+ if(in[0]->data==NULL && in[1]->data==NULL) return;
+ if(out[0]->hasoutput==0) return;
+
+ /*create output based on first input */
if(cbuf) {
- maxx=cbuf->x;
- maxy=cbuf->y;
+ stackbuf=alloc_compbuf(cbuf->x, cbuf->y, CB_VAL, 1);
}
- if(cbuf2) {
- if(cbuf2->x > maxx) maxx=cbuf2->x;
- if(cbuf2->y > maxy) maxy=cbuf2->y;
+ /* and if it doesn't exist use the second input since we
+ know that one of them must exist at this point*/
+ else {
+ stackbuf=alloc_compbuf(cbuf2->x, cbuf2->y, CB_VAL, 1);
}
/* operate in case there's valid size */
- if((maxx != -1) && (maxy !=-1)) {
- stackbuf=alloc_compbuf(maxx, maxy, CB_VAL, 1); /* allocs */
-
- composit2_pixel_processor(node, stackbuf, in[0]->data, in[0]->vec, in[1]->data, in[1]->vec, do_math, CB_VAL, CB_VAL);
-
- out[0]->data= stackbuf;
- }
+ composit2_pixel_processor(node, stackbuf, in[0]->data, in[0]->vec, in[1]->data, in[1]->vec, do_math, CB_VAL, CB_VAL);
+ out[0]->data= stackbuf;
}
bNodeType cmp_node_math= {
More information about the Bf-blender-cvs
mailing list