You are here

function barcode_i25_encode in Barcode 6.2

Same name and namespace in other branches
  1. 7.2 plugins/i25.inc \barcode_i25_encode()
1 call to barcode_i25_encode()
barcode_i25_barcode in plugins/i25.inc
@file Barcode plugin Interleaved 2 of 5: Same as Standard 2 of 5 Interleaved

File

plugins/i25.inc, line 110
Barcode plugin Interleaved 2 of 5: Same as Standard 2 of 5 Interleaved

Code

function barcode_i25_encode($barnumber, $settings) {
  $enc_table = array(
    "NNWWN",
    "WNNNW",
    "NWNNW",
    "WWNNN",
    "NNWNW",
    "WNWNN",
    "NWWNN",
    "NNNWW",
    "WNNWN",
    "NWNWN",
  );
  $guards = array(
    "1010",
    "1101",
  );
  $len = strlen($barnumber);
  if ($len % 2 != 0) {
    $barnumber = barcode_check_digit($barnumber, $len);
    if ($len == strlen($barnumber) && substr($barnumber, -1) != '0') {
      $barnumber .= '0';
    }
  }
  $mfc_str = "";
  $widebar = str_pad("", $settings->n2w, "1", STR_PAD_LEFT);
  $widespc = str_pad("", $settings->n2w, "0", STR_PAD_LEFT);
  for ($i = 0; $i < strlen($barnumber); $i += 2) {
    $tmp = $enc_table[(int) $barnumber[$i]];
    $tmp1 = $enc_table[(int) $barnumber[$i + 1]];
    for ($j = 0; $j < strlen($tmp); $j++) {
      if ($tmp[$j] == 'N') {
        $mfc_str .= '1';
      }
      else {
        $mfc_str .= $widebar;
      }
      if ($tmp1[$j] == 'N') {
        $mfc_str .= '0';
      }
      else {
        $mfc_str .= $widespc;
      }
    }
  }
  return $guards[0] . $mfc_str . $guards[1];
}