qrtools 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. data/History.txt +6 -0
  2. data/Manifest.txt +65 -0
  3. data/README.txt +75 -0
  4. data/Rakefile +49 -0
  5. data/bin/qrdecode +14 -0
  6. data/ext/qrtools/Makefile.in +65 -0
  7. data/ext/qrtools/bitstream.cpp +147 -0
  8. data/ext/qrtools/bitstream.h +48 -0
  9. data/ext/qrtools/codedata.cpp +506 -0
  10. data/ext/qrtools/codedata.h +95 -0
  11. data/ext/qrtools/container.cpp +288 -0
  12. data/ext/qrtools/container.h +175 -0
  13. data/ext/qrtools/decodeqr.h +286 -0
  14. data/ext/qrtools/ecidecoder.cpp +341 -0
  15. data/ext/qrtools/ecidecoder.h +110 -0
  16. data/ext/qrtools/extconf.rb +24 -0
  17. data/ext/qrtools/formatinfo.cpp +195 -0
  18. data/ext/qrtools/formatinfo.h +113 -0
  19. data/ext/qrtools/galois.cpp +593 -0
  20. data/ext/qrtools/galois.h +134 -0
  21. data/ext/qrtools/imagereader.cpp +1099 -0
  22. data/ext/qrtools/imagereader.h +127 -0
  23. data/ext/qrtools/libdecodeqr.cpp +195 -0
  24. data/ext/qrtools/libdecodeqr.dep +80 -0
  25. data/ext/qrtools/libdecodeqr.dsp +160 -0
  26. data/ext/qrtools/libdecodeqr.dsw +29 -0
  27. data/ext/qrtools/libdecodeqr.mak +245 -0
  28. data/ext/qrtools/qrerror.h +40 -0
  29. data/ext/qrtools/qrtools.c +17 -0
  30. data/ext/qrtools/qrtools.h +21 -0
  31. data/ext/qrtools/qrtools_decoder.c +123 -0
  32. data/ext/qrtools/qrtools_decoder.h +10 -0
  33. data/ext/qrtools/qrtools_encoder.c +63 -0
  34. data/ext/qrtools/qrtools_encoder.h +10 -0
  35. data/ext/qrtools/qrtools_header.c +51 -0
  36. data/ext/qrtools/qrtools_header.h +10 -0
  37. data/ext/qrtools/qrtools_image.c +80 -0
  38. data/ext/qrtools/qrtools_image.h +11 -0
  39. data/ext/qrtools/qrtools_qrcode.c +36 -0
  40. data/ext/qrtools/qrtools_qrcode.h +10 -0
  41. data/ext/qrtools/qrtools_ui_camera.c +58 -0
  42. data/ext/qrtools/qrtools_ui_camera.h +10 -0
  43. data/ext/qrtools/qrtools_ui_window.c +40 -0
  44. data/ext/qrtools/qrtools_ui_window.h +10 -0
  45. data/ext/qrtools/qrtypes.h +42 -0
  46. data/ext/qrtools/version.h +42 -0
  47. data/lib/qrtools.rb +11 -0
  48. data/lib/qrtools/decoder.rb +17 -0
  49. data/lib/qrtools/encoder.rb +14 -0
  50. data/lib/qrtools/image.rb +43 -0
  51. data/lib/qrtools/qrcode.rb +54 -0
  52. data/lib/qrtools/ui/camera.rb +28 -0
  53. data/lib/qrtools/ui/window.rb +16 -0
  54. data/lib/qrtools/version.rb +3 -0
  55. data/qrtools.gemspec +38 -0
  56. data/test/assets/01-1.jpg +0 -0
  57. data/test/helper.rb +17 -0
  58. data/test/test_decoder.rb +67 -0
  59. data/test/test_encoder.rb +35 -0
  60. data/test/test_header.rb +14 -0
  61. data/test/test_image.rb +19 -0
  62. data/test/test_qrcode.rb +78 -0
  63. data/test/test_qrdecode.rb +0 -0
  64. data/test/ui/test_camera.rb +43 -0
  65. data/test/ui/test_window.rb +34 -0
  66. metadata +138 -0
