<html>
<head>
<style>
#canvas {
/*キャンバスのサイズ*/
width: 800px;
height: 400px;
/*描画のレンダリング方法*/
image-rendering: pixelated;
}
</style>
<script>
//キャラクタパターン情報
var pattern = {
'0':0xB65,'1':0xD4B,'2':0xD4D,'3':0xA9B,'4':0xD65,'5':0xACB,'6':0xACD,'7':0xDA5,'8':0xB4B,
'9':0xB4D,'A':0xD2B,'B':0xD2D,'C':0xA5B,'D':0xD35,'E':0xA6B,'F':0xA6D,'G':0xD95,'H':0xB2B,
'I':0xB2D,'J':0xB35,'K':0xCAB,'L':0xCAD,'M':0x95B,'N':0xCB5,'O':0x96B,'P':0x96D,'Q':0xCD5,
'R':0x9AB,'S':0x9AD,'T':0x9B5,'U':0xD53,'V':0xD59,'W':0xAB3,'X':0xD69,'Y':0xAD3,'Z':0xAD9,
'-':0xDA9,'.':0xB53,' ':0xB59,'$':0xA49,'/':0x949,'+':0x929,'%':0x925,'*':0xB69};
//jQueryで言う $(document).ready() のネイティブコード
document.addEventListener('DOMContentLoaded', function() {
//バーコード化するデータ(先頭と末尾はスタート・ストップキャラ)
var code_str = "*12345678*";
//バーの幅
var bar_width = 4;
//キャンバスのコンテキストを取得
var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");
context.lineWidth = bar_width;
context.lineCap = "butt";
context.strokeStyle = "black";
context.font = "20px sanserif";
context.setTransform(1, 0, 0, 1, 4, 0);//描画開始位置を右に4ピクセル移動するおまじない
context.beginPath();
for(var pos = 0; pos < code_str.length; pos++){
//一文字ずつ読み込み
var key = code_str.charAt(pos);
//パターン情報を読み込む
if(!pattern[key]) continue;
var pat = pattern[key];
//キャラクタごとの描画位置
//文字位置 * (12ビット + キャラクタ間ギャップ) x バー幅
var left = pos * (12 + 1) * bar_width;
//2進数12ビットのパターン情報を1ビットずつ走査してバーを描画
for(var i=0; i<12; i++){
//ビットが1ならバー描画
if( (pat & (1<<i)) > 0 ){
//バーの X座標
var x = i * bar_width + left;
//バー描画
context.moveTo(x, 0);
context.lineTo(x, 100);
}
}
//データの文字列を直接描画
context.fillText(key, left + bar_width * 6, 120);
}
//描画情報を反映
context.stroke();
});
</script>
</head>
<body>
<!--キャンバス-->
<canvas id="canvas" width="800" height="400"></canvas>
</body>
</html>
// Code goes here
/* Styles go here */