<?php
/*
JANCodeCreator

NYSL Version 0.9982
2011, yuhisa

*/


class JANCodeCreator {
    
    function 
JCC_ExportImage ($Number$Print) {
        
        if (!
ctype_digit($Number))
            
$Number "4988003808013";
        
        
// デバッグモード 0:Off 1:On
        
$DebugMode 0;
        
        if (!
$DebugMode)
            
header("Content-type: image/png");
        
        
// 奇数パリティ定義
        
$LeftOdd  = array("0001101""0011001""0010011""0111101""0100011",
            
"0110001""0101111""0111011""0110111""0001011");
        
        
// 偶数パリティ定義
        
$LeftEven = array("0100111""0110011""0011011""0100001""0011101",
            
"0111001""0000101""0010001""0001001""0010111");
        
        
// 右側パリティ定義
        
$Right    = array("1110010""1100110""1101100""1000010""1011100",
            
"1001110""1010000""1000100""1001000""1110100");
        
        
// ガイドバー定義
        
$Entity   = array("101""01010");
        
        
// キャンバス作成
        
if ($_GET["n"]) {
            
$im    imagecreate(21060);
        } else {
            
$im    imagecreate(19650);
        }
        
        
// 色定義
        
$white imagecolorallocate($im255255255);
        
$black imagecolorallocate($im000);
        
        
$AddNumber  substr($Number01);
        
$CodeNumber substr($Number1);
        
        
// 国コードによるパリティ変更
        
switch ($AddNumber) {
            
            case 
"0":
                
$CodeRule "111111";
            break;
            case 
"1":
                
$CodeRule "110100";
            break;
            case 
"2":
                
$CodeRule "110010";
            break;
            case 
"3":
                
$CodeRule "110001";
            break;
            case 
"4":
                
$CodeRule "101100";
            break;
            case 
"5":
                
$CodeRule "100110";
            break;
            case 
"6":
                
$CodeRule "100011";
            break;
            case 
"7":
                
$CodeRule "101010";
            break;
            case 
"8":
                
$CodeRule "101001";
            break;
            case 
"9":
                
$CodeRule "100101";
            break;
            
        }
        
        
$code  ""// コード
        
$length ""// ガイド・センターバー検出
        
        
for ($i=0;$i<strlen($CodeNumber);$i++) {
            
            if (
$i == 0) {
                
$code .= $Entity["0"];
                
$length .= "111";
            }
            
            if (
$i == 6) {
                
                if (
$DebugMode)
                    
$code .= ",";
                    
                
$code .= $Entity["1"];
                
$length .= "11111";
                
            }
            
            if (
$DebugMode)
                
$code .= ",";
            
            if (
$CodeRule[$i] == "1" && $i <= 5) {
                
// 左から偶数 右から奇数
                
$code .= $LeftOdd[$CodeNumber[$i]];
                
            } else if (
$CodeRule[$i] == "0" && $i <= 5) {
                
// 左から奇数 右から偶数
                
$code .= $LeftEven[$CodeNumber[$i]];
                
            } else {
                
// 6桁目以降
                
$code .= $Right[$CodeNumber[$i]];
                
            }
            
            
$length .= "0000000";
            
        }
        
        if (
$DebugMode)
            
$code .= ",";
        
        
$code .= $Entity["0"];
        
$length .= "111";
        
        if (
$DebugMode)
            print 
$code;
        
        for (
$i=0;$i<strlen($code);$i++) {
            
            
$ret JANCodeCreator::JCC_ProtBar(2$i$length[$i]);
            
            if (
$code[$i] == "0") {
                
imagefilledrectangle($im$ret[0], $ret[1], $ret[2], $ret[3], $white);
            } else {
                
imagefilledrectangle($im$ret[0], $ret[1], $ret[2], $ret[3], $black);
            }
            
        }
        
        
/*
        if ($_GET["n"])
            imagefttext($im, 17, 0, 2, 58, $black, "O019000M.TTF",
                substr($Number, 0, 1)." ".substr($Number, 1, 6)." ".substr($Number, 7)." ");
        */
        
        // 画像出力
        
if (!$DebugMode) {
            
imagepng($im);
            
imagedestroy($im);
        }
        
    }
    
    function 
JCC_ProtBar ($Weight$Offset$Length=null) {
        
        if (
$_GET["n"]) {
            
$BOffset 14;
        } else {
            
$BOffset 0;
        }
        
        if (
$_GET["l"] && !$Length) {
            return array(
$BOffset+($Weight*2)+($Weight*$Offset), 0$BOffset+($Weight+1)+($Weight*$Offset), 40);
            
        } else {
            return array(
$BOffset+($Weight*2)+($Weight*$Offset), 0$BOffset+($Weight+1)+($Weight*$Offset), 50);
            
        }
        
    }
    
}



JANCodeCreator::JCC_ExportImage($_GET['jan'], true);

?>