r2dsvg 0.3.1 → 0.5.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 +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/lib/r2dsvg.rb +152 -395
  5. metadata +59 -39
  6. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1b533b526c3036bd4871bd65fb8290c7940edadd27093997eeafd6dd1b9da764
4
- data.tar.gz: 720f44a65ebdd583408e11bd2538c57023f4d862e81b9a87bc8fa063f7712e02
3
+ metadata.gz: 218f3f75c56256cfbf3ccd9f0755d31bfad7ec53ae8a235e32103118de2fc8e9
4
+ data.tar.gz: 21aba9150ca1a85bfe48352c02e5bac17b276de41133b97d4e887a823bd85a2d
5
5
  SHA512:
6
- metadata.gz: 2d0c784f1ef2a3fe4a9900e9f0d340b69f9b9d2d578a68e99d36b845f15b0ece63a4c5a8ac895c4c490466d76c68ffc77ef725ffcaa550740d83111053951eab
7
- data.tar.gz: 53a22ec28deaa9fd2f0852697f9f5a395c73ac5cc4999d9bd0502969a7f62ace94f65133d5091d336da923617d2962f2b0d816bdcb0b402e1b221197fab41b19
6
+ metadata.gz: 0250d7a5f4a76af1811e16ad9d38a9e9be12a13708abf20698876a5a94d22fa293ce94bb879d19f900fa802e78b85e73c8eedc455418cf7dd7685f70938a9181
7
+ data.tar.gz: 8fe0f560dddc4f193338019384356665170fb130a08f03407a3dda0709d03e4b91ed3fbf40c7cb2a0911344a915ab0aa6b9d92b6c28db584e3654a7c1c349200
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -5,468 +5,225 @@
5
5
  # Description: Experimental gem to render SVG within a Ruby2D application.
6
6
 
7
7
 
8
- require 'svgle'
9
- require 'ruby2d' # experimental gem depends upon simple2d binaries
10
- require 'dom_render'
8
+ require 'r2dsvg/r2dsvg_module'
11
9
 
12
10
 
13
- DEFAULT_CSS = <<CSS
14
-
15
- svg {background-color: white}
16
- rect {fill: yellow}
17
- line, polyline {stroke: green; stroke-width: 3}
18
- text {fill: red, size: 20}
19
-
20
- CSS
21
-
22
- module SvgleX
11
+ class Reader
12
+ include R2dEngine
13
+ using ColouredText
23
14
 
24
- refine Svgle::Element do
15
+ def initialize(s, model=Svgle, debug: false)
25
16
 
26
- def obj=(object)
27
- @obj = object
28
- end
17
+ svg, _ = RXFHelper.read(s)
18
+ doc = model.new(svg, debug: debug)
19
+ @a = Render.new(doc, debug: debug).to_a
29
20
 
30
- def obj()
31
- @obj
32
- end
33
21
 
34
22
  end
35
23
 
24
+ def to_a()
25
+ @a
26
+ end
27
+
36
28
  end
37
29
 
38
30
  class R2dSvg
39
31
  include Ruby2D
32
+ include R2dEngine
40
33
  using ColouredText
41
34
  using SvgleX
42
35
 
43
- class Render < DomRender
44
-
45
- def audio(e, attributes, raw_style)
46
-
47
- puts 'inside audio attributes: ' + attributes.inspect if @debug
48
- style = style_filter(attributes).merge(raw_style)
49
- h = attributes
50
-
51
- sources = e.xpath('source').map do |x|
52
- h = x.attributes.to_h
53
- h.delete :style
54
- h
55
- end
56
-
57
- [:embed_audio, sources, e]
58
- end
59
-
60
- def circle(e, attributes, raw_style)
61
-
62
- style = style_filter(attributes).merge(raw_style)
63
-
64
- h = attributes
65
-
66
- x, y, radius= %i(cx cy r).map{|x| h[x].to_i }
67
- fill = h[:fill]
68
-
69
-
70
- [:draw_circle, [x, y], radius, fill, style, render_all(e)]
71
- end
72
-
73
- # not yet implemented
74
- #
75
- def ellipse(e, attributes, raw_style)
76
-
77
- style = style_filter(attributes).merge(raw_style)
78
- h = attributes
36
+ attr_reader :doc
79
37
 
80
- x, y= %i(cx cy).map{|x| h[x].to_i }
81
- width = h[:rx].to_i * 2
82
- height = h[:ry].to_i * 2
38
+ def initialize(s, title: 'R2dSVG', debug: false, server: false)
83
39
 
