ext/rqr/QR_Encode.cpp in z-rqr-0.2.3 vs ext/rqr/QR_Encode.cpp in z-rqr-0.2.4
- old
+ new
@@ -1,6 +1,6 @@
-//// QR_Encode.cpp : CQR_Encode クラス インプリメンテーション ファイル
+//// QR_Encode.cpp : CQR_Encode NX Cve[V t@C
//// Date 2006/05/17 Ver. 1.12 [Class Ver.1.21] Psytec Inc.
//
//#include "stdafx.h"
#include "QR_Encode.h"
@@ -9,12 +9,12 @@
//#undef THIS_FILE
//static char THIS_FILE[] = __FILE__;
//#endif
/////////////////////////////////////////////////////////////////////////////
-// QRコードバージョン(型番)情報
-static QR_VERSIONINFO QR_VersonInfo[] = {{0}, // (ダミー:Ver.0)
+// QRR[ho[W(^)
+static QR_VERSIONINFO QR_VersonInfo[] = {{0}, // (_~[:Ver.0)
{ 1, // Ver.1
26, 19, 16, 13, 9,
0, 0, 0, 0, 0, 0, 0,
1, 26, 19,
1, 26, 16,
@@ -455,11 +455,11 @@
61, 46, 16}
};
/////////////////////////////////////////////////////////////////////////////
-// GF(2^8)α指数→整数変換テーブル
+// GF(2^8)wϊe[u
static BYTE byExpToInt[] = { 1, 2, 4, 8, 16, 32, 64, 128, 29, 58, 116, 232, 205, 135, 19, 38,
76, 152, 45, 90, 180, 117, 234, 201, 143, 3, 6, 12, 24, 48, 96, 192,
157, 39, 78, 156, 37, 74, 148, 53, 106, 212, 181, 119, 238, 193, 159, 35,
70, 140, 5, 10, 20, 40, 80, 160, 93, 186, 105, 210, 185, 111, 222, 161,
95, 190, 97, 194, 153, 47, 94, 188, 101, 202, 137, 15, 30, 60, 120, 240,
@@ -475,11 +475,11 @@
18, 36, 72, 144, 61, 122, 244, 245, 247, 243, 251, 235, 203, 139, 11, 22,
44, 88, 176, 125, 250, 233, 207, 131, 27, 54, 108, 216, 173, 71, 142, 1};
/////////////////////////////////////////////////////////////////////////////
-// GF(2^8)α整数→指数変換テーブル
+// GF(2^8)wϊe[u
static BYTE byIntToExp[] = { 0, 0, 1, 25, 2, 50, 26, 198, 3, 223, 51, 238, 27, 104, 199, 75,
4, 100, 224, 14, 52, 141, 239, 129, 28, 193, 105, 248, 200, 8, 76, 113,
5, 138, 101, 47, 225, 36, 15, 33, 53, 147, 142, 218, 240, 18, 130, 69,
29, 181, 194, 125, 106, 39, 249, 185, 201, 154, 9, 120, 77, 228, 114, 166,
6, 191, 139, 98, 102, 221, 48, 253, 226, 152, 37, 179, 16, 145, 34, 136,
@@ -495,11 +495,11 @@
203, 89, 95, 176, 156, 169, 160, 81, 11, 245, 22, 235, 122, 117, 44, 215,
79, 174, 213, 233, 230, 231, 173, 232, 116, 214, 244, 234, 168, 80, 88, 175};
/////////////////////////////////////////////////////////////////////////////
-// 誤り訂正生成多項式α係数
+// W
static BYTE byRSExp7[] = {87, 229, 146, 149, 238, 102, 21};
static BYTE byRSExp10[] = {251, 67, 46, 61, 118, 70, 64, 94, 32, 45};
static BYTE byRSExp13[] = { 74, 152, 176, 100, 86, 100, 106, 104, 130, 218, 206, 140, 78};
static BYTE byRSExp15[] = { 8, 183, 61, 91, 202, 37, 51, 58, 58, 237, 140, 124, 5, 99, 105};
static BYTE byRSExp16[] = {120, 104, 107, 109, 102, 161, 76, 3, 91, 191, 147, 169, 182, 194, 225, 120};
@@ -579,19 +579,19 @@
byRSExp30, NULL, byRSExp32, NULL, byRSExp34, NULL, byRSExp36, NULL, byRSExp38, NULL,
byRSExp40, NULL, byRSExp42, NULL, byRSExp44, NULL, byRSExp46, NULL, byRSExp48, NULL,
byRSExp50, NULL, byRSExp52, NULL, byRSExp54, NULL, byRSExp56, NULL, byRSExp58, NULL,
byRSExp60, NULL, byRSExp62, NULL, byRSExp64, NULL, byRSExp66, NULL, byRSExp68};
-// 文字数インジケータビット長(バージョングループ別, {S, M, L})
+// CWP[^rbg(o[WO[v, {S, M, L})
static int nIndicatorLenNumeral[] = {10, 12, 14};
static int nIndicatorLenAlphabet[] = { 9, 11, 13};
static int nIndicatorLen8Bit[] = { 8, 16, 16};
static int nIndicatorLenKanji[] = { 8, 10, 12};
/////////////////////////////////////////////////////////////////////////////
-// QR_Encode クラスの構築/消滅
+// QR_Encode NX̍\z/
CQR_Encode::CQR_Encode()
{
}
@@ -600,36 +600,36 @@
}
/////////////////////////////////////////////////////////////////////////////
// CQR_Encode::EncodeData
-// 用 途:データエンコード
-// 引 数:誤り訂正レベル、型番(0=自動)、型番自動拡張フラグ、マスキング番号(-1=自動)、エンコードデータ、エンコードデータ長
-// 戻り値:エンコード成功時=TRUE、データなし、または容量オーバー時=FALSE
+// p rFf[^GR[h
+// FxA^(0=)A^ԎgtOA}XLOԍ(-1=)AGR[hf[^AGR[hf[^
+// ߂lFGR[h=TRUEAf[^ȂA܂͗eʃI[o[=FALSE
BOOL CQR_Encode::EncodeData(int nLevel, int nVersion, BOOL bAutoExtent, int nMaskingNo, LPCSTR lpsSource, int ncSource)
{
int i, j;
m_nLevel = nLevel;
m_nMaskingNo = nMaskingNo;
- // データ長が指定されていない場合は lstrlen によって取得
+ // f[^w肳ĂȂꍇ lstrlen ɂĎ擾
int ncLength = ncSource > 0 ? ncSource : lstrlen(lpsSource);
if (ncLength == 0)
- return FALSE; // データなし
+ return FALSE; // f[^Ȃ
- // バージョン(型番)チェック
+ // o[W(^)`FbN
int nEncodeVersion = GetEncodeVersion(nVersion, lpsSource, ncLength);
if (nEncodeVersion == 0)
- return FALSE; // 容量オーバー
+ return FALSE; // eʃI[o[
if (nVersion == 0)
{
- // 型番自動
+ // ^Ԏ
m_nVersion = nEncodeVersion;
}
else
{
if (nEncodeVersion <= nVersion)
@@ -637,52 +637,52 @@
m_nVersion = nVersion;
}
else
{
if (bAutoExtent)
- m_nVersion = nEncodeVersion; // バージョン(型番)自動拡張
+ m_nVersion = nEncodeVersion; // o[W(^)g
else
- return FALSE; // 容量オーバー
+ return FALSE; // eʃI[o[
}
}
- // ターミネータコード"0000"付加
+ // ^[~l[^R[h"0000"t
int ncDataCodeWord = QR_VersonInfo[m_nVersion].ncDataCodeWord[nLevel];
int ncTerminater = min(4, (ncDataCodeWord * 8) - m_ncDataCodeWordBit);
if (ncTerminater > 0)
m_ncDataCodeWordBit = SetBitStream(m_ncDataCodeWordBit, 0, ncTerminater);
- // パディングコード"11101100, 00010001"付加
+ // pfBOR[h"11101100, 00010001"t
BYTE byPaddingCode = 0xec;
for (i = (m_ncDataCodeWordBit + 7) / 8; i < ncDataCodeWord; ++i)
{
m_byDataCodeWord[i] = byPaddingCode;
byPaddingCode = (BYTE)(byPaddingCode == 0xec ? 0x11 : 0xec);
}
- // 総コードワード算出エリアクリア
+ // R[h[hZoGANA
m_ncAllCodeWord = QR_VersonInfo[m_nVersion].ncAllCodeWord;
ZeroMemory(m_byAllCodeWord, m_ncAllCodeWord);
- int nDataCwIndex = 0; // データコードワード処理位置
+ int nDataCwIndex = 0; // f[^R[h[hʒu
- // データブロック分割数
+ // f[^ubN
int ncBlock1 = QR_VersonInfo[m_nVersion].RS_BlockInfo1[nLevel].ncRSBlock;
int ncBlock2 = QR_VersonInfo[m_nVersion].RS_BlockInfo2[nLevel].ncRSBlock;
int ncBlockSum = ncBlock1 + ncBlock2;
- int nBlockNo = 0; // 処理中ブロック番号
+ int nBlockNo = 0; // ubNԍ
- // ブロック別データコードワード数
+ // ubNʃf[^R[h[h
int ncDataCw1 = QR_VersonInfo[m_nVersion].RS_BlockInfo1[nLevel].ncDataCodeWord;
int ncDataCw2 = QR_VersonInfo[m_nVersion].RS_BlockInfo2[nLevel].ncDataCodeWord;
- // データコードワードインターリーブ配置
+ // f[^R[h[hC^[[uzu
for (i = 0; i < ncBlock1; ++i)
{
for (j = 0; j < ncDataCw1; ++j)
{
m_byAllCodeWord[(ncBlockSum * j) + nBlockNo] = m_byDataCodeWord[nDataCwIndex++];
@@ -699,24 +699,24 @@
{
m_byAllCodeWord[(ncBlockSum * j) + nBlockNo] = m_byDataCodeWord[nDataCwIndex++];
}
else
{
- // 2種目ブロック端数分配置
+ // QڃubN[zu
m_byAllCodeWord[(ncBlockSum * ncDataCw1) + i] = m_byDataCodeWord[nDataCwIndex++];
}
}
++nBlockNo;
}
- // ブロック別RSコードワード数(※現状では同数)
+ // ubNʂqrR[h[h(ł͓)
int ncRSCw1 = QR_VersonInfo[m_nVersion].RS_BlockInfo1[nLevel].ncAllCodeWord - ncDataCw1;
int ncRSCw2 = QR_VersonInfo[m_nVersion].RS_BlockInfo2[nLevel].ncAllCodeWord - ncDataCw2;
/////////////////////////////////////////////////////////////////////////
- // RSコードワード算出
+ // qrR[h[hZo
nDataCwIndex = 0;
nBlockNo = 0;
for (i = 0; i < ncBlock1; ++i)
@@ -725,11 +725,11 @@
memmove(m_byRSWork, m_byDataCodeWord + nDataCwIndex, ncDataCw1);
GetRSCodeWord(m_byRSWork, ncDataCw1, ncRSCw1);
- // RSコードワード配置
+ // qrR[h[hzu
for (j = 0; j < ncRSCw1; ++j)
{
m_byAllCodeWord[ncDataCodeWord + (ncBlockSum * j) + nBlockNo] = m_byRSWork[j];
}
@@ -743,11 +743,11 @@
memmove(m_byRSWork, m_byDataCodeWord + nDataCwIndex, ncDataCw2);
GetRSCodeWord(m_byRSWork, ncDataCw2, ncRSCw2);
- // RSコードワード配置
+ // qrR[h[hzu
for (j = 0; j < ncRSCw2; ++j)
{
m_byAllCodeWord[ncDataCodeWord + (ncBlockSum * j) + nBlockNo] = m_byRSWork[j];
}
@@ -755,22 +755,22 @@
++nBlockNo;
}
m_nSymbleSize = m_nVersion * 4 + 17;
- // モジュール配置
+ // W[zu
FormatModule();
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CQR_Encode::GetEncodeVersion
-// 用 途:エンコード時バージョン(型番)取得
-// 引 数:調査開始バージョン、エンコードデータ、エンコードデータ長
-// 戻り値:バージョン番号(容量オーバー時=0)
+// p rFGR[ho[W(^)擾
+// FJno[WAGR[hf[^AGR[hf[^
+// ߂lFo[WԍieʃI[o[=0j
int CQR_Encode::GetEncodeVersion(int nVersion, LPCSTR lpsSource, int ncLength)
{
int nVerGroup = nVersion >= 27 ? QR_VRESION_L : (nVersion >= 10 ? QR_VRESION_M : QR_VRESION_S);
int i, j;
@@ -810,21 +810,21 @@
}
/////////////////////////////////////////////////////////////////////////////
// CQR_Encode::EncodeSourceData
-// 用 途:入力データエンコード
-// 引 数:入力データ、入力データ長、バージョン(型番)グループ
-// 戻り値:エンコード成功時=TRUE
+// p rF̓f[^GR[h
+// F̓f[^A̓f[^Ao[W(^)O[v
+// ߂lFGR[h=TRUE
BOOL CQR_Encode::EncodeSourceData(LPCSTR lpsSource, int ncLength, int nVerGroup)
{
ZeroMemory(m_nBlockLength, sizeof(m_nBlockLength));
int i, j;
- // どのモードが何文字(バイト)継続しているかを調査
+ // ǂ̃[h(oCg)pĂ邩
for (m_ncDataBlock = i = 0; i < ncLength; ++i)
{
BYTE byMode;
if (i < ncLength - 1 && IsKanjiData(lpsSource[i], lpsSource[i + 1]))
@@ -844,85 +844,85 @@
++m_nBlockLength[m_ncDataBlock];
if (byMode == QR_MODE_KANJI)
{
- // 漢字は文字数ではなく 数で記録
+ // ͕ł͂Ȃ ŋL^
++m_nBlockLength[m_ncDataBlock];
++i;
}
}
++m_ncDataBlock;
/////////////////////////////////////////////////////////////////////////
- // 隣接する英数字モードブロックと数字モードブロックの並びをを条件により結合
+ // אڂp[hubNƐ[hubN̕тɂ茋
- int ncSrcBits, ncDstBits; // 元のビット長と単一の英数字モードブロック化した場合のビット長
+ int ncSrcBits, ncDstBits; // ̃rbgƒP̉p[hubNꍇ̃rbg
int nBlock = 0;
while (nBlock < m_ncDataBlock - 1)
{
- int ncJoinFront, ncJoinBehind; // 前後8ビットバイトモードブロックと結合した場合のビット長
- int nJoinPosition = 0; // 8ビットバイトモードブロックとの結合:-1=前と結合、0=結合しない、1=後ろと結合
+ int ncJoinFront, ncJoinBehind; // OWrbgoCg[hubNƌꍇ̃rbg
+ int nJoinPosition = 0; // WrbgoCg[hubNƂ̌F-1=OƌA0=ȂA1=ƌ
- // 「数字−英数字」または「英数字−数字」の並び
+ // u|pv܂́up|v̕
if ((m_byBlockMode[nBlock] == QR_MODE_NUMERAL && m_byBlockMode[nBlock + 1] == QR_MODE_ALPHABET) ||
(m_byBlockMode[nBlock] == QR_MODE_ALPHABET && m_byBlockMode[nBlock + 1] == QR_MODE_NUMERAL))
{
- // 元のビット長と単一の英数字モードブロック化した場合のビット長を比較
+ // ̃rbgƒP̉p[hubNꍇ̃rbgr
ncSrcBits = GetBitLength(m_byBlockMode[nBlock], m_nBlockLength[nBlock], nVerGroup) +
GetBitLength(m_byBlockMode[nBlock + 1], m_nBlockLength[nBlock + 1], nVerGroup);
ncDstBits = GetBitLength(QR_MODE_ALPHABET, m_nBlockLength[nBlock] + m_nBlockLength[nBlock + 1], nVerGroup);
if (ncSrcBits > ncDstBits)
{
- // 前後に8ビットバイトモードブロックがある場合、それらとの結合が有利かどうかをチェック
+ // OɂWrbgoCg[hubNꍇAƂ̌Lǂ`FbN
if (nBlock >= 1 && m_byBlockMode[nBlock - 1] == QR_MODE_8BIT)
{
- // 前に8ビットバイトモードブロックあり
+ // OɂWrbgoCg[hubN
ncJoinFront = GetBitLength(QR_MODE_8BIT, m_nBlockLength[nBlock - 1] + m_nBlockLength[nBlock], nVerGroup) +
GetBitLength(m_byBlockMode[nBlock + 1], m_nBlockLength[nBlock + 1], nVerGroup);
if (ncJoinFront > ncDstBits + GetBitLength(QR_MODE_8BIT, m_nBlockLength[nBlock - 1], nVerGroup))
- ncJoinFront = 0; // 8ビットバイトモードブロックとは結合しない
+ ncJoinFront = 0; // WrbgoCg[hubNƂ͌Ȃ
}
else
ncJoinFront = 0;
if (nBlock < m_ncDataBlock - 2 && m_byBlockMode[nBlock + 2] == QR_MODE_8BIT)
{
- // 後ろに8ビットバイトモードブロックあり
+ // ɂWrbgoCg[hubN
ncJoinBehind = GetBitLength(m_byBlockMode[nBlock], m_nBlockLength[nBlock], nVerGroup) +
GetBitLength(QR_MODE_8BIT, m_nBlockLength[nBlock + 1] + m_nBlockLength[nBlock + 2], nVerGroup);
if (ncJoinBehind > ncDstBits + GetBitLength(QR_MODE_8BIT, m_nBlockLength[nBlock + 2], nVerGroup))
- ncJoinBehind = 0; // 8ビットバイトモードブロックとは結合しない
+ ncJoinBehind = 0; // WrbgoCg[hubNƂ͌Ȃ
}
else
ncJoinBehind = 0;
if (ncJoinFront != 0 && ncJoinBehind != 0)
{
- // 前後両方に8ビットバイトモードブロックがある場合はデータ長が短くなる方を優先
+ // O㗼ɂWrbgoCg[hubNꍇ̓f[^ZȂD
nJoinPosition = (ncJoinFront < ncJoinBehind) ? -1 : 1;
}
else
{
nJoinPosition = (ncJoinFront != 0) ? -1 : ((ncJoinBehind != 0) ? 1 : 0);
}
if (nJoinPosition != 0)
{
- // 8ビットバイトモードブロックとの結合
+ // WrbgoCg[hubNƂ̌
if (nJoinPosition == -1)
{
m_nBlockLength[nBlock - 1] += m_nBlockLength[nBlock];
- // 後続をシフト
+ // 㑱Vtg
for (i = nBlock; i < m_ncDataBlock - 1; ++i)
{
m_byBlockMode[i] = m_byBlockMode[i + 1];
m_nBlockLength[i] = m_nBlockLength[i + 1];
}
@@ -930,11 +930,11 @@
else
{
m_byBlockMode[nBlock + 1] = QR_MODE_8BIT;
m_nBlockLength[nBlock + 1] += m_nBlockLength[nBlock + 2];
- // 後続をシフト
+ // 㑱Vtg
for (i = nBlock + 2; i < m_ncDataBlock - 1; ++i)
{
m_byBlockMode[i] = m_byBlockMode[i + 1];
m_nBlockLength[i] = m_nBlockLength[i + 1];
}
@@ -942,18 +942,18 @@
--m_ncDataBlock;
}
else
{
- // 英数字と数字の並びを単一の英数字モードブロックに統合
+ // pƐ̕тP̉p[hubNɓ
if (nBlock < m_ncDataBlock - 2 && m_byBlockMode[nBlock + 2] == QR_MODE_ALPHABET)
{
- // 結合しようとするブロックの後ろに続く英数字モードブロックを結合
+ // 悤ƂubŇɑp[hubN
m_nBlockLength[nBlock + 1] += m_nBlockLength[nBlock + 2];
- // 後続をシフト
+ // 㑱Vtg
for (i = nBlock + 2; i < m_ncDataBlock - 1; ++i)
{
m_byBlockMode[i] = m_byBlockMode[i + 1];
m_nBlockLength[i] = m_nBlockLength[i + 1];
}
@@ -962,70 +962,70 @@
}
m_byBlockMode[nBlock] = QR_MODE_ALPHABET;
m_nBlockLength[nBlock] += m_nBlockLength[nBlock + 1];
- // 後続をシフト
+ // 㑱Vtg
for (i = nBlock + 1; i < m_ncDataBlock - 1; ++i)
{
m_byBlockMode[i] = m_byBlockMode[i + 1];
m_nBlockLength[i] = m_nBlockLength[i + 1];
}
--m_ncDataBlock;
if (nBlock >= 1 && m_byBlockMode[nBlock - 1] == QR_MODE_ALPHABET)
{
- // 結合したブロックの前の英数字モードブロックを結合
+ // ubN̑Ỏp[hubN
m_nBlockLength[nBlock - 1] += m_nBlockLength[nBlock];
- // 後続をシフト
+ // 㑱Vtg
for (i = nBlock; i < m_ncDataBlock - 1; ++i)
{
m_byBlockMode[i] = m_byBlockMode[i + 1];
m_nBlockLength[i] = m_nBlockLength[i + 1];
}
--m_ncDataBlock;
}
}
- continue; // 現在位置のブロックを再調査
+ continue; // ݈ʒũubNĒ
}
}
- ++nBlock; // 次ブロックを調査
+ ++nBlock; // ubN
}
/////////////////////////////////////////////////////////////////////////
- // 連続する短いモードブロックを8ビットバイトモードブロック化
+ // AZ[hubNWrbgoCg[hubN
nBlock = 0;
while (nBlock < m_ncDataBlock - 1)
{
ncSrcBits = GetBitLength(m_byBlockMode[nBlock], m_nBlockLength[nBlock], nVerGroup)
+ GetBitLength(m_byBlockMode[nBlock + 1], m_nBlockLength[nBlock + 1], nVerGroup);
ncDstBits = GetBitLength(QR_MODE_8BIT, m_nBlockLength[nBlock] + m_nBlockLength[nBlock + 1], nVerGroup);
- // 前に8ビットバイトモードブロックがある場合、重複するインジケータ分を減算
+ // OɂWrbgoCg[hubNꍇAdCWP[^Z
if (nBlock >= 1 && m_byBlockMode[nBlock - 1] == QR_MODE_8BIT)
ncDstBits -= (4 + nIndicatorLen8Bit[nVerGroup]);
- // 後ろに8ビットバイトモードブロックがある場合、重複するインジケータ分を減算
+ // ɂWrbgoCg[hubNꍇAdCWP[^Z
if (nBlock < m_ncDataBlock - 2 && m_byBlockMode[nBlock + 2] == QR_MODE_8BIT)
ncDstBits -= (4 + nIndicatorLen8Bit[nVerGroup]);
if (ncSrcBits > ncDstBits)
{
if (nBlock >= 1 && m_byBlockMode[nBlock - 1] == QR_MODE_8BIT)
{
- // 結合するブロックの前にある8ビットバイトモードブロックを結合
+ // ubN̑OɂWrbgoCg[hubN
m_nBlockLength[nBlock - 1] += m_nBlockLength[nBlock];
- // 後続をシフト
+ // 㑱Vtg
for (i = nBlock; i < m_ncDataBlock - 1; ++i)
{
m_byBlockMode[i] = m_byBlockMode[i + 1];
m_nBlockLength[i] = m_nBlockLength[i + 1];
}
@@ -1034,14 +1034,14 @@
--nBlock;
}
if (nBlock < m_ncDataBlock - 2 && m_byBlockMode[nBlock + 2] == QR_MODE_8BIT)
{
- // 結合するブロックの後ろにある8ビットバイトモードブロックを結合
+ // ubŇɂWrbgoCg[hubN
m_nBlockLength[nBlock + 1] += m_nBlockLength[nBlock + 2];
- // 後続をシフト
+ // 㑱Vtg
for (i = nBlock + 2; i < m_ncDataBlock - 1; ++i)
{
m_byBlockMode[i] = m_byBlockMode[i + 1];
m_nBlockLength[i] = m_nBlockLength[i + 1];
}
@@ -1050,52 +1050,52 @@
}
m_byBlockMode[nBlock] = QR_MODE_8BIT;
m_nBlockLength[nBlock] += m_nBlockLength[nBlock + 1];
- // 後続をシフト
+ // 㑱Vtg
for (i = nBlock + 1; i < m_ncDataBlock - 1; ++i)
{
m_byBlockMode[i] = m_byBlockMode[i + 1];
m_nBlockLength[i] = m_nBlockLength[i + 1];
}
--m_ncDataBlock;
- // 結合したブロックの前から再調査
+ // ubN̑OĒ
if (nBlock >= 1)
--nBlock;
continue;
}
- ++nBlock; // 次ブロックを調査
+ ++nBlock; // ubN
}
/////////////////////////////////////////////////////////////////////////
- // ビット配列化
- int ncComplete = 0; // 処理済データカウンタ
+ // rbgz
+ int ncComplete = 0; // σf[^JE^
WORD wBinCode;
- m_ncDataCodeWordBit = 0; // ビット単位処理カウンタ
+ m_ncDataCodeWordBit = 0; // rbgPʏJE^
ZeroMemory(m_byDataCodeWord, MAX_DATACODEWORD);
for (i = 0; i < m_ncDataBlock && m_ncDataCodeWordBit != -1; ++i)
{
if (m_byBlockMode[i] == QR_MODE_NUMERAL)
{
/////////////////////////////////////////////////////////////////
- // 数字モード
+ // [h
- // インジケータ(0001b)
+ // CWP[^(0001b)
m_ncDataCodeWordBit = SetBitStream(m_ncDataCodeWordBit, 1, 4);
- // 文字数セット
+ // Zbg
m_ncDataCodeWordBit = SetBitStream(m_ncDataCodeWordBit, (WORD)m_nBlockLength[i], nIndicatorLenNumeral[nVerGroup]);
- // ビット列保存
+ // rbgۑ
for (j = 0; j < m_nBlockLength[i]; j += 3)
{
if (j < m_nBlockLength[i] - 2)
{
wBinCode = (WORD)(((lpsSource[ncComplete + j] - '0') * 100) +
@@ -1104,19 +1104,19 @@
m_ncDataCodeWordBit = SetBitStream(m_ncDataCodeWordBit, wBinCode, 10);
}
else if (j == m_nBlockLength[i] - 2)
{
- // 端数2バイト
+ // [QoCg
wBinCode = (WORD)(((lpsSource[ncComplete + j] - '0') * 10) +
(lpsSource[ncComplete + j + 1] - '0'));
m_ncDataCodeWordBit = SetBitStream(m_ncDataCodeWordBit, wBinCode, 7);
}
else if (j == m_nBlockLength[i] - 1)
{
- // 端数1バイト
+ // [PoCg
wBinCode = (WORD)(lpsSource[ncComplete + j] - '0');
m_ncDataCodeWordBit = SetBitStream(m_ncDataCodeWordBit, wBinCode, 4);
}
}
@@ -1125,19 +1125,19 @@
}
else if (m_byBlockMode[i] == QR_MODE_ALPHABET)
{
/////////////////////////////////////////////////////////////////
- // 英数字モード
+ // p[h
- // モードインジケータ(0010b)
+ // [hCWP[^(0010b)
m_ncDataCodeWordBit = SetBitStream(m_ncDataCodeWordBit, 2, 4);
- // 文字数セット
+ // Zbg
m_ncDataCodeWordBit = SetBitStream(m_ncDataCodeWordBit, (WORD)m_nBlockLength[i], nIndicatorLenAlphabet[nVerGroup]);
- // ビット列保存
+ // rbgۑ
for (j = 0; j < m_nBlockLength[i]; j += 2)
{
if (j < m_nBlockLength[i] - 1)
{
wBinCode = (WORD)((AlphabetToBinaly(lpsSource[ncComplete + j]) * 45) +
@@ -1145,11 +1145,11 @@
m_ncDataCodeWordBit = SetBitStream(m_ncDataCodeWordBit, wBinCode, 11);
}
else
{
- // 端数1バイト
+ // [PoCg
wBinCode = (WORD)AlphabetToBinaly(lpsSource[ncComplete + j]);
m_ncDataCodeWordBit = SetBitStream(m_ncDataCodeWordBit, wBinCode, 6);
}
}
@@ -1158,38 +1158,38 @@
}
else if (m_byBlockMode[i] == QR_MODE_8BIT)
{
/////////////////////////////////////////////////////////////////
- // 8ビットバイトモード
+ // WrbgoCg[h
- // モードインジケータ(0100b)
+ // [hCWP[^(0100b)
m_ncDataCodeWordBit = SetBitStream(m_ncDataCodeWordBit, 4, 4);
- // 文字数セット
+ // Zbg
m_ncDataCodeWordBit = SetBitStream(m_ncDataCodeWordBit, (WORD)m_nBlockLength[i], nIndicatorLen8Bit[nVerGroup]);
- // ビット列保存
+ // rbgۑ
for (j = 0; j < m_nBlockLength[i]; ++j)
{
m_ncDataCodeWordBit = SetBitStream(m_ncDataCodeWordBit, (WORD)lpsSource[ncComplete + j], 8);
}
ncComplete += m_nBlockLength[i];
}
else // m_byBlockMode[i] == QR_MODE_KANJI
{
/////////////////////////////////////////////////////////////////
- // 漢字モード
+ // [h
- // モードインジケータ(1000b)
+ // [hCWP[^(1000b)
m_ncDataCodeWordBit = SetBitStream(m_ncDataCodeWordBit, 8, 4);
- // 文字数セット
+ // Zbg
m_ncDataCodeWordBit = SetBitStream(m_ncDataCodeWordBit, (WORD)(m_nBlockLength[i] / 2), nIndicatorLenKanji[nVerGroup]);
- // 漢字モードでビット列保存
+ // [hŃrbgۑ
for (j = 0; j < m_nBlockLength[i] / 2; ++j)
{
WORD wBinCode = KanjiToBinaly((WORD)(((BYTE)lpsSource[ncComplete + (j * 2)] << 8) + (BYTE)lpsSource[ncComplete + (j * 2) + 1]));
m_ncDataCodeWordBit = SetBitStream(m_ncDataCodeWordBit, wBinCode, 13);
@@ -1203,14 +1203,14 @@
}
/////////////////////////////////////////////////////////////////////////////
// CQR_Encode::GetBitLength
-// 用 途:ビット長取得
-// 引 数:データモード種別、データ長、バージョン(型番)グループ
-// 戻り値:データビット長
-// 備 考:漢字モードでのデータ長引数は文字数ではなくバイト数
+// p rFrbg擾
+// Ff[^[hʁAf[^Ao[W(^)O[v
+// ߂lFf[^rbg
+// lF[hł̃f[^͕ł͂ȂoCg
int CQR_Encode::GetBitLength(BYTE nMode, int ncData, int nVerGroup)
{
int ncBits = 0;
@@ -1249,14 +1249,14 @@
}
/////////////////////////////////////////////////////////////////////////////
// CQR_Encode::SetBitStream
-// 用 途:ビットセット
-// 引 数:挿入位置、ビット配列データ、データビット長(最大16)
-// 戻り値:次回挿入位置(バッファオーバー時=-1)
-// 備 考:m_byDataCodeWord に結果をセット(要ゼロ初期化)
+// p rFrbgZbg
+// F}ʒuArbgzf[^Af[^rbg(ő16)
+// ߂lF}ʒu(obt@I[o[=-1)
+// lFm_byDataCodeWord ɌʂZbg(v[)
int CQR_Encode::SetBitStream(int nIndex, WORD wData, int ncData)
{
int i;
@@ -1275,13 +1275,13 @@
}
/////////////////////////////////////////////////////////////////////////////
// CQR_Encode::IsNumeralData
-// 用 途:数字モード該当チェック
-// 引 数:調査文字
-// 戻り値:該当時=TRUE
+// p rF[hY`FbN
+// F
+// ߂lFY=TRUE
BOOL CQR_Encode::IsNumeralData(unsigned char c)
{
if (c >= '0' && c <= '9')
return TRUE;
@@ -1290,13 +1290,13 @@
}
/////////////////////////////////////////////////////////////////////////////
// CQR_Encode::IsAlphabetData
-// 用 途:英数字モード該当チェック
-// 引 数:調査文字
-// 戻り値:該当時=TRUE
+// p rFp[hY`FbN
+// F
+// ߂lFY=TRUE
BOOL CQR_Encode::IsAlphabetData(unsigned char c)
{
if (c >= '0' && c <= '9')
return TRUE;
@@ -1311,14 +1311,14 @@
}
/////////////////////////////////////////////////////////////////////////////
// CQR_Encode::IsKanjiData
-// 用 途:漢字モード該当チェック
-// 引 数:調査文字(16ビット文字)
-// 戻り値:該当時=TRUE
-// 備 考:EBBFh 以降の S-JIS は対象外
+// p rF[hY`FbN
+// Fi16rbgj
+// ߂lFY=TRUE
+// lFEBBFh ȍ~ S-JIS ͑ΏۊO
BOOL CQR_Encode::IsKanjiData(unsigned char c1, unsigned char c2)
{
if (((c1 >= 0x81 && c1 <= 0x9f) || (c1 >= 0xe0 && c1 <= 0xeb)) && (c2 >= 0x40))
{
@@ -1332,13 +1332,13 @@
}
/////////////////////////////////////////////////////////////////////////////
// CQR_Encode::AlphabetToBinaly
-// 用 途:英数字モード文字のバイナリ化
-// 引 数:対象文字
-// 戻り値:バイナリ値
+// p rFp[h̃oCi
+// FΏە
+// ߂lFoCil
BYTE CQR_Encode::AlphabetToBinaly(unsigned char c)
{
if (c >= '0' && c <= '9') return (unsigned char)(c - '0');
@@ -1364,13 +1364,13 @@
}
/////////////////////////////////////////////////////////////////////////////
// CQR_Encode::KanjiToBinaly
-// 用 途:漢字モード文字のバイナリ化
-// 引 数:対象文字
-// 戻り値:バイナリ値
+// p rF[h̃oCi
+// FΏە
+// ߂lFoCil
WORD CQR_Encode::KanjiToBinaly(WORD wc)
{
if (wc >= 0x8140 && wc <= 0x9ffc)
wc -= 0x8140;
@@ -1381,78 +1381,78 @@
}
/////////////////////////////////////////////////////////////////////////////
// CQR_Encode::GetRSCodeWord
-// 用 途:RS誤り訂正コードワード取得
-// 引 数:データコードワードアドレス、データコードワード長、RSコードワード長
-// 備 考:総コードワード分のエリアを確保してから呼び出し
+// p rFqrR[h[h擾
+// Ff[^R[h[hAhXAf[^R[h[hAqrR[h[h
+// lFR[h[h̃GAmۂĂĂяo
void CQR_Encode::GetRSCodeWord(LPBYTE lpbyRSWork, int ncDataCodeWord, int ncRSCodeWord)
{
int i, j;
for (i = 0; i < ncDataCodeWord ; ++i)
{
if (lpbyRSWork[0] != 0)
{
- BYTE nExpFirst = byIntToExp[lpbyRSWork[0]]; // 初項係数より乗数算出
+ BYTE nExpFirst = byIntToExp[lpbyRSWork[0]]; // W搔Zo
for (j = 0; j < ncRSCodeWord; ++j)
{
- // 各項乗数に初項乗数を加算(% 255 → α^255 = 1)
+ // e搔ɏ搔Zi% 255 ^255 = 1j
BYTE nExpElement = (BYTE)(((int)(byRSExp[ncRSCodeWord][j] + nExpFirst)) % 255);
- // 排他論理和による剰余算出
+ // r_aɂ]Zo
lpbyRSWork[j] = (BYTE)(lpbyRSWork[j + 1] ^ byExpToInt[nExpElement]);
}
- // 残り桁をシフト
+ // c茅Vtg
for (j = ncRSCodeWord; j < ncDataCodeWord + ncRSCodeWord - 1; ++j)
lpbyRSWork[j] = lpbyRSWork[j + 1];
}
else
{
- // 残り桁をシフト
+ // c茅Vtg
for (j = 0; j < ncDataCodeWord + ncRSCodeWord - 1; ++j)
lpbyRSWork[j] = lpbyRSWork[j + 1];
}
}
}
/////////////////////////////////////////////////////////////////////////////
// CQR_Encode::FormatModule
-// 用 途:モジュールへのデータ配置
-// 戻り値:一辺のモジュール数
+// p rFW[ւ̃f[^zu
+// ߂lFӂ̃W[
void CQR_Encode::FormatModule()
{
int i, j;
ZeroMemory(m_byModuleData, sizeof(m_byModuleData));
- // 機能モジュール配置
+ // @\W[zu
SetFunctionModule();
- // データパターン配置
+ // f[^p^[zu
SetCodeWordPattern();
if (m_nMaskingNo == -1)
{
- // 最適マスキングパターン選択
+ // œK}XLOp^[I
m_nMaskingNo = 0;
- SetMaskingPattern(m_nMaskingNo); // マスキング
- SetFormatInfoPattern(m_nMaskingNo); // フォーマット情報パターン配置
+ SetMaskingPattern(m_nMaskingNo); // }XLO
+ SetFormatInfoPattern(m_nMaskingNo); // tH[}bgp^[zu
int nMinPenalty = CountPenalty();
for (i = 1; i <= 7; ++i)
{
- SetMaskingPattern(i); // マスキング
- SetFormatInfoPattern(i); // フォーマット情報パターン配置
+ SetMaskingPattern(i); // }XLO
+ SetFormatInfoPattern(i); // tH[}bgp^[zu
int nPenalty = CountPenalty();
if (nPenalty < nMinPenalty)
{
@@ -1460,14 +1460,14 @@
m_nMaskingNo = i;
}
}
}
- SetMaskingPattern(m_nMaskingNo); // マスキング
- SetFormatInfoPattern(m_nMaskingNo); // フォーマット情報パターン配置
+ SetMaskingPattern(m_nMaskingNo); // }XLO
+ SetFormatInfoPattern(m_nMaskingNo); // tH[}bgp^[zu
- // モジュールパターンをブール値に変換
+ // W[p^[u[lɕϊ
for (i = 0; i < m_nSymbleSize; ++i)
{
for (j = 0; j < m_nSymbleSize; ++j)
{
m_byModuleData[i][j] = (BYTE)((m_byModuleData[i][j] & 0x11) != 0);
@@ -1476,45 +1476,45 @@
}
/////////////////////////////////////////////////////////////////////////////
// CQR_Encode::SetFunctionModule
-// 用 途:機能モジュール配置
-// 備 考:フォーマット情報は機能モジュール登録のみ(実データは空白)
+// p rF@\W[zu
+// lFtH[}bg͋@\W[o^̂(f[^͋)
void CQR_Encode::SetFunctionModule()
{
int i, j;
- // 位置検出パターン
+ // ʒuop^[
SetFinderPattern(0, 0);
SetFinderPattern(m_nSymbleSize - 7, 0);
SetFinderPattern(0, m_nSymbleSize - 7);
- // 位置検出パターンセパレータ
+ // ʒuop^[Zp[^
for (i = 0; i < 8; ++i)
{
m_byModuleData[i][7] = m_byModuleData[7][i] = '\x20';
m_byModuleData[m_nSymbleSize - 8][i] = m_byModuleData[m_nSymbleSize - 8 + i][7] = '\x20';
m_byModuleData[i][m_nSymbleSize - 8] = m_byModuleData[7][m_nSymbleSize - 8 + i] = '\x20';
}
- // フォーマット情報記述位置を機能モジュール部として登録
+ // tH[}bgLqʒu@\W[Ƃēo^
for (i = 0; i < 9; ++i)
{
m_byModuleData[i][8] = m_byModuleData[8][i] = '\x20';
}
for (i = 0; i < 8; ++i)
{
m_byModuleData[m_nSymbleSize - 8 + i][8] = m_byModuleData[8][m_nSymbleSize - 8 + i] = '\x20';
}
- // バージョン情報パターン
+ // o[Wp^[
SetVersionPattern();
- // 位置合わせパターン
+ // ʒu킹p^[
for (i = 0; i < QR_VersonInfo[m_nVersion].ncAlignPoint; ++i)
{
SetAlignmentPattern(QR_VersonInfo[m_nVersion].nAlignPoint[i], 6);
SetAlignmentPattern(6, QR_VersonInfo[m_nVersion].nAlignPoint[i]);
@@ -1522,23 +1522,23 @@
{
SetAlignmentPattern(QR_VersonInfo[m_nVersion].nAlignPoint[i], QR_VersonInfo[m_nVersion].nAlignPoint[j]);
}
}
- // タイミングパターン
+ // ^C~Op^[
for (i = 8; i <= m_nSymbleSize - 9; ++i)
{
m_byModuleData[i][6] = (i % 2) == 0 ? '\x30' : '\x20';
m_byModuleData[6][i] = (i % 2) == 0 ? '\x30' : '\x20';
}
}
/////////////////////////////////////////////////////////////////////////////
// CQR_Encode::SetFinderPattern
-// 用 途:位置検出パターン配置
-// 引 数:配置左上座標
+// p rFʒuop^[zu
+// FzuW
void CQR_Encode::SetFinderPattern(int x, int y)
{
static BYTE byPattern[] = {0x7f, // 1111111b
0x41, // 1000001b
@@ -1559,12 +1559,12 @@
}
/////////////////////////////////////////////////////////////////////////////
// CQR_Encode::SetAlignmentPattern
-// 用 途:位置合わせパターン配置
-// 引 数:配置中央座標
+// p rFʒu킹p^[zu
+// FzuW
void CQR_Encode::SetAlignmentPattern(int x, int y)
{
static BYTE byPattern[] = {0x1f, // 11111b
0x11, // 10001b
@@ -1572,13 +1572,13 @@
0x11, // 10001b
0x1f}; // 11111b
int i, j;
if (m_byModuleData[x][y] & 0x20)
- return; // 機能モジュールと重複するため除外
+ return; // @\W[Əd邽ߏO
- x -= 2; y -= 2; // 左上隅座標に変換
+ x -= 2; y -= 2; // Wɕϊ
for (i = 0; i < 5; ++i)
{
for (j = 0; j < 5; ++j)
{
@@ -1588,23 +1588,23 @@
}
/////////////////////////////////////////////////////////////////////////////
// CQR_Encode::SetVersionPattern
-// 用 途:バージョン(型番)情報パターン配置
-// 備 考:拡張BCH(18,6)符号を誤り訂正として使用
+// p rFo[W(^)p^[zu
+// lFgabg(18,6)ƂĎgp
void CQR_Encode::SetVersionPattern()
{
int i, j;
if (m_nVersion <= 6)
return;
int nVerData = m_nVersion << 12;
- // 剰余ビット算出
+ // ]rbgZo
for (i = 0; i < 6; ++i)
{
if (nVerData & (1 << (17 - i)))
{
nVerData ^= (0x1f25 << (5 - i));
@@ -1624,19 +1624,19 @@
}
/////////////////////////////////////////////////////////////////////////////
// CQR_Encode::SetCodeWordPattern
-// 用 途:データパターン配置
+// p rFf[^p^[zu
void CQR_Encode::SetCodeWordPattern()
{
int x = m_nSymbleSize;
int y = m_nSymbleSize - 1;
- int nCoef_x = 1; // x軸配置向き
- int nCoef_y = 1; // y軸配置向き
+ int nCoef_x = 1; // zu
+ int nCoef_y = 1; // zu
int i, j;
for (i = 0; i < m_ncAllCodeWord; ++i)
{
@@ -1656,37 +1656,37 @@
y = (y < 0) ? 0 : m_nSymbleSize - 1;
nCoef_y *= -1;
x -= 2;
- if (x == 6) // タイミングパターン
+ if (x == 6) // ^C~Op^[
--x;
}
}
}
- while (m_byModuleData[x][y] & 0x20); // 機能モジュールを除外
+ while (m_byModuleData[x][y] & 0x20); // @\W[O
m_byModuleData[x][y] = (m_byAllCodeWord[i] & (1 << (7 - j))) ? '\x02' : '\x00';
}
}
}
/////////////////////////////////////////////////////////////////////////////
// CQR_Encode::SetMaskingPattern
-// 用 途:マスキングパターン配置
-// 引 数:マスキングパターン番号
+// p rF}XLOp^[zu
+// F}XLOp^[ԍ
void CQR_Encode::SetMaskingPattern(int nPatternNo)
{
int i, j;
for (i = 0; i < m_nSymbleSize; ++i)
{
for (j = 0; j < m_nSymbleSize; ++j)
{
- if (! (m_byModuleData[j][i] & 0x20)) // 機能モジュールを除外
+ if (! (m_byModuleData[j][i] & 0x20)) // @\W[O
{
BOOL bMask;
switch (nPatternNo)
{
@@ -1730,12 +1730,12 @@
}
/////////////////////////////////////////////////////////////////////////////
// CQR_Encode::SetFormatInfoPattern
-// 用 途:フォーマット情報配置
-// 引 数:マスキングパターン番号
+// p rFtH[}bgzu
+// F}XLOp^[ԍ
void CQR_Encode::SetFormatInfoPattern(int nPatternNo)
{
int nFormatInfo;
int i;
@@ -1761,57 +1761,57 @@
nFormatInfo += nPatternNo;
int nFormatData = nFormatInfo << 10;
- // 剰余ビット算出
+ // ]rbgZo
for (i = 0; i < 5; ++i)
{
if (nFormatData & (1 << (14 - i)))
{
nFormatData ^= (0x0537 << (4 - i)); // 10100110111b
}
}
nFormatData += nFormatInfo << 10;
- // マスキング
+ // }XLO
nFormatData ^= 0x5412; // 101010000010010b
- // 左上位置検出パターン周り配置
+ // ʒuop^[zu
for (i = 0; i <= 5; ++i)
m_byModuleData[8][i] = (nFormatData & (1 << i)) ? '\x30' : '\x20';
m_byModuleData[8][7] = (nFormatData & (1 << 6)) ? '\x30' : '\x20';
m_byModuleData[8][8] = (nFormatData & (1 << 7)) ? '\x30' : '\x20';
m_byModuleData[7][8] = (nFormatData & (1 << 8)) ? '\x30' : '\x20';
for (i = 9; i <= 14; ++i)
m_byModuleData[14 - i][8] = (nFormatData & (1 << i)) ? '\x30' : '\x20';
- // 右上位置検出パターン下配置
+ // Eʒuop^[zu
for (i = 0; i <= 7; ++i)
m_byModuleData[m_nSymbleSize - 1 - i][8] = (nFormatData & (1 << i)) ? '\x30' : '\x20';
- // 左下位置検出パターン右配置
- m_byModuleData[8][m_nSymbleSize - 8] = '\x30'; // 固定暗モジュール
+ // ʒuop^[Ezu
+ m_byModuleData[8][m_nSymbleSize - 8] = '\x30'; // ŒÃW[
for (i = 8; i <= 14; ++i)
m_byModuleData[8][m_nSymbleSize - 15 + i] = (nFormatData & (1 << i)) ? '\x30' : '\x20';
}
/////////////////////////////////////////////////////////////////////////////
// CQR_Encode::CountPenalty
-// 用 途:マスク後ペナルティスコア算出
+// p rF}XNyieBXRAZo
int CQR_Encode::CountPenalty()
{
int nPenalty = 0;
int i, j, k;
- // 同色の列の隣接モジュール
+ // F̗̗אڃW[
for (i = 0; i < m_nSymbleSize; ++i)
{
for (j = 0; j < m_nSymbleSize - 4; ++j)
{
int nCount = 1;
@@ -1831,11 +1831,11 @@
j = k - 1;
}
}
- // 同色の行の隣接モジュール
+ // F̍s̗אڃW[
for (i = 0; i < m_nSymbleSize; ++i)
{
for (j = 0; j < m_nSymbleSize - 4; ++j)
{
int nCount = 1;
@@ -1855,11 +1855,11 @@
j = k - 1;
}
}
- // 同色のモジュールブロック(2×2)
+ // F̃W[ubNiQ~Qj
for (i = 0; i < m_nSymbleSize - 1; ++i)
{
for (j = 0; j < m_nSymbleSize - 1; ++j)
{
if ((((m_byModuleData[i][j] & 0x11) == 0) == ((m_byModuleData[i + 1][j] & 0x11) == 0)) &&
@@ -1869,26 +1869,26 @@
nPenalty += 3;
}
}
}
- // 同一列における 1:1:3:1:1 比率(暗:明:暗:明:暗)のパターン
+ // ɂ 1:1:3:1:1 䗦i::::Áj̃p^[
for (i = 0; i < m_nSymbleSize; ++i)
{
for (j = 0; j < m_nSymbleSize - 6; ++j)
{
- if (((j == 0) || (! (m_byModuleData[i][j - 1] & 0x11))) && // 明 または シンボル外
- ( m_byModuleData[i][j] & 0x11) && // 暗 - 1
- (! (m_byModuleData[i][j + 1] & 0x11)) && // 明 - 1
- ( m_byModuleData[i][j + 2] & 0x11) && // 暗 ┐
- ( m_byModuleData[i][j + 3] & 0x11) && // 暗 │3
- ( m_byModuleData[i][j + 4] & 0x11) && // 暗 ┘
- (! (m_byModuleData[i][j + 5] & 0x11)) && // 明 - 1
- ( m_byModuleData[i][j + 6] & 0x11) && // 暗 - 1
- ((j == m_nSymbleSize - 7) || (! (m_byModuleData[i][j + 7] & 0x11)))) // 明 または シンボル外
+ if (((j == 0) || (! (m_byModuleData[i][j - 1] & 0x11))) && // ܂ V{O
+ ( m_byModuleData[i][j] & 0x11) && // - 1
+ (! (m_byModuleData[i][j + 1] & 0x11)) && // - 1
+ ( m_byModuleData[i][j + 2] & 0x11) && //
+ ( m_byModuleData[i][j + 3] & 0x11) && // 3
+ ( m_byModuleData[i][j + 4] & 0x11) && //
+ (! (m_byModuleData[i][j + 5] & 0x11)) && // - 1
+ ( m_byModuleData[i][j + 6] & 0x11) && // - 1
+ ((j == m_nSymbleSize - 7) || (! (m_byModuleData[i][j + 7] & 0x11)))) // ܂ V{O
{
- // 前または後に4以上の明パターン
+ // O܂͌4ȏ̖p^[
if (((j < 2 || ! (m_byModuleData[i][j - 2] & 0x11)) &&
(j < 3 || ! (m_byModuleData[i][j - 3] & 0x11)) &&
(j < 4 || ! (m_byModuleData[i][j - 4] & 0x11))) ||
((j >= m_nSymbleSize - 8 || ! (m_byModuleData[i][j + 8] & 0x11)) &&
(j >= m_nSymbleSize - 9 || ! (m_byModuleData[i][j + 9] & 0x11)) &&
@@ -1898,26 +1898,26 @@
}
}
}
}
- // 同一行における 1:1:3:1:1 比率(暗:明:暗:明:暗)のパターン
+ // sɂ 1:1:3:1:1 䗦i::::Áj̃p^[
for (i = 0; i < m_nSymbleSize; ++i)
{
for (j = 0; j < m_nSymbleSize - 6; ++j)
{
- if (((j == 0) || (! (m_byModuleData[j - 1][i] & 0x11))) && // 明 または シンボル外
- ( m_byModuleData[j] [i] & 0x11) && // 暗 - 1
- (! (m_byModuleData[j + 1][i] & 0x11)) && // 明 - 1
- ( m_byModuleData[j + 2][i] & 0x11) && // 暗 ┐
- ( m_byModuleData[j + 3][i] & 0x11) && // 暗 │3
- ( m_byModuleData[j + 4][i] & 0x11) && // 暗 ┘
- (! (m_byModuleData[j + 5][i] & 0x11)) && // 明 - 1
- ( m_byModuleData[j + 6][i] & 0x11) && // 暗 - 1
- ((j == m_nSymbleSize - 7) || (! (m_byModuleData[j + 7][i] & 0x11)))) // 明 または シンボル外
+ if (((j == 0) || (! (m_byModuleData[j - 1][i] & 0x11))) && // ܂ V{O
+ ( m_byModuleData[j] [i] & 0x11) && // - 1
+ (! (m_byModuleData[j + 1][i] & 0x11)) && // - 1
+ ( m_byModuleData[j + 2][i] & 0x11) && //
+ ( m_byModuleData[j + 3][i] & 0x11) && // 3
+ ( m_byModuleData[j + 4][i] & 0x11) && //
+ (! (m_byModuleData[j + 5][i] & 0x11)) && // - 1
+ ( m_byModuleData[j + 6][i] & 0x11) && // - 1
+ ((j == m_nSymbleSize - 7) || (! (m_byModuleData[j + 7][i] & 0x11)))) // ܂ V{O
{
- // 前または後に4以上の明パターン
+ // O܂͌4ȏ̖p^[
if (((j < 2 || ! (m_byModuleData[j - 2][i] & 0x11)) &&
(j < 3 || ! (m_byModuleData[j - 3][i] & 0x11)) &&
(j < 4 || ! (m_byModuleData[j - 4][i] & 0x11))) ||
((j >= m_nSymbleSize - 8 || ! (m_byModuleData[j + 8][i] & 0x11)) &&
(j >= m_nSymbleSize - 9 || ! (m_byModuleData[j + 9][i] & 0x11)) &&
@@ -1927,10 +1927,10 @@
}
}
}
}
- // 全体に対する暗モジュールの占める割合
+ // ŜɑÃW[̐߂銄
int nCount = 0;
for (i = 0; i < m_nSymbleSize; ++i)
{
for (j = 0; j < m_nSymbleSize; ++j)