@@ -0,0 +1,127 @@
1
+ /////////////////////////////////////////////////////////////////////////
2
+ //
3
+ // imagereader.h --a part of libdecodeqr
4
+ //
5
+ // Copyright(C) 2007 NISHI Takao <zophos@koka-in.org>
6
+ // JMA (Japan Medical Association)
7
+ // NaCl (Network Applied Communication Laboratory Ltd.)
8
+ //
9
+ // This is free software with ABSOLUTELY NO WARRANTY.
10
+ // You can redistribute and/or modify it under the terms of LGPL.
11
+ //
12
+ // $Id: imagereader.h 36 2007-02-21 23:22:03Z zophos $
13
+ //
14
+ #ifndef __QR_IMAGE_READER__
15
+ #define __QR_IMAGE_READER__
16
+
17
+ #ifdef _DEBUG
18
+ #include <stdio.h>
19
+ #endif
20
+
21
+ #include <cv.h>
22
+ #include <memory.h>
23
+ #include "qrerror.h"
24
+ #include "container.h"
25
+
26
+
27
+ /////////////////////////////////////////////////////////////////////////
28
+ //
29
+ // image processing parameters
30
+ //
31
+ #define DEFAULT_ADAPTIVE_TH_SIZE 25
32
+ #define DEFAULT_ADAPTIVE_TH_DELTA 10
33
+ #define MIN_AREA 49
34
+ #define MIN_AREA_RATIO .65
35
+ #define MIN_FERET_RATIO .7
36
+ #define FIND_CODE_AREA_POLY_APPROX_TH 50
37
+ #define POSTERIZED_TH_LOW 64
38
+ #define POSTERIZED_TH_HI 96
39
+ #define POSTERIZED_TH_STEP 8
40
+
41
+ namespace Qr{
42
+ class ImageReader{
43
+ public:
44
+ Qr *qr;
45
+ short status;
46
+
47
+ private:
48
+ IplImage *_img_src_internal;
49
+ IplImage *_img_src;
50
+ IplImage *_img_transformed;
51
+ IplImage *_img_binarized;
52
+ IplImage *_img_tmp_1c;
53
+ CvMemStorage *_stor;
54
+ CvMemStorage *_stor_tmp;
55
+ CvSeq *_seq_finder_pattern;
56
+ CvSeq *_seq_code_area_contour;
57
+ CvPoint _coderegion_vertexes[4];
58
+ CvBox2D _finderpattern_boxes[3];
59
+
60
+ public:
61
+ ImageReader();
62
+ ImageReader(int width,int height,
63
+ int depth=IPL_DEPTH_8U,
64
+ int channel=3);
65
+ ~ImageReader();
66
+
67
+ IplImage *set_image(IplImage *src);
68
+ uchar *set_image(uchar *buffer,int size);
69
+ IplImage *set_image(int width,int height,
70
+ int depth,int channel);
71
+ void release_image();
72
+
73
+ IplImage *src_buffer();
74
+ IplImage *transformed_buffer();
75
+ IplImage *binarized_buffer();
76
+ IplImage *tmp_buffer();
77
+ CvPoint *coderegion_vertexes();
78
+ CvBox2D *finderpattern_boxes();
79
+
80
+ Qr *decode(int adaptive_th_size=
81
+ DEFAULT_ADAPTIVE_TH_SIZE,
82
+ int adaptive_th_delta=
83
+ DEFAULT_ADAPTIVE_TH_DELTA);
84
+ Qr *decode(IplImage *src,
85
+ int adaptive_th_size=
86
+ DEFAULT_ADAPTIVE_TH_SIZE,
87
+ int adaptive_th_delta=
88
+ DEFAULT_ADAPTIVE_TH_DELTA);
89
+
90
+ private:
91
+ void _init();
92
+ void _alloc_image(int width,int height,
93
+ int depth,int channel);
94
+
95
+ Qr *_decode(int adaptive_th_size,int adaptive_th_delta);
96
+
97
+ CvSeq *_find_finder_pattern();
98
+ CvSeq *_find_code_area_contour(double th);
99
+ CvRect _transform_image();
100
+ void _create_posterized_image(int block_size,
101
+ double delta,
102
+ int low_th,
103
+ int hi_th);
104
+ IplImage *_get_code_matrix();
105
+ int _get_format_info(IplImage *src,int pos=0);
106
+ IplImage *_get_function_patterns();
107
+ void _unmask_code_matrix(IplImage *src,
108
+ IplImage *function_patterns);
109
+ int _read_code_word(IplImage *src,IplImage *mask);
110
+
111
+ double _get_cell_size();
112
+ IplImage *_get_mask_pattern();
113
+
114
+ };
115
+
116
+ static int seq_cmp_by_clockwise(const void *_a,
117
+ const void *_b,
118
+ void *_cog);
119
+
120
+ void apaptive_white_leveling(const CvArr* src,CvArr* dst,
121
+ double middle_value,int adaptive_method,
122
+ int threshold_type,int block_size,
123
+ double param1);
124
+
125
+ }
126
+
127
+ #endif
@@ -0,0 +1,195 @@
1
+ /////////////////////////////////////////////////////////////////////////
2
+ //
3
+ // libdecodeqr.cpp --a part of libdecodeqr
4
+ //
5
+ // Copyright(C) 2007 NISHI Takao <zophos@koka-in.org>
6
+ // JMA (Japan Medical Association)
7
+ // NaCl (Network Applied Communication Laboratory Ltd.)
8
+ //
9
+ // This is free software with ABSOLUTELY NO WARRANTY.
10
+ // You can redistribute and/or modify it under the terms of LGPL.
11
+ //
12
+ // $Id: libdecodeqr.cpp 36 2007-02-21 23:22:03Z zophos $
13
+ //
14
+ #include "imagereader.h"
15
+ #include "qrtypes.h"
16
+ #include "version.h"
17
+
18
+ extern "C" {
19
+
20
+ QrDecoderHandle qr_decoder_open()
21
+ {
22
+ Qr::ImageReader *imagereader=new Qr::ImageReader();
23
+ return((QrDecoderHandle)imagereader);
24
+ }
25
+
26
+ QrDecoderHandle qr_decoder_open_with_image_size(int width,int height,
27
+ int depth,int channel)
28
+ {
29
+ Qr::ImageReader *imagereader=new Qr::ImageReader(width,height,
30
+ depth,channel);
31
+ return((QrDecoderHandle)imagereader);
32
+ }
33
+
34
+ void qr_decoder_close(QrDecoderHandle decoder)
35
+ {
36
+ Qr::ImageReader *imagereader=(Qr::ImageReader *)decoder;
37
+ delete imagereader;
38
+ }
39
+
40
+ short qr_decoder_get_status(QrDecoderHandle decoder)
41
+ {
42
+ Qr::ImageReader *imagereader=(Qr::ImageReader *)decoder;
43
+ return(imagereader->status);
44
+ }
45
+
46
+ int qr_decoder_is_busy(QrDecoderHandle decoder)
47
+ {
48
+ Qr::ImageReader *imagereader=(Qr::ImageReader *)decoder;
49
+ return(imagereader->status&QR_IMAGEREADER_WORKING?1:0);
50
+ }
51
+
52
+
53
+ QrDecoderHandle qr_decoder_set_image_size(QrDecoderHandle decoder,
54
+ int width,int height,
55
+ int depth,int channel)
56
+ {
57
+ Qr::ImageReader *imagereader=(Qr::ImageReader *)decoder;
58
+ imagereader->set_image(width,height,depth,channel);
59
+
60
+ return((QrDecoderHandle)imagereader);
61
+ }
62
+
63
+
64
+ IplImage *qr_decoder_get_image_buffer(QrDecoderHandle decoder)
65
+ {
66
+ Qr::ImageReader *imagereader=(Qr::ImageReader *)decoder;
67
+ return(imagereader->src_buffer());
68
+ }
69
+ IplImage *qr_decoder_get_transformed_image_buffer(QrDecoderHandle decoder)
70
+ {
71
+ Qr::ImageReader *imagereader=(Qr::ImageReader *)decoder;
72
+ return(imagereader->transformed_buffer());
73
+ }
74
+ IplImage *qr_decoder_get_binarized_image_buffer(QrDecoderHandle decoder)
75
+ {
76
+ Qr::ImageReader *imagereader=(Qr::ImageReader *)decoder;
77
+ return(imagereader->binarized_buffer());
78
+ }
79
+ IplImage *qr_decoder_get_tmp_image_buffer(QrDecoderHandle decoder)
80
+ {
81
+ Qr::ImageReader *imagereader=(Qr::ImageReader *)decoder;
82
+ return(imagereader->tmp_buffer());
83
+ }
84
+
85
+ QrDecoderHandle qr_decoder_set_image_buffer(QrDecoderHandle decoder,
86
+ IplImage *src)
87
+ {
88
+ Qr::ImageReader *imagereader=(Qr::ImageReader *)decoder;
89
+ imagereader->set_image(src);
90
+
91
+ return((QrDecoderHandle)imagereader);
92
+ }
93
+
94
+ short qr_decoder_decode(QrDecoderHandle decoder,
95
+ int adaptive_th_size,
96
+ int adaptive_th_delta)
97
+ {
98
+ Qr::ImageReader *imagereader=(Qr::ImageReader *)decoder;
99
+ imagereader->decode(adaptive_th_size,adaptive_th_delta);
100
+ return(imagereader->status);
101
+ }
102
+
103
+ short qr_decoder_decode_image(QrDecoderHandle decoder,
104
+ IplImage *src,
105
+ int adaptive_th_size,
106
+ int adaptive_th_delta)
107
+ {
108
+ Qr::ImageReader *imagereader=(Qr::ImageReader *)decoder;
109
+ imagereader->decode(src,adaptive_th_size,adaptive_th_delta);
110
+ return(imagereader->status);
111
+ }
112
+
113
+ int qr_decoder_get_header(QrDecoderHandle decoder,
114
+ QrCodeHeader *header)
115
+ {
116
+ Qr::ImageReader *imagereader=(Qr::ImageReader *)decoder;
117
+ if(!(imagereader->status&QR_IMAGEREADER_DECODED))
118
+ return(0);
119
+
120
+ header->model=imagereader->qr->model;
121
+ header->version=imagereader->qr->version;
122
+ header->level=imagereader->qr->formatinfo->level;
123
+ //header->mode=0;
124
+ //header->eci_mode=0;
125
+ header->charactor_size=imagereader->qr->codedata->length;
126
+ header->byte_size=imagereader->qr->codedata->byte_length;
127
+
128
+ return(1);
129
+ }
130
+
131
+ int qr_decoder_get_body(QrDecoderHandle decoder,
132
+ unsigned char *buf,
133
+ int buf_size)
134
+ {
135
+ Qr::ImageReader *imagereader=(Qr::ImageReader *)decoder;
136
+ if(!(imagereader->status&QR_IMAGEREADER_DECODED))
137
+ return(0);
138
+
139
+ memset(buf,0,buf_size);
140
+ int size=imagereader->qr->codedata->byte_length;
141
+ if(size>buf_size)
142
+ size=buf_size;
143
+
144
+ memcpy(buf,imagereader->qr->codedata->raw_data(),size);
145
+
146
+ return(size);
147
+ }
148
+
149
+ CvPoint *qr_decoder_get_coderegion_vertexes(QrDecoderHandle decoder)
150
+ {
151
+ Qr::ImageReader *imagereader=(Qr::ImageReader *)decoder;
152
+ return(imagereader->coderegion_vertexes());
153
+ }
154
+
155
+ CvBox2D *qr_decoder_get_finderpattern_boxes(QrDecoderHandle decoder)
156
+ {
157
+ Qr::ImageReader *imagereader=(Qr::ImageReader *)decoder;
158
+ return(imagereader->finderpattern_boxes());
159
+ }
160
+
161
+
162
+ char *qr_decoder_version()
163
+ {
164
+ return(LIBDECODEQR_VERSION);
165
+ }
166
+ char *qr_decoder_version_description()
167
+ {
168
+ return(LIBDECODEQR_VERSION_DESCRIPTION);
169
+ }
170
+ char *qr_decoder_version_product()
171
+ {
172
+ return(LIBDECODEQR_PRODUCTNAME);
173
+ }
174
+ int qr_decoder_version_major()
175
+ {
176
+ return(LIBDECODEQR_VERSION_MAJOR);
177
+ }
178
+ int qr_decoder_version_minor()
179
+ {
180
+ return(LIBDECODEQR_VERSION_MINOR);
181
+ }
182
+ int qr_decoder_version_teeny()
183
+ {
184
+ return(LIBDECODEQR_VERSION_TEENY);
185
+ }
186
+ char *qr_decoder_version_suffix()
187
+ {
188
+ return(LIBDECODEQR_VERSION_SUFFIX);
189
+ }
190
+ char *qr_decoder_version_revision()
191
+ {
192
+ return(LIBDECODEQR_VERSION_REVISION);
193
+ }
194
+
195
+ }
@@ -0,0 +1,80 @@
1
+ # Microsoft Developer Studio Generated Dependency File, included by libdecodeqr.mak
2
+
3
+ .\bitstream.cpp : \
4
+ ".\bitstream.h"\
5
+
6
+
7
+ .\codedata.cpp : \
8
+ ".\bitstream.h"\
9
+ ".\codedata.h"\
10
+ ".\ecidecoder.h"\
11
+ ".\galois.h"\
12
+ ".\qrerror.h"\
13
+
14
+
15
+ .\container.cpp : \
16
+ ".\bitstream.h"\
17
+ ".\codedata.h"\
18
+ ".\container.h"\
19
+ ".\ecidecoder.h"\
20
+ ".\formatinfo.h"\
21
+ ".\galois.h"\
22
+ ".\qrerror.h"\
23
+
24
+
25
+ .\ecidecoder.cpp : \
26
+ ".\bitstream.h"\
27
+ ".\ecidecoder.h"\
28
+
29
+
30
+ .\formatinfo.cpp : \
31
+ ".\formatinfo.h"\
32
+ ".\galois.h"\
33
+ ".\qrerror.h"\
34
+
35
+
36
+ .\galois.cpp : \
37
+ ".\galois.h"\
38
+
39
+
40
+ .\imagereader.cpp : \
41
+ ".\bitstream.h"\
42
+ ".\codedata.h"\
43
+ ".\container.h"\
44
+ ".\ecidecoder.h"\
45
+ ".\formatinfo.h"\
46
+ ".\galois.h"\
47
+ ".\imagereader.h"\
48
+ ".\qrerror.h"\
49
+ {$(INCLUDE)}"cv.h"\
50
+ {$(INCLUDE)}"cvcompat.h"\
51
+ {$(INCLUDE)}"cvtypes.h"\
52
+ {$(INCLUDE)}"cxcore.h"\
53
+ {$(INCLUDE)}"cxerror.h"\
54
+ {$(INCLUDE)}"cxtypes.h"\
55
+ {$(INCLUDE)}"emmintrin.h"\
56
+ {$(INCLUDE)}"mmintrin.h"\
57
+ {$(INCLUDE)}"xmmintrin.h"\
58
+
59
+
60
+ .\libdecodeqr.cpp : \
61
+ ".\bitstream.h"\
62
+ ".\codedata.h"\
63
+ ".\container.h"\
64
+ ".\ecidecoder.h"\
65
+ ".\formatinfo.h"\
66
+ ".\galois.h"\
67
+ ".\imagereader.h"\
68
+ ".\qrerror.h"\
69
+ ".\qrtypes.h"\
70
+ ".\version.h"\
71
+ {$(INCLUDE)}"cv.h"\
72
+ {$(INCLUDE)}"cvcompat.h"\
73
+ {$(INCLUDE)}"cvtypes.h"\
74
+ {$(INCLUDE)}"cxcore.h"\
75
+ {$(INCLUDE)}"cxerror.h"\
76
+ {$(INCLUDE)}"cxtypes.h"\
77
+ {$(INCLUDE)}"emmintrin.h"\
78
+ {$(INCLUDE)}"mmintrin.h"\
79
+ {$(INCLUDE)}"xmmintrin.h"\
80
+
@@ -0,0 +1,160 @@
1
+ # Microsoft Developer Studio Project File - Name="libdecodeqr" - Package Owner=<4>
2
+ # Microsoft Developer Studio Generated Build File, Format Version 6.00
3
+ # ** �ҏW���Ȃ��ł������� **
4
+
5
+ # TARGTYPE "Win32 (x86) Static Library" 0x0104
6
+
7
+ CFG=libdecodeqr - Win32 Debug
8
+ !MESSAGE ����͗L����Ҳ�̧�قł͂���܂���B ������ۼު�Ă�����ނ��邽�߂ɂ� NMAKE ���g�p���Ă��������B
9
+ !MESSAGE [Ҳ�̧�ق̴���߰�] ����ނ��g�p���Ď��s���Ă�������
10
+ !MESSAGE
11
+ !MESSAGE NMAKE /f "libdecodeqr.mak".
12
+ !MESSAGE
13
+ !MESSAGE NMAKE �̎��s���ɍ\�����w��ł��܂�
14
+ !MESSAGE ����� ײݏ��ϸۂ̐ݒ���`���܂��B��:
15
+ !MESSAGE
16
+ !MESSAGE NMAKE /f "libdecodeqr.mak" CFG="libdecodeqr - Win32 Debug"
17
+ !MESSAGE
18
+ !MESSAGE �I���”\������� Ӱ��:
19
+ !MESSAGE
20
+ !MESSAGE "libdecodeqr - Win32 Release" ("Win32 (x86) Static Library" �p)
21
+ !MESSAGE "libdecodeqr - Win32 Debug" ("Win32 (x86) Static Library" �p)
22
+ !MESSAGE
23
+
24
+ # Begin Project
25
+ # PROP AllowPerConfigDependencies 0
26
+ # PROP Scc_ProjName ""
27
+ # PROP Scc_LocalPath ""
28
+ CPP=cl.exe
29
+ RSC=rc.exe
30
+
31
+ !IF "$(CFG)" == "libdecodeqr - Win32 Release"
32
+
33
+ # PROP BASE Use_MFC 0
34
+ # PROP BASE Use_Debug_Libraries 0
35
+ # PROP BASE Output_Dir "Release"
36
+ # PROP BASE Intermediate_Dir "Release"
37
+ # PROP BASE Target_Dir ""
38
+ # PROP Use_MFC 0
39
+ # PROP Use_Debug_Libraries 0
40
+ # PROP Output_Dir "Release"
41
+ # PROP Intermediate_Dir "Release"
42
+ # PROP Target_Dir ""
43
+ # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
44
+ # ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
45
+ # ADD BASE RSC /l 0x411 /d "NDEBUG"
46
+ # ADD RSC /l 0x411 /d "NDEBUG"
47
+ BSC32=bscmake.exe
48
+ # ADD BASE BSC32 /nologo
49
+ # ADD BSC32 /nologo
50
+ LIB32=link.exe -lib
51
+ # ADD BASE LIB32 /nologo
52
+ # ADD LIB32 /nologo
53
+
54
+ !ELSEIF "$(CFG)" == "libdecodeqr - Win32 Debug"
55
+
56
+ # PROP BASE Use_MFC 0
57
+ # PROP BASE Use_Debug_Libraries 1
58
+ # PROP BASE Output_Dir "Debug"
59
+ # PROP BASE Intermediate_Dir "Debug"
60
+ # PROP BASE Target_Dir ""
61
+ # PROP Use_MFC 0
62
+ # PROP Use_Debug_Libraries 1
63
+ # PROP Output_Dir "Debug"
64
+ # PROP Intermediate_Dir "Debug"
65
+ # PROP Target_Dir ""
66
+ # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
67
+ # ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
68
+ # ADD BASE RSC /l 0x411 /d "_DEBUG"
69
+ # ADD RSC /l 0x411 /d "_DEBUG"
70
+ BSC32=bscmake.exe
71
+ # ADD BASE BSC32 /nologo
72
+ # ADD BSC32 /nologo
73
+ LIB32=link.exe -lib
74
+ # ADD BASE LIB32 /nologo
75
+ # ADD LIB32 /nologo
76
+
77
+ !ENDIF
78
+
79
+ # Begin Target
80
+
81
+ # Name "libdecodeqr - Win32 Release"
82
+ # Name "libdecodeqr - Win32 Debug"
83
+ # Begin Group "Source Files"
84
+
85
+ # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
86
+ # Begin Source File
87
+
88
+ SOURCE=.\bitstream.cpp
89
+ # End Source File
90
+ # Begin Source File
91
+
92
+ SOURCE=.\codedata.cpp
93
+ # End Source File
94
+ # Begin Source File
95
+
96
+ SOURCE=.\container.cpp
97
+ # End Source File
98
+ # Begin Source File
99
+
100
+ SOURCE=.\ecidecoder.cpp
101
+ # End Source File
102
+ # Begin Source File
103
+
104
+ SOURCE=.\formatinfo.cpp
105
+ # End Source File
106
+ # Begin Source File
107
+
108
+ SOURCE=.\galois.cpp
109
+ # End Source File
110
+ # Begin Source File
111
+
112
+ SOURCE=.\imagereader.cpp
113
+ # End Source File
114
+ # Begin Source File
115
+
116
+ SOURCE=.\libdecodeqr.cpp
117
+ # End Source File
118
+ # End Group
119
+ # Begin Group "Header Files"
120
+
121
+ # PROP Default_Filter "h;hpp;hxx;hm;inl"
122
+ # Begin Source File
123
+
124
+ SOURCE=.\bitstream.h
125
+ # End Source File
126
+ # Begin Source File
127
+
128
+ SOURCE=.\codedata.h
129
+ # End Source File
130
+ # Begin Source File
131
+
132
+ SOURCE=.\container.h
133
+ # End Source File
134
+ # Begin Source File
135
+
136
+ SOURCE=.\ecidecoder.h
137
+ # End Source File
138
+ # Begin Source File
139
+
140
+ SOURCE=.\formatinfo.h
141
+ # End Source File
142
+ # Begin Source File
143
+
144
+ SOURCE=.\galois.h
145
+ # End Source File
146
+ # Begin Source File
147
+
148
+ SOURCE=.\imagereader.h
149
+ # End Source File
150
+ # Begin Source File
151
+
152
+ SOURCE=.\qrerror.h
153
+ # End Source File
154
+ # Begin Source File
155
+
156
+ SOURCE=.\qrtypes.h
157
+ # End Source File
158
+ # End Group
159
+ # End Target
160
+ # End Project