84
- [:draw_arc, [x, y, width, height], style, render_all(e)]
85
- end
40
+ @debug = debug
86
41
 
87
- def line(e, attributes, raw_style)
88
-
89
- style = style_filter(attributes).merge(raw_style)
90
-
91
- x1, y1, x2, y2 = %i(x1 y1 x2 y2).map{|x| attributes[x].to_i }
92
-
93
- [:draw_line, [x1, y1, x2, y2], style, render_all(e)]
94
- end
95
-
42
+ @window = window = Window.new
43
+ @loaded = false
44
+ @model = Svgle
96
45
 
97
- def image(e, attributes, raw_style)
98
-
99
- style = style_filter(attributes).merge(raw_style)
100
- h = attributes
101
-
102
- x, y, width, height = %i(x y width height).map{|x| h[x] ? h[x].to_i : nil }
103
- src = h[:'xlink:href']
104
-
105
- [:draw_image, [x, y, width, height], src, style, e, render_all(e)]
106
- end
107
-
108
- def polygon(e, attributes, raw_style)
109
-
110
- style = style_filter(attributes).merge(raw_style)
111
- points = attributes[:points].split(/\s+/). \
112
- map {|x| x.split(/\s*,\s*/).map(&:to_i)}
46
+ read(s, title)
113
47
 
114
- [:draw_polygon, points, style, e, render_all(e)]
115
- end
116
-
117
- def polyline(e, attributes, raw_style)
118
-
119
- style = style_filter(attributes).merge(raw_style)
120
- points = attributes[:points].split(/\s+/). \
121
- map {|x| x.split(/\s*,\s*/).map(&:to_i)}
122
-
123
- [:draw_lines, points, style, render_all(e)]
124
- end
125
-
126
- def rect(e, attributes, raw_style)
127
-
128
- puts 'inside rect attributes: ' + attributes.inspect if @debug
129
- style = style_filter(attributes).merge(raw_style)
130
- h = attributes
131
-
132
- x1, y1, width, height = %i(x y width height).map{|x| h[x].to_i }
133
- x2, y2, = x1 + width, y1 + height
134
-
135
- [:draw_rectangle, [x1, y1, x2, y2], style, e, render_all(e)]
48
+ if server then
49
+ drb = OneDrb::Server.new(host: '127.0.0.1', port: '57844', obj: self)
50
+ Thread.new { drb.start }
136
51
  end
137
52
 
138
- def script(e, attributes, style)
139
- [:script]
140
- end
141
-
142
- def svg(e, attributes, raw_style)
143
-
144
- style = style_filter(attributes).merge(raw_style)
145
-
146
- h = attributes
147
- width, height = %i(width height).map{|x| h[x].to_i }
53
+ if @loaded then
148
54
 
149
- [:draw_rectangle, [0, 0, width, height], style, render_all(e)]
150
- end
151
-
152
- def text(e, attributes, raw_style)
153
-
154
- style = style_filter(attributes).merge(raw_style)
155
- style.merge!({font_size: '20'})
156
-
157
- x, y = %i(x y).map{|x| attributes[x].to_i }
158
-
159
- [:draw_text, [x, y], e.text, style, e, render_all(e)]
160
- end
55
+ window.on(:mouse_move) do |event|
56
+ mouse :mousemove, event
57
+ mouse :mouseenter, event
58
+ end
59
+
60
+ window.on(:mouse_down) do |event|
161
61
 
162
- private
62
+ if event.button == :left then
63
+
64
+ # click and mousedown do the same thing
65
+ mouse :click, event
66
+ mouse :mousedown, event
67
+ end
68
+
69
+ end
163
70
 
164
- def style_filter(attributes)
165
-
166
- %i(stroke stroke-width fill z-index).inject({}) do |r,x|
167
- attributes.has_key?(x) ? r.merge(x => attributes[x]) : r
71
+ window.on :key_down do |event|
72
+ # A key was pressed
73
+ keyboard :keydown, event
168
74
  end
169
75
 
170
76
  end
171
-
172
- end
173
-
174
- class DrawingInstructions
175
- using ColouredText
176
-
177
- attr_accessor :area
178
-
179
-
180
- def initialize(window, debug: false)
181
-
182
- @window, @debug = window, debug
183
-
77
+ =begin
78
+ window.on :key_held do |event|
79
+ # A key is being held down
80
+ puts event.key
81
+ keyboard :onkeyheld, event
184
82
  end
