void set_matte_node_t::do_calc_defined( const render::render_context_t& context) { if( get_value<bool>( param( "premultiply"))) set_defined( intersect( input(0)->defined(), intersect( input(1)->defined(), interest()))); else set_defined( input(0)->defined()); }
void copy_channels_node_t::do_calc_defined( const render::render_context_t& context) { Imath::Box2i def1 = input(0)->defined(); Imath::Box2i def2 = input(1)->defined(); int ch_r = get_value<int>( param( "red")); int ch_g = get_value<int>( param( "green")); int ch_b = get_value<int>( param( "blue")); int ch_a = get_value<int>( param( "alpha")); // use alpha from input 1 if( ch_a == copy_source) { set_defined( def1); return; } // alpha comes from input2 if( ch_a != set_one && ch_a != set_zero) { set_defined( def2); return; } // alpha is zero or one, look at the other channels Imath::Box2i def; if( ch_r == copy_source) def = def1; else { if( ch_r != set_zero && ch_r != set_one) def = def2; } if( ch_g == copy_source) def.extendBy( def1); else { if( ch_g != set_zero && ch_r != set_one) def.extendBy( def2); } if( ch_b == copy_source) def.extendBy( def1); else { if( ch_b != set_zero && ch_r != set_one) def.extendBy( def2); } if( def.isEmpty()) def = def1; set_defined( def); }
void keyer3d_node_t::do_calc_defined( const render::context_t& context) { image_node_t *in0 = input_as<image_node_t>( 0); if( input( 1) && !is_active()) { Imath::Box2i def( Imath::intersect( in0->defined(), input_as<image_node_t>( 1)->defined())); set_defined( def); } else set_defined( in0->defined()); }
void generator_node_t::do_calc_defined( const render::context_t& context) { //if( crop_to_format()) set_defined( ImathExt::intersect( bounds(), interest())); //else //set_defined( interest()); // infinite images }
void crop_node_t::do_calc_defined( const render::render_context_t& context) { Imath::Box2i def( intersect( input()->defined(), intersect( domain(), interest()))); set_defined( def); }