fretboards 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -13
- data/lib/fretboards/fretboard.rb +14 -3
- data/lib/fretboards/renderer/svg.rb +4 -4
- data/lib/fretboards/renderer/text.rb +19 -0
- data/lib/fretboards/version.rb +1 -1
- data/test/test_text_renderer.rb +44 -0
- metadata +11 -8
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
ZGRmYzc2NDc3ZTgxN2QxZGFhNjA1YmM1YWZjYjZmMzdiYTAwOGQyMg==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 9838c847b5421215855b81ac39942b75d8757129
|
4
|
+
data.tar.gz: 28fd5ffbeda27ceeaa869d909b9856160e3b180c
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
MTE2MjY5MTM4M2FiZjIyNjdhNzY4NWI1NGJmMzRmODI0M2I0ZjgwYzkyOWQw
|
11
|
-
NTg0OTVkYmY1YWY2N2E1YmJhNzM4ZmFmZDhmOTY4YmI5ZjEwZTQ=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
OWViNjc0NmVmZjYzODFiMmUyOTdhMmU5ODc2ZDE4MDQxZmFhY2FiM2E4M2Zi
|
14
|
-
ZTYyZjFhOTI1YWRmNTU2Y2U1YWZlOTI1MjY3MjQ0MzJmODI2YmM2MjkyMzUw
|
15
|
-
YjdmZWQ5Y2ZjYmNjNjcyMDU1MDgxNmMyM2NhOTU3MTM5MTA5MTQ=
|
6
|
+
metadata.gz: 176c645245285856a5470ad8c739ec24eb7a2b8e037da8b34a52e71ae0150444ee3b9405ab9d89d5b4687d6a0d438eb84352a257bbe14ceedd3cb8ae4a406262
|
7
|
+
data.tar.gz: 6405780b186c442e4459c74c649cffffe77efb2b53f12c65ac1441c043eb64c1ad5c3f00d95817925081eaedd3ddc30b354fc8086c9bf40119cd185e6f45be47
|
data/lib/fretboards/fretboard.rb
CHANGED
@@ -3,7 +3,7 @@ require "fretboards/pitch"
|
|
3
3
|
module Fretboards
|
4
4
|
class Fretboard
|
5
5
|
|
6
|
-
attr_reader :marks, :labels, :barres, :conf, :opens, :mutes
|
6
|
+
attr_reader :marks, :labels, :barres, :conf, :opens, :mutes, :label_offset, :offset
|
7
7
|
|
8
8
|
attr_accessor :title
|
9
9
|
|
@@ -17,6 +17,8 @@ module Fretboards
|
|
17
17
|
}
|
18
18
|
@mutes = []
|
19
19
|
@opens = []
|
20
|
+
@offset = 0
|
21
|
+
@label_offset = 0
|
20
22
|
configure(conf)
|
21
23
|
self.instance_eval block if block_given?
|
22
24
|
end
|
@@ -69,7 +71,16 @@ module Fretboards
|
|
69
71
|
self
|
70
72
|
end
|
71
73
|
|
72
|
-
|
74
|
+
def set_offset(n)
|
75
|
+
@offset = n
|
76
|
+
self
|
77
|
+
end
|
78
|
+
|
79
|
+
def set_label_offset(n)
|
80
|
+
@label_offset = n
|
81
|
+
self
|
82
|
+
end
|
83
|
+
|
73
84
|
|
74
85
|
def mark(s, f = nil, settings = {})
|
75
86
|
if !s.is_a? Hash
|
@@ -193,7 +204,7 @@ module Fretboards
|
|
193
204
|
# puts "#{self.title} pasa por el segundo hilo"
|
194
205
|
min = 1 if min == 0
|
195
206
|
max = (min + size) if (size > (max - min) )
|
196
|
-
[min, max]
|
207
|
+
[min + offset, max + offset]
|
197
208
|
end
|
198
209
|
end
|
199
210
|
end
|
@@ -39,7 +39,7 @@ module Fretboards
|
|
39
39
|
:string_ext_top => 5,
|
40
40
|
:fret_ext_left => 2,
|
41
41
|
:fret_ext_right => 2,
|
42
|
-
:string_widths => [ 2, 2, 2, 2 ], # TODO calculate on demand if not passed
|
42
|
+
:string_widths => [ 2, 2, 2, 2, 2, 2 ], # TODO calculate on demand if not passed
|
43
43
|
:fret_reduction_factor => 0.95,
|
44
44
|
:rectangular_frets => true,
|
45
45
|
:fret_count => 4,
|
@@ -99,7 +99,7 @@ module Fretboards
|
|
99
99
|
end
|
100
100
|
|
101
101
|
def string_spacing
|
102
|
-
(@opts[:width] - @opts[:padding_left] - @opts[:padding_right]) / (@fb.string_count - 1)
|
102
|
+
(@opts[:width] - @opts[:padding_left] - @opts[:padding_right]) / ((@fb.string_count - 1).to_f)
|
103
103
|
end
|
104
104
|
|
105
105
|
def draw_strings(svg)
|
@@ -145,10 +145,10 @@ module Fretboards
|
|
145
145
|
def draw_labels(svg)
|
146
146
|
fret_range = @fb.fret_range(@opts[:fret_count])
|
147
147
|
if fret_range.first > 1
|
148
|
-
y = get_dot_position(0, fret_range.first)[1] + @opts[:label_attrs][:"font-size"] * 0.4
|
148
|
+
y = get_dot_position(0, fret_range.first + @fb.label_offset)[1] + @opts[:label_attrs][:"font-size"] * 0.4
|
149
149
|
x = @opts[:padding_left] - @opts[:label_attrs][:"font-size"] * 1.25
|
150
150
|
# TODO allow rotating
|
151
|
-
svg.text(fret_range.first, { :y => y, :x => x, :class => 'label' }.merge(@opts[:label_attrs]))
|
151
|
+
svg.text(fret_range.first + @fb.label_offset, { :y => y, :x => x, :class => 'label' }.merge(@opts[:label_attrs]))
|
152
152
|
end
|
153
153
|
end
|
154
154
|
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'fretboards/renderer/base'
|
2
|
+
|
3
|
+
module Fretboards
|
4
|
+
module Renderer
|
5
|
+
class Text < Base
|
6
|
+
|
7
|
+
def render(fb)
|
8
|
+
@fb = fb
|
9
|
+
output_marks = []
|
10
|
+
@fb.string_count.downto(1).each do |n|
|
11
|
+
mark = fb.marks.find { |m| m[:string] == n && m[:symbol] != :phantom }
|
12
|
+
output_marks << (!mark.nil? ? mark[:fret] : "x" )
|
13
|
+
end
|
14
|
+
output = output_marks.join(" ")
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/fretboards/version.rb
CHANGED
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'fretboards'
|
3
|
+
require 'fretboards/renderer/text'
|
4
|
+
|
5
|
+
include Fretboards
|
6
|
+
|
7
|
+
class TextRendererTest < Test::Unit::TestCase
|
8
|
+
def test_string_count
|
9
|
+
fb = Fretboard.new
|
10
|
+
renderer = Fretboards::Renderer::Text.new
|
11
|
+
output = renderer.render(fb)
|
12
|
+
assert_equal(4, output.split(' ').size)
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_one_mark_each_string
|
16
|
+
fb = Fretboard.new
|
17
|
+
fb.terse(%w{ 0 0 0 3 })
|
18
|
+
renderer = Fretboards::Renderer::Text.new
|
19
|
+
output = renderer.render(fb)
|
20
|
+
assert_equal("0 0 0 3", output)
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_some_strings_unfretted
|
24
|
+
fb = Fretboard.new
|
25
|
+
fb.terse(%w{ 3/1 })
|
26
|
+
renderer = Fretboards::Renderer::Text.new
|
27
|
+
output = renderer.render(fb)
|
28
|
+
assert_equal("x x x 3", output)
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_obliviate_phantom_notes
|
32
|
+
fb = Fretboard.new
|
33
|
+
renderer = Fretboards::Renderer::Text.new
|
34
|
+
fb.terse(%w{ 3/4 4/3 3/2 3/1? 5/1})
|
35
|
+
output = renderer.render(fb)
|
36
|
+
assert_equal("3 4 3 5", output)
|
37
|
+
|
38
|
+
fb.terse(%w{ 3/4 4/3 3/2 3/1!? 5/1})
|
39
|
+
puts fb.marks.inspect
|
40
|
+
output = renderer.render(fb)
|
41
|
+
assert_equal("3 4 3 5", output)
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
metadata
CHANGED
@@ -1,27 +1,27 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fretboards
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Choan Galvez
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-06-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: builder
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
description: Allows defining instrument fretboard structures and representing them
|
@@ -33,7 +33,7 @@ executables:
|
|
33
33
|
extensions: []
|
34
34
|
extra_rdoc_files: []
|
35
35
|
files:
|
36
|
-
- .gitignore
|
36
|
+
- ".gitignore"
|
37
37
|
- Gemfile
|
38
38
|
- Rakefile
|
39
39
|
- bin/fretboards_render
|
@@ -46,10 +46,12 @@ files:
|
|
46
46
|
- lib/fretboards/pitch.rb
|
47
47
|
- lib/fretboards/renderer/base.rb
|
48
48
|
- lib/fretboards/renderer/svg.rb
|
49
|
+
- lib/fretboards/renderer/text.rb
|
49
50
|
- lib/fretboards/tuning.rb
|
50
51
|
- lib/fretboards/version.rb
|
51
52
|
- readme.mdown
|
52
53
|
- test/test_fretboard.rb
|
54
|
+
- test/test_text_renderer.rb
|
53
55
|
homepage: ''
|
54
56
|
licenses: []
|
55
57
|
metadata: {}
|
@@ -59,19 +61,20 @@ require_paths:
|
|
59
61
|
- lib
|
60
62
|
required_ruby_version: !ruby/object:Gem::Requirement
|
61
63
|
requirements:
|
62
|
-
- -
|
64
|
+
- - ">="
|
63
65
|
- !ruby/object:Gem::Version
|
64
66
|
version: '0'
|
65
67
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
66
68
|
requirements:
|
67
|
-
- -
|
69
|
+
- - ">="
|
68
70
|
- !ruby/object:Gem::Version
|
69
71
|
version: '0'
|
70
72
|
requirements: []
|
71
73
|
rubyforge_project: fretboards
|
72
|
-
rubygems_version: 2.
|
74
|
+
rubygems_version: 2.4.2
|
73
75
|
signing_key:
|
74
76
|
specification_version: 4
|
75
77
|
summary: Define and draw fretboards
|
76
78
|
test_files:
|
77
79
|
- test/test_fretboard.rb
|
80
|
+
- test/test_text_renderer.rb
|