185
83
 
186
- def draw_arc(args)
187
-
188
- dimensions, style = args
189
-
190
- x, y, width, height = dimensions
191
-
192
- #gc = gc_ini(fill: style[:fill] || :none)
193
- #@area.window.draw_arc(gc, 1, x, y, width, height, 0, 64 * 360)
194
- end
195
-
196
- def draw_circle(args)
197
-
198
- coords, radius, fill, style, e = args
199
-
200
- x1, y1 = coords
201
-
202
- if @debug then
203
- puts 'inside draw_circle'.info
204
- puts ('style: ' + style.inspect).debug
205
- end
206
-
207
- obj = Circle.new(
208
- x: x1, y: y1,
209
- radius: radius,
210
- sectors: 32,
211
- color: style[:fill],
212
- z: style[:"z-index"].to_i
213
- )
214
- e.obj = obj if e.respond_to? :obj=
215
- @window.add obj
216
-
84
+ window.on :key_up do |event|
85
+ # A key was released
86
+ puts event.key
87
+ keyboard :onkeyup, event
217
88
  end
89
+ =end
90
+ window.show
218
91
 
219
- def draw_image(args)
220
-
221
- dimensions, src, style, e = args
222
-
223
- x, y, width, height = dimensions
224
-
225
- filepath = Tempfile.new('r2dsvg').path + File.basename(src)
226
- puts 'filepath: ' + filepath.inspect if @debug
227
- File.write filepath, RXFHelper.read(src).first
228
-
229
-
230
- if File.exists? filepath then
231
-
232
- obj = Image.new(
233
- filepath,
234
- x: x, y: y,
235
- width: width, height: height,
236
- color: style[:fill],
237
- z: style[:"z-index"].to_i
238
- )
239
-
240
- e.obj = obj if e.respond_to? :obj=
241
- @window.add obj
242
- end
243
- end
244
92
 
245
- def draw_line(args)
246
-
247
- coords, style, e = args
248
-
249
- x1, y1, x2, y2 = coords
250
-
251
- if @debug then
252
- puts 'inside draw_rectangle'.info
253
- puts ('style: ' + style.inspect).debug
254
- end
93
+ end
94
+
95
+ def clear()
96
+ @window.clear
97
+ end
98
+
99
+ def read(unknown, title=@title)
255
100
 
256
- obj = Line.new(
257
- x1: x1, y1: y1,
258
- x2: x2, y2: y2,
259
- width: style[:"stroke-width"].to_f,
260
- color: style[:"stroke"],
261
- z: style[:"z-index"].to_i
262
- )
263
-
264
- e.obj = obj if e.respond_to? :obj=
265
- @window.add obj
266
-
267
- end
101
+ @loaded = false
102
+ @window.clear
103
+ doc = nil
268
104
 
269
- def draw_polygon(args)
270
-
271
- points, style, e = args
272
-
273
- puts ('points: ' + points.inspect).debug if @debug
274
- coords = points
105
+ if unknown.is_a? String
106
+
107
+ svg, _ = RXFHelper.read(unknown)
108
+ doc = @model.new(svg, callback: self, debug: @debug)
109
+ instructions = Render.new(doc, debug: @debug).to_a
275
110
 
276
- if @debug then
277
- puts 'inside draw_polygon'.info
278
- puts ('style: ' + style.inspect).debug
279
- end
111
+ elsif unknown.is_a? Array
280
112
 
281
- puts ('coords: ' + coords.inspect).debug if @debug
113
+ puts 'array found' if @debug
114
+
115
+ instructions = unknown
282
116
 
