rqrencoder 0.1.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.
@@ -0,0 +1,10 @@
1
+ =begin
2
+ usage: ruby extconf.rb [options ...]
3
+ configure options:
4
+ --with-opt-dir=/path/to/libraries
5
+ =end
6
+ require 'mkmf'
7
+ require 'rbconfig'
8
+ $libs = append_library($libs, "supc++")
9
+
10
+ create_makefile('rqrencoder/RQREncoder')
@@ -0,0 +1,20 @@
1
+ #ifndef __WIN32_TO_ANSI__
2
+ #define __WIN32_TO_ANSI__
3
+
4
+ #include <string.h>
5
+ #include <stdlib.h>
6
+
7
+ typedef bool BOOL;
8
+ typedef unsigned char BYTE;
9
+ typedef unsigned short WORD;
10
+ typedef char* LPCSTR;
11
+ typedef unsigned char * LPBYTE;
12
+
13
+ #define TRUE true
14
+ #define FALSE false
15
+
16
+ #define lstrlen strlen
17
+ #define ZeroMemory(x, y) memset(x, 0, y)
18
+ #define min(x, y) x < y ? x : y
19
+
20
+ #endif
@@ -0,0 +1,45 @@
1
+ require 'rqrencoder/RQREncoder'
2
+
3
+ module RQREncoder
4
+ class QREncoder
5
+ # options
6
+ # :level L:0, M:1(default), Q:2, H:3
7
+ # :version S:0(default), M:1, L:2
8
+ # :auto_extend true(default)|false auto extent if over version size
9
+ # :masking masking pattern 0-7, -1(default auto)
10
+ # :length data length
11
+ # :module_size module pixel size
12
+ # :eps_preview true|false(default)
13
+ def initialize(options = {})
14
+ @options = { :level => 1, :version => 0, :auto_extend => true, :masking => -1 }
15
+ @options.merge!(options)
16
+ end
17
+
18
+ def options
19
+ @options
20
+ end
21
+
22
+ def self.create(options = {})
23
+ encoder = QREncoder.new(options)
24
+ yield encoder if block_given?
25
+ encoder
26
+ end
27
+
28
+ def method_missing(sym, *args, &block)
29
+ if (sym[-1] == '=')
30
+ @options[sym[0..-2].to_sym] = args[0]
31
+ end
32
+ end
33
+
34
+ def encode(data)
35
+ cencoder = CQR_Encode.new
36
+ unless cencoder.EncodeData(@options[:level], @options[:version], @options[:auto_extend], @options[:masking], data)
37
+ raise Exception.new("qrcode encode error!")
38
+ end
39
+ result = QRCode.new(cencoder.m_nLevel, cencoder.m_nVersion, cencoder.m_nMaskingNo, cencoder.m_nSymbleSize, cencoder.results)
40
+ cencoder = nil
41
+ result
42
+ end
43
+
44
+ end
45
+ end
@@ -0,0 +1,35 @@
1
+ module RQREncoder
2
+ class QRCode
3
+
4
+ def initialize(level, version, masking, size, modules)
5
+ @level = level
6
+ @version = version
7
+ @masking = masking
8
+ @size = size
9
+ @modules = modules
10
+ end
11
+
12
+ def level
13
+ @level
14
+ end
15
+
16
+ def version
17
+ @version
18
+ end
19
+
20
+ def masking
21
+ @masking
22
+ end
23
+
24
+ def size
25
+ @size
26
+ end
27
+
28
+ def modules
29
+ @modules
30
+ end
31
+
32
+ end
33
+ end
34
+
35
+
@@ -0,0 +1,3 @@
1
+ module RQREncoder
2
+ VERSION = "0.1.0"
3
+ end
data/lib/rqrencoder.rb ADDED
@@ -0,0 +1,4 @@
1
+ module RQREncoder
2
+ require 'rqrencoder/qr_encoder'
3
+ require 'rqrencoder/qrcode'
4
+ end
@@ -0,0 +1,22 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "rqrencoder/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "rqrencoder"
7
+ s.version = RQREncoder::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Matt Robinson"]
10
+ s.email = ["robinson.matty@gmail.com"]
11
+ s.homepage = "http://github.com/mattyr/rqrencoder"
12
+ s.summary = %q{A simple ruby QR Code generator with C backing for speed}
13
+ s.description = %q{A simple ruby QR Code generator with C backing for speed}
14
+
15
+ s.rubyforge_project = "rqrencoder"
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ s.require_paths = ["lib"]
21
+ s.extensions << 'ext/rqrencoder/extconf.rb'
22
+ end
@@ -0,0 +1,24 @@
1
+ require 'test/unit'
2
+ require 'rqrencoder'
3
+
4
+ class TestRQREncoder < Test::Unit::TestCase
5
+
6
+ def test_block_form
7
+ encoder = RQREncoder::QREncoder.create do |enc|
8
+ enc.level = 2
9
+ end
10
+ assert_equal(2, encoder.options[:level])
11
+ end
12
+
13
+ def test_encoding
14
+ encoder = RQREncoder::QREncoder.new
15
+ result = encoder.encode("FOO BAR")
16
+ assert_equal(1, result.level)
17
+ assert_equal(1, result.version)
18
+ assert_equal(0, result.masking)
19
+ assert_equal(21, result.size)
20
+ assert_equal(21, result.modules.length)
21
+ assert_equal(21, result.modules[0].length)
22
+ end
23
+
24
+ end
metadata ADDED
@@ -0,0 +1,80 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rqrencoder
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 1
8
+ - 0
9
+ version: 0.1.0
10
+ platform: ruby
11
+ authors:
12
+ - Matt Robinson
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-10-29 00:00:00 -04:00
18
+ default_executable:
19
+ dependencies: []
20
+
21
+ description: A simple ruby QR Code generator with C backing for speed
22
+ email:
23
+ - robinson.matty@gmail.com
24
+ executables: []
25
+
26
+ extensions:
27
+ - ext/rqrencoder/extconf.rb
28
+ extra_rdoc_files: []
29
+
30
+ files:
31
+ - .gitignore
32
+ - Gemfile
33
+ - README.markdown
34
+ - Rakefile
35
+ - ext/rqrencoder/QR_Encode.cpp
36
+ - ext/rqrencoder/QR_Encode.h
37
+ - ext/rqrencoder/RQREncoder.i
38
+ - ext/rqrencoder/RQREncoder_wrap.cxx
39
+ - ext/rqrencoder/extconf.rb
40
+ - ext/rqrencoder/win2ansi.h
41
+ - lib/rqrencoder.rb
42
+ - lib/rqrencoder/qr_encoder.rb
43
+ - lib/rqrencoder/qrcode.rb
44
+ - lib/rqrencoder/version.rb
45
+ - rqrencoder.gemspec
46
+ - test/test_rqrencoder.rb
47
+ has_rdoc: true
48
+ homepage: http://github.com/mattyr/rqrencoder
49
+ licenses: []
50
+
51
+ post_install_message:
52
+ rdoc_options: []
53
+
54
+ require_paths:
55
+ - lib
56
+ required_ruby_version: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ segments:
62
+ - 0
63
+ version: "0"
64
+ required_rubygems_version: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ segments:
70
+ - 0
71
+ version: "0"
72
+ requirements: []
73
+
74
+ rubyforge_project: rqrencoder
75
+ rubygems_version: 1.3.7
76
+ signing_key:
77
+ specification_version: 3
78
+ summary: A simple ruby QR Code generator with C backing for speed
79
+ test_files:
80
+ - test/test_rqrencoder.rb