<?


// Подстраивает размер графика под размер панели обертки в которой находится все элементы имеющие отношения к графику.
class Gr_size {

	private $gr; // ссылка на Graph
	private $group_after; // сгруппированные объекты после графика
	protected $fmName = 'Fm';

	function __construct($gr, $objs_below_graph) {
		$this->gr = $gr;

		// группируем объекты под графиком чтобы можно было их перемещать вместе
		$this->group_after = new Ui_group($objs_below_graph, true);
	}

	function adapt_size() {
		GLOBAL $log;

		$pxRatio = Ui_adapt_size::$pxRatio;

		$before_h = 10 * $pxRatio;
		$after_h = 50 * $pxRatio;

		// берем размер панели обертки
		$wrap_panel = get_ui($this->fmName.'->'.$this->gr->name . '_wrap');
		$gr_panel = get_ui($this->fmName.'->'.$this->gr->name);

		//var_dump($wrap_panel);

		$new_wrap_h = $wrap_panel->h;

		$before_h = $gr_panel->y;

		//$log->line("b: $before_h, a: $after_h");

		// вычисляем новую высоту графика
		$gr_h = $new_wrap_h - $before_h - $after_h;

		// чтобы не выскакивала ошибка "деление на ноль"
		if($gr_h <= 0) $gr_h = 1;

		$gr_panel->h = $gr_h; // устанавливаем размер панели графика
		$this->gr->calc_graph_size(true); // он и перерисует график
		
		//$log->line("gr_panel->h $gr_h");

		// смещаем объекты под графиком
		$y = $gr_h + $gr_panel->y;
		$this->group_after->set_coords(false, $y);

		// $this->gr->canvas_refresh(); // не нужно, $this->gr->calc_graph_size сам перерисует
	}
}


?>