diff --git a/src/common/CharacterSetECI.java b/src/common/CharacterSetECI.java deleted file mode 100644 index 5865445..0000000 --- a/src/common/CharacterSetECI.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing.common; - -import com.google.zxing.FormatException; - -import java.nio.charset.Charset; - -import java.util.HashMap; -import java.util.Map; - -/** - * Encapsulates a Character Set ECI, according to "Extended Channel Interpretations" 5.3.1.1 - * of ISO 18004. - * - * @author Sean Owen - */ -public enum CharacterSetECI { - - // Enum name is a Java encoding valid for java.lang and java.io - Cp437(new int[]{0,2}), - ISO8859_1(new int[]{1,3}, "ISO-8859-1"), - ISO8859_2(4, "ISO-8859-2"), - ISO8859_3(5, "ISO-8859-3"), - ISO8859_4(6, "ISO-8859-4"), - ISO8859_5(7, "ISO-8859-5"), - // ISO8859_6(8, "ISO-8859-6"), - ISO8859_7(9, "ISO-8859-7"), - // ISO8859_8(10, "ISO-8859-8"), - ISO8859_9(11, "ISO-8859-9"), - // ISO8859_10(12, "ISO-8859-10"), - // ISO8859_11(13, "ISO-8859-11"), - ISO8859_13(15, "ISO-8859-13"), - // ISO8859_14(16, "ISO-8859-14"), - ISO8859_15(17, "ISO-8859-15"), - ISO8859_16(18, "ISO-8859-16"), - SJIS(20, "Shift_JIS"), - Cp1250(21, "windows-1250"), - Cp1251(22, "windows-1251"), - Cp1252(23, "windows-1252"), - Cp1256(24, "windows-1256"), - UnicodeBigUnmarked(25, "UTF-16BE", "UnicodeBig"), - UTF8(26, "UTF-8"), - ASCII(new int[] {27, 170}, "US-ASCII"), - Big5(28), - GB18030(29, "GB2312", "EUC_CN", "GBK"), - EUC_KR(30, "EUC-KR"); - - private static final Map VALUE_TO_ECI = new HashMap<>(); - private static final Map NAME_TO_ECI = new HashMap<>(); - static { - for (CharacterSetECI eci : values()) { - for (int value : eci.values) { - VALUE_TO_ECI.put(value, eci); - } - NAME_TO_ECI.put(eci.name(), eci); - for (String name : eci.otherEncodingNames) { - NAME_TO_ECI.put(name, eci); - } - } - } - - private final int[] values; - private final String[] otherEncodingNames; - - CharacterSetECI(int value) { - this(new int[] {value}); - } - - CharacterSetECI(int value, String... otherEncodingNames) { - this.values = new int[] {value}; - this.otherEncodingNames = otherEncodingNames; - } - - CharacterSetECI(int[] values, String... otherEncodingNames) { - this.values = values; - this.otherEncodingNames = otherEncodingNames; - } - - public int getValue() { - return values[0]; - } - - public Charset getCharset() { - return Charset.forName(name()); - } - - /** - * @param charset Java character set object - * @return CharacterSetECI representing ECI for character encoding, or null if it is legal - * but unsupported - */ - public static CharacterSetECI getCharacterSetECI(Charset charset) { - return NAME_TO_ECI.get(charset.name()); - } - - /** - * @param value character set ECI value - * @return {@code CharacterSetECI} representing ECI of given value, or null if it is legal but - * unsupported - * @throws FormatException if ECI value is invalid - */ - public static CharacterSetECI getCharacterSetECIByValue(int value) throws FormatException { - if (value < 0 || value >= 900) { - throw FormatException.getFormatInstance(); - } - return VALUE_TO_ECI.get(value); - } - - /** - * @param name character set ECI encoding name - * @return CharacterSetECI representing ECI for character encoding, or null if it is legal - * but unsupported - */ - public static CharacterSetECI getCharacterSetECIByName(String name) { - return NAME_TO_ECI.get(name); - } - -} diff --git a/src/common/mod.rs b/src/common/mod.rs index 3475c02..b5dcc20 100644 --- a/src/common/mod.rs +++ b/src/common/mod.rs @@ -2373,3 +2373,284 @@ impl GridSampler for DefaultGridSampler { return Ok(bits); } } + + +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// package com.google.zxing.common; + +// import com.google.zxing.FormatException; + +// import java.nio.charset.Charset; + +// import java.util.HashMap; +// import java.util.Map; + +/** + * Encapsulates a Character Set ECI, according to "Extended Channel Interpretations" 5.3.1.1 + * of ISO 18004. + * + * @author Sean Owen + */ +pub enum CharacterSetECI { + + // Enum name is a Java encoding valid for java.lang and java.io + Cp437,//(new int[]{0,2}), + ISO8859_1,//(new int[]{1,3}, "ISO-8859-1"), + ISO8859_2,//(4, "ISO-8859-2"), + ISO8859_3,//(5, "ISO-8859-3"), + ISO8859_4,//(6, "ISO-8859-4"), + ISO8859_5,//(7, "ISO-8859-5"), + ISO8859_6,//(8, "ISO-8859-6"), + ISO8859_7,//(9, "ISO-8859-7"), + ISO8859_8,//(10, "ISO-8859-8"), + ISO8859_9,//(11, "ISO-8859-9"), + ISO8859_10,//(12, "ISO-8859-10"), + ISO8859_11,//(13, "ISO-8859-11"), + ISO8859_13,//(15, "ISO-8859-13"), + ISO8859_14,//(16, "ISO-8859-14"), + ISO8859_15,//(17, "ISO-8859-15"), + ISO8859_16,//(18, "ISO-8859-16"), + SJIS,//(20, "Shift_JIS"), + Cp1250,//(21, "windows-1250"), + Cp1251,//(22, "windows-1251"), + Cp1252,//(23, "windows-1252"), + Cp1256,//(24, "windows-1256"), + UnicodeBigUnmarked,//(25, "UTF-16BE", "UnicodeBig"), + UTF8,//(26, "UTF-8"), + ASCII,//(new int[] {27, 170}, "US-ASCII"), + Big5,//(28), + GB18030,//(29, "GB2312", "EUC_CN", "GBK"), + EUC_KR,//(30, "EUC-KR"); +} +impl CharacterSetECI { + +// private static final Map VALUE_TO_ECI = new HashMap<>(); +// private static final Map NAME_TO_ECI = new HashMap<>(); +// static { +// for (CharacterSetECI eci : values()) { +// for (int value : eci.values) { +// VALUE_TO_ECI.put(value, eci); +// } +// NAME_TO_ECI.put(eci.name(), eci); +// for (String name : eci.otherEncodingNames) { +// NAME_TO_ECI.put(name, eci); +// } +// } +// } + +// private final int[] values; +// private final String[] otherEncodingNames; + +// CharacterSetECI(int value) { +// this(new int[] {value}); +// } + +// CharacterSetECI(int value, String... otherEncodingNames) { +// this.values = new int[] {value}; +// this.otherEncodingNames = otherEncodingNames; +// } + +// CharacterSetECI(int[] values, String... otherEncodingNames) { +// this.values = values; +// this.otherEncodingNames = otherEncodingNames; +// } + + pub fn getValue(cs_eci: &CharacterSetECI) -> u32{ + match cs_eci { + CharacterSetECI::Cp437 => 0, + CharacterSetECI::ISO8859_1 => 1, + CharacterSetECI::ISO8859_2 => 4, + CharacterSetECI::ISO8859_3 => 5, + CharacterSetECI::ISO8859_4 => 6, + CharacterSetECI::ISO8859_5 => 7, + CharacterSetECI::ISO8859_6 => 8, + CharacterSetECI::ISO8859_7 => 9, + CharacterSetECI::ISO8859_8 => 10, + CharacterSetECI::ISO8859_9 => 11, + CharacterSetECI::ISO8859_10 => 12, + CharacterSetECI::ISO8859_11 => 13, + CharacterSetECI::ISO8859_13 => 15, + CharacterSetECI::ISO8859_14 => 16, + CharacterSetECI::ISO8859_15 => 17, + CharacterSetECI::ISO8859_16 => 18, + CharacterSetECI::SJIS => 20, + CharacterSetECI::Cp1250 => 21, + CharacterSetECI::Cp1251 => 22, + CharacterSetECI::Cp1252 => 23, + CharacterSetECI::Cp1256 => 24, + CharacterSetECI::UnicodeBigUnmarked => 25, + CharacterSetECI::UTF8 => 26, + CharacterSetECI::ASCII => 27, + CharacterSetECI::Big5 => 28, + CharacterSetECI::GB18030 => 29, + CharacterSetECI::EUC_KR => 30, + } + } + + + pub fn getCharset(cs_eci: &CharacterSetECI) -> &'static dyn Encoding { + let name = match cs_eci { + CharacterSetECI::Cp437 => "CP437", + CharacterSetECI::ISO8859_1 => "ISO-8859-1", + CharacterSetECI::ISO8859_2 => "ISO-8859-2", + CharacterSetECI::ISO8859_3 => "ISO-8859-3", + CharacterSetECI::ISO8859_4 => "ISO-8859-4", + CharacterSetECI::ISO8859_5 => "ISO-8859-5", + CharacterSetECI::ISO8859_6 => "ISO-8859-6", + CharacterSetECI::ISO8859_7 => "ISO-8859-7", + CharacterSetECI::ISO8859_8 => "ISO-8859-8", + CharacterSetECI::ISO8859_9 => "ISO-8859-9", + CharacterSetECI::ISO8859_10 => "ISO-8859-10", + CharacterSetECI::ISO8859_11 => "ISO-8859-11", + CharacterSetECI::ISO8859_13 => "ISO-8859-13", + CharacterSetECI::ISO8859_14 => "ISO-8859-14", + CharacterSetECI::ISO8859_15 => "ISO-8859-15", + CharacterSetECI::ISO8859_16 => "ISO-8859-16", + CharacterSetECI::SJIS => "Shift_JIS", + CharacterSetECI::Cp1250 => "windows-1250", + CharacterSetECI::Cp1251 => "windows-1251", + CharacterSetECI::Cp1252 => "windows-1252", + CharacterSetECI::Cp1256 => "windows-1256", + CharacterSetECI::UnicodeBigUnmarked => "UTF-16BE", + CharacterSetECI::UTF8 => "UTF-8", + CharacterSetECI::ASCII => "US-ASCII", + CharacterSetECI::Big5 => "Big5", + CharacterSetECI::GB18030 => "GB2312", + CharacterSetECI::EUC_KR => "EUC-KR", + }; + encoding::label::encoding_from_whatwg_label(name).unwrap() + } + + /** + * @param charset Java character set object + * @return CharacterSetECI representing ECI for character encoding, or null if it is legal + * but unsupported + */ + pub fn getCharacterSetECI( charset:&'static dyn Encoding) -> Option { + match charset.whatwg_name().unwrap() { + "CP437" => Some(CharacterSetECI::Cp437), + "ISO-8859-1" => Some(CharacterSetECI::ISO8859_1), + "ISO-8859-2" => Some(CharacterSetECI::ISO8859_2), + "ISO-8859-3" => Some(CharacterSetECI::ISO8859_3), + "ISO-8859-4" => Some(CharacterSetECI::ISO8859_4), + "ISO-8859-5" => Some(CharacterSetECI::ISO8859_5), + "ISO-8859-6" => Some(CharacterSetECI::ISO8859_6), + "ISO-8859-7" => Some(CharacterSetECI::ISO8859_7), + "ISO-8859-8" => Some(CharacterSetECI::ISO8859_8), + "ISO-8859-9" => Some(CharacterSetECI::ISO8859_9), + "ISO-8859-10" => Some(CharacterSetECI::ISO8859_10), + "ISO-8859-11" => Some(CharacterSetECI::ISO8859_11), + "ISO-8859-13" => Some(CharacterSetECI::ISO8859_13), + "ISO-8859-14" => Some(CharacterSetECI::ISO8859_14), + "ISO-8859-15" => Some(CharacterSetECI::ISO8859_15), + "ISO-8859-16" => Some(CharacterSetECI::ISO8859_16), + "Shift_JIS" => Some(CharacterSetECI::SJIS), + "windows-1250" => Some(CharacterSetECI::Cp1250), + "windows-1251" => Some(CharacterSetECI::Cp1251), + "windows-1252" => Some(CharacterSetECI::Cp1252), + "windows-1256" => Some(CharacterSetECI::Cp1256), + "UTF-16BE" => Some(CharacterSetECI::UnicodeBigUnmarked), + "UTF-8" => Some(CharacterSetECI::UTF8), + "US-ASCII" => Some(CharacterSetECI::ASCII), + "Big5" => Some(CharacterSetECI::Big5), + "GB2312" => Some(CharacterSetECI::GB18030), + "EUC-KR" => Some(CharacterSetECI::EUC_KR), + _ => None, + } + } + + /** + * @param value character set ECI value + * @return {@code CharacterSetECI} representing ECI of given value, or null if it is legal but + * unsupported + * @throws FormatException if ECI value is invalid + */ + pub fn getCharacterSetECIByValue( value:u32) -> Result { + match value { + 0 | 2 => Ok(CharacterSetECI::Cp437), + 1 | 3 => Ok(CharacterSetECI::ISO8859_1), + 4 => Ok(CharacterSetECI::ISO8859_2), + 5 => Ok(CharacterSetECI::ISO8859_3), + 6 => Ok(CharacterSetECI::ISO8859_4), + 7 => Ok(CharacterSetECI::ISO8859_5), + 8 => Ok(CharacterSetECI::ISO8859_6), + 9 => Ok(CharacterSetECI::ISO8859_7), + 10 => Ok(CharacterSetECI::ISO8859_8), + 11 => Ok(CharacterSetECI::ISO8859_9), + 12 => Ok(CharacterSetECI::ISO8859_10), + 13 => Ok(CharacterSetECI::ISO8859_11), + 15 => Ok(CharacterSetECI::ISO8859_13), + 16 => Ok(CharacterSetECI::ISO8859_14), + 17 => Ok(CharacterSetECI::ISO8859_15), + 18 => Ok(CharacterSetECI::ISO8859_16), + 20 => Ok(CharacterSetECI::SJIS), + 21 => Ok(CharacterSetECI::Cp1250), + 22 => Ok(CharacterSetECI::Cp1251), + 23 => Ok(CharacterSetECI::Cp1252), + 24 => Ok(CharacterSetECI::Cp1256), + 25 => Ok(CharacterSetECI::UnicodeBigUnmarked), + 26 => Ok(CharacterSetECI::UTF8), + 27 | 170 => Ok(CharacterSetECI::ASCII), + 28 => Ok(CharacterSetECI::Big5), + 29 => Ok(CharacterSetECI::GB18030), + 30 => Ok(CharacterSetECI::EUC_KR), + _ => Err(Exceptions::NotFoundException("Bad ECI Value".to_owned())) + } + } + + /** + * @param name character set ECI encoding name + * @return CharacterSetECI representing ECI for character encoding, or null if it is legal + * but unsupported + */ + pub fn getCharacterSetECIByName( name: &str) -> Option { + match name { + "CP437" => Some(CharacterSetECI::Cp437), + "ISO-8859-1" => Some(CharacterSetECI::ISO8859_1), + "ISO-8859-2" => Some(CharacterSetECI::ISO8859_2), + "ISO-8859-3" => Some(CharacterSetECI::ISO8859_3), + "ISO-8859-4" => Some(CharacterSetECI::ISO8859_4), + "ISO-8859-5" => Some(CharacterSetECI::ISO8859_5), + "ISO-8859-6" => Some(CharacterSetECI::ISO8859_6), + "ISO-8859-7" => Some(CharacterSetECI::ISO8859_7), + "ISO-8859-8" => Some(CharacterSetECI::ISO8859_8), + "ISO-8859-9" => Some(CharacterSetECI::ISO8859_9), + "ISO-8859-10" => Some(CharacterSetECI::ISO8859_10), + "ISO-8859-11" => Some(CharacterSetECI::ISO8859_11), + "ISO-8859-13" => Some(CharacterSetECI::ISO8859_13), + "ISO-8859-14" => Some(CharacterSetECI::ISO8859_14), + "ISO-8859-15" => Some(CharacterSetECI::ISO8859_15), + "ISO-8859-16" => Some(CharacterSetECI::ISO8859_16), + "Shift_JIS" => Some(CharacterSetECI::SJIS), + "windows-1250" => Some(CharacterSetECI::Cp1250), + "windows-1251" => Some(CharacterSetECI::Cp1251), + "windows-1252" => Some(CharacterSetECI::Cp1252), + "windows-1256" => Some(CharacterSetECI::Cp1256), + "UTF-16BE" => Some(CharacterSetECI::UnicodeBigUnmarked), + "UTF-8" => Some(CharacterSetECI::UTF8), + "US-ASCII" => Some(CharacterSetECI::ASCII), + "Big5" => Some(CharacterSetECI::Big5), + "GB2312" => Some(CharacterSetECI::GB18030), + "EUC-KR" => Some(CharacterSetECI::EUC_KR), + _ => None, + } + } + +} + +