<?

// столбец графика
class Gr_bars_col extends Gr_col {
	
	function __construct($graph, $x, $nomer, $key_value, $color, $def_value=0) {
		parent::__construct($graph, $x, $nomer, $key_value, $color, $def_value);
	}

	function redraw() {
		GLOBAL $log, $Measure_convert;

		// цвет текущего фрагмента
		// цвет шрифта текущего фрагмента
		// минимальная высота текущего фрагмента
		// высчитывание высоты текущего фрагмента


		$graph = $this->graph;

		$this->value_factor = $graph->value_factor;
		//print $this->value_factor . " ";


		if(!$this->value) {
			/*
			// просто заливаем весь столбец фоновой краской
			// возможно останется мусор из-за того что надпись на столбце больше его ширины
			// поэтому ставит метку что надо сделать полную перерисовку
			
			$this->graph->need_redraw_all = true;*/
			
			return true;
		}

		// вычисляем координаты столбца
		$height = $this->value * $this->value_factor;
		if($height < $graph->col_min_height) {
			$height = $graph->col_min_height;
		}
		//print "высота столбца: $height";
		
		$y1 = $graph->yZero - $height;
		$y2 = $graph->yZero;
		$x1 = $this->x;
		$x2 = $this->x + $graph->col_width;


		if($graph->value_label) {	
			// надпись на столбце - размер
			$text_x = $x1;
			$text_y = $y1 - $graph->value_font_size * $graph->factor_font_size;

			// если больше, то при текущей ширине, цифры вроде 233.22g будут наезжать на соседний столбец. 
			// это кол-во цифр, точка не входит
			$text = $Measure_convert->pretty_size($this->value, 'MB', true, 4); 

			$text = strtolower($text); // делаем букву маленькой. Так хоть какое то будет визуальное разграничение если надписи идут впритык. Потому что большая буква сливается с цифрами
			
			// нельзя добавлять пробелы, потому что не факт что будет перерисован следующий столбец. Либо специально запускать его перерисовку, а значит нужно и дальше перерисовывать
			//$text .= "     "; // добавляем пробелы чтобы гарантированно закрыть всю ширину столбца. Так как следующий столбец рисуется потом, 
			$font_color = $graph->value_font_color;
			//}

			// столбец фоновой краски сверху
			
			// выводим текст
			$graph->cv->font->color = $font_color;
			$graph->cv->brush->color = $graph->value_font_bg;
			$graph->cv->font->size = $graph->value_font_size;
			$graph->cv->textOut($text_x, $text_y, $text); 
		}

		// выводим блок
		// цвет
		if(!$graph->is_enabled) {
			$color = $this->color[2]; // цвет если заблокирован
			$color_pen = 0x555555;
		}
		else {
			if($this->is_select) {
				$color = $this->color[1];
			}	
			else $color = $this->color[0];

			$color_pen = 0xffffff;
			$y1 -= 1;
			$y2 += 1;

			// чтобы была рамочка в 1 пиксель между блоками, находящимися рядом
			if($x1 != $graph->xZero) 
				$x1 -= 1;
		}

		$graph->cv->pen->color = $color_pen;
		$graph->cv->brush->color = $color;
		$graph->cv->rectangle($x1, $y1, $x2, $y2);
	}

}

?>