Files
aistudio-wpf-diagram/zxing.core/xx/oned/EANManufacturerOrgSupport.cs
2021-07-23 09:42:22 +08:00

178 lines
6.1 KiB
C#

/*
* Copyright (C) 2010 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.
*/
using System;
using System.Collections.Generic;
namespace ZXing.OneD
{
/// <summary>
/// Records EAN prefix to GS1 Member Organization, where the member organization
/// correlates strongly with a country. This is an imperfect means of identifying
/// a country of origin by EAN-13 barcode value. See
/// <a href="http://en.wikipedia.org/wiki/List_of_GS1_country_codes">
/// http://en.wikipedia.org/wiki/List_of_GS1_country_codes</a>.
///
/// <author>Sean Owen</author>
/// </summary>
internal sealed class EANManufacturerOrgSupport
{
private List<int[]> ranges = new List<int[]>();
private List<String> countryIdentifiers = new List<String>();
internal String lookupCountryIdentifier(String productCode)
{
initIfNeeded();
int prefix = Int32.Parse(productCode.Substring(0, 3));
int max = ranges.Count;
for (int i = 0; i < max; i++)
{
int[] range = ranges[i];
int start = range[0];
if (prefix < start)
{
return null;
}
int end = range.Length == 1 ? start : range[1];
if (prefix <= end)
{
return countryIdentifiers[i];
}
}
return null;
}
private void add(int[] range, String id)
{
ranges.Add(range);
countryIdentifiers.Add(id);
}
private void initIfNeeded()
{
if (ranges.Count != 0)
{
return;
}
add(new int[] {0, 19}, "US/CA");
add(new int[] {30, 39}, "US");
add(new int[] {60, 139}, "US/CA");
add(new int[] {300, 379}, "FR");
add(new int[] {380}, "BG");
add(new int[] {383}, "SI");
add(new int[] {385}, "HR");
add(new int[] {387}, "BA");
add(new int[] {400, 440}, "DE");
add(new int[] {450, 459}, "JP");
add(new int[] {460, 469}, "RU");
add(new int[] {471}, "TW");
add(new int[] {474}, "EE");
add(new int[] {475}, "LV");
add(new int[] {476}, "AZ");
add(new int[] {477}, "LT");
add(new int[] {478}, "UZ");
add(new int[] {479}, "LK");
add(new int[] {480}, "PH");
add(new int[] {481}, "BY");
add(new int[] {482}, "UA");
add(new int[] {484}, "MD");
add(new int[] {485}, "AM");
add(new int[] {486}, "GE");
add(new int[] {487}, "KZ");
add(new int[] {489}, "HK");
add(new int[] {490, 499}, "JP");
add(new int[] {500, 509}, "GB");
add(new int[] {520}, "GR");
add(new int[] {528}, "LB");
add(new int[] {529}, "CY");
add(new int[] {531}, "MK");
add(new int[] {535}, "MT");
add(new int[] {539}, "IE");
add(new int[] {540, 549}, "BE/LU");
add(new int[] {560}, "PT");
add(new int[] {569}, "IS");
add(new int[] {570, 579}, "DK");
add(new int[] {590}, "PL");
add(new int[] {594}, "RO");
add(new int[] {599}, "HU");
add(new int[] {600, 601}, "ZA");
add(new int[] {603}, "GH");
add(new int[] {608}, "BH");
add(new int[] {609}, "MU");
add(new int[] {611}, "MA");
add(new int[] {613}, "DZ");
add(new int[] {616}, "KE");
add(new int[] {618}, "CI");
add(new int[] {619}, "TN");
add(new int[] {621}, "SY");
add(new int[] {622}, "EG");
add(new int[] {624}, "LY");
add(new int[] {625}, "JO");
add(new int[] {626}, "IR");
add(new int[] {627}, "KW");
add(new int[] {628}, "SA");
add(new int[] {629}, "AE");
add(new int[] {640, 649}, "FI");
add(new int[] {690, 695}, "CN");
add(new int[] {700, 709}, "NO");
add(new int[] {729}, "IL");
add(new int[] {730, 739}, "SE");
add(new int[] {740}, "GT");
add(new int[] {741}, "SV");
add(new int[] {742}, "HN");
add(new int[] {743}, "NI");
add(new int[] {744}, "CR");
add(new int[] {745}, "PA");
add(new int[] {746}, "DO");
add(new int[] {750}, "MX");
add(new int[] {754, 755}, "CA");
add(new int[] {759}, "VE");
add(new int[] {760, 769}, "CH");
add(new int[] {770}, "CO");
add(new int[] {773}, "UY");
add(new int[] {775}, "PE");
add(new int[] {777}, "BO");
add(new int[] {779}, "AR");
add(new int[] {780}, "CL");
add(new int[] {784}, "PY");
add(new int[] {785}, "PE");
add(new int[] {786}, "EC");
add(new int[] {789, 790}, "BR");
add(new int[] {800, 839}, "IT");
add(new int[] {840, 849}, "ES");
add(new int[] {850}, "CU");
add(new int[] {858}, "SK");
add(new int[] {859}, "CZ");
add(new int[] {860}, "YU");
add(new int[] {865}, "MN");
add(new int[] {867}, "KP");
add(new int[] {868, 869}, "TR");
add(new int[] {870, 879}, "NL");
add(new int[] {880}, "KR");
add(new int[] {885}, "TH");
add(new int[] {888}, "SG");
add(new int[] {890}, "IN");
add(new int[] {893}, "VN");
add(new int[] {896}, "PK");
add(new int[] {899}, "ID");
add(new int[] {900, 919}, "AT");
add(new int[] {930, 939}, "AU");
add(new int[] {940, 949}, "AZ");
add(new int[] {955}, "MY");
add(new int[] {958}, "MO");
}
}
}