Пример #1
0
void GridComponent::on_render_overlay(clan::Canvas &canvas, const clan::Rect &update_rect)
{
	set_cliprect(canvas, get_size());
	std::vector<GridObject *> selection = main_window->get_selection()->get_selection();
	for (size_t i = 0; i < selection.size(); i++)
	{
		clan::Rect grabbers[8] =
		{
			selection[i]->get_grabber_e(),
			selection[i]->get_grabber_se(),
			selection[i]->get_grabber_s(),
			selection[i]->get_grabber_sw(),
			selection[i]->get_grabber_w(),
			selection[i]->get_grabber_nw(),
			selection[i]->get_grabber_n(),
			selection[i]->get_grabber_ne()
		};

		for (int j=0; j<8; j++)
			grabbers[j] = window_to_component_coords(selection[i]->component_to_window_coords(grabbers[j]));

		clan::Rect pos = window_to_component_coords(selection[i]->component_to_window_coords(selection[i]->get_size()));
		pos.expand(4,4,3,3);
		canvas.draw_box( pos, clan::Colorf(100.0f/255.0f, 100.0f/255.0f, 100.0f/255.0f, 0.25f));

		for (int j=0; j<8; j++)
		{
			canvas.fill_rect( grabbers[j], clan::Colorf::white);
			canvas.draw_box( grabbers[j], clan::Colorf::black);
		}
	}

	if (netselect_box.get_size() != clan::Size(0,0))
	{
		clan::Rect box = netselect_box;
		box.translate(component_container->get_geometry().left, component_container->get_geometry().top);

		clan::Colorf c = clan::Colorf::blue;
		c.set_alpha(0.1f);
		canvas.fill_rect( box, c);
		canvas.draw_box( box, clan::Colorf::blue);
	}

	reset_cliprect(canvas);
}
Пример #2
0
CL_Point CL_GUIComponent::screen_to_component_coords(const CL_Point &screen_point) const
{
	CL_GUITopLevelWindow *toplevel_window = impl->gui_manager.lock()->get_toplevel_window(this);
	CL_Point client_point = impl->gui_manager.lock()->window_manager.screen_to_window(toplevel_window, screen_point, true);
	return window_to_component_coords(client_point);
}
Пример #3
0
CL_Rect CL_GUIComponent::window_to_component_coords(const CL_Rect &rect) const
{
	CL_Point tl = window_to_component_coords(rect.get_top_left());
	CL_Point br = window_to_component_coords(rect.get_bottom_right());
	return CL_Rect(tl.x, tl.y, br.x, br.y);
}