<?php
use nstdio\svg\container\Defs;
use nstdio\svg\container\G;
use nstdio\svg\container\SVG;
use nstdio\svg\filter\ComponentTransfer;
use nstdio\svg\gradient\UniformGradient;
use nstdio\svg\shape\Rect;
use nstdio\svg\text\Text;
use nstdio\svg\util\KeyValueWriter;
require_once __DIR__ . '/../vendor/autoload.php';
$svg = new SVG('8cm', '4cm');
$svg->apply(['viewBox' => "0 0 800 400"]);
$defs = new Defs($svg);
$linearGradient = UniformGradient::gradient($defs, ['#ff0000', '#00ff00', '#0000ff', '#000000'], null);
KeyValueWriter::apply($linearGradient->getElement(), ['gradientUnits' => 'userSpaceOnUse', 'x1' => 100, 'y1' => 0, 'x2' => 600, 'y2' => 0,]);
$g = new G($svg);
$g->apply(['fontFamily' => 'Verdana', 'fontSize' => 75, 'fontWeight' => 'bold', 'fill' => "url(#$linearGradient->id)"]);
$rect = new Rect($g, 20, 600, 100, 0);
$identity = ComponentTransfer::identity($defs);
$text = new Text($g, "Identity");
$text->apply(['x' => 100, 'y' => 90, 'filter' => "url(#$identity->id)"]);
$table = ComponentTransfer::table($defs, [[0, 0, 1, 1], [1, 1, 0, 0], [0, 1, 1, 0]]);
$text2 = new Text($g, "TableLookup");
$text2->apply(['x' => 100, 'y' => 190, 'filter' => "url(#$table->id)"]);
$linear = ComponentTransfer::linear($defs, 0.5, [0.25, 0, 0.5]);
$text3 = new Text($g, "LinearFunc");
$text3->apply(['x' => 100, 'y' => 290, 'filter' => "url(#$linear->id)"]);
$gamma = ComponentTransfer::gamma($defs, 2, [5, 3, 1], 0);
$text4 = new Text($g, "GammaFunc");
$text4->apply(['x' => 100, 'y' => 390, 'filter' => "url(#$gamma->id)"]);
echo $svg->draw();
|