Server IP : 23.254.227.96 / Your IP : 216.73.216.120 Web Server : Apache/2.4.62 (Unix) OpenSSL/1.1.1k System : Linux hwsrv-1277026.hostwindsdns.com 4.18.0-477.13.1.el8_8.x86_64 #1 SMP Tue May 30 14:53:41 EDT 2023 x86_64 User : viralblo ( 1001) PHP Version : 8.1.31 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /usr/local/cwpsrv/var/services/pma/vendor/bacon/bacon-qr-code/src/Encoder/ |
Upload File : |
<?php declare(strict_types = 1); namespace BaconQrCode\Encoder; use SplFixedArray; use Traversable; /** * Byte matrix. */ final class ByteMatrix { /** * Bytes in the matrix, represented as array. * * @var SplFixedArray<SplFixedArray<int>> */ private $bytes; /** * Width of the matrix. * * @var int */ private $width; /** * Height of the matrix. * * @var int */ private $height; public function __construct(int $width, int $height) { $this->height = $height; $this->width = $width; $this->bytes = new SplFixedArray($height); for ($y = 0; $y < $height; ++$y) { $this->bytes[$y] = SplFixedArray::fromArray(array_fill(0, $width, 0)); } } /** * Gets the width of the matrix. */ public function getWidth() : int { return $this->width; } /** * Gets the height of the matrix. */ public function getHeight() : int { return $this->height; } /** * Gets the internal representation of the matrix. * * @return SplFixedArray<SplFixedArray<int>> */ public function getArray() : SplFixedArray { return $this->bytes; } /** * @return Traversable<int> */ public function getBytes() : Traversable { foreach ($this->bytes as $row) { foreach ($row as $byte) { yield $byte; } } } /** * Gets the byte for a specific position. */ public function get(int $x, int $y) : int { return $this->bytes[$y][$x]; } /** * Sets the byte for a specific position. */ public function set(int $x, int $y, int $value) : void { $this->bytes[$y][$x] = $value; } /** * Clears the matrix with a specific value. */ public function clear(int $value) : void { for ($y = 0; $y < $this->height; ++$y) { for ($x = 0; $x < $this->width; ++$x) { $this->bytes[$y][$x] = $value; } } } public function __clone() { $this->bytes = clone $this->bytes; foreach ($this->bytes as $index => $row) { $this->bytes[$index] = clone $row; } } /** * Returns a string representation of the matrix. */ public function __toString() : string { $result = ''; for ($y = 0; $y < $this->height; $y++) { for ($x = 0; $x < $this->width; $x++) { switch ($this->bytes[$y][$x]) { case 0: $result .= ' 0'; break; case 1: $result .= ' 1'; break; default: $result .= ' '; break; } } $result .= "\n"; } return $result; } }