283
- h = coords.map.with_index do |c2,i|
284
-
285
- %w(x y).zip(c2).map {|key, c| [(key + (i+1).to_s).to_sym, c] }
286
-
287
- end.flatten(1).to_h
288
- puts ('triangle h: ' + h.inspect).debug if @debug
289
-
290
- puts ('triangle h merged: ' + h.inspect).debug if @debug
291
- obj = Triangle.new(h.merge({color: style[:fill], z: style[:"z-index"].to_i}))
292
- e.obj = obj if e.respond_to? :obj=
293
- @window.add obj
294
- end
295
-
296
-
297
- # not yet implemented
298
- #
299
- def draw_lines(args)
300
-
301
- coords, width, style, e = args
302
-
303
- x1, y1, x2, y2 = coords
304
-
305
-
306
- end
307
-
308
- def draw_rectangle(args)
309
-
310
- coords, style, e = args
311
-
312
- x1, y1, x2, y2 = coords
313
-
314
- if @debug then
315
- puts 'inside draw_rectangle'.info
316
- puts ('style: ' + style.inspect).debug
317
- end
318
-
319
- obj = Rectangle.new(
320
- x: x1, y: y1,
321
- width: x2 - x1, height: y2 - y1,
322
- color: style[:fill],
323
- z: style[:"z-index"].to_i
324
- )
325
- e.obj = obj if e.respond_to? :obj=
326
- @window.add obj
327
-
328
- end
329
-
330
- def draw_text(args)
331
-
332
- coords, text, style, e = args
333
-
334
- x, y = coords
335
-
336
- if @debug then
337
- puts 'inside draw_text'.info
338
- puts ('style: ' + style.inspect).debug
339
- end
340
-
341
- obj = Text.new(
342
- text,
343
- x: x, y: y,
344
- #font: 'vera.ttf',
345
- size: style[:font_size].to_i,
346
- color: style[:color],
347
- z: style[:"z-index"].to_i
348
- )
349
- e.obj = obj
350
- @window.add obj
351
-
352
117
  end
353
-
354
- # Ruby 2D supports a number of popular audio formats, including WAV,
355
- # MP3, Ogg Vorbis, and FLAC.
118
+
119
+ drawing = DrawingInstructions.new @window, debug: @debug
356
120
 
357
- def embed_audio(args)
121
+ if doc then
358
122
 
359
- sources, e = args
123
+ @width, @height = %i(width height).map{|x| doc.root.attributes[x].to_i }
124
+ @window.set title: title, width: @width, height: @height
125
+
360
126
 
361
- if @debug then
362
- puts 'sources: ' + sources.inspect if @debug
363
- puts 'inside embed_audio'.info
364
- end
365
-
127
+ threads = []
366
128
 
367
- audio_files = sources.map do |source|
368
-
369
- filepath = Tempfile.new('r2dsvg').path + File.basename(source[:src])
370
- File.write filepath, RXFHelper.read(source[:src]).first
371
- filepath
129
+ threads << Thread.new do
130
+ doc.root.xpath('//script').each {|x| eval x.texts.join }
131
+ drawing.render instructions
372
132
  end
373
133
 
374
- audio = audio_files.find {|file| File.exists? file }
375
-
376
- return unless audio
377
-
378
- file = File.exists?(audio) ? audio : nil
379
- puts 'file: ' + file.inspect if @debug
134
+ threads.join
380
135
 
381
- obj = Sound.new(file)
382
- e.obj = obj
136
+ @loaded = true
137
+ @doc = doc
383
138
 
384
- def e.play() self.obj.play() end
385
-
386
- end
387
-
388
- def window(args)
389
- end
390
-
391
- def render(a)
392
- method(a[0]).call(args=a[1..2])
393
- draw a[3]
394
- end
395
-
396
- def script(args)
397
-
398
- end
399
-
400
- private
401
-
402
- def draw(a)
139
+ else
403
140
 
404
- a.each do |rawx|
405
-
406
- x, *remaining = rawx
407
-
408
- if x.is_a? Symbol then
409
- method(x).call(args=remaining)
410
- elsif x.is_a? String then
411
- draw remaining
412
- elsif x.is_a? Array
413
- draw remaining
414
- else
415
- method(x).call(remaining.take 2)
416
- end
417
-
418
- end
419
-
141
+ drawing.render instructions
142
+ h = instructions[2]
143
+ @width, @height = h[:width].to_i, h[:height].to_i
144
+ @window.set title: 'Untitled', width: @width, height: @height
420
145
  end
421
-
422
- end
423
-
424
- def initialize(svg, title: 'R2dSVG', debug: false)
425
-
426
- @svg, @debug = svg, debug
427
- doc = Svgle.new(svg, callback: self, debug: debug)
428
- instructions = Render.new(doc, debug: debug).to_a
429
-
430
- window = Window.new
431
- drawing = DrawingInstructions.new window, debug: debug
432
- puts ('instructions: ' + instructions.inspect).debug if @debug
433
-
434
- @width, @height = %i(width height).map{|x| doc.root.attributes[x].to_i }
435
- window.set title: title, width: @width, height: @height
436
-
437
146
 
