r2dsvg 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (6) hide show
  1. checksums.yaml +7 -0
  2. checksums.yaml.gz.sig +3 -0
  3. data/lib/r2dsvg.rb +145 -0
  4. data.tar.gz.sig +0 -0
  5. metadata +130 -0
  6. metadata.gz.sig +0 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: ace8319852e656e2f92b8277bf237679fd0607f475d8d3cf8202eaed8ed583d7
4
+ data.tar.gz: 55fa2c0ee725a5fd8c22ebac07d0d8cf0f54598c9934e2152ff6245a1386d85e
5
+ SHA512:
6
+ metadata.gz: ba05b63001637286b4d9adfbab2f8e3b39871b74933e513785e0fda4b860fcd6695952d56c01d2a0272566f9b6a59869219d74f531c9820ea05642e3026110e8
7
+ data.tar.gz: c39b551a7b759b376844352e0c8150c76c5a7b9d064a9e89d007f82b0e6e9589d44e5d561043de4a226bfa9ff427d9d32c7a3b720de80b7ef729fca38b049bca
checksums.yaml.gz.sig ADDED
@@ -0,0 +1,3 @@
1
+ H
2
+
3
+ ��ϓ��WȤ$�5�o��-�+����-��T�\�R�Z����O٦.�m����|��g ��|l!$��'l�`�ڤu���fu���~I����# ����-/���fru8|�d��l�n�kYeܬF`���R+s��Da�3��g�^���o�))\g���:wk�<�s)���[4�,�qJ��`H���
data/lib/r2dsvg.rb ADDED
@@ -0,0 +1,145 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # file: r2dsvg.rb
4
+
5
+ # Description: Experimental gem to render SVG within a Ruby2D application.
6
+
7
+
8
+ require 'svgle'
9
+ require 'ruby2d' # experimental gem depends upon simple2d binaries
10
+ require 'dom_render'
11
+
12
+
13
+
14
+ class R2dSvg
15
+ include Ruby2D
16
+ using ColouredText
17
+
18
+ class Render < DomRender
19
+
20
+ def rect(e, attributes, raw_style)
21
+
22
+ puts 'inside rect attributes: ' + attributes.inspect if @debug
23
+ style = style_filter(attributes).merge(raw_style)
24
+ h = attributes
25
+
26
+ x1, y1, width, height = %i(x y width height).map{|x| h[x].to_i }
27
+ x2, y2, = x1 + width, y1 + height
28
+
29
+ [:draw_rectangle, [x1, y1, x2, y2], style, render_all(e)]
30
+ end
31
+
32
+ def svg(e, attributes, raw_style)
33
+
34
+ style = style_filter(attributes).merge(raw_style)
35
+
36
+ h = attributes
37
+ width, height = %i(width height).map{|x| h[x].to_i }
38
+
39
+ [:draw_rectangle, [0, 0, width, height], style, render_all(e)]
40
+ end
41
+
42
+ private
43
+
44
+ def style_filter(attributes)
45
+
46
+ %i(stroke stroke-width fill z-index).inject({}) do |r,x|
47
+ attributes.has_key?(x) ? r.merge(x => attributes[x]) : r
48
+ end
49
+
50
+ end
51
+
52
+ end
53
+
54
+ class DrawingInstructions
55
+ using ColouredText
56
+
57
+ attr_accessor :area
58
+
59
+
60
+ def initialize(window, debug: false)
61
+
62
+ @window, @debug = window, debug
63
+
64
+ end
65
+
66
+ def draw_rectangle(args)
67
+
68
+ coords, style = args
69
+
70
+ x1, y1, x2, y2 = coords
71
+
72
+ if @debug then
73
+ puts 'inside draw_rectangle'.info
74
+ puts ('style: ' + style.inspect).debug
75
+ end
76
+
77
+ @window.add Rectangle.new(
78
+ x: x1, y: y1,
79
+ width: x2 - x1, height: y2 - y1,
80
+ color: style[:fill],
81
+ z: style[:"z-index"].to_i
82
+ )
83
+
84
+ end
85
+
86
+ def window(args)
87
+ end
88
+
89
+ def render(a)
90
+ method(a[0]).call(args=a[1..2])
91
+ draw a[3]
92
+ end
93
+
94
+
95
+ private
96
+
97
+ def draw(a)
98
+
99
+ a.each do |rawx|
100
+
101
+ x, *remaining = rawx
102
+
103
+ if x.is_a? Symbol then
104
+ method(x).call(args=remaining)
105
+ elsif x.is_a? String then
106
+ draw remaining
107
+ elsif x.is_a? Array
108
+ draw remaining
109
+ else
110
+ method(x).call(remaining.take 2)
111
+ end
112
+
113
+ end
114
+
115
+ end
116
+
117
+ end
118
+
119
+ def initialize(svg, title: 'R2dSVG', debug: false)
120
+
121
+ @svg, @debug = svg, debug
122
+ doc = Svgle.new(svg, callback: self, debug: debug)
123
+ instructions = Render.new(doc, debug: debug).to_a
124
+
125
+ window = Window.new
126
+ drawing = DrawingInstructions.new window, debug: debug
127
+ puts ('instructions: ' + instructions.inspect).debug if @debug
128
+
129
+ @width, @height = %i(width height).map{|x| doc.root.attributes[x].to_i }
130
+ window.set title: title, width: @width, height: @height
131
+
132
+ drawing.render instructions
133
+ window.show
134
+ end
135
+ end
136
+
137
+
138
+ if __FILE__ == $0 then
139
+
140
+ # Read an SVG file
141
+ svg = File.read(ARGV[0])
142
+
143
+ app = R2dSvg.new svg
144
+
145
+ end
data.tar.gz.sig ADDED
Binary file
metadata ADDED
@@ -0,0 +1,130 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: r2dsvg
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - James Robertson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
14
+ YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMTkwMjI0MTUwMTAwWhcN
15
+ MjAwMjI0MTUwMTAwWjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
+ cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCm1HdP
17
+ w16RoJrJtDnLGLrKsxYgef4nzZif9w8E9yuNoYc98dvnGvOhlU9cAEg6CLGpfmYT
18
+ jmIhNQ1xFBUYRQlsSh3mrPp8sOV5jqd+s31g/Sa/hdY9Xj9klojEW0jdIe/oOPWu
19
+ lhUWf6kOs6BUKSU1Sv3d7bW2v5o22nItXXSu4ncmNipLlnF5sYyW0dHh5f/9iaV1
20
+ DJXwHmwtNvQTSoQX5+RqT4pCftn4GRCH/Jj7PZnEYg6eIBToNjYETMdEfj6wivgz
21
+ uZgd/QFYeDD2BfCaV7SHBxL6O+4AJunq/ZbUqkHO0mNoR4ZHrtEFrCZq63OLkBuF
22
+ H7wvmNInvl0WJjBnOWiewCiukOfo0szEmAY4ol7946coghPTMd3VNHUlNfMop4/a
23
+ P4pcrvYWvrVW/GtBC3MVSLesP8D6IPc2kpViChOyo68U0tRq6IdXKAIR4GuPG/OR
24
+ VSGVrkAzG3j+h/tD0wmfSYlE6es1gQ1425z4ljqEpAG0SSYQnamtsWGsmbUCAwEA
25
+ AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUrUSMYRp3
26
+ 1ekG8TFSXJ+VAoqH2OgwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
+ c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
+ BgkqhkiG9w0BAQsFAAOCAYEAo6JZdBbBIo3dNWbnhXes7iMTe2KiX1LZqw0vPdSW
29
+ C4zrtVK4KSTH3fUcXS5BoevuuFlEDacX/LDFz44h1XKoRDUXnrcvJKky8l65O2ZE
30
+ RQynlQG0OQSxCEeuYnF6n8/4jUVWoWdVIwuQwNz06SvDL5mTfTHAupjcwRTQz2u8
31
+ r776IRslpFo7q5fQz9d3kWOTPnDlmJ4Gsakh30/vpWoprbTMuVawfTQlJz8UasPE
32
+ XgPn7jQA/mX4iqABzRDTg+lqbb2BOU3saWBK3vK7fh+a/cJ8OMmLrsMqMj4cUx7J
33
+ ZIVROhlwO0MAl6Cpa1rwq9FNz2tiq1cXGAd/oGa/K2PvEZop7upaz+ZvhnlC4Fne
34
+ TYnQ3G01gSZ88tRRFI24m/UgpKE8uQ9SnkHYcgPVXBbq3kTUqrTSsWjE3V7hN7bB
35
+ 7avBPtmJXpQsK1kfdmXP/+tfAIa7KGseabm2+ntraqYNgx3DqyZur8IRdJFi/DPc
36
+ 113q/9KjkLj6C+dR0HuLRW1c
37
+ -----END CERTIFICATE-----
38
+ date: 2019-02-24 00:00:00.000000000 Z
39
+ dependencies:
40
+ - !ruby/object:Gem::Dependency
41
+ name: svgle
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '0.4'
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 0.4.4
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: '0.4'
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: 0.4.4
60
+ - !ruby/object:Gem::Dependency
61
+ name: ruby2d
62
+ requirement: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: '0.8'
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: 0.8.1
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '0.8'
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: 0.8.1
80
+ - !ruby/object:Gem::Dependency
81
+ name: dom_render
82
+ requirement: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - "~>"
85
+ - !ruby/object:Gem::Version
86
+ version: '0.3'
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: 0.3.2
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0.3'
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: 0.3.2
100
+ description:
101
+ email: james@jamesrobertson.eu
102
+ executables: []
103
+ extensions: []
104
+ extra_rdoc_files: []
105
+ files:
106
+ - lib/r2dsvg.rb
107
+ homepage: https://github.com/jrobertson/r2dsvg
108
+ licenses:
109
+ - MIT
110
+ metadata: {}
111
+ post_install_message:
112
+ rdoc_options: []
113
+ require_paths:
114
+ - lib
115
+ required_ruby_version: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
+ required_rubygems_version: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ requirements: []
126
+ rubygems_version: 3.0.1
127
+ signing_key:
128
+ specification_version: 4
129
+ summary: Experimental gem to render SVG within a Ruby2D application.
130
+ test_files: []
metadata.gz.sig ADDED
Binary file