コード例 #1
0
ファイル: set_matte_node.cpp プロジェクト: apextw/Ramen
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());
}
コード例 #2
0
ファイル: copy_channels_node.cpp プロジェクト: apextw/Ramen
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);
}
コード例 #3
0
ファイル: keyer3d_node.cpp プロジェクト: JohanAberg/Ramen
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());
}
コード例 #4
0
ファイル: generator_node.cpp プロジェクト: kmac5/ramen
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
}
コード例 #5
0
ファイル: crop_node.cpp プロジェクト: apextw/Ramen
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);
}