Text with fonts, size and transformations

This commit is contained in:
Shikiryu 2011-03-21 11:17:29 +00:00
parent eaad24cbf3
commit f05a5c0647
1 changed files with 25 additions and 7 deletions

View File

@ -387,7 +387,7 @@ class SVGTOIMAGE{
for($i=0;$i<$empty;$i++){ for($i=0;$i<$empty;$i++){
$tiret[] = IMG_COLOR_TRANSPARENT; $tiret[] = IMG_COLOR_TRANSPARENT;
} }
if($this->_debug) $this->_log->message('nouveaux tirets : '.Log::decode($tiret)); //if($this->_debug) $this->_log->message('nouveaux tirets : '.Log::decode($tiret));
return $tiret; return $tiret;
} }
@ -686,12 +686,12 @@ class SVGTOIMAGE{
} }
/*END OF EXPERIMENT*/ /*END OF EXPERIMENT*/
private function _drawPolygon($polygon, $stroke, $fill = ''){ private function _drawPolygon($polygon, $stroke = '', $fill = ''){
//if($this->_debug) $this->_log->message('_drawPolygon : fill : '.$fill.' stroke:'.$stroke); //if($this->_debug) $this->_log->message('_drawPolygon : fill : '.$fill.' stroke:'.$stroke);
if($fill !== '' && count($polygon) >= 6){ if($fill !== '' && count($polygon) >= 6){
//if($this->_debug) $this->_log->message('polygon rempli : '.$fill); //if($this->_debug) $this->_log->message('polygon rempli : '.$fill);
imagefilledpolygon($this->_image,$polygon,count($polygon)/2,$fill); imagefilledpolygon($this->_image,$polygon,count($polygon)/2,$fill);
imagepolygon($this->_image, $polygon, count($polygon)/2, $stroke); if($stroke != '') imagepolygon($this->_image, $polygon, count($polygon)/2, $stroke);
}elseif(count($polygon) >= 6){ }elseif(count($polygon) >= 6){
//if($this->_debug) $this->_log->message('polygon non rempli : '.$stroke); //if($this->_debug) $this->_log->message('polygon non rempli : '.$stroke);
imagepolygon($this->_image, $polygon, count($polygon)/2, $stroke); imagepolygon($this->_image, $polygon, count($polygon)/2, $stroke);
@ -726,7 +726,7 @@ class SVGTOIMAGE{
if($this->_debug && !$thickness) $this->_log->error('Erreur dans la mise en place de l\'épaisseur du trait'); if($this->_debug && !$thickness) $this->_log->error('Erreur dans la mise en place de l\'épaisseur du trait');
else $this->_log->message('épaisseur du trait à : '.$this->_parseInt($strokeWidth)); else $this->_log->message('épaisseur du trait à : '.$this->_parseInt($strokeWidth));
$colorStroke = $stroke != '' ? $this->_allocateColor($stroke) : $this->_allocateColor('black'); $colorStroke = $stroke != '' ? $this->_allocateColor($stroke) : $fill === '' ? $this->_allocateColor('black') : '';
$colorFill = $fill != '' ? $this->_allocateColor($fill) : ''; $colorFill = $fill != '' ? $this->_allocateColor($fill) : '';
if($this->_debug) $this->_log->message('colors ! fill:'.$colorFill.'stroke:'.$colorStroke); if($this->_debug) $this->_log->message('colors ! fill:'.$colorFill.'stroke:'.$colorStroke);
@ -935,18 +935,36 @@ class SVGTOIMAGE{
$fontFamily = 'SansSerif'; $fontFamily = 'SansSerif';
$fontStyle = 'normal'; $fontStyle = 'normal';
$fontWeight = 'normal'; $fontWeight = 'normal';
extract($this->_getParams($textNode)); extract($this->_getParams($textNode));
//case translation
if($this->_getParam('originX') !== null){ if($this->_getParam('originX') !== null){
$x += $this->_getParam('originX'); $x += $this->_getParam('originX');
} }
if($this->_getParam('originY') !== null){ if($this->_getParam('originY') !== null){
$y += $this->_getParam('originY'); $y += $this->_getParam('originY');
} }
//end translation
//case rotation
if($this->_getParam('rotate') !== null){
$r = $this->_getParam('rotate');
}
//end rotation
//case scale
if($this->_getParam('scale') !== null) $fontSize *= ($this->_getParam('scale') -1);
//end scale
if($textNode == '') if($textNode == '')
return; return;
$colorStroke = $this->_allocateColor((string)$fill); $colorStroke = $this->_allocateColor((string)$fill);
imagestring ( $this->_image , 2 , $x , $y , rtrim($textNode) , $fill );
$fontfile = file_exists('fonts/'.strtolower($fontFamily).'.ttf') ? 'fonts/'.strtolower($fontFamily).'.ttf' : 'fonts/arial.ttf';
if($this->_debug) $this->_log->message('text '.rtrim($textNode).' avec typo :'.$fontfile.' de taille '.$fontSize);
if($this->_debug) $this->_log->message('text avec rotation : '.$r);
//imagestring ( $this->_image , 2 , $x , $y , rtrim($textNode) , $fill );
imagettftext ( $this->_image , (double)$fontSize , $r , $x , $y , $colorStroke , $fontfile , rtrim($textNode) );
imagecolordeallocate( $this->_image, $colorStroke); imagecolordeallocate( $this->_image, $colorStroke);
} }
@ -1024,9 +1042,9 @@ class SVGTOIMAGE{
//end rotation //end rotation
//case scale //case scale
if($this->_getParam('scale') !== null){ if($this->_getParam('scale') !== null){
$xrapport = ($x2 - $x1) / $this->_getParam('scale'); $xrapport = ($x2 - $x1) * ($this->_getParam('scale') -1);
$x2 += $xrapport; $x2 += $xrapport;
$yrapport = ($y2 - $y1) / $this->_getParam('scale'); $yrapport = ($y2 - $y1) * ($this->_getParam('scale') -1);
$y2 += $yrapport; $y2 += $yrapport;
if($this->_debug) $this->_log->message('scale by '.Log::decode($this->_getParam('scale')).':'.Log::decode($xrapport).' - '.Log::decode($yrapport)); if($this->_debug) $this->_log->message('scale by '.Log::decode($this->_getParam('scale')).':'.Log::decode($xrapport).' - '.Log::decode($yrapport));
} }