qrencoder 1.3.3 → 1.3.4

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.
@@ -1,3 +1,36 @@
1
+ == 1.3.4 / 2011-03-08
2
+
3
+ * 1 Minor enhancement
4
+ * Add pixels_per_module option for enlarging the PNG image by the
5
+ provided factor.
6
+
7
+ == 1.3.3 / 2011-03-08
8
+
9
+ * Fix bug with C extension location
10
+
11
+ == 1.3.2 / 2011-03-08
12
+
13
+ * Bugfix release. Gem erroneously included pre-compiled file.
14
+
15
+ == 1.3.1 / 2011-03-08
16
+
17
+ * Bugfix release
18
+
19
+ == 1.3.0 / 2011-03-08
20
+
21
+ * 1 Minor enhancement
22
+ * Use more maintain ChunkyPNG library instead of PNG
23
+
24
+ == 1.2.0 / 2011-02-23
25
+
26
+ * Major API change
27
+ * Everything is now wrapped in the QREncoder module
28
+ * QRCode.encode_string and QRCode.encode_string_ex are now handled
29
+ through a more conventional object initializer. See QRCode#initialize
30
+ for documentation.
31
+ * QREncoder includes a convenience method for creating QRCode objects.
32
+ See QREncoder.encode for details.
33
+
1
34
  == 1.0.1 / 2008-03-11
2
35
 
3
36
  * 1 Minor enhancement
@@ -7,4 +40,3 @@
7
40
 
8
41
  * Initial release
9
42
  * Wooo!
10
-
@@ -33,7 +33,7 @@ module QREncoder
33
33
  # options. The options are as follows:
34
34
  #
35
35
  # [:version] An integer representing the minimum QRCode version (default: +1+)
36
- # [:correction] The amount of error correction to apply. One of +:low+, +:medium+, +:high+. (default: +:low+)
36
+ # [:correction] The amount of error correction to apply. One of +:low+, +:medium+, +:quarter+, +:high+. (default: +:low+)
37
37
  # [:mode] The encoding mode to use. Must be one of +:numeric+, +:alphanumeric+, +:ascii+, +:kanji+. (default: +:ascii+)
38
38
  # [:case_sensitive] Set to +false+ if case does not matter. (default: +true+)
39
39
  #
@@ -52,6 +52,7 @@ module QREncoder
52
52
  {
53
53
  :low => QR_ECLEVEL_L,
54
54
  :medium => QR_ECLEVEL_M,
55
+ :quarter => QR_ECLEVEL_Q,
55
56
  :high => QR_ECLEVEL_H
56
57
  }
57
58
  end
@@ -13,13 +13,13 @@ module QREncoder
13
13
 
14
14
  ##
15
15
  # Returns an instance of PNG, which can be saved to a file with PNG#save or
16
- # converted to a blob for inline file transfer with PNG#to_blob. For more
17
- # information, see http://seattlerb.rubyforge.org/png/
16
+ # converted to a blob for inline file transfer with PNG#to_blob.
18
17
  #
19
18
  # Options:
20
19
  #
21
20
  # [:margin] A pixel value for the margin around each side of the code. This should be 4 or greater. (default: +4+)
22
21
  # [:transparent] Background transparency. Can be true or false. (default: +false+)
22
+ # [:pixels_per_module] Adjusts the entire PNG image by the given factor, integer. (default: +1+)
23
23
  #
24
24
  def png(options={})
25
25
  canvas(options)
@@ -31,24 +31,23 @@ module QREncoder
31
31
  # Takes an optional hash of options. See QRCode#png for details.
32
32
  def canvas(options={})
33
33
  @margin = options[:margin] || 4
34
+ ppm = options[:pixels_per_module] || 1
34
35
  background = options[:transparent] ? ChunkyPNG::Color::TRANSPARENT : ChunkyPNG::Color::WHITE
35
- png_width = width + (2 * @margin)
36
+ png_width = (width + (2 * @margin)) * ppm
36
37
 
37
38
  canvas = ChunkyPNG::Image.new(png_width, png_width, background)
38
39
 
39
- points.each do |p|
40
- x, y = png_coordinates_for_point(p)
41
- canvas[x,y] = ChunkyPNG::Color::BLACK
40
+ points.each do |point|
41
+ ppm.times do |x_offset|
42
+ x = (point[0] + @margin) * ppm + x_offset
43
+ ppm.times do |y_offset|
44
+ y = (point[1] + @margin) * ppm + y_offset
45
+ canvas[x,y] = ChunkyPNG::Color::BLACK
46
+ end
47
+ end
42
48
  end
43
49
 
