$boxObj['w'] || $logoH > $boxObj['h']){
imagecopyresized ( $ctnImg, $logo_img, $boxObj['x'], $boxObj['y'], 0, 0, $boxObj['w'], $boxObj['h'], $logoW, $logoH);
}else{
imagecopy ( $ctnImg, $logo_img, $boxObj['x'], $boxObj['y'], 0, 0, $boxObj['w'], $boxObj['h']);
}
}
}
function createBox($ctnImg, $obj){
$grey = imagecolorallocate($ctnImg, 150, 150, 150);
//echo "x[".$obj['x']."] y[".$obj['y']."] w[".$obj['w']."] h[".$obj['h']."]
";
imagefilledrectangle($ctnImg, $obj['x'], $obj['y'], ($obj['x']+$obj['w']), ($obj['y']+$obj['h']), $grey);
//imagettftext ( $ctnImg, 1, 0, $obj['x'], $obj['y'], $black, getFontFile('arial'), "Yeah");
return;
}
function createTextBox($ctnImg,$extParamArr){
$textArr=array();
$paramArr=array();
$paramArr['width']=(isset($extParamArr['width'])) ? $extParamArr['width']: 0;
$paramArr['height']=(isset($extParamArr['height'])) ? $extParamArr['height']: 0;
$paramArr['x']=(isset($extParamArr['x'])) ? $extParamArr['x']: 0;
$paramArr['y']=(isset($extParamArr['y'])) ? $extParamArr['y']: 0;
$paramArr['font-family']=(isset($extParamArr['font-family'])) ? strToLower($extParamArr['font-family']) : '';
$paramArr['font-size']=(isset($extParamArr['font-size'])) ? $extParamArr['font-size']: '';
$paramArr['font-weight']=(isset($extParamArr['font-weight'])) ? $extParamArr['font-weight']: 'normal';
$paramArr['font-color']=(isset($extParamArr['font-color'])) ? $extParamArr['font-color']: '#000000';
$paramArr['text']=(isset($extParamArr['text'])) ? $extParamArr['text']: '';
$paramArr['align']=(isset($extParamArr['align'])) ? $extParamArr['align']: 'left';
$paramArr['valign']=(isset($extParamArr['valign'])) ? $extParamArr['valign']: 'middle';
$paramArr['bgImage']=(isset($extParamArr['bgImage'])) ? $extParamArr['bgImage']: '';
$paramArr['bgColor']=(isset($extParamArr['bgColor'])) ? $extParamArr['bgColor']: '';
$paramArr['wordWrap']=(isset($extParamArr['wordWrap'])) ? $extParamArr['wordWrap']: false;
$paramArr['text_maxLen']=(isset($extParamArr['text_maxLen'])) ? intval($extParamArr['text_maxLen']): 0;
$paramArr['text_maxLenEnd']=(isset($extParamArr['text_maxLenEnd'])) ? $extParamArr['text_maxLenEnd']: '';
$paramArr['padding-top']=(isset($extParamArr['padding-top'])) ? $extParamArr['padding-top']: 0;
$paramArr['padding-bottom']=(isset($extParamArr['padding-bottom'])) ? $extParamArr['padding-bottom']: 0;
$paramArr['padding-left']=(isset($extParamArr['padding-left'])) ? $extParamArr['padding-left']: 0;
$paramArr['padding-right']=(isset($extParamArr['padding-right'])) ? $extParamArr['padding-right']: 0;
$fontFamily=$this->getFontFileFromFamily($paramArr['font-family'],$paramArr['font-weight']);
//echo "len>".strlen($paramArr['text'])."\n";
if ($paramArr['text_maxLen'] > 0 && strlen($paramArr['text']) > $paramArr['text_maxLen']){
$paramArr['text']=substr($paramArr['text'],0,$paramArr['text_maxLen']);
if ($paramArr['text_maxLenEnd']) $paramArr['text'].=$paramArr['text_maxLenEnd'];
}
if ($paramArr['wordWrap']){
$tmpText=str_replace(array('\r','\n'),array('',' '),$paramArr['text']);
$BBox = ImageTTFBBox ( $paramArr['font-size'], 0, $fontFamily, $tmpText);
$textWidth = max($BBox[2], $BBox[4]) - min($BBox[0], $BBox[6]);
$textHeight = max($BBox[1], $BBox[3]) - min($BBox[5], $BBox[7]);
if ($textWidth > ($paramArr['width'] - $paramArr['padding-left'] - $paramArr['padding-right'])){
$testText=$tmpText;
$lineWidth=$textWidth;
while($lineWidth >= ($paramArr['width'] - $paramArr['padding-left'] - $paramArr['padding-right'])){
$testText=substr($testText,0,strlen($testText)-1);
$BBox = ImageTTFBBox ( $paramArr['font-size'], 0, $fontFamily, $testText);
$lineWidth = max($BBox[2], $BBox[4]) - min($BBox[0], $BBox[6]);
$lineLen = strlen($testText);
}
$testText=$tmpText;
while(strlen($testText) > 0){
$t1=substr($testText,0,$lineLen);
if (strrpos($t1," ") && strlen($t1) == $lineLen) $t1=substr($t1,0,strrpos($t1," ")+1);
else $t1=substr($t1,0);
//echo "t1>".$t1.":".strlen($t1)."\n";
$textArr[]=array('text'=> $t1);
$testText=substr($testText,strlen($t1));
//echo "testText>".$testText."\n";
}
}else{
$textArr[]=array('text'=> $tmpText);
}
}else{
if (strpos($paramArr['text'],'\n') > -1){
$tmpArr=explode('\n',trim($paramArr['text']));
foreach($tmpArr as $k => $v){
if (strlen(trim($v)) > 0) $textArr[]=array('text'=> trim($v));
}
}else{
$textArr[0]=array('text'=> trim($paramArr['text']));
}
}
$nbOfLines=count($textArr);
$testBBox = ImageTTFBBox ( $paramArr['font-size'], 0, $fontFamily, 'AMPIZQgjlyqfpi|{(~!@^.,"');
$lineHeight = max($testBBox[1], $testBBox[3]) - min($testBBox[5], $testBBox[7]);
/*
for ($i=0;$i < $nbOfLines;$i++){
$BBox = ImageTTFBBox ( $paramArr['font-size'], 0, $fontFamily, $textArr[$i]['text']);
$textWidth = max($BBox[2], $BBox[4]) - min($BBox[0], $BBox[6]);
$textHeight = max($BBox[1], $BBox[3]) - min($BBox[5], $BBox[7]);
while($textWidth >= ($paramArr['width'] - $paramArr['padding-left'] - $paramArr['padding-right']) || $textHeight >= ($lineHeight - $paramArr['padding-top'] - $paramArr['padding-bottom'])){
$paramArr['font-size']-=1;
$BBox = ImageTTFBBox ( $paramArr['font-size'], 0, $fontFamily, $textArr[$i]['text']);
$textWidth = max($BBox[2], $BBox[4]) - min($BBox[0], $BBox[6]);
$textHeight = max($BBox[1], $BBox[3]) - min($BBox[5], $BBox[7]);
}
}
*/
$color = $this->createColorFromHex($ctnImg,$paramArr['font-color']);
while (($nbOfLines*$lineHeight) > ($paramArr['height']-$paramArr['padding-bottom']-$paramArr['padding-top'])){
//echo "[".$nbOfLines."]";
$nbOfLines--;
}
//echo "[".$nbOfLines."] allLineH:".($nbOfLines*$lineHeight)." innerH:".($paramArr['height']-$paramArr['padding-bottom']-$paramArr['padding-top']);
$xAxisCorrection=floor($lineHeight/16);
$yAxisCorrection=floor($lineHeight/4);
$yAxisBegin=intval(($paramArr['height'] - ($lineHeight * $nbOfLines))/2) - $yAxisCorrection;
if ($paramArr['padding-top'] > 0 && $yAxisBegin < $paramArr['padding-top']) $yAxisBegin = $paramArr['padding-top'];
//else if ($yAxisBegin < 0) $yAxisBegin = 0;
for ($i=0;$i < $nbOfLines;$i++){
$BBox = ImageTTFBBox ( $paramArr['font-size'], 0, $fontFamily, $textArr[$i]['text']);
$textWidth = max($BBox[2], $BBox[4]) - min($BBox[0], $BBox[6]);
$textHeight = max($BBox[1], $BBox[3]) - min($BBox[5], $BBox[7]);
if ($paramArr['align'] == 'center'){
$textArr[$i]['x'] = intval((($paramArr['width'] - $textWidth)/2)+$paramArr['x'])-$xAxisCorrection; // -2 is a manual correction
}else if ($paramArr['align'] == 'right'){
$textArr[$i]['x'] = intval(($paramArr['width'] - $textWidth) + $paramArr['x']) - $paramArr['padding-right']-$xAxisCorrection; // -2 is a manual correction
}else{
$textArr[$i]['x'] = intval($paramArr['x']) + $paramArr['padding-left']-$xAxisCorrection; // -2 is a manual correction
}
$textArr[$i]['y'] = $yAxisBegin + ($lineHeight * $i) + $lineHeight + $paramArr['y'];
//echo ">>>>>>> lineHeight:".$lineHeight.", yAxisBegin:".$yAxisBegin.", nbOfLines:".$nbOfLines.", height:".$paramArr['height'].", y:".$textArr[$i]['y']."
";
imagettftext ($ctnImg, $paramArr['font-size'], 0, $textArr[$i]['x'], $textArr[$i]['y'], $color, $fontFamily, $textArr[$i]['text']);
}
}
function getFontFileFromFamily($family,$weight){
$fontFile="";
switch(strToLower($family)){
case 'arial':
switch(strToLower($weight)){
case 'bold':
$fontFile = 'arialbd';
break;
case 'italic':
$fontFile = 'ariali';
break;
case 'bold,italic':
$fontFile = 'arialbi';
break;
default: $fontFile = 'arial';
}
break;
case 'courier new':
switch(strToLower($weight)){
case 'bold':
$fontFile = 'courbd';
break;
case 'italic':
$fontFile = 'couri';
break;
case 'bold,italic':
$fontFile = 'courbi';
break;
default: $fontFile = 'cour';
}
break;
case 'times new roman':
switch(strToLower($weight)){
case 'bold':
$fontFile = 'timesbd';
break;
case 'italic':
$fontFile = 'timesi';
break;
case 'bold,italic':
$fontFile = 'timesbi';
break;
default: $fontFile = 'times';
}
break;
case 'verdana':
switch(strToLower($weight)){
case 'bold':
$fontFile = 'verdanabd';
break;
case 'italic':
$fontFile = 'verdanai';
break;
case 'bold,italic':
$fontFile = 'verdanaz';
break;
default: $fontFile = 'verdana';
}
break;
default: $fontFile = 'arial';
}
return $fontFile;
}
function handleError($errCatch){
die($errCatch);
}
}
?>