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.
- data/.gitignore +6 -0
- data/Gemfile +4 -0
- data/README.markdown +28 -0
- data/Rakefile +7 -0
- data/ext/rqrencoder/QR_Encode.cpp +1949 -0
- data/ext/rqrencoder/QR_Encode.h +152 -0
- data/ext/rqrencoder/RQREncoder.i +24 -0
- data/ext/rqrencoder/RQREncoder_wrap.cxx +3677 -0
- data/ext/rqrencoder/extconf.rb +10 -0
- data/ext/rqrencoder/win2ansi.h +20 -0
- data/lib/rqrencoder/qr_encoder.rb +45 -0
- data/lib/rqrencoder/qrcode.rb +35 -0
- data/lib/rqrencoder/version.rb +3 -0
- data/lib/rqrencoder.rb +4 -0
- data/rqrencoder.gemspec +22 -0
- data/test/test_rqrencoder.rb +24 -0
- metadata +80 -0
@@ -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
|
+
|
data/lib/rqrencoder.rb
ADDED
data/rqrencoder.gemspec
ADDED
@@ -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
|