438
- doc.root.xpath('//script').each {|x| eval x.text.unescape }
147
+ end
148
+
149
+ def refresh()
150
+ puts 'do nothing' if @debug
151
+ end
152
+
153
+
154
+ private
155
+
156
+ def keyboard(action, event)
439
157
 
440
- drawing.render instructions
441
-
442
- @doc = doc
158
+ doc = @doc
443
159
 
444
- window.on(:mouse_move) {|event| mouse(:move, event) }
160
+ @doc.root.xpath("//*[@on#{action}]").each do |x|
161
+
162
+ if block_given? then
163
+ valid = yield(x)
164
+ statement = x.method(('on' + action.to_s).to_sym).call()
165
+ puts 'statement: ' + statement.inspect if @debug
166
+ eval statement if valid
167
+ else
168
+ statement = x.method(('on' + action.to_s).to_sym).call()
169
+ puts 'statement: ' + statement.inspect if @debug
170
+ eval statement
171
+ end
445
172
 
446
- window.on(:mouse_down) do |event|
447
- mouse :down, event if event.button == :left
448
173
  end
449
-
450
-
451
- window.show
452
- end
453
-
454
- private
174
+
175
+ @doc.event[action].each {|name| method(name).call event }
176
+
177
+ end
455
178
 
456
179
  def mouse(action, event)
457
180
 
458
181
  doc = @doc
459
182
 
460
- @doc.root.xpath("//*[@onmouse#{action}]").each do |x|
183
+ @doc.root.xpath("//*[@on#{action}]").each do |x|
461
184
 
462
185
  #puts 'x.class: ' + x.inspect if @debug
463
186
  if x.obj and x.obj.contains? event.x, event.y then
464
- eval x.method(('onmouse' + action.to_s).to_sym).call()
187
+
188
+
189
+ if not x.active? then
190
+ x.active = true
191
+ elsif action == :mouseenter
192
+ next
193
+ end
194
+
195
+ if block_given? then
196
+ valid = yield(x)
197
+ statement = x.method(('on' + action.to_s).to_sym).call()
198
+ puts 'statement: ' + statement.inspect if @debug
199
+ eval statement if valid
200
+ else
201
+ statement = x.method(('on' + action.to_s).to_sym).call()
202
+ puts 'statement: ' + statement.inspect if @debug
203
+ eval statement
204
+ end
205
+
206
+ else
207
+
208
+ if x.active? then
209
+ x.active = false
210
+ onleave
211
+ end
465
212
  end
466
213
 
467
214
  end
468
215
 
469
216
  end
217
+
218
+ def onleave()
219
+
220
+ @doc.root.xpath("//*[@onmouseleave]").each do |x|
221
+ puts 'onleave'.info if @debug
222
+ eval x.method(:onmouseleave).call()
223
+ end
224
+
225
+ end
226
+
470
227
  end
471
228
 
472
229
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: r2dsvg
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -11,31 +11,31 @@ cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
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
14
+ YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjAwNDMwMTkyMTE0WhcN
15
+ MjEwNDMwMTkyMTE0WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
+ cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC0pOK2
17
+ 4cEo9eTgZjcf6hCWPhfzB8ylmXTwD3lS6OIzBDsEt3xCkJo8XnTi5d/nsPujrS0p
18
+ +UyMbXmvMg930CR1RVfNIiyxvIxns4pG5nqCWNfYVybIptl+TTmVDu68H7Y2IcVa
19
+ UWTATtB6lVnzm9xJAOwUB1gdR4dQ4qYQtzRUIbSfBpRKzz7xzlIAMtUTNpO+VsIM
20
+ T7PjVDuS3Q3t9yEsWMjHJiK4HjA/cYFpv2gb3uu6Nte6DB9tzAjDkyaDiyiBe0Zf
21
+ Po6GiicAktTdU8KPGCz095AvuEntMiogfU5+J+h+5UQ06s6f8i50MCjyTCpQRBOf
22
+ Y8emglgF5mwOSbtiZmKYNeC1iWmUjLWhSAM5i1CedJliM84loqDvIM7JohPrPe0W
23
+ iVI4roGY3cNJujprtu48mSz4bQ7K2YYNwPUC51lwu/HOfW88nyA73enk1GucaWCv
24
+ wlpQ3/o5DAAdHxyU58Cn5+IccHJB29JpsqCy3ziNGDEoP5oXcu4/JZHjYWkCAwEA
25
+ AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUSLKMrYPy
26
+ 3XTqc2K7Hr0Oh0oqmlgwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
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
28
+ BgkqhkiG9w0BAQsFAAOCAYEAF94p0W/kawz6zAaPBAQYPK80pchIt5YmKgiHH/Ek
29
+ Vn7iww/aiHorCuAAW/2YPls4goVrSIMvHuV16P0qK1j3ylyyGoKnOn3PbpRrjHZu
30
+ 3O9io3fqbVE2wo4kw8FKYEnv/vFFx53cIotYKhiyW5VKACM0AaolFtf2QBnLGuBN
31
+ 6ete9dSMYppBMlf6Ah/EV3PfV6UV/2Pt51fASwU4DBwSsA1aPlvG9KjOq0UQfDHD
32
+ hiK5JelQEUxYRumvheEeAwKnIT8ir+Axt1ld93m7xwtNbDPu21fkGfJ6xFz8Ntme
33
+ Aca1IyhjpPV4IbGYIxNwH0xfeSBgJvp+XBqdcb52k34kdaJa3gsPl+1B4YksolOP
34
+ OD+mqzrShSSZRfL7bhBqXYELKZS5tayICrtujMxstwDGaDLwNVcN/CydQjAD6G+V
35
+ 2z9cm0kGX/0pBfn8cMKC0JgNNNONx3uqiCAhaBEN35C8dqBjua/CK4rMoKEB7XQq
36
+ OAk+mR2SqyWecmZhdnsnm86T
37
37
  -----END CERTIFICATE-----
