prawn_shapes 0.11.1 → 1.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.
- checksums.yaml +7 -0
- data/README.rdoc +7 -5
- data/lib/prawn_shapes/arc.rb +17 -10
- data/lib/prawn_shapes/star.rb +7 -0
- data/prawn_shapes.gemspec +2 -3
- data/spec/arc_spec.rb +30 -0
- data/spec/spec_helper.rb +3 -2
- metadata +25 -27
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 9b6d06f27c7a246ee94e8f1e57b4500820170085
|
4
|
+
data.tar.gz: 85e0821e27fa8d32d6e6f4637725bac7bae07933
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 657e634fec05c8036a2f5c7c3f332340aa64efbdb7b829470fb16bab8fc1a0a3cd6de7961cdaef8f5bc73238d5b5a25b9f5e098a55a1833c8d1d9e3e09b89f5f
|
7
|
+
data.tar.gz: 36f5c9abc5d0ed22edfb669ac00a69ff22fa943e4ff78a5e32ae2c90a984ddc13b9a0c641c4e04b6cda09f567cb22a1e6e6dc9acf8f7835f6ef97a1130af6a79
|
data/README.rdoc
CHANGED
@@ -10,11 +10,13 @@ Available thus far:
|
|
10
10
|
|
11
11
|
= Usage
|
12
12
|
|
13
|
-
|
13
|
+
Install the prawn_shapes gem, then:
|
14
14
|
|
15
|
-
|
15
|
+
require 'prawn_shapes'
|
16
|
+
|
17
|
+
And:
|
16
18
|
|
17
|
-
|
19
|
+
pdf.star([x, y], :radius => r)
|
18
20
|
|
19
21
|
pdf.arc_around([x, y], :radius => r, :start_angle => 30, :end_angle => 60)
|
20
22
|
pdf.pie_slice([x, y], :radius => r, :start_angle => 45, :end_angle => 135)
|
@@ -31,9 +33,9 @@ See the examples directory for further usage examples.
|
|
31
33
|
|
32
34
|
= Examples
|
33
35
|
|
34
|
-
stars:
|
36
|
+
stars: https://github.com/downloads/Bluejade/prawn-shapes/star.pdf
|
35
37
|
|
36
|
-
arcs and pies:
|
38
|
+
arcs and pies: https://github.com/downloads/Bluejade/prawn-shapes/arc.pdf
|
37
39
|
|
38
40
|
= Changelog
|
39
41
|
|
data/lib/prawn_shapes/arc.rb
CHANGED
@@ -115,6 +115,13 @@ module Prawn
|
|
115
115
|
origin[:handle1] || origin[:point]])
|
116
116
|
end
|
117
117
|
|
118
|
+
ops = %w{fill stroke fill_and_stroke}
|
119
|
+
shapes = %w{half_circle quarter_circle pie_slice arc_around open_curve closed_curve}
|
120
|
+
|
121
|
+
ops.product(shapes).each do |operation,shape|
|
122
|
+
class_eval "def #{operation}_#{shape}(*args); #{shape}(*args); #{operation}; end"
|
123
|
+
end
|
124
|
+
|
118
125
|
private
|
119
126
|
|
120
127
|
def arc_vertices(center, options)
|
@@ -122,34 +129,34 @@ module Prawn
|
|
122
129
|
start_degrees = options[:start_angle]
|
123
130
|
end_degrees = options[:end_angle]
|
124
131
|
return if start_degrees == end_degrees
|
125
|
-
|
132
|
+
|
126
133
|
overall_start_angle = (start_degrees % 360.0).to_radians
|
127
134
|
overall_end_angle = (end_degrees % 360.0).to_radians
|
128
135
|
|
129
136
|
# if the angles are now equal, when they weren't before, then
|
130
137
|
# they describe an entire circle
|
131
138
|
return circle_at(center, :radius => radius) if overall_start_angle == overall_end_angle
|
132
|
-
|
139
|
+
|
133
140
|
overall_end_angle = overall_end_angle + 2.0 * Math::PI if overall_end_angle < overall_start_angle
|
134
|
-
|
141
|
+
|
135
142
|
delta = overall_end_angle - overall_start_angle
|
136
143
|
quadrants = (delta / (Math::PI * 0.5)).ceil
|
137
|
-
|
144
|
+
|
138
145
|
vertices = []
|
139
146
|
quadrants.times do |i|
|
140
147
|
start_angle = overall_start_angle + Math::PI * 0.5 * i
|
141
|
-
|
148
|
+
|
142
149
|
if i == quadrants - 1 then end_angle = overall_end_angle
|
143
150
|
else end_angle = start_angle + Math::PI * 0.5
|
144
151
|
end
|
145
|
-
|
152
|
+
|
146
153
|
delta = end_angle - start_angle
|
147
154
|
handle_multiplier = KAPPA * delta / (Math::PI * 0.5) * radius
|
148
|
-
|
155
|
+
|
149
156
|
# negate the angles so as to get the stated orientation of angles
|
150
157
|
# start_angle = -start_angle
|
151
158
|
# end_angle = -end_angle
|
152
|
-
|
159
|
+
|
153
160
|
vertex = {}
|
154
161
|
point = [Math.cos(start_angle), Math.sin(start_angle)]
|
155
162
|
vertex[:point] = [center[0] + radius * point[0],
|
@@ -163,7 +170,7 @@ module Prawn
|
|
163
170
|
#stroke_circle_at(vertex[:handle2], :radius => 10)
|
164
171
|
# stroke_line(vertex[:point], vertex[:handle1])
|
165
172
|
vertices << vertex
|
166
|
-
|
173
|
+
|
167
174
|
vertex = {}
|
168
175
|
point = [Math.cos(end_angle), Math.sin(end_angle)]
|
169
176
|
vertex[:point] = [center[0] + radius * point[0],
|
@@ -193,7 +200,7 @@ class Array
|
|
193
200
|
return self if denominator == 0.0
|
194
201
|
[self[0] / denominator, self[1] / denominator]
|
195
202
|
end
|
196
|
-
|
203
|
+
|
197
204
|
# if :counter_clockwise => true option, then return a new vector
|
198
205
|
# that points 90 degrees counterlockwise of aVector with a magnitude
|
199
206
|
# of 1.0, otherwise return a new vector that points 90 degrees
|
data/lib/prawn_shapes/star.rb
CHANGED
@@ -16,6 +16,13 @@ module Prawn
|
|
16
16
|
polygon(*points)
|
17
17
|
end
|
18
18
|
|
19
|
+
ops = %w{fill stroke fill_and_stroke}
|
20
|
+
shapes = %w{star half_star}
|
21
|
+
|
22
|
+
ops.product(shapes).each do |operation,shape|
|
23
|
+
class_eval "def #{operation}_#{shape}(*args); #{shape}(*args); #{operation}; end"
|
24
|
+
end
|
25
|
+
|
19
26
|
private
|
20
27
|
|
21
28
|
# radius is the horizontal half-width of the star (the star is the hand-drawn type that looks more natural to the eye, so it does not fit perfectly into a circle)
|
data/prawn_shapes.gemspec
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# Version numbering: http://wiki.github.com/sandal/prawn/development-roadmap
|
2
|
-
PRAWN_SHAPES_VERSION = "
|
2
|
+
PRAWN_SHAPES_VERSION = "1.1.0"
|
3
3
|
|
4
4
|
Gem::Specification.new do |spec|
|
5
5
|
spec.name = "prawn_shapes"
|
@@ -13,13 +13,12 @@ Gem::Specification.new do |spec|
|
|
13
13
|
spec.required_rubygems_version = ">= 1.3.6"
|
14
14
|
|
15
15
|
spec.test_files = Dir[ "spec/*_spec.rb" ]
|
16
|
-
spec.has_rdoc = true
|
17
16
|
spec.extra_rdoc_files = %w{README.rdoc LICENSE}
|
18
17
|
spec.rdoc_options << '--title' << 'Prawn Oval Text Documentation' <<
|
19
18
|
'--main' << 'README.rdoc' << '-q'
|
20
19
|
spec.authors = ["Daniel Nelson"]
|
21
20
|
spec.email = ["dnelson@bluejade.com"]
|
22
|
-
spec.add_dependency('prawn', '
|
21
|
+
spec.add_dependency('prawn', '~> 1.1')
|
23
22
|
spec.homepage = "https://github.com/Bluejade/prawn-shapes"
|
24
23
|
spec.description = <<END_DESC
|
25
24
|
Adds additional vector shapes to Prawn
|
data/spec/arc_spec.rb
CHANGED
@@ -13,6 +13,36 @@ describe 'Graphics#pie_slice' do
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
+
describe 'Graphics#stroke_pie_slice' do
|
17
|
+
it 'should work' do
|
18
|
+
create_pdf
|
19
|
+
@pdf.stroke_pie_slice([100, 100], :radius => 50,
|
20
|
+
:start_angle => 0, :end_angle => 90)
|
21
|
+
curve = PDF::Inspector::Graphics::Curve.analyze(@pdf.render)
|
22
|
+
curve.coords.length.should > 0
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe 'Graphics#fill_pie_slice' do
|
27
|
+
it 'should work' do
|
28
|
+
create_pdf
|
29
|
+
@pdf.fill_pie_slice([100, 100], :radius => 50,
|
30
|
+
:start_angle => 0, :end_angle => 90)
|
31
|
+
curve = PDF::Inspector::Graphics::Curve.analyze(@pdf.render)
|
32
|
+
curve.coords.length.should > 0
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe 'Graphics#fill_and_stroke_pie_slice' do
|
37
|
+
it 'should work' do
|
38
|
+
create_pdf
|
39
|
+
@pdf.fill_and_stroke_pie_slice([100, 100], :radius => 50,
|
40
|
+
:start_angle => 0, :end_angle => 90)
|
41
|
+
curve = PDF::Inspector::Graphics::Curve.analyze(@pdf.render)
|
42
|
+
curve.coords.length.should > 0
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
16
46
|
describe 'Graphics#arc_around' do
|
17
47
|
it 'should work' do
|
18
48
|
create_pdf
|
data/spec/spec_helper.rb
CHANGED
@@ -5,10 +5,11 @@ require "bundler"
|
|
5
5
|
Bundler.setup
|
6
6
|
|
7
7
|
require "prawn"
|
8
|
-
require "
|
8
|
+
require "rspec"
|
9
9
|
require "mocha"
|
10
10
|
require "pdf/reader"
|
11
11
|
require "pdf/inspector"
|
12
|
+
require 'pry'
|
12
13
|
|
13
14
|
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), "..", "lib")
|
14
15
|
|
@@ -21,4 +22,4 @@ def create_pdf(klass=Prawn::Document)
|
|
21
22
|
:right_margin => 0,
|
22
23
|
:top_margin => 0,
|
23
24
|
:bottom_margin => 0)
|
24
|
-
end
|
25
|
+
end
|
metadata
CHANGED
@@ -1,31 +1,31 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: prawn_shapes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
5
|
-
prerelease:
|
4
|
+
version: 1.1.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Daniel Nelson
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
13
|
-
default_executable:
|
11
|
+
date: 2014-07-21 00:00:00.000000000 Z
|
14
12
|
dependencies:
|
15
13
|
- !ruby/object:Gem::Dependency
|
16
14
|
name: prawn
|
17
|
-
requirement:
|
18
|
-
none: false
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
19
16
|
requirements:
|
20
|
-
- -
|
17
|
+
- - ~>
|
21
18
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
19
|
+
version: '1.1'
|
23
20
|
type: :runtime
|
24
21
|
prerelease: false
|
25
|
-
version_requirements:
|
26
|
-
|
27
|
-
|
28
|
-
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.1'
|
27
|
+
description: |2
|
28
|
+
Adds additional vector shapes to Prawn
|
29
29
|
email:
|
30
30
|
- dnelson@bluejade.com
|
31
31
|
executables: []
|
@@ -34,22 +34,22 @@ extra_rdoc_files:
|
|
34
34
|
- README.rdoc
|
35
35
|
- LICENSE
|
36
36
|
files:
|
37
|
+
- LICENSE
|
38
|
+
- README.rdoc
|
39
|
+
- Rakefile
|
37
40
|
- examples/example_helper.rb
|
38
|
-
- examples/graphics/star.rb
|
39
41
|
- examples/graphics/arc.rb
|
42
|
+
- examples/graphics/star.rb
|
40
43
|
- lib/prawn_shapes.rb
|
41
|
-
- lib/prawn_shapes/star.rb
|
42
44
|
- lib/prawn_shapes/arc.rb
|
45
|
+
- lib/prawn_shapes/star.rb
|
46
|
+
- prawn_shapes.gemspec
|
47
|
+
- spec/arc_spec.rb
|
43
48
|
- spec/spec_helper.rb
|
44
49
|
- spec/star_spec.rb
|
45
|
-
- spec/arc_spec.rb
|
46
|
-
- Rakefile
|
47
|
-
- prawn_shapes.gemspec
|
48
|
-
- README.rdoc
|
49
|
-
- LICENSE
|
50
|
-
has_rdoc: true
|
51
50
|
homepage: https://github.com/Bluejade/prawn-shapes
|
52
51
|
licenses: []
|
52
|
+
metadata: {}
|
53
53
|
post_install_message:
|
54
54
|
rdoc_options:
|
55
55
|
- --title
|
@@ -60,23 +60,21 @@ rdoc_options:
|
|
60
60
|
require_paths:
|
61
61
|
- lib
|
62
62
|
required_ruby_version: !ruby/object:Gem::Requirement
|
63
|
-
none: false
|
64
63
|
requirements:
|
65
|
-
- -
|
64
|
+
- - '>='
|
66
65
|
- !ruby/object:Gem::Version
|
67
66
|
version: 1.8.7
|
68
67
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
69
|
-
none: false
|
70
68
|
requirements:
|
71
|
-
- -
|
69
|
+
- - '>='
|
72
70
|
- !ruby/object:Gem::Version
|
73
71
|
version: 1.3.6
|
74
72
|
requirements: []
|
75
73
|
rubyforge_project:
|
76
|
-
rubygems_version:
|
74
|
+
rubygems_version: 2.2.2
|
77
75
|
signing_key:
|
78
|
-
specification_version:
|
76
|
+
specification_version: 4
|
79
77
|
summary: Additional vector shapes for Prawn
|
80
78
|
test_files:
|
81
|
-
- spec/star_spec.rb
|
82
79
|
- spec/arc_spec.rb
|
80
|
+
- spec/star_spec.rb
|