fretboards 0.0.2 → 0.0.3

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 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