ÿØÿà JFIF ÿá Exif MM * ÿÛ C
Server IP : 199.250.214.225 / Your IP : 18.118.121.23 Web Server : Apache System : Linux vps64074.inmotionhosting.com 3.10.0-1160.105.1.vz7.214.3 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : nicngo5 ( 1001) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /home/nicngo5/funds.upgrade.nicn.gov.ng/funds-upgraded/vendor/bacon/bacon-qr-code/src/BaconQrCode/Renderer/Image/ |
Upload File : |
<?php /** * BaconQrCode * * @link http://github.com/Bacon/BaconQrCode For the canonical source repository * @copyright 2013 Ben 'DASPRiD' Scholzen * @license http://opensource.org/licenses/BSD-2-Clause Simplified BSD License */ namespace BaconQrCode\Renderer\Image; use BaconQrCode\Exception; use BaconQrCode\Renderer\Color\ColorInterface; use SimpleXMLElement; /** * SVG backend. */ class Svg extends AbstractRenderer { /** * SVG resource. * * @var SimpleXMLElement */ protected $svg; /** * Colors used for drawing. * * @var array */ protected $colors = array(); /** * Prototype IDs. * * @var array */ protected $prototypeIds = array(); /** * init(): defined by RendererInterface. * * @see ImageRendererInterface::init() * @return void */ public function init() { $this->svg = new SimpleXMLElement( '<?xml version="1.0" encoding="UTF-8"?>' . '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"/>' ); $this->svg->addAttribute('version', '1.1'); $this->svg->addAttribute('width', $this->finalWidth . 'px'); $this->svg->addAttribute('height', $this->finalHeight . 'px'); $this->svg->addAttribute('viewBox', '0 0 ' . $this->finalWidth . ' ' . $this->finalHeight); $this->svg->addChild('defs'); } /** * addColor(): defined by RendererInterface. * * @see ImageRendererInterface::addColor() * @param string $id * @param ColorInterface $color * @return void * @throws Exception\InvalidArgumentException */ public function addColor($id, ColorInterface $color) { $this->colors[$id] = (string) $color->toRgb(); } /** * drawBackground(): defined by RendererInterface. * * @see ImageRendererInterface::drawBackground() * @param string $colorId * @return void */ public function drawBackground($colorId) { $rect = $this->svg->addChild('rect'); $rect->addAttribute('x', 0); $rect->addAttribute('y', 0); $rect->addAttribute('width', $this->finalWidth); $rect->addAttribute('height', $this->finalHeight); $rect->addAttribute('fill', '#' . $this->colors[$colorId]); } /** * drawBlock(): defined by RendererInterface. * * @see ImageRendererInterface::drawBlock() * @param integer $x * @param integer $y * @param string $colorId * @return void */ public function drawBlock($x, $y, $colorId) { $use = $this->svg->addChild('use'); $use->addAttribute('x', $x); $use->addAttribute('y', $y); $use->addAttribute( 'xlink:href', $this->getRectPrototypeId($colorId), 'http://www.w3.org/1999/xlink' ); } /** * getByteStream(): defined by RendererInterface. * * @see ImageRendererInterface::getByteStream() * @return string */ public function getByteStream() { return $this->svg->asXML(); } /** * Get the prototype ID for a color. * * @param integer $colorId * @return string */ protected function getRectPrototypeId($colorId) { if (!isset($this->prototypeIds[$colorId])) { $id = 'r' . dechex(count($this->prototypeIds)); $rect = $this->svg->defs->addChild('rect'); $rect->addAttribute('id', $id); $rect->addAttribute('width', $this->blockSize); $rect->addAttribute('height', $this->blockSize); $rect->addAttribute('fill', '#' . $this->colors[$colorId]); $this->prototypeIds[$colorId] = '#' . $id; } return $this->prototypeIds[$colorId]; } }