<?

/*
как использовать в событиях в develstudio



if(Bt_img::is_enabled($self->name)) {
	// выполняем код, кнопка активна
}



*/


class Bt_img {
	static $bt_mas;

	static function is_enabled($name) {
		if(!isset(self::$bt_mas[$name]['enabled']))
			return true;

		if(self::$bt_mas[$name]['enabled'])
			 return true;
		else return false;

	}

	static function init($name, $path) {
		if(!$obj = get_ui('Fm->'.$name))
			throw new Error_def("Нет кнопки с именем: $name");
		
		self::$bt_mas[$name]['enabled'] = true;
		self::$bt_mas[$name]['path'] = $path;

		// создаем серую версию если надо
		$disable_path = self::create_disable_path($path);
		//if(!file_exists($disable_path))
			self::create_disable($path);
	}

	static function create_disable_path($img_path) {
		return preg_replace('#^(.+?)\.([^.]+)$#', '$1.disable.$2', $img_path);
	}

	static function set_enabled($name, $is_enabled) {
		GLOBAL $log;

		if(!$obj = get_ui('Fm->'.$name))
			throw new Error_def("Нет кнопки с именем: $name");

		//$log->line("set_enabled($name, $is_enabled)");

		// если значение не изменилось
		if(self::$bt_mas[$name]['enabled'] == $is_enabled)
			return true;

		self::$bt_mas[$name]['enabled'] = $is_enabled;

		$original_path = self::$bt_mas[$name]['path'];

		if($is_enabled) {
			 $path = $original_path;
			 $cursor = crHandPoint;
		}
		else {
			$path = self::create_disable_path($original_path);
			$cursor = crDefault;
		}

		$obj->cursor = $cursor;
		$obj->loadFromFile($path);
	}

	static function create_disable($img_path) {

		if(!preg_match('#\.(png|gif)$#i', strtolower($img_path), $res))
			throw new Error_def("Не удалось распарсить расширение файла: $img_path");

		if($res[1] == 'png')
			$img = imagecreatefrompng($img_path);
		elseif($res[1] == 'gif')
			$img = imagecreatefromgif($img_path);
		else 
			throw new Error_def("Неизвестный тип файла: $img_path");

		imagesavealpha($img, true); 
		imagealphablending($img, true); 

		imagefilter($img, IMG_FILTER_GRAYSCALE);
		imagefilter($img, IMG_FILTER_COLORIZE, 255, 255, 255, 15); // добавляем прозрачности
		//imagegammacorrect($img, 1.0, 1.537); убивает прозрачность.

		imagepng($img, self::create_disable_path($img_path));
		imagedestroy($img);
	}
}


?>