<?php 
 
use nstdio\svg\animation\AnimateMotion; 
use nstdio\svg\animation\MPath; 
use nstdio\svg\container\SVG; 
use nstdio\svg\desc\Desc; 
use nstdio\svg\shape\Circle; 
use nstdio\svg\shape\Path; 
use nstdio\svg\shape\Rect; 
 
require_once __DIR__ . '/../vendor/autoload.php'; 
 
$svg = new SVG("5cm", "3cm"); 
$svg->getElement()->setAttribute('viewBox', '0 0 500 300'); 
 
$desc = new Desc($svg, 'Example animMotion01 - demonstrate motion animation computations'); 
$svg->append($desc); 
 
$rect = new Rect($svg, 298, 498, 1, 1); 
$rect->fill = "none"; 
$rect->stroke = "blue"; 
$rect->strokeWidth = 2; 
$svg->append($rect); 
 
$path = new Path($svg, 100, 250); 
$path->id = 'path1'; 
$path->curveTo(100,50, 400,50, 400,250); 
$path->fill = "none"; 
$path->stroke = "blue"; 
$path->strokeWidth = 7.06; 
 
$svg->append($path); 
 
$circle1 = new Circle($svg, 100, 250, 17.64); 
$circle2 = new Circle($svg, 250, 100, 17.64); 
$circle3 = new Circle($svg, 400, 250, 17.64); 
$circle1->fill = "blue"; 
$circle2->fill = "blue"; 
$circle3->fill = "blue"; 
 
$svg->append($circle1, $circle2, $circle3); 
 
$path2 = new Path($svg, -25, -12.5); 
$path2->lineTo(25, -12.5) 
    ->lineTo(0, -87.5) 
    ->closePath(false); 
$path2->fill = "yellow"; 
$path2->stroke = "red"; 
$path2->strokeWidth = 7.06; 
 
$svg->append($path2); 
 
$mpath = new MPath($svg, $path); 
 
$motion = new AnimateMotion($svg, $mpath); 
$motion->dur = '6s'; 
$motion->repeatCount = 'indefinite'; 
$motion->rotate = 'auto'; 
 
$path2->append($motion); 
 
//header('Content-Encoding: gzip'); 
echo mb_strlen(gzencode($svg->draw(), 9));
 
 |