mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-05-04 06:51:28 +08:00
178 lines
6.1 KiB
C#
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");
|
|
}
|
|
}
|
|
} |