svg_drawer 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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