PHP Classes

File: example/blend.php

Recommend this page to a friend!
  Classes of Edgar Asatryan   PHP SVG Magick Library   example/blend.php   Download  
File: example/blend.php
Role: Example script
Content type: text/plain
Description: Example script
Class: PHP SVG Magick Library
Compose vectorial graphics in SVG format
Author: By
Last change:
Date: 7 years ago
Size: 2,056 bytes
 

Contents

Class file image Download
<?php
use nstdio\svg\container\Defs;
use
nstdio\svg\container\G;
use
nstdio\svg\container\SVG;
use
nstdio\svg\desc\Desc;
use
nstdio\svg\desc\Title;
use
nstdio\svg\filter\Blend;
use
nstdio\svg\filter\Filter;
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('5cm', '5cm');
$svg->getElement()->setAttribute('viewBox', "0 0 500 500");
$title = new Title($svg, 'Example feBlend - Examples of feBlend modes');
$desc = new Desc($svg, 'Five text strings blended into a gradient, with one text string for each of the five feBlend modes.');
$svg->append($title, $desc);

$defs = new Defs($svg);

$linearGradient = UniformGradient::gradient($defs, ['#000000', '#ffffff', '#ff0000', '#808080'], null);
KeyValueWriter::apply($linearGradient->getElement(), ['gradientUnits' => 'userSpaceOnUse', 'x1' => 100, 'y1' => 0, 'x2' => 300, 'y2' => 0,]);


$defs->append($linearGradient);
$types = ['Normal', 'Multiply', 'Screen', 'Darken', 'Lighten'];

foreach (
$types as $type) {
   
$blend = new Blend($defs);
   
$blend->mode = strtolower($type);
   
$blend->in2 = 'BackgroundImage';
   
$blend->in = 'SourceGraphic';
   
$filter = new Filter($defs, $type, $blend);

   
$defs->append($filter);
}

$svg->append($defs);

$rect = new Rect($svg, 498, 498, 1, 1);
$rect->fill = "none";
$rect->stroke = "blue";

$g = new G($svg);
$g->enableBackground = "new";

$rect2 = new Rect($g, 460, 300, 100, 20);
$rect2->fill = "url(#$linearGradient->id)";

$g->append($rect2);

$gInner = new G($g);
$gInner->fontFamily = "Verdana";
$gInner->fontSize = 75;
$gInner->fill = "#888888";
$gInner->fillOpacity = 0.6;

$textArray = [90, 180, 270, 360, 450];

foreach (
$textArray as $key => $value) {
   
$text = new Text($gInner, $types[$key]);
   
$text->x = 50;
   
$text->y = $value;
   
$text->filter = "url(#" . $types[$key] . ")";

   
$gInner->append($text);
}
$g->append($gInner);

$svg->append($g);
$svg->append($rect);

echo
$svg->draw();