| 
<?php
 /**
 * This example demonstrates the different rendering when using the
 * 'preserveAspectRatio' property.
 *
 * @author Stefanius <[email protected]>
 * @copyright GPLv3 License - see the LICENSE file for details
 */
 
 declare(strict_types=1);
 
 include '../autoloader.php';
 
 use SKien\SVGCreator\SVG;
 use SKien\SVGCreator\SVGImage;
 use SKien\SVGCreator\Shapes\SVGLine;
 use SKien\SVGCreator\Shapes\SVGRect;
 use SKien\SVGCreator\Text\SVGText;
 
 $oSVG = new SVG();
 $oSVG->setSize(700, 1000);
 $oSVG->setViewbox(0, 0, 2100, 2970);
 
 $aPreserve = [
 'none',
 'xMinYMin',
 'xMinYMid',
 'xMinYMax',
 'xMidYMin',
 'xMidYMid',
 'xMidYMax',
 'xMaxYMin',
 'xMaxYMid',
 'xMaxYMax',
 ];
 
 $oSVG->addStyleDef('text { font: 48px Verdana, Helvetica, Arial, sans-serif; }');
 $oSVG->addStyleDef('rect {fill: none; stroke: #999; stroke-width: 4}');
 $oSVG->addStyleDef('line {stroke: #777; stroke-width: 2}');
 
 $oSVG->add(new SVGRect(90, 30, 200, 200));
 $oImage = new SVGImage(90, 30, 200, 200, 'images/elephpant.png');
 $oSVG->add($oImage);
 
 $y = 300;
 $x = 450;
 foreach ($aPreserve as $strPreserve) {
 $oSVG->add(new SVGLine(0, $x + 950, $y - 25,  $y - 25));
 $oSVG->add(new SVGText(20, $y + 100, "'$strPreserve'", SVGText::STYLE_VALIGN_MIDDLE));
 
 $oSVG->add(new SVGRect($x, $y, 200, 100));
 $oImage = new SVGImage($x, $y, 200, 100, 'images/elephpant.png');
 // $oImage->setFilter($oFilter);
 $oImage->setPreserveAspectRatio($strPreserve);
 $oSVG->add($oImage);
 
 $oSVG->add(new SVGRect($x + 300, $y, 100, 200));
 $oImage = new SVGImage($x + 300, $y, 100, 200, 'images/elephpant.png');
 // $oImage->setFilter($oFilter);
 $oImage->setPreserveAspectRatio($strPreserve);
 $oSVG->add($oImage);
 
 $oSVG->add(new SVGRect($x + 500, $y, 200, 100));
 $oImage = new SVGImage($x + 500, $y, 200, 100, 'images/elephpant.png');
 // $oImage->setFilter($oFilter);
 $oImage->setPreserveAspectRatio($strPreserve . ' slice');
 $oSVG->add($oImage);
 
 $oSVG->add(new SVGRect($x + 800, $y, 100, 200));
 $oImage = new SVGImage($x + 800, $y, 100, 200, 'images/elephpant.png');
 // $oImage->setFilter($oFilter);
 $oImage->setPreserveAspectRatio($strPreserve . ' slice');
 $oSVG->add($oImage);
 
 $y += 250;
 }
 $oSVG->add(new SVGLine(0, $x + 950, $y - 25,  $y - 25));
 $oSVG->add(new SVGLine($x - 50, $x - 50, 200, $y - 25));
 $oSVG->add(new SVGText($x + 200, 250, "'meet'", SVGText::STYLE_ALIGN_MIDDLE . SVGText::STYLE_VALIGN_MIDDLE));
 $oSVG->add(new SVGLine($x + 450, $x + 450, 200, $y - 25));
 $oSVG->add(new SVGText($x + 700, 250, "'slice'", SVGText::STYLE_ALIGN_MIDDLE . SVGText::STYLE_VALIGN_MIDDLE));
 $oSVG->add(new SVGLine($x + 950, $x + 950, 200, $y - 25));
 
 $oSVG->output();
 |