44
50
  canvas
45
51
  end
46
-
47
- private
48
- def png_coordinates_for_point(point)
49
- x = point[0] + @margin
50
- y = point[1] + @margin
51
- [x,y]
52
- end
53
52
  end
54
53
  end
@@ -1,3 +1,3 @@
1
1
  module QREncoder
2
- VERSION = '1.3.3'
2
+ VERSION = '1.3.4'
3
3
  end
@@ -2,23 +2,36 @@ require 'spec_helper'
2
2
  require 'zxing'
3
3
 
4
4
  describe QREncoder do
5
- context "full integration" do
6
- shared_examples_for "decodable" do
7
- let(:message) { 'a message' }
8
- let(:path) do
9
- File.expand_path("../../tmp/integration.png", __FILE__)
10
- end
11
- before { File.unlink(path) if File.file?(path) }
12
- it "creates decodable QRCode png files" do
13
- QREncoder.encode(message).save_png(path)
14
- ZXing.decode(path).should == message
15
- end
5
+ context "integration" do
6
+ let(:path) { File.expand_path("../../tmp/integration.png", __FILE__) }
7
+ let(:options) { Hash.new }
8
+ let(:png) { QREncoder.encode(message).png(options) }
9
+ before do
10
+ File.unlink(path) if File.file?(path)
11
+ png.save(path)
16
12
  end
17
- it_should_behave_like "decodable" do
13
+
14
+ subject { ZXing.decode(path) }
15
+
16
+ context "with a sentence" do
18
17
  let(:message) {"Oh my! I'm amazed by technology."}
18
+ it { should == message }
19
19
  end
20
- it_should_behave_like "decodable" do
20
+
21
+ context "with ascii characters" do
21
22
  let(:message) {"&*@ad!jlfj-=+"}
23
+ it { should == message }
24
+ end
25
+
26
+ context "with a custom pixel per module size" do
27
+ let(:message) { "bigger" }
28
+ let(:options) do
29
+ { :pixels_per_module => 4, :version => 1 }
30
+ end
31
+ it { should == message }
32
+ it "produces a larger png width and height" do
33
+ png.width.should == 29 * 4
34
+ end
22
35
  end
23
36
  end
24
37
  end
@@ -22,12 +22,12 @@ describe QREncoder::QRCode do
22
22
 
23
23
  describe "#dup" do
24
24
  subject { QREncoder.encode("something").dup }
25
- its(:width) { should == 21 }
25
+ its(:width) { should == 21 }
26
26
  end
27
27
 
28
28
  describe "#width" do
29
29
  subject { QREncoder.encode("something").width }
30
- it { should == 21 }
30
+ it { should == 21 }
31
31
  end
32
32
 
33
33
  describe "#version" do
@@ -158,11 +158,16 @@ describe QREncoder::QRCode do
158
158
  end
159
159
  end
160
160
 
161
- context "with margin option of 8" do
161
+ context "with margin of 8" do
162
162
  subject { qrcode.canvas(:margin => 8) }
163
163
  its(:width) { should == qrcode.width + (8 * 2) }
164
164
  end
165
165
 
166
+ context "with pixels-per-module of 2" do
167
+ subject { qrcode.canvas(:pixels_per_module => 2) }
168
+ its(:width) { should == (qrcode.width + 8) * 2 }
169
+ end
170
+
166
171
  context "with transparent set to true" do
167
172
  subject { qrcode.canvas(:transparent => true) }
168
173
  specify "background should be transparent" do
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: qrencoder
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 1.3.3
5
+ version: 1.3.4
6
6
  platform: ruby
7
7
  authors:
8
8
  - Jacob Harris
@@ -56,7 +56,7 @@ dependencies:
56
56
  requirements:
57
57
  - - ~>
58
58
  - !ruby/object:Gem::Version
59
- version: "0.2"
59
+ version: 0.2.1
60
60
  type: :development
61
61
  version_requirements: *id004
62
62
  - !ruby/object:Gem::Dependency
@@ -67,7 +67,7 @@ dependencies:
67
67
  requirements:
68
68
  - - ~>
69
69
  - !ruby/object:Gem::Version
70
- version: 1.0.1
70
+ version: 1.1.0
71
71
  type: :runtime
72
72
  version_requirements: *id005
73
73
  description: |-
@@ -119,7 +119,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
119
119
  requirements: []
120
120
 
121
121
  rubyforge_project:
122
- rubygems_version: 1.6.0
122
+ rubygems_version: 1.6.2
123
123
  signing_key:
124
124
  specification_version: 3
125
125
  summary: Wrapper around the C qrencode library for creating QR Codes