diff options
Diffstat (limited to 'srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common/CharacterSetEci.php')
| -rw-r--r-- | srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common/CharacterSetEci.php | 180 |
1 files changed, 180 insertions, 0 deletions
diff --git a/srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common/CharacterSetEci.php b/srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common/CharacterSetEci.php new file mode 100644 index 0000000..6dfff17 --- /dev/null +++ b/srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common/CharacterSetEci.php @@ -0,0 +1,180 @@ +<?php +declare(strict_types = 1); + +namespace BaconQrCode\Common; + +use BaconQrCode\Exception\InvalidArgumentException; +use DASPRiD\Enum\AbstractEnum; + +/** + * Encapsulates a Character Set ECI, according to "Extended Channel Interpretations" 5.3.1.1 of ISO 18004. + * + * @method static self CP437() + * @method static self ISO8859_1() + * @method static self ISO8859_2() + * @method static self ISO8859_3() + * @method static self ISO8859_4() + * @method static self ISO8859_5() + * @method static self ISO8859_6() + * @method static self ISO8859_7() + * @method static self ISO8859_8() + * @method static self ISO8859_9() + * @method static self ISO8859_10() + * @method static self ISO8859_11() + * @method static self ISO8859_12() + * @method static self ISO8859_13() + * @method static self ISO8859_14() + * @method static self ISO8859_15() + * @method static self ISO8859_16() + * @method static self SJIS() + * @method static self CP1250() + * @method static self CP1251() + * @method static self CP1252() + * @method static self CP1256() + * @method static self UNICODE_BIG_UNMARKED() + * @method static self UTF8() + * @method static self ASCII() + * @method static self BIG5() + * @method static self GB18030() + * @method static self EUC_KR() + */ +final class CharacterSetEci extends AbstractEnum +{ + protected const CP437 = [[0, 2]]; + protected const ISO8859_1 = [[1, 3], 'ISO-8859-1']; + protected const ISO8859_2 = [[4], 'ISO-8859-2']; + protected const ISO8859_3 = [[5], 'ISO-8859-3']; + protected const ISO8859_4 = [[6], 'ISO-8859-4']; + protected const ISO8859_5 = [[7], 'ISO-8859-5']; + protected const ISO8859_6 = [[8], 'ISO-8859-6']; + protected const ISO8859_7 = [[9], 'ISO-8859-7']; + protected const ISO8859_8 = [[10], 'ISO-8859-8']; + protected const ISO8859_9 = [[11], 'ISO-8859-9']; + protected const ISO8859_10 = [[12], 'ISO-8859-10']; + protected const ISO8859_11 = [[13], 'ISO-8859-11']; + protected const ISO8859_12 = [[14], 'ISO-8859-12']; + protected const ISO8859_13 = [[15], 'ISO-8859-13']; + protected const ISO8859_14 = [[16], 'ISO-8859-14']; + protected const ISO8859_15 = [[17], 'ISO-8859-15']; + protected const ISO8859_16 = [[18], 'ISO-8859-16']; + protected const SJIS = [[20], 'Shift_JIS']; + protected const CP1250 = [[21], 'windows-1250']; + protected const CP1251 = [[22], 'windows-1251']; + protected const CP1252 = [[23], 'windows-1252']; + protected const CP1256 = [[24], 'windows-1256']; + protected const UNICODE_BIG_UNMARKED = [[25], 'UTF-16BE', 'UnicodeBig']; + protected const UTF8 = [[26], 'UTF-8']; + protected const ASCII = [[27, 170], 'US-ASCII']; + protected const BIG5 = [[28]]; + protected const GB18030 = [[29], 'GB2312', 'EUC_CN', 'GBK']; + protected const EUC_KR = [[30], 'EUC-KR']; + + /** + * @var int[] + */ + private $values; + + /** + * @var string[] + */ + private $otherEncodingNames; + + /** + * @var array<int, self>|null + */ + private static $valueToEci; + + /** + * @var array<string, self>|null + */ + private static $nameToEci; + + public function __construct(array $values, string ...$otherEncodingNames) + { + $this->values = $values; + $this->otherEncodingNames = $otherEncodingNames; + } + + /** + * Returns the primary value. + */ + public function getValue() : int + { + return $this->values[0]; + } + + /** + * Gets character set ECI by value. + * + * Returns the representing ECI of a given value, or null if it is legal but unsupported. + * + * @throws InvalidArgumentException if value is not between 0 and 900 + */ + public static function getCharacterSetEciByValue(int $value) : ?self + { + if ($value < 0 || $value >= 900) { + throw new InvalidArgumentException('Value must be between 0 and 900'); + } + + $valueToEci = self::valueToEci(); + + if (! array_key_exists($value, $valueToEci)) { + return null; + } + + return $valueToEci[$value]; + } + + /** + * Returns character set ECI by name. + * + * Returns the representing ECI of a given name, or null if it is legal but unsupported + */ + public static function getCharacterSetEciByName(string $name) : ?self + { + $nameToEci = self::nameToEci(); + $name = strtolower($name); + + if (! array_key_exists($name, $nameToEci)) { + return null; + } + + return $nameToEci[$name]; + } + + private static function valueToEci() : array + { + if (null !== self::$valueToEci) { + return self::$valueToEci; + } + + self::$valueToEci = []; + + foreach (self::values() as $eci) { + foreach ($eci->values as $value) { + self::$valueToEci[$value] = $eci; + } + } + + return self::$valueToEci; + } + + private static function nameToEci() : array + { + if (null !== self::$nameToEci) { + return self::$nameToEci; + } + + self::$nameToEci = []; + + foreach (self::values() as $eci) { + self::$nameToEci[strtolower($eci->name())] = $eci; + + foreach ($eci->otherEncodingNames as $name) { + self::$nameToEci[strtolower($name)] = $eci; + } + } + + return self::$nameToEci; + } +} |
