• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/lib/component/userprofile/stresslevel/img.php
  • Класс: BitrixIntranetComponentUserProfileStressLevelImg
  • Вызов: Img::drawImageArrow
protected function drawImageArrow(array $params = [])
{
	$stressValue = (
		isset($params['value'])
			? intval($params['value'])
			: false
	);
	$canvas = (
		isset($params['canvas'])
			? $params['canvas']
			: false
	);
	$center = (
		isset($params['center'])
			? $params['center']
			: false
	);
	$factor = $this->factor;

	if (
		!$canvas
		|| !$center
		|| $stressValue === false
	)
	{
		return false;
	}

	$imagePath = $this->getImagePartsPath().'/arrow2_4x.png';
	if (!file_exists($imagePath))
	{
		return false;
	}

	$transparentColor = new ImagickPixel('#00000000');
	$deltaY = $factor*6;
	$angle = $stressValue/100*180 - 90;
	$arrowLength = $factor*52 + $deltaY;
	$arrowWidth = $factor*16;

	$arrowImage = new Imagick($imagePath);
/*
	if ($factor > 1)
	{
		$arrowImage->resizeImage($factor*16, $factor*34, Imagick::FILTER_LANCZOS, 1);
	}
*/
	$arrowQuadrate = new Imagick();
	$arrowQuadrate->newImage($arrowLength*2, $arrowLength*2, $transparentColor);
	$arrowQuadrate->compositeImage($arrowImage, Imagick::COMPOSITE_DEFAULT, $arrowLength-$arrowWidth/2, 0*$factor);

	$radius = $arrowLength * sqrt(2);
	$arrowX = $center['x'] - ($radius*cos(deg2rad(45 - abs($angle))));
	$arrowY = $center['y'] - ($radius*cos(deg2rad(45 - abs($angle))));

	if ($angle !== 0)
	{
		$arrowQuadrate->rotateimage($transparentColor, $angle);
	}

	$canvas->compositeImage($arrowQuadrate, Imagick::COMPOSITE_DEFAULT, $arrowX, $arrowY);

	return true;
}