rqr 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,8 @@
1
+ == 0.2.0 2008-08-13
2
+
3
+ * Added win32 package
4
+ * macport available (alpha)
5
+
1
6
  == 0.1.1 2008-05-26
2
7
 
3
8
  * Update API.
@@ -21,6 +21,7 @@ ext/rqr/qr_draw_tiff.h
21
21
  ext/rqr/qr_wrap.cxx
22
22
  ext/rqr/win2ansi.h
23
23
  lib/rqr.rb
24
+ lib/rqr/QR.so
24
25
  lib/rqr/errors.rb
25
26
  lib/rqr/qrcode.rb
26
27
  lib/rqr/version.rb
data/README.txt CHANGED
@@ -46,6 +46,12 @@ If using OSX, Use Fink(http://www.finkproject.org) Universal Binary libs.
46
46
  * sudo fink install libpng
47
47
  * sudo fink install libtiff
48
48
 
49
+ or use MacPorts (http://www.macports.com)
50
+ * sudo port install jpeg
51
+ * sudo port install libpng
52
+ * sudo port install tiff
53
+
54
+
49
55
  == INSTALL:
50
56
 
51
57
  * sudo gem install rqr
data/Rakefile CHANGED
@@ -1,3 +1,4 @@
1
+ PACKAGE_PLATFORM = (ARGV[0] =~ /mswin32$/) ? 'mswin32' : RUBY_PLATFORM
1
2
  require 'config/requirements'
2
3
  require 'config/hoe' # setup Hoe + all gem configuration
3
4
 
@@ -42,7 +42,18 @@ class Hoe
42
42
  def extra_deps
43
43
  @extra_deps.reject! { |x| Array(x).first == 'hoe' }
44
44
  @extra_deps
45
- end
45
+ end
46
+
47
+ def spec= s
48
+
49
+ if PACKAGE_PLATFORM =~ /mswin32/
50
+ s.files = s.files.reject! {|f| f =~ /extconf\.rb/ }
51
+ else
52
+ s.files = s.files.reject! {|f| f =~ /QR\.so/ }
53
+ end
54
+ @spec = s
55
+ end
56
+
46
57
  end
47
58
 
48
59
  # Generate all the Rake tasks
@@ -61,7 +72,12 @@ $hoe = Hoe.new(GEM_NAME, VERS) do |p|
61
72
  #p.extra_deps = [] # An array of rubygem dependencies [name, version], e.g. [ ['active_support', '>= 1.3.1'] ]
62
73
 
63
74
  #p.spec_extras = {} # A hash of extra values to set in the gemspec.
64
- p.spec_extras[:extensions] = ['ext/rqr/extconf.rb']
75
+ if PACKAGE_PLATFORM =~ /mswin32/
76
+ platform = Gem::Platform.respond_to?(:new) ? Gem::Platform.new('mswin32') : Gem::Platform::WIN32
77
+ p.spec_extras[:platform] = platform
78
+ else
79
+ p.spec_extras[:extensions] = ['ext/rqr/extconf.rb']
80
+ end
65
81
 
66
82
  end
67
83
 
@@ -1,4 +1,4 @@
1
- //// QR_Encode.cpp : CQR_Encode クラス インプリメンテーション ファイル
1
+ //// QR_Encode.cpp : CQR_Encode �N���X �C���v�������e�[�V���� �t�@�C��
2
2
  //// Date 2006/05/17 Ver. 1.12 [Class Ver.1.21] Psytec Inc.
3
3
  //
4
4
  //#include "stdafx.h"
@@ -11,8 +11,8 @@
11
11
  //#endif
12
12
 
13
13
  /////////////////////////////////////////////////////////////////////////////
14
- // QRコードバージョン(型番)情報
15
- static QR_VERSIONINFO QR_VersonInfo[] = {{0}, // (ダミー:Ver.0)
14
+ // QR�R�[�h�o�[�W����(�^��)���
15
+ static QR_VERSIONINFO QR_VersonInfo[] = {{0}, // (�_�~�[:Ver.0)
16
16
  { 1, // Ver.1
17
17
  26, 19, 16, 13, 9,
18
18
  0, 0, 0, 0, 0, 0, 0,
@@ -457,7 +457,7 @@ static QR_VERSIONINFO QR_VersonInfo[] = {{0}, // (ダミー:Ver.0)
457
457
 
458
458
 
459
459
  /////////////////////////////////////////////////////////////////////////////
460
- // GF(2^8)α指数→整数変換テーブル
460
+ // GF(2^8)���w���������ϊ��e�[�u��
461
461
  static BYTE byExpToInt[] = { 1, 2, 4, 8, 16, 32, 64, 128, 29, 58, 116, 232, 205, 135, 19, 38,
462
462
  76, 152, 45, 90, 180, 117, 234, 201, 143, 3, 6, 12, 24, 48, 96, 192,
463
463
  157, 39, 78, 156, 37, 74, 148, 53, 106, 212, 181, 119, 238, 193, 159, 35,
@@ -477,7 +477,7 @@ static BYTE byExpToInt[] = { 1, 2, 4, 8, 16, 32, 64, 128, 29, 58, 11
477
477
 
478
478
 
479
479
  /////////////////////////////////////////////////////////////////////////////
480
- // GF(2^8)α整数→指数変換テーブル
480
+ // GF(2^8)���������w���ϊ��e�[�u��
481
481
  static BYTE byIntToExp[] = { 0, 0, 1, 25, 2, 50, 26, 198, 3, 223, 51, 238, 27, 104, 199, 75,
482
482
  4, 100, 224, 14, 52, 141, 239, 129, 28, 193, 105, 248, 200, 8, 76, 113,
483
483
  5, 138, 101, 47, 225, 36, 15, 33, 53, 147, 142, 218, 240, 18, 130, 69,
@@ -497,7 +497,7 @@ static BYTE byIntToExp[] = { 0, 0, 1, 25, 2, 50, 26, 198, 3, 223, 5
497
497
 
498
498
 
499
499
  /////////////////////////////////////////////////////////////////////////////
500
- // 誤り訂正生成多項式α係数
500
+ // �������������������W��
501
501
  static BYTE byRSExp7[] = {87, 229, 146, 149, 238, 102, 21};
502
502
  static BYTE byRSExp10[] = {251, 67, 46, 61, 118, 70, 64, 94, 32, 45};
503
503
  static BYTE byRSExp13[] = { 74, 152, 176, 100, 86, 100, 106, 104, 130, 218, 206, 140, 78};
@@ -581,7 +581,7 @@ static LPBYTE byRSExp[] = {NULL, NULL, NULL, NULL, NULL,
581
581
  byRSExp50, NULL, byRSExp52, NULL, byRSExp54, NULL, byRSExp56, NULL, byRSExp58, NULL,
582
582
  byRSExp60, NULL, byRSExp62, NULL, byRSExp64, NULL, byRSExp66, NULL, byRSExp68};
583
583
 
584
- // 文字数インジケータビット長(バージョングループ別, {S, M, L})
584
+ // �������C���W�P�[�^�r�b�g��(�o�[�W�����O���[�v��, {S, M, L})
585
585
  static int nIndicatorLenNumeral[] = {10, 12, 14};
586
586
  static int nIndicatorLenAlphabet[] = { 9, 11, 13};
587
587
  static int nIndicatorLen8Bit[] = { 8, 16, 16};
@@ -589,7 +589,7 @@ static int nIndicatorLenKanji[] = { 8, 10, 12};
589
589
 
590
590
 
591
591
  /////////////////////////////////////////////////////////////////////////////
592
- // QR_Encode クラスの構築/消滅
592
+ // QR_Encode �N���X�̍\�z/����
593
593
 
594
594
  CQR_Encode::CQR_Encode()
595
595
  {
@@ -602,9 +602,9 @@ CQR_Encode::~CQR_Encode()
602
602
 
603
603
  /////////////////////////////////////////////////////////////////////////////
604
604
  // CQR_Encode::EncodeData
605
- // 途:データエンコード
606
- // 数:誤り訂正レベル、型番(0=自動)、型番自動拡張フラグ、マスキング番号(-1=自動)、エンコードデータ、エンコードデータ長
607
- // 戻り値:エンコード成功時=TRUE、データなし、または容量オーバー時=FALSE
605
+ // �p �r�F�f�[�^�G���R�[�h
606
+ // �� ���F���������x���A�^��(0=����)�A�^�Ԏ����g���t���O�A�}�X�L���O�ԍ�(-1=����)�A�G���R�[�h�f�[�^�A�G���R�[�h�f�[�^��
607
+ // �߂�l�F�G���R�[�h������=TRUE�A�f�[�^�Ȃ��A�܂��͗e�ʃI�[�o�[��=FALSE
608
608
 
609
609
  BOOL CQR_Encode::EncodeData(int nLevel, int nVersion, BOOL bAutoExtent, int nMaskingNo, LPCSTR lpsSource, int ncSource)
610
610
  {
@@ -613,21 +613,21 @@ BOOL CQR_Encode::EncodeData(int nLevel, int nVersion, BOOL bAutoExtent, int nMas
613
613
  m_nLevel = nLevel;
614
614
  m_nMaskingNo = nMaskingNo;
615
615
 
616
- // データ長が指定されていない場合は lstrlen によって取得
616
+ // �f�[�^�����w�肳��Ă��Ȃ��ꍇ�� lstrlen �ɂ���Ď擾
617
617
  int ncLength = ncSource > 0 ? ncSource : lstrlen(lpsSource);
618
618
 
619
619
  if (ncLength == 0)
620
- return FALSE; // データなし
620
+ return FALSE; // �f�[�^�Ȃ�
621
621
 
622
- // バージョン(型番)チェック
622
+ // �o�[�W����(�^��)�`�F�b�N
623
623
  int nEncodeVersion = GetEncodeVersion(nVersion, lpsSource, ncLength);
624
624
 
625
625
  if (nEncodeVersion == 0)
626
- return FALSE; // 容量オーバー
626
+ return FALSE; // �e�ʃI�[�o�[
627
627
 
628
628
  if (nVersion == 0)
629
629
  {
630
- // 型番自動
630
+ // �^�Ԏ���
631
631
  m_nVersion = nEncodeVersion;
632
632
  }
633
633
  else
@@ -639,13 +639,13 @@ BOOL CQR_Encode::EncodeData(int nLevel, int nVersion, BOOL bAutoExtent, int nMas
639
639
  else
640
640
  {
641
641
  if (bAutoExtent)
642
- m_nVersion = nEncodeVersion; // バージョン(型番)自動拡張
642
+ m_nVersion = nEncodeVersion; // �o�[�W����(�^��)�����g��
643
643
  else
644
- return FALSE; // 容量オーバー
644
+ return FALSE; // �e�ʃI�[�o�[
645
645
  }
646
646
  }
647
647
 
648
- // ターミネータコード"0000"付加
648
+ // �^�[�~�l�[�^�R�[�h"0000"�t��
649
649
  int ncDataCodeWord = QR_VersonInfo[m_nVersion].ncDataCodeWord[nLevel];
650
650
 
651
651
  int ncTerminater = min(4, (ncDataCodeWord * 8) - m_ncDataCodeWordBit);
@@ -653,7 +653,7 @@ BOOL CQR_Encode::EncodeData(int nLevel, int nVersion, BOOL bAutoExtent, int nMas
653
653
  if (ncTerminater > 0)
654
654
  m_ncDataCodeWordBit = SetBitStream(m_ncDataCodeWordBit, 0, ncTerminater);
655
655
 
656
- // パディングコード"11101100, 00010001"付加
656
+ // �p�f�B���O�R�[�h"11101100, 00010001"�t��
657
657
  BYTE byPaddingCode = 0xec;
658
658
 
659
659
  for (i = (m_ncDataCodeWordBit + 7) / 8; i < ncDataCodeWord; ++i)
@@ -663,24 +663,24 @@ BOOL CQR_Encode::EncodeData(int nLevel, int nVersion, BOOL bAutoExtent, int nMas
663
663
  byPaddingCode = (BYTE)(byPaddingCode == 0xec ? 0x11 : 0xec);
664
664
  }
665
665
 
666
- // 総コードワード算出エリアクリア
666
+ // ���R�[�h���[�h�Z�o�G���A�N���A
667
667
  m_ncAllCodeWord = QR_VersonInfo[m_nVersion].ncAllCodeWord;
668
668
  ZeroMemory(m_byAllCodeWord, m_ncAllCodeWord);
669
669
 
670
- int nDataCwIndex = 0; // データコードワード処理位置
670
+ int nDataCwIndex = 0; // �f�[�^�R�[�h���[�h�����ʒu
671
671
 
672
- // データブロック分割数
672
+ // �f�[�^�u���b�N������
673
673
  int ncBlock1 = QR_VersonInfo[m_nVersion].RS_BlockInfo1[nLevel].ncRSBlock;
674
674
  int ncBlock2 = QR_VersonInfo[m_nVersion].RS_BlockInfo2[nLevel].ncRSBlock;
675
675
  int ncBlockSum = ncBlock1 + ncBlock2;
676
676
 
677
- int nBlockNo = 0; // 処理中ブロック番号
677
+ int nBlockNo = 0; // �������u���b�N�ԍ�
678
678
 
679
- // ブロック別データコードワード数
679
+ // �u���b�N�ʃf�[�^�R�[�h���[�h��
680
680
  int ncDataCw1 = QR_VersonInfo[m_nVersion].RS_BlockInfo1[nLevel].ncDataCodeWord;
681
681
  int ncDataCw2 = QR_VersonInfo[m_nVersion].RS_BlockInfo2[nLevel].ncDataCodeWord;
682
682
 
683
- // データコードワードインターリーブ配置
683
+ // �f�[�^�R�[�h���[�h�C���^�[���[�u�z�u
684
684
  for (i = 0; i < ncBlock1; ++i)
685
685
  {
686
686
  for (j = 0; j < ncDataCw1; ++j)
@@ -701,7 +701,7 @@ BOOL CQR_Encode::EncodeData(int nLevel, int nVersion, BOOL bAutoExtent, int nMas
701
701
  }
702
702
  else
703
703
  {
704
- // 2種目ブロック端数分配置
704
+ // �Q��ڃu���b�N�[�����z�u
705
705
  m_byAllCodeWord[(ncBlockSum * ncDataCw1) + i] = m_byDataCodeWord[nDataCwIndex++];
706
706
  }
707
707
  }
@@ -709,12 +709,12 @@ BOOL CQR_Encode::EncodeData(int nLevel, int nVersion, BOOL bAutoExtent, int nMas
709
709
  ++nBlockNo;
710
710
  }
711
711
 
712
- // ブロック別RSコードワード数(※現状では同数)
712
+ // �u���b�N�ʂq�r�R�[�h���[�h��(������ł͓���)
713
713
  int ncRSCw1 = QR_VersonInfo[m_nVersion].RS_BlockInfo1[nLevel].ncAllCodeWord - ncDataCw1;
714
714
  int ncRSCw2 = QR_VersonInfo[m_nVersion].RS_BlockInfo2[nLevel].ncAllCodeWord - ncDataCw2;
715
715
 
716
716
  /////////////////////////////////////////////////////////////////////////
717
- // RSコードワード算出
717
+ // �q�r�R�[�h���[�h�Z�o
718
718
 
719
719
  nDataCwIndex = 0;
720
720
  nBlockNo = 0;
@@ -727,7 +727,7 @@ BOOL CQR_Encode::EncodeData(int nLevel, int nVersion, BOOL bAutoExtent, int nMas
727
727
 
728
728
  GetRSCodeWord(m_byRSWork, ncDataCw1, ncRSCw1);
729
729
 
730
- // RSコードワード配置
730
+ // �q�r�R�[�h���[�h�z�u
731
731
  for (j = 0; j < ncRSCw1; ++j)
732
732
  {
733
733
  m_byAllCodeWord[ncDataCodeWord + (ncBlockSum * j) + nBlockNo] = m_byRSWork[j];
@@ -745,7 +745,7 @@ BOOL CQR_Encode::EncodeData(int nLevel, int nVersion, BOOL bAutoExtent, int nMas
745
745
 
746
746
  GetRSCodeWord(m_byRSWork, ncDataCw2, ncRSCw2);
747
747
 
748
- // RSコードワード配置
748
+ // �q�r�R�[�h���[�h�z�u
749
749
  for (j = 0; j < ncRSCw2; ++j)
750
750
  {
751
751
  m_byAllCodeWord[ncDataCodeWord + (ncBlockSum * j) + nBlockNo] = m_byRSWork[j];
@@ -757,7 +757,7 @@ BOOL CQR_Encode::EncodeData(int nLevel, int nVersion, BOOL bAutoExtent, int nMas
757
757
 
758
758
  m_nSymbleSize = m_nVersion * 4 + 17;
759
759
 
760
- // モジュール配置
760
+ // ���W���[���z�u
761
761
  FormatModule();
762
762
 
763
763
  return TRUE;
@@ -766,9 +766,9 @@ BOOL CQR_Encode::EncodeData(int nLevel, int nVersion, BOOL bAutoExtent, int nMas
766
766
 
767
767
  /////////////////////////////////////////////////////////////////////////////
768
768
  // CQR_Encode::GetEncodeVersion
769
- // 途:エンコード時バージョン(型番)取得
770
- // 数:調査開始バージョン、エンコードデータ、エンコードデータ長
771
- // 戻り値:バージョン番号(容量オーバー時=0
769
+ // �p �r�F�G���R�[�h���o�[�W����(�^��)�擾
770
+ // �� ���F�����J�n�o�[�W�����A�G���R�[�h�f�[�^�A�G���R�[�h�f�[�^��
771
+ // �߂�l�F�o�[�W�����ԍ��i�e�ʃI�[�o�[��=0�j
772
772
 
773
773
  int CQR_Encode::GetEncodeVersion(int nVersion, LPCSTR lpsSource, int ncLength)
774
774
  {
@@ -812,9 +812,9 @@ int CQR_Encode::GetEncodeVersion(int nVersion, LPCSTR lpsSource, int ncLength)
812
812
 
813
813
  /////////////////////////////////////////////////////////////////////////////
814
814
  // CQR_Encode::EncodeSourceData
815
- // 途:入力データエンコード
816
- // 数:入力データ、入力データ長、バージョン(型番)グループ
817
- // 戻り値:エンコード成功時=TRUE
815
+ // �p �r�F���̓f�[�^�G���R�[�h
816
+ // �� ���F���̓f�[�^�A���̓f�[�^���A�o�[�W����(�^��)�O���[�v
817
+ // �߂�l�F�G���R�[�h������=TRUE
818
818
 
819
819
  BOOL CQR_Encode::EncodeSourceData(LPCSTR lpsSource, int ncLength, int nVerGroup)
820
820
  {
@@ -822,7 +822,7 @@ BOOL CQR_Encode::EncodeSourceData(LPCSTR lpsSource, int ncLength, int nVerGroup)
822
822
 
823
823
  int i, j;
824
824
 
825
- // どのモードが何文字(バイト)継続しているかを調査
825
+ // �ǂ̃��[�h��������(�o�C�g)�p�����Ă��邩�𒲍�
826
826
  for (m_ncDataBlock = i = 0; i < ncLength; ++i)
827
827
  {
828
828
  BYTE byMode;
@@ -846,7 +846,7 @@ BOOL CQR_Encode::EncodeSourceData(LPCSTR lpsSource, int ncLength, int nVerGroup)
846
846
 
847
847
  if (byMode == QR_MODE_KANJI)
848
848
  {
849
- // 漢字は文字数ではなく 数で記録
849
+ // �����͕������ł͂Ȃ� ���ŋL�^
850
850
  ++m_nBlockLength[m_ncDataBlock];
851
851
  ++i;
852
852
  }
@@ -855,22 +855,22 @@ BOOL CQR_Encode::EncodeSourceData(LPCSTR lpsSource, int ncLength, int nVerGroup)
855
855
  ++m_ncDataBlock;
856
856
 
857
857
  /////////////////////////////////////////////////////////////////////////
858
- // 隣接する英数字モードブロックと数字モードブロックの並びをを条件により結合
858
+ // �אڂ���p�������[�h�u���b�N�Ɛ������[�h�u���b�N�̕��т��������ɂ�茋��
859
859
 
860
- int ncSrcBits, ncDstBits; // 元のビット長と単一の英数字モードブロック化した場合のビット長
860
+ int ncSrcBits, ncDstBits; // ���̃r�b�g���ƒP��̉p�������[�h�u���b�N�������ꍇ�̃r�b�g��
861
861
 
862
862
  int nBlock = 0;
863
863
 
864
864
  while (nBlock < m_ncDataBlock - 1)
865
865
  {
866
- int ncJoinFront, ncJoinBehind; // 前後8ビットバイトモードブロックと結合した場合のビット長
867
- int nJoinPosition = 0; // 8ビットバイトモードブロックとの結合:-1=前と結合、0=結合しない、1=後ろと結合
866
+ int ncJoinFront, ncJoinBehind; // �O��W�r�b�g�o�C�g���[�h�u���b�N�ƌ��������ꍇ�̃r�b�g��
867
+ int nJoinPosition = 0; // �W�r�b�g�o�C�g���[�h�u���b�N�Ƃ̌����F-1=�O�ƌ����A0=�������Ȃ��A1=���ƌ���
868
868
 
869
- // 「数字−英数字」または「英数字−数字」の並び
869
+ // �u�����|�p�����v�܂��́u�p�����|�����v�̕���
870
870
  if ((m_byBlockMode[nBlock] == QR_MODE_NUMERAL && m_byBlockMode[nBlock + 1] == QR_MODE_ALPHABET) ||
871
871
  (m_byBlockMode[nBlock] == QR_MODE_ALPHABET && m_byBlockMode[nBlock + 1] == QR_MODE_NUMERAL))
872
872
  {
873
- // 元のビット長と単一の英数字モードブロック化した場合のビット長を比較
873
+ // ���̃r�b�g���ƒP��̉p�������[�h�u���b�N�������ꍇ�̃r�b�g�����r
874
874
  ncSrcBits = GetBitLength(m_byBlockMode[nBlock], m_nBlockLength[nBlock], nVerGroup) +
875
875
  GetBitLength(m_byBlockMode[nBlock + 1], m_nBlockLength[nBlock + 1], nVerGroup);
876
876
 
@@ -878,34 +878,34 @@ BOOL CQR_Encode::EncodeSourceData(LPCSTR lpsSource, int ncLength, int nVerGroup)
878
878
 
879
879
  if (ncSrcBits > ncDstBits)
880
880
  {
881
- // 前後に8ビットバイトモードブロックがある場合、それらとの結合が有利かどうかをチェック
881
+ // �O��ɂW�r�b�g�o�C�g���[�h�u���b�N������ꍇ�A�����Ƃ̌������L�����ǂ������`�F�b�N
882
882
  if (nBlock >= 1 && m_byBlockMode[nBlock - 1] == QR_MODE_8BIT)
883
883
  {
884
- // 前に8ビットバイトモードブロックあり
884
+ // �O�ɂW�r�b�g�o�C�g���[�h�u���b�N����
885
885
  ncJoinFront = GetBitLength(QR_MODE_8BIT, m_nBlockLength[nBlock - 1] + m_nBlockLength[nBlock], nVerGroup) +
886
886
  GetBitLength(m_byBlockMode[nBlock + 1], m_nBlockLength[nBlock + 1], nVerGroup);
887
887
 
888
888
  if (ncJoinFront > ncDstBits + GetBitLength(QR_MODE_8BIT, m_nBlockLength[nBlock - 1], nVerGroup))
889
- ncJoinFront = 0; // 8ビットバイトモードブロックとは結合しない
889
+ ncJoinFront = 0; // �W�r�b�g�o�C�g���[�h�u���b�N�Ƃ͌������Ȃ�
890
890
  }
891
891
  else
892
892
  ncJoinFront = 0;
893
893
 
894
894
  if (nBlock < m_ncDataBlock - 2 && m_byBlockMode[nBlock + 2] == QR_MODE_8BIT)
895
895
  {
896
- // 後ろに8ビットバイトモードブロックあり
896
+ // ���ɂW�r�b�g�o�C�g���[�h�u���b�N����
897
897
  ncJoinBehind = GetBitLength(m_byBlockMode[nBlock], m_nBlockLength[nBlock], nVerGroup) +
898
898
  GetBitLength(QR_MODE_8BIT, m_nBlockLength[nBlock + 1] + m_nBlockLength[nBlock + 2], nVerGroup);
899
899
 
900
900
  if (ncJoinBehind > ncDstBits + GetBitLength(QR_MODE_8BIT, m_nBlockLength[nBlock + 2], nVerGroup))
901
- ncJoinBehind = 0; // 8ビットバイトモードブロックとは結合しない
901
+ ncJoinBehind = 0; // �W�r�b�g�o�C�g���[�h�u���b�N�Ƃ͌������Ȃ�
902
902
  }
903
903
  else
904
904
  ncJoinBehind = 0;
905
905
 
906
906
  if (ncJoinFront != 0 && ncJoinBehind != 0)
907
907
  {
908
- // 前後両方に8ビットバイトモードブロックがある場合はデータ長が短くなる方を優先
908
+ // �O�㗼���ɂW�r�b�g�o�C�g���[�h�u���b�N������ꍇ�̓f�[�^�����Z���Ȃ����D��
909
909
  nJoinPosition = (ncJoinFront < ncJoinBehind) ? -1 : 1;
910
910
  }
911
911
  else
@@ -915,12 +915,12 @@ BOOL CQR_Encode::EncodeSourceData(LPCSTR lpsSource, int ncLength, int nVerGroup)
915
915
 
916
916
  if (nJoinPosition != 0)
917
917
  {
918
- // 8ビットバイトモードブロックとの結合
918
+ // �W�r�b�g�o�C�g���[�h�u���b�N�Ƃ̌���
919
919
  if (nJoinPosition == -1)
920
920
  {
921
921
  m_nBlockLength[nBlock - 1] += m_nBlockLength[nBlock];
922
922
 
923
- // 後続をシフト
923
+ // �㑱���V�t�g
924
924
  for (i = nBlock; i < m_ncDataBlock - 1; ++i)
925
925
  {
926
926
  m_byBlockMode[i] = m_byBlockMode[i + 1];
@@ -932,7 +932,7 @@ BOOL CQR_Encode::EncodeSourceData(LPCSTR lpsSource, int ncLength, int nVerGroup)
932
932
  m_byBlockMode[nBlock + 1] = QR_MODE_8BIT;
933
933
  m_nBlockLength[nBlock + 1] += m_nBlockLength[nBlock + 2];
934
934
 
935
- // 後続をシフト
935
+ // �㑱���V�t�g
936
936
  for (i = nBlock + 2; i < m_ncDataBlock - 1; ++i)
937
937
  {
938
938
  m_byBlockMode[i] = m_byBlockMode[i + 1];
@@ -944,14 +944,14 @@ BOOL CQR_Encode::EncodeSourceData(LPCSTR lpsSource, int ncLength, int nVerGroup)
944
944
  }
945
945
  else
946
946
  {
947
- // 英数字と数字の並びを単一の英数字モードブロックに統合
947
+ // �p�����Ɛ����̕��т�P��̉p�������[�h�u���b�N�ɓ���
948
948
 
949
949
  if (nBlock < m_ncDataBlock - 2 && m_byBlockMode[nBlock + 2] == QR_MODE_ALPHABET)
950
950
  {
951
- // 結合しようとするブロックの後ろに続く英数字モードブロックを結合
951
+ // �������悤�Ƃ���u���b�N�̌��ɑ����p�������[�h�u���b�N������
952
952
  m_nBlockLength[nBlock + 1] += m_nBlockLength[nBlock + 2];
953
953
 
954
- // 後続をシフト
954
+ // �㑱���V�t�g
955
955
  for (i = nBlock + 2; i < m_ncDataBlock - 1; ++i)
956
956
  {
957
957
  m_byBlockMode[i] = m_byBlockMode[i + 1];
@@ -964,7 +964,7 @@ BOOL CQR_Encode::EncodeSourceData(LPCSTR lpsSource, int ncLength, int nVerGroup)
964
964
  m_byBlockMode[nBlock] = QR_MODE_ALPHABET;
965
965
  m_nBlockLength[nBlock] += m_nBlockLength[nBlock + 1];
966
966
 
967
- // 後続をシフト
967
+ // �㑱���V�t�g
968
968
  for (i = nBlock + 1; i < m_ncDataBlock - 1; ++i)
969
969
  {
970
970
  m_byBlockMode[i] = m_byBlockMode[i + 1];
@@ -975,10 +975,10 @@ BOOL CQR_Encode::EncodeSourceData(LPCSTR lpsSource, int ncLength, int nVerGroup)
975
975
 
976
976
  if (nBlock >= 1 && m_byBlockMode[nBlock - 1] == QR_MODE_ALPHABET)
977
977
  {
978
- // 結合したブロックの前の英数字モードブロックを結合
978
+ // ���������u���b�N�̑O�̉p�������[�h�u���b�N������
979
979
  m_nBlockLength[nBlock - 1] += m_nBlockLength[nBlock];
980
980
 
981
- // 後続をシフト
981
+ // �㑱���V�t�g
982
982
  for (i = nBlock; i < m_ncDataBlock - 1; ++i)
983
983
  {
984
984
  m_byBlockMode[i] = m_byBlockMode[i + 1];
@@ -989,15 +989,15 @@ BOOL CQR_Encode::EncodeSourceData(LPCSTR lpsSource, int ncLength, int nVerGroup)
989
989
  }
990
990
  }
991
991
 
992
- continue; // 現在位置のブロックを再調査
992
+ continue; // ���݈ʒu�̃u���b�N���Ē���
993
993
  }
994
994
  }
995
995
 
996
- ++nBlock; // 次ブロックを調査
996
+ ++nBlock; // ���u���b�N�𒲍�
997
997
  }
998
998
 
999
999
  /////////////////////////////////////////////////////////////////////////
1000
- // 連続する短いモードブロックを8ビットバイトモードブロック化
1000
+ // �A������Z�����[�h�u���b�N���W�r�b�g�o�C�g���[�h�u���b�N��
1001
1001
 
1002
1002
  nBlock = 0;
1003
1003
 
@@ -1008,11 +1008,11 @@ BOOL CQR_Encode::EncodeSourceData(LPCSTR lpsSource, int ncLength, int nVerGroup)
1008
1008
 
1009
1009
  ncDstBits = GetBitLength(QR_MODE_8BIT, m_nBlockLength[nBlock] + m_nBlockLength[nBlock + 1], nVerGroup);
1010
1010
 
1011
- // 前に8ビットバイトモードブロックがある場合、重複するインジケータ分を減算
1011
+ // �O�ɂW�r�b�g�o�C�g���[�h�u���b�N������ꍇ�A�d������C���W�P�[�^�������Z
1012
1012
  if (nBlock >= 1 && m_byBlockMode[nBlock - 1] == QR_MODE_8BIT)
1013
1013
  ncDstBits -= (4 + nIndicatorLen8Bit[nVerGroup]);
1014
1014
 
1015
- // 後ろに8ビットバイトモードブロックがある場合、重複するインジケータ分を減算
1015
+ // ���ɂW�r�b�g�o�C�g���[�h�u���b�N������ꍇ�A�d������C���W�P�[�^�������Z
1016
1016
  if (nBlock < m_ncDataBlock - 2 && m_byBlockMode[nBlock + 2] == QR_MODE_8BIT)
1017
1017
  ncDstBits -= (4 + nIndicatorLen8Bit[nVerGroup]);
1018
1018
 
@@ -1020,10 +1020,10 @@ BOOL CQR_Encode::EncodeSourceData(LPCSTR lpsSource, int ncLength, int nVerGroup)
1020
1020
  {
1021
1021
  if (nBlock >= 1 && m_byBlockMode[nBlock - 1] == QR_MODE_8BIT)
1022
1022
  {
1023
- // 結合するブロックの前にある8ビットバイトモードブロックを結合
1023
+ // ��������u���b�N�̑O�ɂ���W�r�b�g�o�C�g���[�h�u���b�N������
1024
1024
  m_nBlockLength[nBlock - 1] += m_nBlockLength[nBlock];
1025
1025
 
1026
- // 後続をシフト
1026
+ // �㑱���V�t�g
1027
1027
  for (i = nBlock; i < m_ncDataBlock - 1; ++i)
1028
1028
  {
1029
1029
  m_byBlockMode[i] = m_byBlockMode[i + 1];
@@ -1036,10 +1036,10 @@ BOOL CQR_Encode::EncodeSourceData(LPCSTR lpsSource, int ncLength, int nVerGroup)
1036
1036
 
1037
1037
  if (nBlock < m_ncDataBlock - 2 && m_byBlockMode[nBlock + 2] == QR_MODE_8BIT)
1038
1038
  {
1039
- // 結合するブロックの後ろにある8ビットバイトモードブロックを結合
1039
+ // ��������u���b�N�̌��ɂ���W�r�b�g�o�C�g���[�h�u���b�N������
1040
1040
  m_nBlockLength[nBlock + 1] += m_nBlockLength[nBlock + 2];
1041
1041
 
1042
- // 後続をシフト
1042
+ // �㑱���V�t�g
1043
1043
  for (i = nBlock + 2; i < m_ncDataBlock - 1; ++i)
1044
1044
  {
1045
1045
  m_byBlockMode[i] = m_byBlockMode[i + 1];
@@ -1052,7 +1052,7 @@ BOOL CQR_Encode::EncodeSourceData(LPCSTR lpsSource, int ncLength, int nVerGroup)
1052
1052
  m_byBlockMode[nBlock] = QR_MODE_8BIT;
1053
1053
  m_nBlockLength[nBlock] += m_nBlockLength[nBlock + 1];
1054
1054
 
1055
- // 後続をシフト
1055
+ // �㑱���V�t�g
1056
1056
  for (i = nBlock + 1; i < m_ncDataBlock - 1; ++i)
1057
1057
  {
1058
1058
  m_byBlockMode[i] = m_byBlockMode[i + 1];
@@ -1061,22 +1061,22 @@ BOOL CQR_Encode::EncodeSourceData(LPCSTR lpsSource, int ncLength, int nVerGroup)
1061
1061
 
1062
1062
  --m_ncDataBlock;
1063
1063
 
1064
- // 結合したブロックの前から再調査
1064
+ // ���������u���b�N�̑O����Ē���
1065
1065
  if (nBlock >= 1)
1066
1066
  --nBlock;
1067
1067
 
1068
1068
  continue;
1069
1069
  }
1070
1070
 
1071
- ++nBlock; // 次ブロックを調査
1071
+ ++nBlock; // ���u���b�N�𒲍�
1072
1072
  }
1073
1073
 
1074
1074
  /////////////////////////////////////////////////////////////////////////
1075
- // ビット配列化
1076
- int ncComplete = 0; // 処理済データカウンタ
1075
+ // �r�b�g�z��
1076
+ int ncComplete = 0; // �����σf�[�^�J�E���^
1077
1077
  WORD wBinCode;
1078
1078
 
1079
- m_ncDataCodeWordBit = 0; // ビット単位処理カウンタ
1079
+ m_ncDataCodeWordBit = 0; // �r�b�g�P�ʏ����J�E���^
1080
1080
 
1081
1081
  ZeroMemory(m_byDataCodeWord, MAX_DATACODEWORD);
1082
1082
 
@@ -1085,15 +1085,15 @@ BOOL CQR_Encode::EncodeSourceData(LPCSTR lpsSource, int ncLength, int nVerGroup)
1085
1085
  if (m_byBlockMode[i] == QR_MODE_NUMERAL)
1086
1086
  {
1087
1087
  /////////////////////////////////////////////////////////////////
1088
- // 数字モード
1088
+ // �������[�h
1089
1089
 
1090
- // インジケータ(0001b)
1090
+ // �C���W�P�[�^(0001b)
1091
1091
  m_ncDataCodeWordBit = SetBitStream(m_ncDataCodeWordBit, 1, 4);
1092
1092
 
1093
- // 文字数セット
1093
+ // �������Z�b�g
1094
1094
  m_ncDataCodeWordBit = SetBitStream(m_ncDataCodeWordBit, (WORD)m_nBlockLength[i], nIndicatorLenNumeral[nVerGroup]);
1095
1095
 
1096
- // ビット列保存
1096
+ // �r�b�g��ۑ�
1097
1097
  for (j = 0; j < m_nBlockLength[i]; j += 3)
1098
1098
  {
1099
1099
  if (j < m_nBlockLength[i] - 2)
@@ -1106,7 +1106,7 @@ BOOL CQR_Encode::EncodeSourceData(LPCSTR lpsSource, int ncLength, int nVerGroup)
1106
1106
  }
1107
1107
  else if (j == m_nBlockLength[i] - 2)
1108
1108
  {
1109
- // 端数2バイト
1109
+ // �[���Q�o�C�g
1110
1110
  wBinCode = (WORD)(((lpsSource[ncComplete + j] - '0') * 10) +
1111
1111
  (lpsSource[ncComplete + j + 1] - '0'));
1112
1112
 
@@ -1114,7 +1114,7 @@ BOOL CQR_Encode::EncodeSourceData(LPCSTR lpsSource, int ncLength, int nVerGroup)
1114
1114
  }
1115
1115
  else if (j == m_nBlockLength[i] - 1)
1116
1116
  {
1117
- // 端数1バイト
1117
+ // �[���P�o�C�g
1118
1118
  wBinCode = (WORD)(lpsSource[ncComplete + j] - '0');
1119
1119
 
1120
1120
  m_ncDataCodeWordBit = SetBitStream(m_ncDataCodeWordBit, wBinCode, 4);
@@ -1127,15 +1127,15 @@ BOOL CQR_Encode::EncodeSourceData(LPCSTR lpsSource, int ncLength, int nVerGroup)
1127
1127
  else if (m_byBlockMode[i] == QR_MODE_ALPHABET)
1128
1128
  {
1129
1129
  /////////////////////////////////////////////////////////////////
1130
- // 英数字モード
1130
+ // �p�������[�h
1131
1131
 
1132
- // モードインジケータ(0010b)
1132
+ // ���[�h�C���W�P�[�^(0010b)
1133
1133
  m_ncDataCodeWordBit = SetBitStream(m_ncDataCodeWordBit, 2, 4);
1134
1134
 
1135
- // 文字数セット
1135
+ // �������Z�b�g
1136
1136
  m_ncDataCodeWordBit = SetBitStream(m_ncDataCodeWordBit, (WORD)m_nBlockLength[i], nIndicatorLenAlphabet[nVerGroup]);
1137
1137
 
1138
- // ビット列保存
1138
+ // �r�b�g��ۑ�
1139
1139
  for (j = 0; j < m_nBlockLength[i]; j += 2)
1140
1140
  {
1141
1141
  if (j < m_nBlockLength[i] - 1)
@@ -1147,7 +1147,7 @@ BOOL CQR_Encode::EncodeSourceData(LPCSTR lpsSource, int ncLength, int nVerGroup)
1147
1147
  }
1148
1148
  else
1149
1149
  {
1150
- // 端数1バイト
1150
+ // �[���P�o�C�g
1151
1151
  wBinCode = (WORD)AlphabetToBinaly(lpsSource[ncComplete + j]);
1152
1152
 
1153
1153
  m_ncDataCodeWordBit = SetBitStream(m_ncDataCodeWordBit, wBinCode, 6);
@@ -1160,15 +1160,15 @@ BOOL CQR_Encode::EncodeSourceData(LPCSTR lpsSource, int ncLength, int nVerGroup)
1160
1160
  else if (m_byBlockMode[i] == QR_MODE_8BIT)
1161
1161
  {
1162
1162
  /////////////////////////////////////////////////////////////////
1163
- // 8ビットバイトモード
1163
+ // �W�r�b�g�o�C�g���[�h
1164
1164
 
1165
- // モードインジケータ(0100b)
1165
+ // ���[�h�C���W�P�[�^(0100b)
1166
1166
  m_ncDataCodeWordBit = SetBitStream(m_ncDataCodeWordBit, 4, 4);
1167
1167
 
1168
- // 文字数セット
1168
+ // �������Z�b�g
1169
1169
  m_ncDataCodeWordBit = SetBitStream(m_ncDataCodeWordBit, (WORD)m_nBlockLength[i], nIndicatorLen8Bit[nVerGroup]);
1170
1170
 
1171
- // ビット列保存
1171
+ // �r�b�g��ۑ�
1172
1172
  for (j = 0; j < m_nBlockLength[i]; ++j)
1173
1173
  {
1174
1174
  m_ncDataCodeWordBit = SetBitStream(m_ncDataCodeWordBit, (WORD)lpsSource[ncComplete + j], 8);
@@ -1179,15 +1179,15 @@ BOOL CQR_Encode::EncodeSourceData(LPCSTR lpsSource, int ncLength, int nVerGroup)
1179
1179
  else // m_byBlockMode[i] == QR_MODE_KANJI
1180
1180
  {
1181
1181
  /////////////////////////////////////////////////////////////////
1182
- // 漢字モード
1182
+ // �������[�h
1183
1183
 
1184
- // モードインジケータ(1000b)
1184
+ // ���[�h�C���W�P�[�^(1000b)
1185
1185
  m_ncDataCodeWordBit = SetBitStream(m_ncDataCodeWordBit, 8, 4);
1186
1186
 
1187
- // 文字数セット
1187
+ // �������Z�b�g
1188
1188
  m_ncDataCodeWordBit = SetBitStream(m_ncDataCodeWordBit, (WORD)(m_nBlockLength[i] / 2), nIndicatorLenKanji[nVerGroup]);
1189
1189
 
1190
- // 漢字モードでビット列保存
1190
+ // �������[�h�Ńr�b�g��ۑ�
1191
1191
  for (j = 0; j < m_nBlockLength[i] / 2; ++j)
1192
1192
  {
1193
1193
  WORD wBinCode = KanjiToBinaly((WORD)(((BYTE)lpsSource[ncComplete + (j * 2)] << 8) + (BYTE)lpsSource[ncComplete + (j * 2) + 1]));
@@ -1205,10 +1205,10 @@ BOOL CQR_Encode::EncodeSourceData(LPCSTR lpsSource, int ncLength, int nVerGroup)
1205
1205
 
1206
1206
  /////////////////////////////////////////////////////////////////////////////
1207
1207
  // CQR_Encode::GetBitLength
1208
- // 途:ビット長取得
1209
- // 数:データモード種別、データ長、バージョン(型番)グループ
1210
- // 戻り値:データビット長
1211
- // 考:漢字モードでのデータ長引数は文字数ではなくバイト数
1208
+ // �p �r�F�r�b�g���擾
1209
+ // �� ���F�f�[�^���[�h��ʁA�f�[�^���A�o�[�W����(�^��)�O���[�v
1210
+ // �߂�l�F�f�[�^�r�b�g��
1211
+ // �� �l�F�������[�h�ł̃f�[�^�������͕������ł͂Ȃ��o�C�g��
1212
1212
 
1213
1213
  int CQR_Encode::GetBitLength(BYTE nMode, int ncData, int nVerGroup)
1214
1214
  {
@@ -1251,10 +1251,10 @@ int CQR_Encode::GetBitLength(BYTE nMode, int ncData, int nVerGroup)
1251
1251
 
1252
1252
  /////////////////////////////////////////////////////////////////////////////
1253
1253
  // CQR_Encode::SetBitStream
1254
- // 途:ビットセット
1255
- // 数:挿入位置、ビット配列データ、データビット長(最大16)
1256
- // 戻り値:次回挿入位置(バッファオーバー時=-1)
1257
- // 考:m_byDataCodeWord に結果をセット(要ゼロ初期化)
1254
+ // �p �r�F�r�b�g�Z�b�g
1255
+ // �� ���F�}���ʒu�A�r�b�g�z��f�[�^�A�f�[�^�r�b�g��(�ő�16)
1256
+ // �߂�l�F����}���ʒu(�o�b�t�@�I�[�o�[��=-1)
1257
+ // �� �l�Fm_byDataCodeWord �Ɍ��ʂ��Z�b�g(�v�[��������)
1258
1258
 
1259
1259
  int CQR_Encode::SetBitStream(int nIndex, WORD wData, int ncData)
1260
1260
  {
@@ -1277,9 +1277,9 @@ int CQR_Encode::SetBitStream(int nIndex, WORD wData, int ncData)
1277
1277
 
1278
1278
  /////////////////////////////////////////////////////////////////////////////
1279
1279
  // CQR_Encode::IsNumeralData
1280
- // 途:数字モード該当チェック
1281
- // 数:調査文字
1282
- // 戻り値:該当時=TRUE
1280
+ // �p �r�F�������[�h�Y���`�F�b�N
1281
+ // �� ���F��������
1282
+ // �߂�l�F�Y����=TRUE
1283
1283
 
1284
1284
  BOOL CQR_Encode::IsNumeralData(unsigned char c)
1285
1285
  {
@@ -1292,9 +1292,9 @@ BOOL CQR_Encode::IsNumeralData(unsigned char c)
1292
1292
 
1293
1293
  /////////////////////////////////////////////////////////////////////////////
1294
1294
  // CQR_Encode::IsAlphabetData
1295
- // 途:英数字モード該当チェック
1296
- // 数:調査文字
1297
- // 戻り値:該当時=TRUE
1295
+ // �p �r�F�p�������[�h�Y���`�F�b�N
1296
+ // �� ���F��������
1297
+ // �߂�l�F�Y����=TRUE
1298
1298
 
1299
1299
  BOOL CQR_Encode::IsAlphabetData(unsigned char c)
1300
1300
  {
@@ -1313,10 +1313,10 @@ BOOL CQR_Encode::IsAlphabetData(unsigned char c)
1313
1313
 
1314
1314
  /////////////////////////////////////////////////////////////////////////////
1315
1315
  // CQR_Encode::IsKanjiData
1316
- // 途:漢字モード該当チェック
1317
- // 数:調査文字(16ビット文字)
1318
- // 戻り値:該当時=TRUE
1319
- // 考:EBBFh 以降の S-JIS は対象外
1316
+ // �p �r�F�������[�h�Y���`�F�b�N
1317
+ // �� ���F���������i16�r�b�g�����j
1318
+ // �߂�l�F�Y����=TRUE
1319
+ // �� �l�FEBBFh �ȍ~�� S-JIS �͑ΏۊO
1320
1320
 
1321
1321
  BOOL CQR_Encode::IsKanjiData(unsigned char c1, unsigned char c2)
1322
1322
  {
@@ -1334,9 +1334,9 @@ BOOL CQR_Encode::IsKanjiData(unsigned char c1, unsigned char c2)
1334
1334
 
1335
1335
  /////////////////////////////////////////////////////////////////////////////
1336
1336
  // CQR_Encode::AlphabetToBinaly
1337
- // 途:英数字モード文字のバイナリ化
1338
- // 数:対象文字
1339
- // 戻り値:バイナリ値
1337
+ // �p �r�F�p�������[�h�����̃o�C�i����
1338
+ // �� ���F�Ώە���
1339
+ // �߂�l�F�o�C�i���l
1340
1340
 
1341
1341
  BYTE CQR_Encode::AlphabetToBinaly(unsigned char c)
1342
1342
  {
@@ -1366,9 +1366,9 @@ BYTE CQR_Encode::AlphabetToBinaly(unsigned char c)
1366
1366
 
1367
1367
  /////////////////////////////////////////////////////////////////////////////
1368
1368
  // CQR_Encode::KanjiToBinaly
1369
- // 途:漢字モード文字のバイナリ化
1370
- // 数:対象文字
1371
- // 戻り値:バイナリ値
1369
+ // �p �r�F�������[�h�����̃o�C�i����
1370
+ // �� ���F�Ώە���
1371
+ // �߂�l�F�o�C�i���l
1372
1372
 
1373
1373
  WORD CQR_Encode::KanjiToBinaly(WORD wc)
1374
1374
  {
@@ -1383,9 +1383,9 @@ WORD CQR_Encode::KanjiToBinaly(WORD wc)
1383
1383
 
1384
1384
  /////////////////////////////////////////////////////////////////////////////
1385
1385
  // CQR_Encode::GetRSCodeWord
1386
- // 途:RS誤り訂正コードワード取得
1387
- // 数:データコードワードアドレス、データコードワード長、RSコードワード長
1388
- // 考:総コードワード分のエリアを確保してから呼び出し
1386
+ // �p �r�F�q�r�������R�[�h���[�h�擾
1387
+ // �� ���F�f�[�^�R�[�h���[�h�A�h���X�A�f�[�^�R�[�h���[�h���A�q�r�R�[�h���[�h��
1388
+ // �� �l�F���R�[�h���[�h���̃G���A���m�ۂ��Ă���Ăяo��
1389
1389
 
1390
1390
  void CQR_Encode::GetRSCodeWord(LPBYTE lpbyRSWork, int ncDataCodeWord, int ncRSCodeWord)
1391
1391
  {
@@ -1395,24 +1395,24 @@ void CQR_Encode::GetRSCodeWord(LPBYTE lpbyRSWork, int ncDataCodeWord, int ncRSCo
1395
1395
  {
1396
1396
  if (lpbyRSWork[0] != 0)
1397
1397
  {
1398
- BYTE nExpFirst = byIntToExp[lpbyRSWork[0]]; // 初項係数より乗数算出
1398
+ BYTE nExpFirst = byIntToExp[lpbyRSWork[0]]; // �����W�����搔�Z�o
1399
1399
 
1400
1400
  for (j = 0; j < ncRSCodeWord; ++j)
1401
1401
  {
1402
- // 各項乗数に初項乗数を加算(% 255 α^255 = 1
1402
+ // �e���搔�ɏ����搔�����Z�i% 255 �� ��^255 = 1�j
1403
1403
  BYTE nExpElement = (BYTE)(((int)(byRSExp[ncRSCodeWord][j] + nExpFirst)) % 255);
1404
1404
 
1405
- // 排他論理和による剰余算出
1405
+ // �r���_���a�ɂ���]�Z�o
1406
1406
  lpbyRSWork[j] = (BYTE)(lpbyRSWork[j + 1] ^ byExpToInt[nExpElement]);
1407
1407
  }
1408
1408
 
1409
- // 残り桁をシフト
1409
+ // �c�茅���V�t�g
1410
1410
  for (j = ncRSCodeWord; j < ncDataCodeWord + ncRSCodeWord - 1; ++j)
1411
1411
  lpbyRSWork[j] = lpbyRSWork[j + 1];
1412
1412
  }
1413
1413
  else
1414
1414
  {
1415
- // 残り桁をシフト
1415
+ // �c�茅���V�t�g
1416
1416
  for (j = 0; j < ncDataCodeWord + ncRSCodeWord - 1; ++j)
1417
1417
  lpbyRSWork[j] = lpbyRSWork[j + 1];
1418
1418
  }
@@ -1422,8 +1422,8 @@ void CQR_Encode::GetRSCodeWord(LPBYTE lpbyRSWork, int ncDataCodeWord, int ncRSCo
1422
1422
 
1423
1423
  /////////////////////////////////////////////////////////////////////////////
1424
1424
  // CQR_Encode::FormatModule
1425
- // 途:モジュールへのデータ配置
1426
- // 戻り値:一辺のモジュール数
1425
+ // �p �r�F���W���[���ւ̃f�[�^�z�u
1426
+ // �߂�l�F��ӂ̃��W���[����
1427
1427
 
1428
1428
  void CQR_Encode::FormatModule()
1429
1429
  {
@@ -1431,26 +1431,26 @@ void CQR_Encode::FormatModule()
1431
1431
 
1432
1432
  ZeroMemory(m_byModuleData, sizeof(m_byModuleData));
1433
1433
 
1434
- // 機能モジュール配置
1434
+ // �@�\���W���[���z�u
1435
1435
  SetFunctionModule();
1436
1436
 
1437
- // データパターン配置
1437
+ // �f�[�^�p�^�[���z�u
1438
1438
  SetCodeWordPattern();
1439
1439
 
1440
1440
  if (m_nMaskingNo == -1)
1441
1441
  {
1442
- // 最適マスキングパターン選択
1442
+ // �œK�}�X�L���O�p�^�[���I��
1443
1443
  m_nMaskingNo = 0;
1444
1444
 
1445
- SetMaskingPattern(m_nMaskingNo); // マスキング
1446
- SetFormatInfoPattern(m_nMaskingNo); // フォーマット情報パターン配置
1445
+ SetMaskingPattern(m_nMaskingNo); // �}�X�L���O
1446
+ SetFormatInfoPattern(m_nMaskingNo); // �t�H�[�}�b�g���p�^�[���z�u
1447
1447
 
1448
1448
  int nMinPenalty = CountPenalty();
1449
1449
 
1450
1450
  for (i = 1; i <= 7; ++i)
1451
1451
  {
1452
- SetMaskingPattern(i); // マスキング
1453
- SetFormatInfoPattern(i); // フォーマット情報パターン配置
1452
+ SetMaskingPattern(i); // �}�X�L���O
1453
+ SetFormatInfoPattern(i); // �t�H�[�}�b�g���p�^�[���z�u
1454
1454
 
1455
1455
  int nPenalty = CountPenalty();
1456
1456
 
@@ -1462,10 +1462,10 @@ void CQR_Encode::FormatModule()
1462
1462
  }
1463
1463
  }
1464
1464
 
1465
- SetMaskingPattern(m_nMaskingNo); // マスキング
1466
- SetFormatInfoPattern(m_nMaskingNo); // フォーマット情報パターン配置
1465
+ SetMaskingPattern(m_nMaskingNo); // �}�X�L���O
1466
+ SetFormatInfoPattern(m_nMaskingNo); // �t�H�[�}�b�g���p�^�[���z�u
1467
1467
 
1468
- // モジュールパターンをブール値に変換
1468
+ // ���W���[���p�^�[�����u�[���l�ɕϊ�
1469
1469
  for (i = 0; i < m_nSymbleSize; ++i)
1470
1470
  {
1471
1471
  for (j = 0; j < m_nSymbleSize; ++j)
@@ -1478,19 +1478,19 @@ void CQR_Encode::FormatModule()
1478
1478
 
1479
1479
  /////////////////////////////////////////////////////////////////////////////
1480
1480
  // CQR_Encode::SetFunctionModule
1481
- // 途:機能モジュール配置
1482
- // 考:フォーマット情報は機能モジュール登録のみ(実データは空白)
1481
+ // �p �r�F�@�\���W���[���z�u
1482
+ // �� �l�F�t�H�[�}�b�g���͋@�\���W���[���o�^�̂�(���f�[�^�͋�)
1483
1483
 
1484
1484
  void CQR_Encode::SetFunctionModule()
1485
1485
  {
1486
1486
  int i, j;
1487
1487
 
1488
- // 位置検出パターン
1488
+ // �ʒu���o�p�^�[��
1489
1489
  SetFinderPattern(0, 0);
1490
1490
  SetFinderPattern(m_nSymbleSize - 7, 0);
1491
1491
  SetFinderPattern(0, m_nSymbleSize - 7);
1492
1492
 
1493
- // 位置検出パターンセパレータ
1493
+ // �ʒu���o�p�^�[���Z�p���[�^
1494
1494
  for (i = 0; i < 8; ++i)
1495
1495
  {
1496
1496
  m_byModuleData[i][7] = m_byModuleData[7][i] = '\x20';
@@ -1498,7 +1498,7 @@ void CQR_Encode::SetFunctionModule()
1498
1498
  m_byModuleData[i][m_nSymbleSize - 8] = m_byModuleData[7][m_nSymbleSize - 8 + i] = '\x20';
1499
1499
  }
1500
1500
 
1501
- // フォーマット情報記述位置を機能モジュール部として登録
1501
+ // �t�H�[�}�b�g���L�q�ʒu���@�\���W���[�����Ƃ��ēo�^
1502
1502
  for (i = 0; i < 9; ++i)
1503
1503
  {
1504
1504
  m_byModuleData[i][8] = m_byModuleData[8][i] = '\x20';
@@ -1509,10 +1509,10 @@ void CQR_Encode::SetFunctionModule()
1509
1509
  m_byModuleData[m_nSymbleSize - 8 + i][8] = m_byModuleData[8][m_nSymbleSize - 8 + i] = '\x20';
1510
1510
  }
1511
1511
 
1512
- // バージョン情報パターン
1512
+ // �o�[�W�������p�^�[��
1513
1513
  SetVersionPattern();
1514
1514
 
1515
- // 位置合わせパターン
1515
+ // �ʒu���킹�p�^�[��
1516
1516
  for (i = 0; i < QR_VersonInfo[m_nVersion].ncAlignPoint; ++i)
1517
1517
  {
1518
1518
  SetAlignmentPattern(QR_VersonInfo[m_nVersion].nAlignPoint[i], 6);
@@ -1524,7 +1524,7 @@ void CQR_Encode::SetFunctionModule()
1524
1524
  }
1525
1525
  }
1526
1526
 
1527
- // タイミングパターン
1527
+ // �^�C�~���O�p�^�[��
1528
1528
  for (i = 8; i <= m_nSymbleSize - 9; ++i)
1529
1529
  {
1530
1530
  m_byModuleData[i][6] = (i % 2) == 0 ? '\x30' : '\x20';
@@ -1535,8 +1535,8 @@ void CQR_Encode::SetFunctionModule()
1535
1535
 
1536
1536
  /////////////////////////////////////////////////////////////////////////////
1537
1537
  // CQR_Encode::SetFinderPattern
1538
- // 途:位置検出パターン配置
1539
- // 数:配置左上座標
1538
+ // �p �r�F�ʒu���o�p�^�[���z�u
1539
+ // �� ���F�z�u������W
1540
1540
 
1541
1541
  void CQR_Encode::SetFinderPattern(int x, int y)
1542
1542
  {
@@ -1561,8 +1561,8 @@ void CQR_Encode::SetFinderPattern(int x, int y)
1561
1561
 
1562
1562
  /////////////////////////////////////////////////////////////////////////////
1563
1563
  // CQR_Encode::SetAlignmentPattern
1564
- // 途:位置合わせパターン配置
1565
- // 数:配置中央座標
1564
+ // �p �r�F�ʒu���킹�p�^�[���z�u
1565
+ // �� ���F�z�u�������W
1566
1566
 
1567
1567
  void CQR_Encode::SetAlignmentPattern(int x, int y)
1568
1568
  {
@@ -1574,9 +1574,9 @@ void CQR_Encode::SetAlignmentPattern(int x, int y)
1574
1574
  int i, j;
1575
1575
 
1576
1576
  if (m_byModuleData[x][y] & 0x20)
1577
- return; // 機能モジュールと重複するため除外
1577
+ return; // �@�\���W���[���Əd�����邽�ߏ��O
1578
1578
 
1579
- x -= 2; y -= 2; // 左上隅座標に変換
1579
+ x -= 2; y -= 2; // ��������W�ɕϊ�
1580
1580
 
1581
1581
  for (i = 0; i < 5; ++i)
1582
1582
  {
@@ -1590,8 +1590,8 @@ void CQR_Encode::SetAlignmentPattern(int x, int y)
1590
1590
 
1591
1591
  /////////////////////////////////////////////////////////////////////////////
1592
1592
  // CQR_Encode::SetVersionPattern
1593
- // 途:バージョン(型番)情報パターン配置
1594
- // 考:拡張BCH(18,6)符号を誤り訂正として使用
1593
+ // �p �r�F�o�[�W����(�^��)���p�^�[���z�u
1594
+ // �� �l�F�g���a�b�g(18,6)�������������Ƃ��Ďg�p
1595
1595
 
1596
1596
  void CQR_Encode::SetVersionPattern()
1597
1597
  {
@@ -1602,7 +1602,7 @@ void CQR_Encode::SetVersionPattern()
1602
1602
 
1603
1603
  int nVerData = m_nVersion << 12;
1604
1604
 
1605
- // 剰余ビット算出
1605
+ // ��]�r�b�g�Z�o
1606
1606
  for (i = 0; i < 6; ++i)
1607
1607
  {
1608
1608
  if (nVerData & (1 << (17 - i)))
@@ -1626,15 +1626,15 @@ void CQR_Encode::SetVersionPattern()
1626
1626
 
1627
1627
  /////////////////////////////////////////////////////////////////////////////
1628
1628
  // CQR_Encode::SetCodeWordPattern
1629
- // 途:データパターン配置
1629
+ // �p �r�F�f�[�^�p�^�[���z�u
1630
1630
 
1631
1631
  void CQR_Encode::SetCodeWordPattern()
1632
1632
  {
1633
1633
  int x = m_nSymbleSize;
1634
1634
  int y = m_nSymbleSize - 1;
1635
1635
 
1636
- int nCoef_x = 1; // x軸配置向き
1637
- int nCoef_y = 1; // y軸配置向き
1636
+ int nCoef_x = 1; // �����z�u����
1637
+ int nCoef_y = 1; // �����z�u����
1638
1638
 
1639
1639
  int i, j;
1640
1640
 
@@ -1658,12 +1658,12 @@ void CQR_Encode::SetCodeWordPattern()
1658
1658
 
1659
1659
  x -= 2;
1660
1660
 
1661
- if (x == 6) // タイミングパターン
1661
+ if (x == 6) // �^�C�~���O�p�^�[��
1662
1662
  --x;
1663
1663
  }
1664
1664
  }
1665
1665
  }
1666
- while (m_byModuleData[x][y] & 0x20); // 機能モジュールを除外
1666
+ while (m_byModuleData[x][y] & 0x20); // �@�\���W���[�������O
1667
1667
 
1668
1668
  m_byModuleData[x][y] = (m_byAllCodeWord[i] & (1 << (7 - j))) ? '\x02' : '\x00';
1669
1669
  }
@@ -1673,8 +1673,8 @@ void CQR_Encode::SetCodeWordPattern()
1673
1673
 
1674
1674
  /////////////////////////////////////////////////////////////////////////////
1675
1675
  // CQR_Encode::SetMaskingPattern
1676
- // 途:マスキングパターン配置
1677
- // 数:マスキングパターン番号
1676
+ // �p �r�F�}�X�L���O�p�^�[���z�u
1677
+ // �� ���F�}�X�L���O�p�^�[���ԍ�
1678
1678
 
1679
1679
  void CQR_Encode::SetMaskingPattern(int nPatternNo)
1680
1680
  {
@@ -1684,7 +1684,7 @@ void CQR_Encode::SetMaskingPattern(int nPatternNo)
1684
1684
  {
1685
1685
  for (j = 0; j < m_nSymbleSize; ++j)
1686
1686
  {
1687
- if (! (m_byModuleData[j][i] & 0x20)) // 機能モジュールを除外
1687
+ if (! (m_byModuleData[j][i] & 0x20)) // �@�\���W���[�������O
1688
1688
  {
1689
1689
  BOOL bMask;
1690
1690
 
@@ -1732,8 +1732,8 @@ void CQR_Encode::SetMaskingPattern(int nPatternNo)
1732
1732
 
1733
1733
  /////////////////////////////////////////////////////////////////////////////
1734
1734
  // CQR_Encode::SetFormatInfoPattern
1735
- // 途:フォーマット情報配置
1736
- // 数:マスキングパターン番号
1735
+ // �p �r�F�t�H�[�}�b�g���z�u
1736
+ // �� ���F�}�X�L���O�p�^�[���ԍ�
1737
1737
 
1738
1738
  void CQR_Encode::SetFormatInfoPattern(int nPatternNo)
1739
1739
  {
@@ -1763,7 +1763,7 @@ void CQR_Encode::SetFormatInfoPattern(int nPatternNo)
1763
1763
 
1764
1764
  int nFormatData = nFormatInfo << 10;
1765
1765
 
1766
- // 剰余ビット算出
1766
+ // ��]�r�b�g�Z�o
1767
1767
  for (i = 0; i < 5; ++i)
1768
1768
  {
1769
1769
  if (nFormatData & (1 << (14 - i)))
@@ -1774,10 +1774,10 @@ void CQR_Encode::SetFormatInfoPattern(int nPatternNo)
1774
1774
 
1775
1775
  nFormatData += nFormatInfo << 10;
1776
1776
 
1777
- // マスキング
1777
+ // �}�X�L���O
1778
1778
  nFormatData ^= 0x5412; // 101010000010010b
1779
1779
 
1780
- // 左上位置検出パターン周り配置
1780
+ // ����ʒu���o�p�^�[������z�u
1781
1781
  for (i = 0; i <= 5; ++i)
1782
1782
  m_byModuleData[8][i] = (nFormatData & (1 << i)) ? '\x30' : '\x20';
1783
1783
 
@@ -1788,12 +1788,12 @@ void CQR_Encode::SetFormatInfoPattern(int nPatternNo)
1788
1788
  for (i = 9; i <= 14; ++i)
1789
1789
  m_byModuleData[14 - i][8] = (nFormatData & (1 << i)) ? '\x30' : '\x20';
1790
1790
 
1791
- // 右上位置検出パターン下配置
1791
+ // �E��ʒu���o�p�^�[�����z�u
1792
1792
  for (i = 0; i <= 7; ++i)
1793
1793
  m_byModuleData[m_nSymbleSize - 1 - i][8] = (nFormatData & (1 << i)) ? '\x30' : '\x20';
1794
1794
 
1795
- // 左下位置検出パターン右配置
1796
- m_byModuleData[8][m_nSymbleSize - 8] = '\x30'; // 固定暗モジュール
1795
+ // �����ʒu���o�p�^�[���E�z�u
1796
+ m_byModuleData[8][m_nSymbleSize - 8] = '\x30'; // �Œ�Ã��W���[��
1797
1797
 
1798
1798
  for (i = 8; i <= 14; ++i)
1799
1799
  m_byModuleData[8][m_nSymbleSize - 15 + i] = (nFormatData & (1 << i)) ? '\x30' : '\x20';
@@ -1802,14 +1802,14 @@ void CQR_Encode::SetFormatInfoPattern(int nPatternNo)
1802
1802
 
1803
1803
  /////////////////////////////////////////////////////////////////////////////
1804
1804
  // CQR_Encode::CountPenalty
1805
- // 途:マスク後ペナルティスコア算出
1805
+ // �p �r�F�}�X�N��y�i���e�B�X�R�A�Z�o
1806
1806
 
1807
1807
  int CQR_Encode::CountPenalty()
1808
1808
  {
1809
1809
  int nPenalty = 0;
1810
1810
  int i, j, k;
1811
1811
 
1812
- // 同色の列の隣接モジュール
1812
+ // ���F�̗�̗אڃ��W���[��
1813
1813
  for (i = 0; i < m_nSymbleSize; ++i)
1814
1814
  {
1815
1815
  for (j = 0; j < m_nSymbleSize - 4; ++j)
@@ -1833,7 +1833,7 @@ int CQR_Encode::CountPenalty()
1833
1833
  }
1834
1834
  }
1835
1835
 
1836
- // 同色の行の隣接モジュール
1836
+ // ���F�̍s�̗אڃ��W���[��
1837
1837
  for (i = 0; i < m_nSymbleSize; ++i)
1838
1838
  {
1839
1839
  for (j = 0; j < m_nSymbleSize - 4; ++j)
@@ -1857,7 +1857,7 @@ int CQR_Encode::CountPenalty()
1857
1857
  }
1858
1858
  }
1859
1859
 
1860
- // 同色のモジュールブロック(2×2)
1860
+ // ���F�̃��W���[���u���b�N�i�Q�~�Q�j
1861
1861
  for (i = 0; i < m_nSymbleSize - 1; ++i)
1862
1862
  {
1863
1863
  for (j = 0; j < m_nSymbleSize - 1; ++j)
@@ -1871,22 +1871,22 @@ int CQR_Encode::CountPenalty()
1871
1871
  }
1872
1872
  }
1873
1873
 
1874
- // 同一列における 1:1:3:1:1 比率(暗:明:暗:明:暗)のパターン
1874
+ // �����ɂ����� 1:1:3:1:1 �䗦�i��:��:��:��:�Áj�̃p�^�[��
1875
1875
  for (i = 0; i < m_nSymbleSize; ++i)
1876
1876
  {
1877
1877
  for (j = 0; j < m_nSymbleSize - 6; ++j)
1878
1878
  {
1879
- if (((j == 0) || (! (m_byModuleData[i][j - 1] & 0x11))) && // または シンボル外
1880
- ( m_byModuleData[i][j] & 0x11) && // - 1
1881
- (! (m_byModuleData[i][j + 1] & 0x11)) && // - 1
1882
- ( m_byModuleData[i][j + 2] & 0x11) && //
1883
- ( m_byModuleData[i][j + 3] & 0x11) && // 3
1884
- ( m_byModuleData[i][j + 4] & 0x11) && //
1885
- (! (m_byModuleData[i][j + 5] & 0x11)) && // - 1
1886
- ( m_byModuleData[i][j + 6] & 0x11) && // - 1
1887
- ((j == m_nSymbleSize - 7) || (! (m_byModuleData[i][j + 7] & 0x11)))) // または シンボル外
1879
+ if (((j == 0) || (! (m_byModuleData[i][j - 1] & 0x11))) && // �� �܂��� �V���{���O
1880
+ ( m_byModuleData[i][j] & 0x11) && // �� - 1
1881
+ (! (m_byModuleData[i][j + 1] & 0x11)) && // �� - 1
1882
+ ( m_byModuleData[i][j + 2] & 0x11) && // �� ��
1883
+ ( m_byModuleData[i][j + 3] & 0x11) && // �� ��3
1884
+ ( m_byModuleData[i][j + 4] & 0x11) && // �� ��
1885
+ (! (m_byModuleData[i][j + 5] & 0x11)) && // �� - 1
1886
+ ( m_byModuleData[i][j + 6] & 0x11) && // �� - 1
1887
+ ((j == m_nSymbleSize - 7) || (! (m_byModuleData[i][j + 7] & 0x11)))) // �� �܂��� �V���{���O
1888
1888
  {
1889
- // 前または後に4以上の明パターン
1889
+ // �O�܂��͌��4�ȏ�̖��p�^�[��
1890
1890
  if (((j < 2 || ! (m_byModuleData[i][j - 2] & 0x11)) &&
1891
1891
  (j < 3 || ! (m_byModuleData[i][j - 3] & 0x11)) &&
1892
1892
  (j < 4 || ! (m_byModuleData[i][j - 4] & 0x11))) ||
@@ -1900,22 +1900,22 @@ int CQR_Encode::CountPenalty()
1900
1900
  }
1901
1901
  }
1902
1902
 
1903
- // 同一行における 1:1:3:1:1 比率(暗:明:暗:明:暗)のパターン
1903
+ // ����s�ɂ����� 1:1:3:1:1 �䗦�i��:��:��:��:�Áj�̃p�^�[��
1904
1904
  for (i = 0; i < m_nSymbleSize; ++i)
1905
1905
  {
1906
1906
  for (j = 0; j < m_nSymbleSize - 6; ++j)
1907
1907
  {
1908
- if (((j == 0) || (! (m_byModuleData[j - 1][i] & 0x11))) && // または シンボル外
1909
- ( m_byModuleData[j] [i] & 0x11) && // - 1
1910
- (! (m_byModuleData[j + 1][i] & 0x11)) && // - 1
1911
- ( m_byModuleData[j + 2][i] & 0x11) && //
1912
- ( m_byModuleData[j + 3][i] & 0x11) && // 3
1913
- ( m_byModuleData[j + 4][i] & 0x11) && //
1914
- (! (m_byModuleData[j + 5][i] & 0x11)) && // - 1
1915
- ( m_byModuleData[j + 6][i] & 0x11) && // - 1
1916
- ((j == m_nSymbleSize - 7) || (! (m_byModuleData[j + 7][i] & 0x11)))) // または シンボル外
1908
+ if (((j == 0) || (! (m_byModuleData[j - 1][i] & 0x11))) && // �� �܂��� �V���{���O
1909
+ ( m_byModuleData[j] [i] & 0x11) && // �� - 1
1910
+ (! (m_byModuleData[j + 1][i] & 0x11)) && // �� - 1
1911
+ ( m_byModuleData[j + 2][i] & 0x11) && // �� ��
1912
+ ( m_byModuleData[j + 3][i] & 0x11) && // �� ��3
1913
+ ( m_byModuleData[j + 4][i] & 0x11) && // �� ��
1914
+ (! (m_byModuleData[j + 5][i] & 0x11)) && // �� - 1
1915
+ ( m_byModuleData[j + 6][i] & 0x11) && // �� - 1
1916
+ ((j == m_nSymbleSize - 7) || (! (m_byModuleData[j + 7][i] & 0x11)))) // �� �܂��� �V���{���O
1917
1917
  {
1918
- // 前または後に4以上の明パターン
1918
+ // �O�܂��͌��4�ȏ�̖��p�^�[��
1919
1919
  if (((j < 2 || ! (m_byModuleData[j - 2][i] & 0x11)) &&
1920
1920
  (j < 3 || ! (m_byModuleData[j - 3][i] & 0x11)) &&
1921
1921
  (j < 4 || ! (m_byModuleData[j - 4][i] & 0x11))) ||
@@ -1929,7 +1929,7 @@ int CQR_Encode::CountPenalty()
1929
1929
  }
1930
1930
  }
1931
1931
 
1932
- // 全体に対する暗モジュールの占める割合
1932
+ // �S�̂ɑ΂���Ã��W���[���̐�߂銄��
1933
1933
  int nCount = 0;
1934
1934
 
1935
1935
  for (i = 0; i < m_nSymbleSize; ++i)