|
|
<?php |
|
|
|
|
|
namespace Zxing\Common; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
final class CharacterSetECI |
|
|
{ |
|
|
|
|
|
|
|
|
|
|
|
const CP437 = 0; |
|
|
const ISO8859_1 = 1; |
|
|
const ISO8859_2 = 4; |
|
|
const ISO8859_3 = 5; |
|
|
const ISO8859_4 = 6; |
|
|
const ISO8859_5 = 7; |
|
|
const ISO8859_6 = 8; |
|
|
const ISO8859_7 = 9; |
|
|
const ISO8859_8 = 10; |
|
|
const ISO8859_9 = 11; |
|
|
const ISO8859_10 = 12; |
|
|
const ISO8859_11 = 13; |
|
|
const ISO8859_12 = 14; |
|
|
const ISO8859_13 = 15; |
|
|
const ISO8859_14 = 16; |
|
|
const ISO8859_15 = 17; |
|
|
const ISO8859_16 = 18; |
|
|
const SJIS = 20; |
|
|
const CP1250 = 21; |
|
|
const CP1251 = 22; |
|
|
const CP1252 = 23; |
|
|
const CP1256 = 24; |
|
|
const UNICODE_BIG_UNMARKED = 25; |
|
|
const UTF8 = 26; |
|
|
const ASCII = 27; |
|
|
const BIG5 = 28; |
|
|
const GB18030 = 29; |
|
|
const EUC_KR = 30; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected static $nameToEci = [ |
|
|
'ISO-8859-1' => self::ISO8859_1, |
|
|
'ISO-8859-2' => self::ISO8859_2, |
|
|
'ISO-8859-3' => self::ISO8859_3, |
|
|
'ISO-8859-4' => self::ISO8859_4, |
|
|
'ISO-8859-5' => self::ISO8859_5, |
|
|
'ISO-8859-6' => self::ISO8859_6, |
|
|
'ISO-8859-7' => self::ISO8859_7, |
|
|
'ISO-8859-8' => self::ISO8859_8, |
|
|
'ISO-8859-9' => self::ISO8859_9, |
|
|
'ISO-8859-10' => self::ISO8859_10, |
|
|
'ISO-8859-11' => self::ISO8859_11, |
|
|
'ISO-8859-12' => self::ISO8859_12, |
|
|
'ISO-8859-13' => self::ISO8859_13, |
|
|
'ISO-8859-14' => self::ISO8859_14, |
|
|
'ISO-8859-15' => self::ISO8859_15, |
|
|
'ISO-8859-16' => self::ISO8859_16, |
|
|
'SHIFT-JIS' => self::SJIS, |
|
|
'WINDOWS-1250' => self::CP1250, |
|
|
'WINDOWS-1251' => self::CP1251, |
|
|
'WINDOWS-1252' => self::CP1252, |
|
|
'WINDOWS-1256' => self::CP1256, |
|
|
'UTF-16BE' => self::UNICODE_BIG_UNMARKED, |
|
|
'UTF-8' => self::UTF8, |
|
|
'ASCII' => self::ASCII, |
|
|
'GBK' => self::GB18030, |
|
|
'EUC-KR' => self::EUC_KR, |
|
|
]; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected static $additionalValues = [ |
|
|
self::CP437 => 2, |
|
|
self::ASCII => 170, |
|
|
]; |
|
|
private static $name = null; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static function getCharacterSetECIByValue($value) |
|
|
{ |
|
|
if ($value < 0 || $value >= 900) { |
|
|
throw new \InvalidArgumentException('Value must be between 0 and 900'); |
|
|
} |
|
|
if (false !== ($key = array_search($value, self::$additionalValues))) { |
|
|
$value = $key; |
|
|
} |
|
|
array_search($value, self::$nameToEci); |
|
|
try { |
|
|
self::setName($value); |
|
|
|
|
|
return new self($value); |
|
|
} catch (\UnexpectedValueException $e) { |
|
|
return null; |
|
|
} |
|
|
} |
|
|
|
|
|
private static function setName($value) |
|
|
{ |
|
|
foreach (self::$nameToEci as $name => $key) { |
|
|
if ($key == $value) { |
|
|
self::$name = $name; |
|
|
|
|
|
return true; |
|
|
} |
|
|
} |
|
|
if (self::$name == null) { |
|
|
foreach (self::$additionalValues as $name => $key) { |
|
|
if ($key == $value) { |
|
|
self::$name = $name; |
|
|
|
|
|
return true; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static function name() |
|
|
{ |
|
|
return self::$name; |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static function getCharacterSetECIByName($name) |
|
|
{ |
|
|
$name = strtoupper($name); |
|
|
if (isset(self::$nameToEci[$name])) { |
|
|
return new self(self::$nameToEci[$name]); |
|
|
} |
|
|
|
|
|
return null; |
|
|
} |
|
|
} |
|
|
|