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 CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- NDBhZmZlM2VkZWIzMWNmY2VhZGY1YWFkMDY2MGE3ZmM4MjZkYzkzYg==
5
- data.tar.gz: !binary |-
6
- ZGRmYzc2NDc3ZTgxN2QxZGFhNjA1YmM1YWZjYjZmMzdiYTAwOGQyMg==
2
+ SHA1:
3
+ metadata.gz: 9838c847b5421215855b81ac39942b75d8757129
4
+ data.tar.gz: 28fd5ffbeda27ceeaa869d909b9856160e3b180c
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- NWRkNGEzZTI4Y2NmODQyZDE5MjczMTczOTE3NjRmM2FkMmFjYjQ4OWM3MjM5
10
- MTE2MjY5MTM4M2FiZjIyNjdhNzY4NWI1NGJmMzRmODI0M2I0ZjgwYzkyOWQw
11
- NTg0OTVkYmY1YWY2N2E1YmJhNzM4ZmFmZDhmOTY4YmI5ZjEwZTQ=
12
- data.tar.gz: !binary |-
13
- OWViNjc0NmVmZjYzODFiMmUyOTdhMmU5ODc2ZDE4MDQxZmFhY2FiM2E4M2Zi
14
- ZTYyZjFhOTI1YWRmNTU2Y2U1YWZlOTI1MjY3MjQ0MzJmODI2YmM2MjkyMzUw
15
- YjdmZWQ5Y2ZjYmNjNjcyMDU1MDgxNmMyM2NhOTU3MTM5MTA5MTQ=
6
+ metadata.gz: 176c645245285856a5470ad8c739ec24eb7a2b8e037da8b34a52e71ae0150444ee3b9405ab9d89d5b4687d6a0d438eb84352a257bbe14ceedd3cb8ae4a406262
7
+ data.tar.gz: 6405780b186c442e4459c74c649cffffe77efb2b53f12c65ac1441c043eb64c1ad5c3f00d95817925081eaedd3ddc30b354fc8086c9bf40119cd185e6f45be47
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Fretboards
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -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.2
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: 2014-05-15 00:00:00.000000000 Z
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.2.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