- Модуль: 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;
}