svg_drawer 1.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2f0dea008c28aa454fd56e928243d4fd0c29416e
4
- data.tar.gz: 2e5c8ada45634e66bbb397c573dd962e6d32777e
3
+ metadata.gz: 67e816a4f1d1374b19062873a74cd131fcd844d6
4
+ data.tar.gz: 9582d217d457cd39654878b9ef8f8e1e55e40dae
5
5
  SHA512:
6
- metadata.gz: bfec3b7b141046aa6d9fd92062a66f1422bf71e28e31fe86a31fc2d3b113c773e9769f05af23018796bc74c16bb8b84b14b5a3fde96327a634226920ced62283
7
- data.tar.gz: 352534a521f5eef69c88a26a4a3cd5fe830d2bcc999f868d0af6f3859fad15ea4d178ddecef8241f4fd698331a869bce2d014cd4169b179d370eb86b06fc66a6
6
+ metadata.gz: fdf36de00b438e46fbc84e58f79a83e3ae3799922cc51c1b9a6eaf3a44faaa02609ab008d751858be486efc9b8b4906b5efe2b29cda6cfd3bba6b9ef9869fa82
7
+ data.tar.gz: f146c30aa7bed301be4f32331eb443f390987ce5d3bf014fb8567e4b4f0c1cc9a52b0a253b2a30c3d924a5f5fa1d3bfc758cc55497619304faf9a3b4dbecdee0
@@ -31,7 +31,7 @@ default:
31
31
  width: 0.596
32
32
 
33
33
  'Courier New':
34
- width: 0.8
34
+ width: 0.61
35
35
 
36
36
  'Arial':
37
37
  width: 0.63
@@ -23,6 +23,7 @@ require 'svg_drawer/multipolyline'
23
23
  require 'svg_drawer/line'
24
24
  require 'svg_drawer/path'
25
25
  require 'svg_drawer/circle'
26
+ require 'svg_drawer/image'
26
27
  require 'svg_drawer/table/cell'
27
28
  require 'svg_drawer/table/blank_row'
28
29
  require 'svg_drawer/table/row'
@@ -0,0 +1,45 @@
1
+ module SvgDrawer
2
+ class Image < Base
3
+ # Required since there is no known way to calculate them
4
+ requires :width
5
+ requires :height
6
+
7
+ # Retranslate ensures the parent element can correctly draw borders
8
+ defaults scale: [1, 1],
9
+ overflow: true,
10
+ retranslate: false # true not supported
11
+
12
+ def initialize(href, params = {})
13
+ @href = href
14
+ super(params)
15
+ end
16
+
17
+ def width
18
+ param(:width)
19
+ end
20
+
21
+ def height
22
+ param(:height)
23
+ end
24
+
25
+ def incomplete
26
+ false
27
+ end
28
+
29
+ private
30
+
31
+ def _draw(parent)
32
+ # No idea how to find boundary coordinates
33
+ raise NotImplementedError if param(:retranslate)
34
+
35
+ Utils::RasemWrapper.group(parent, class: 'image') do |image_group|
36
+ w = param(:width) unless param(:overflow)
37
+ h = param(:height) unless param(:overflow)
38
+
39
+ res = image_group.image(nil, nil, w, h, @href)
40
+ %i[x y width height].each { |k| res.attributes.delete(k) if res.attributes[k].blank? }
41
+ res
42
+ end.scale(*param(:scale))
43
+ end
44
+ end
45
+ end
@@ -5,13 +5,15 @@ module SvgDrawer
5
5
  requires :height
6
6
 
7
7
  # Retranslate ensures the parent element can correctly draw borders
8
- defaults scale: [1, 1],
8
+ defaults fill: 'black',
9
+ stroke: 'none',
10
+ scale: [1, 1],
9
11
  overflow: true, # false not supported
10
12
  retranslate: false # true not supported
11
13
 
12
- def initialize(path_components, defaults = {})
13
- super(defaults)
14
+ def initialize(path_components, params = {})
14
15
  @components = path_components
16
+ super(params)
15
17
  end
16
18
 
17
19
  # No idea how to compute dimensions for paths
@@ -35,8 +37,12 @@ module SvgDrawer
35
37
  # No idea how to find boundary coordinates
36
38
  raise NotImplementedError if param(:retranslate)
37
39
 
40
+ style = {}
41
+ style[:fill] = param(:fill)
42
+ style[:stroke] = param(:stroke)
43
+
38
44
  Utils::RasemWrapper.group(parent, class: 'path') do |path_group|
39
- @components.each { |path| path_group.path(d: path) }
45
+ @components.each { |path| path_group.path(d: path, style: style) }
40
46
  end.scale(*param(:scale))
41
47
  end
42
48
  end
@@ -47,6 +47,10 @@ module SvgDrawer
47
47
  @content = Circle.new(center, radius, params.merge(inherited: child_params))
48
48
  end
49
49
 
50
+ def image(href, params = {})
51
+ @content = Image.new(href, params.merge(inherited: child_params))
52
+ end
53
+
50
54
  #
51
55
  # See Row#draw for info on col_width and row_height
52
56
  #
@@ -82,6 +82,10 @@ module SvgDrawer
82
82
  cell(params) { |c| c.circle(center, radius) }
83
83
  end
84
84
 
85
+ def image_cell(href, params = {})
86
+ cell(params) { |c| c.image(href) }
87
+ end
88
+
85
89
  private
86
90
 
87
91
  #
@@ -88,6 +88,10 @@ module SvgDrawer
88
88
  row(params) { |r| r.circle_cell(center, radius) }
89
89
  end
90
90
 
91
+ def image_row(href, params = {})
92
+ row(params) { |r| r.image_cell(href) }
93
+ end
94
+
91
95
  def sub_table_row(params = {})
92
96
  t = Table.new(params)
93
97
  row { |r| r.cell { |c| c.content(t) && yield(t) } }
@@ -1,3 +1,3 @@
1
1
  module SvgDrawer
2
- VERSION = '1.0.1'
2
+ VERSION = '1.1.0'
3
3
  end
@@ -18,4 +18,5 @@ Gem::Specification.new do |spec|
18
18
  spec.add_dependency 'rasem', '~> 0.7'
19
19
  spec.add_development_dependency 'bundler', '~> 1.15'
20
20
  spec.add_development_dependency 'rspec', '~> 3.0'
21
+ spec.add_development_dependency 'pry-byebug'
21
22
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: svg_drawer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Simeon Manolov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-11-29 00:00:00.000000000 Z
11
+ date: 2018-03-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rasem
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry-byebug
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  description:
56
70
  email:
57
71
  - s.manolloff@gmail.com
@@ -64,6 +78,7 @@ files:
64
78
  - lib/svg_drawer.rb
65
79
  - lib/svg_drawer/base.rb
66
80
  - lib/svg_drawer/circle.rb
81
+ - lib/svg_drawer/image.rb
67
82
  - lib/svg_drawer/line.rb
68
83
  - lib/svg_drawer/multipolyline.rb
69
84
  - lib/svg_drawer/path.rb