protected void Assemble() {
int k;
if (segmentList.Size == 0)
return;
cwPtr = 1;
for (k = 0; k < segmentList.Size; ++k) {
Segment v = segmentList.Get(k);
switch (v.type) {
case 'T':
if (k != 0)
codewords[cwPtr++] = TEXT_MODE;
TextCompaction(v.start, GetSegmentLength(v));
break;
case 'N':
codewords[cwPtr++] = NUMERIC_MODE;
NumberCompaction(v.start, GetSegmentLength(v));
break;
case 'B':
codewords[cwPtr++] = (GetSegmentLength(v) % 6) != 0 ? BYTE_MODE : BYTE_MODE_6;
ByteCompaction(v.start, GetSegmentLength(v));
break;
}
}
if ((options & PDF417_USE_MACRO) != 0) {
MacroCodes();
}
}