You are here

function barcode_codabar_encode in Barcode 6.2

Same name and namespace in other branches
  1. 7.2 plugins/codabar.inc \barcode_codabar_encode()
1 call to barcode_codabar_encode()
barcode_codabar_barcode in plugins/codabar.inc
@file Barcode plugin Codabar (aka Ames Code/USD-4/NW-7/2 of 7 Code): Used in libraries and blood banks

File

plugins/codabar.inc, line 107
Barcode plugin Codabar (aka Ames Code/USD-4/NW-7/2 of 7 Code): Used in libraries and blood banks

Code

function barcode_codabar_encode($barnumber, $settings) {
  $enc_table = array(
    "0000011",
    "0000110",
    "0001001",
    "1100000",
    "0010010",
    "1000010",
    "0100001",
    "0100100",
    "0110000",
    "1001000",
  );
  $chr_table = array(
    "-" => "0001100",
    "\$" => "0011000",
    ":" => "1000101",
    "/" => "1010001",
    "." => "1010100",
    "+" => "0011111",
    "A" => "0011010",
    "B" => "0001011",
    "C" => "0101001",
    "D" => "0001110",
  );
  $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++) {
    if (preg_match("/[0-9]+/", $barnumber[$i])) {
      $tmp = $enc_table[(int) $barnumber[$i]];
    }
    else {
      $tmp = $chr_table[strtoupper(trim($barnumber[$i]))];
    }
    $bar = TRUE;
    for ($j = 0; $j < strlen($tmp); $j++) {
      if ($tmp[$j] == '0' && $bar) {
        $mfc_str .= '1';
      }
      elseif ($tmp[$j] == '0' && !$bar) {
        $mfc_str .= '0';
      }
      elseif ($tmp[$j] == '1' && $bar) {
        $mfc_str .= $widebar;
      }
      elseif ($tmp[$j] == '1' && !$bar) {
        $mfc_str .= $widespc;
      }
      $bar = !$bar;
    }
    $mfc_str .= '0';
  }
  return $mfc_str;
}