38
- date: 2019-02-26 00:00:00.000000000 Z
38
+ date: 2020-06-07 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: svgle
@@ -46,7 +46,7 @@ dependencies:
46
46
  version: '0.4'
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: 0.4.5
49
+ version: 0.4.6
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
@@ -56,47 +56,67 @@ dependencies:
56
56
  version: '0.4'
57
57
  - - ">="
58
58
  - !ruby/object:Gem::Version
59
- version: 0.4.5
59
+ version: 0.4.6
60
+ - !ruby/object:Gem::Dependency
61
+ name: onedrb
62
+ requirement: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: 0.1.0
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '0.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.1.0
77
+ - - "~>"
78
+ - !ruby/object:Gem::Version
79
+ version: '0.1'
60
80
  - !ruby/object:Gem::Dependency
61
81
  name: ruby2d
62
82
  requirement: !ruby/object:Gem::Requirement
63
83
  requirements:
64
84
  - - "~>"
65
85
  - !ruby/object:Gem::Version
66
- version: '0.8'
86
+ version: '0.9'
67
87
  - - ">="
68
88
  - !ruby/object:Gem::Version
69
- version: 0.8.1
89
+ version: 0.9.4
70
90
  type: :runtime
71
91
  prerelease: false
72
92
  version_requirements: !ruby/object:Gem::Requirement
73
93
  requirements:
74
94
  - - "~>"
75
95
  - !ruby/object:Gem::Version
76
- version: '0.8'
96
+ version: '0.9'
77
97
  - - ">="
78
98
  - !ruby/object:Gem::Version
79
- version: 0.8.1
99
+ version: 0.9.4
80
100
  - !ruby/object:Gem::Dependency
81
101
  name: dom_render
82
102
  requirement: !ruby/object:Gem::Requirement
83
103
  requirements:
84
- - - "~>"
85
- - !ruby/object:Gem::Version
86
- version: '0.3'
87
104
  - - ">="
88
105
  - !ruby/object:Gem::Version
89
- version: 0.3.2
106
+ version: 0.4.0
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '0.4'
90
110
  type: :runtime
91
111
  prerelease: false
92
112
  version_requirements: !ruby/object:Gem::Requirement
93
113
  requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: '0.3'
97
114
  - - ">="
98
115
  - !ruby/object:Gem::Version
99
- version: 0.3.2
116
+ version: 0.4.0
117
+ - - "~>"
118
+ - !ruby/object:Gem::Version
119
+ version: '0.4'
100
120
  description:
101
121
  email: james@jamesrobertson.eu
102
122
  executables: []
@@ -123,7 +143,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
123
143
  - !ruby/object:Gem::Version
124
144
  version: '0'
125
145
  requirements: []
126
- rubygems_version: 3.0.1
146
+ rubygems_version: 3.0.3
127
147
  signing_key:
128
148
  specification_version: 4
129
149
  summary: Experimental gem to render SVG within a Ruby2D application.
metadata.gz.sig CHANGED
Binary file