ГОСТ ISO/1EC 24724—2011
Приложение В
(обязательное)
Программа кодирования и декодирования ширины элементов
на языке программирования С
В каждом подмножестве со структурой (п.к) значениям символа присваивают комбинации размеров эле
ментов (различной ширины). Подпрограмма кодирования getRSSwidths на языке программирования С вычисля ет
размер (ширину) элементов для заданного значения подмножества. Подпрограмма декодирования getRSSvalue на
языке программирования С вычисляет подмножество значений при заданных размерах элементов. Последо
вательные значения присваивают размерам поднабора элементов в установленном порядке.
П р и м е ч а н и е — В программе на языке С использованы первоначальные идентификаторы, включаю-
щие в себя аббревиатуру «RSS». В программу на языке С небыли внесены изменения, для того чтобы избежать
внесения технических изменений в доступное к открытому доступу программное обеспечение.
Последовательность размеров элементов начинают с присвоения элементам с наименьшими номерами
в поднаборах размера, равного одному модулю, или наименьшего размера, подходящего для данного
поднабора (в соответствии с первой комбинацией под номером 0. всем ее элементам, кроме последнего,
должен быть присвоен размер, равный одному модулю, если при этом для последнего элемента не
будет превышено ограничение максимального размера элемента). Последующие значения присваивают
следую щей действительной комбинации, которая обеспечивает наименьшие размеры (самые узкие) из
возможных для элементов с младшими номерами. Например, поднабор из 6 модулей содержит значения с
номерами от 0 до 9 и соответствующие комбинации размеров элементов:
Значение
0
1
2
3
4
5
6
7
8
9
Комбинация размеров
(ширина) эпементов
1 1 1 3
1 1 22
1131
12 12
1221
13 11
2 112
2 12 1
22 11
3 111
Комбинации с элементами, ширина которых превышает максимально допустимую(переменная
maxWidth), пропускают. Кроме того, исключают шаблоны, в которых отсутствуют элементы шириной один модуль
(переменная noNarrow = 0).
/
......
...................”
........
.........................................
* getRSSwidths
’ подпрограмма генерации размеров (ширины) элементов GS1 DataBar для заданного значения.
’ Calling arguments (аргументы вызова):
* val = задаваемое значение
* л = число модулей
* elements = число пар элементов в наборе (для GS1 DataBar Всенаправленный. GS1 DataBar Усеченный. GS1
DataBar Двустрочный.GS1 DataBar Двустрочный Всенаправленный и GS1 DataBar Расширенный = 4;
GS1 DataBar Ограниченный = 7)
* maxWidth = максимальная ширина элемента в модулях
* noNarrow = 0 пропуск шаблонов, не имеющих элементов шириной один модуль
*
* Return (возвращаемое значение):
* static int widths[] = размеры ( ширина) элементов
void getRSSwidths(int val. int n, int elements, int maxWidth. int noNarrow)
{
int bar.
int elmWidth;
45