1 module qrcode.common.characterseteci; 2 3 /// Character set constants. 4 enum CharacterEnun : int 5 { 6 CP437 = 0, 7 ISO8859_1 = 1, 8 ISO8859_2 = 4, 9 ISO8859_3 = 5, 10 ISO8859_4 = 6, 11 ISO8859_5 = 7, 12 ISO8859_6 = 8, 13 ISO8859_7 = 9, 14 ISO8859_8 = 10, 15 ISO8859_9 = 11, 16 ISO8859_10 = 12, 17 ISO8859_11 = 13, 18 ISO8859_12 = 14, 19 ISO8859_13 = 15, 20 ISO8859_14 = 16, 21 ISO8859_15 = 17, 22 ISO8859_16 = 18, 23 SJIS = 20, 24 CP1250 = 21, 25 CP1251 = 22, 26 CP1252 = 23, 27 CP1256 = 24, 28 UNICODE_BIG_UNMARKED = 25, 29 UTF8 = 26, 30 ASCII = 27, 31 BIG5 = 28, 32 GB18030 = 29, 33 EUC_KR = 30, 34 } 35 36 /** 37 * Encapsulates a Character Set ECI, according to "Extended Channel 38 * Interpretations" 5.3.1.1 of ISO 18004. 39 */ 40 class CharacterSetEci 41 { 42 43 protected CharacterEnun _c; 44 ///Map between character names and their ECI values. 45 protected enum CharacterEnun[string] nameToEci = [ 46 "ISO-8859-1" : CharacterEnun.ISO8859_1, "ISO-8859-2" 47 : CharacterEnun.ISO8859_2, "ISO-8859-3" : CharacterEnun.ISO8859_3, 48 "ISO-8859-4" : CharacterEnun.ISO8859_4, "ISO-8859-5" 49 : CharacterEnun.ISO8859_5, "ISO-8859-6" : CharacterEnun.ISO8859_6, 50 "ISO-8859-7" : CharacterEnun.ISO8859_7, "ISO-8859-8" 51 : CharacterEnun.ISO8859_8, "ISO-8859-9" : CharacterEnun.ISO8859_9, 52 "ISO-8859-10" : CharacterEnun.ISO8859_10, "ISO-8859-11" 53 : CharacterEnun.ISO8859_11, "ISO-8859-12" 54 : CharacterEnun.ISO8859_12, "ISO-8859-13" : CharacterEnun.ISO8859_13, 55 "ISO-8859-14" : CharacterEnun.ISO8859_14, "ISO-8859-15" 56 : CharacterEnun.ISO8859_15, "ISO-8859-16" : CharacterEnun.ISO8859_16, 57 "SHIFT-JIS" : CharacterEnun.SJIS, "WINDOWS-1250" 58 : CharacterEnun.CP1250, "WINDOWS-1251" : CharacterEnun.CP1251, 59 "WINDOWS-1252" : CharacterEnun.CP1252, "WINDOWS-1256" 60 : CharacterEnun.CP1256, "UTF-16BE" : CharacterEnun.UNICODE_BIG_UNMARKED, 61 "UTF-8" : CharacterEnun.UTF8, "ASCII" 62 : CharacterEnun.ASCII, "GBK" : CharacterEnun.GB18030, "EUC-KR" 63 : CharacterEnun.EUC_KR, 64 ]; 65 66 this(CharacterEnun s) 67 { 68 this._c = s; 69 70 } 71 72 public @property CharacterEnun eci() 73 { 74 return this._c; 75 } 76 77 public static CharacterSetEci getCharacterSetEciByName(string enc) 78 { 79 //return nameToEci.get(enc, CharacterEnun.UTF8); 80 return new CharacterSetEci(nameToEci.get(enc, CharacterEnun.UTF8)); 81 } 82 83 }