<?php
use nstdio\svg\container\G;
use nstdio\svg\container\SVG;
use nstdio\svg\desc\Desc;
use nstdio\svg\filter\Composite;
use nstdio\svg\filter\Filter;
use nstdio\svg\filter\GaussianBlur;
use nstdio\svg\filter\SpecularLighting;
use nstdio\svg\light\PointLight;
use nstdio\svg\shape\Rect;
require_once __DIR__ . '/../vendor/autoload.php';
$svg = new SVG();
$svg->apply(['viewBox' => '0 0 1100 400']);
new Desc($svg, 'Filter example');
$filter = new Filter($svg);
$blur = new GaussianBlur($filter);
$blur->apply(['in' => 'SourceAlpha', 'stdDeviation' => 4, 'result' => 'blur1']);
$specularLight = new SpecularLighting($filter);
$specularLight->apply(['result' => 'specOut', 'in' => $blur->result, 'specularExponent' => 20, 'lighting-color' => '#bbbbbb']);
$pointLight = new PointLight($specularLight);
$pointLight->apply(['x' => 50, 'y' => 100, 'z' => 200]);
$composite = new Composite($filter);
$composite->apply(['in' => "SourceGraphic", 'in2' => $specularLight->result, 'operator' => "arithmetic", 'k1' => 0, 'k2' => 1, 'k3' => 1, 'k4' => 0]);
$g = new G($svg);
$g->apply(['stroke' => "tomato", 'fill' => "peru", 'filter' => "url(#$filter->id)"]);
$params = [
['x' => '10%', 'y' => '10%'],
['x' => '55%', 'y' => '10%'],
['x' => '10%', 'y' => '55%'],
['x' => '55%', 'y' => '55%'],
];
foreach ($params as $param) {
new Rect($g, '40%', '40%', $param['x'], $param['y']);
}
echo $svg->draw();
|