예제 #1
0
const TF::hit_set_t &
BiFaTestData::get_factors_for( BiFaAlgorithm::ptr_t algorithm )
{
	factor_map_t::iterator f = factor_hits.find( algorithm );
	if( factor_hits.end() == f )
	{
		f = factor_hits.insert( factor_map_t::value_type( algorithm, TF::hit_set_ptr_t( new TF::hit_set_t ) ) ).first;
		model_hits_2_factor_hits( get_output_for( algorithm ).hits, *( f->second ) );
	}

	return *( f->second );
}
void msh::GraphicsDisplayLayout::clip_to_output(geometry::Rectangle& rect)
{
    auto output = get_output_for(rect);

    if (output.size.width > geom::Width{0} && output.size.height > geom::Height{0} &&
        rect.size.width > geom::Width{0} && rect.size.height > geom::Height{0})
    {
        auto tl_closed = rect.top_left;
        auto br_closed = rect.bottom_right() - geom::Displacement{1,1};

        geom::Rectangles rectangles;
        rectangles.add(output);

        rectangles.confine(tl_closed);
        rectangles.confine(br_closed);

        rect.top_left = tl_closed;
        rect.size = as_size(br_closed - tl_closed + geom::Displacement{1, 1});
    }
    else
    {
        rect.size = geom::Size{0,0};
    }
}
void msh::GraphicsDisplayLayout::size_to_output(geometry::Rectangle& rect)
{
    auto output = get_output_for(rect);
    rect = output;
}