Class: QRTools::Decoder
- Inherits:
-
Object
- Object
- QRTools::Decoder
- Defined in:
- lib/qrtools/decoder.rb,
ext/qrtools/qrtools_decoder.c
Class Method Summary collapse
Instance Method Summary collapse
- #binarized_image ⇒ Object
- #body ⇒ Object
- #coderegion_vertexes ⇒ Object
- #decode(size = 25, delta = 10) ⇒ Object
- #header ⇒ Object
- #image=(image) ⇒ Object
Class Method Details
.decode(image, size = 25, delta = 10) ⇒ Object
4 5 6 7 8 9 10 |
# File 'lib/qrtools/decoder.rb', line 4 def decode image, size = 25, delta = 10 decoder = new(image) 25.step(3, -2) { |i| return decoder if decoder.decode(size, delta) } decoder end |
.new(image) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 |
# File 'ext/qrtools/qrtools_decoder.c', line 3 static VALUE new(VALUE klass, VALUE image) { QrDecoderHandle decoder = qr_decoder_open(); IplImage * src; Data_Get_Struct(image, IplImage, src); qr_decoder_set_image_buffer(decoder, src); VALUE self = Data_Wrap_Struct(klass, NULL, qr_decoder_close, decoder); return self; } |
Instance Method Details
#binarized_image ⇒ Object
77 78 79 80 81 82 83 84 85 |
# File 'ext/qrtools/qrtools_decoder.c', line 77 static VALUE binarized_image(VALUE self) { QrDecoderHandle decoder; Data_Get_Struct(self, struct QrDecoderHandle, decoder); IplImage * bin = cvCloneImage(qr_decoder_get_binarized_image_buffer(decoder)); return QRTools_Wrap_Image(bin); } |
#body ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'ext/qrtools/qrtools_decoder.c', line 44 static VALUE body(VALUE self) { QrDecoderHandle decoder; QrCodeHeader * head; VALUE _header = rb_funcall(self, rb_intern("header"), 0); if(Qnil == _header) return Qnil; Data_Get_Struct(self, struct QrDecoderHandle, decoder); Data_Get_Struct(_header, QrCodeHeader, head); char *buf = calloc(head->byte_size + 1, sizeof(char)); VALUE b = Qnil; if(qr_decoder_get_body(decoder, (unsigned char *)buf, head->byte_size + 1)) b = rb_str_new(buf, head->byte_size); free(buf); return b; } |
#coderegion_vertexes ⇒ Object
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'ext/qrtools/qrtools_decoder.c', line 87 static VALUE coderegion_vertexes(VALUE self) { QrDecoderHandle decoder; Data_Get_Struct(self, struct QrDecoderHandle, decoder); CvPoint *vertexes = qr_decoder_get_coderegion_vertexes(decoder); VALUE cPoint = rb_const_get(cQRToolsImage, rb_intern("Point")); VALUE list = rb_ary_new(); int i = 0; for(i = 0; i < 4; i++) { CvPoint p = vertexes[i]; VALUE point = rb_funcall(cPoint, rb_intern("new"), 2, INT2NUM(p.x), INT2NUM(p.y)); rb_ary_push(list, point); } return list; } |
#decode(size = 25, delta = 10) ⇒ Object
13 14 15 |
# File 'lib/qrtools/decoder.rb', line 13 def decode size = 25, delta = 10 native_decode(size, delta) end |
#header ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'ext/qrtools/qrtools_decoder.c', line 28 static VALUE header(VALUE self) { QrCodeHeader * header = calloc(1, sizeof(QrCodeHeader)); QrDecoderHandle decoder; Data_Get_Struct(self, struct QrDecoderHandle, decoder); qr_decoder_get_header(decoder, header); if(header) return Data_Wrap_Struct(cQRToolsHeader, NULL, free, header); free(header); return Qnil; } |
#image=(image) ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 |
# File 'ext/qrtools/qrtools_decoder.c', line 65 static VALUE set_image(VALUE self, VALUE image) { QrDecoderHandle decoder; Data_Get_Struct(self, struct QrDecoderHandle, decoder); IplImage * src; Data_Get_Struct(image, IplImage, src); qr_decoder_set_image_buffer(decoder, src); return self; } |