gtk2svg 0.3.13 → 0.3.14

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: 4bb4de4b329fb0da55300bc50d5806a23ef80b87
4
- data.tar.gz: 61b9b466f9c9fa60b8c7f007c26a975d277a0c29
3
+ metadata.gz: 4b8368ad2e5d99ac4c5ae77f7ead08f89fc42314
4
+ data.tar.gz: a0b4d5f3ecd99a276bbbfe551b0eead008c94840
5
5
  SHA512:
6
- metadata.gz: cb76dd3f49ca0b679d9b79c0088e4d825aaff24c083520c6cdd7ea52ef28781fc55632becb14ed623bfdd4749593455198d808dc3c88106d6cd60b0da6a31dce
7
- data.tar.gz: 0e95bd26fef66d1f073fc2e594663a86abef4d91ddcc52acc7760cfb28c65fcd6525ad3564c35c6327dd0bf57f03f50109d2cfe6ee5173a93f62d4660c8203cc
6
+ metadata.gz: 3f36401546b06f5234a39f62f6e4ca8022a32f3f195a607edd0c751bd56ee00cfedc295be1e0dafc7ac7a1f26a8bd26d92f82cee4d55b891a8957426a58e0eb9
7
+ data.tar.gz: 06667bdf893efce388aca9bc55b124f4cb09ab09a8b6b15bb21a5ebb012390467aec3256aea8619f3d60c94346be2341e276594877b40d237cf08dd8f403fd19
checksums.yaml.gz.sig CHANGED
Binary file
data/lib/gtk2svg.rb CHANGED
@@ -9,7 +9,6 @@ require 'svgle'
9
9
  # Description: Experimental gem to render SVG within a GTK2 application.
10
10
 
11
11
 
12
-
13
12
  module Gtk2SVG
14
13
 
15
14
  class Render < DomRender
@@ -46,6 +45,17 @@ module Gtk2SVG
46
45
  x1, y1, x2, y2 = %i(x1 y1 x2 y2).map{|x| attributes[x].to_i }
47
46
 
48
47
  [:draw_line, [x1, y1, x2, y2], style, render_all(e)]
48
+ end
49
+
50
+ def image(e, attributes, raw_style)
51
+
52
+ style = style_filter(attributes).merge(raw_style)
53
+ h = attributes
54
+
55
+ x, y, width, height = %i(x y width height).map{|x| h[x] ? h[x].to_i : nil }
56
+ src = h[:'xlink:href']
57
+
58
+ [:draw_image, [x, y, width, height], src, style, render_all(e)]
49
59
  end
50
60
 
51
61
  def polygon(e, attributes, raw_style)
@@ -119,9 +129,10 @@ module Gtk2SVG
119
129
  attr_accessor :area
120
130
 
121
131
 
122
- def initialize(area=nil)
132
+ def initialize(area=nil, window=nil)
123
133
 
124
- @area = area if area
134
+ @area = area
135
+ @window = window
125
136
 
126
137
  end
127
138
 
@@ -135,6 +146,25 @@ module Gtk2SVG
135
146
  @area.window.draw_arc(gc, 1, x, y, width, height, 0, 64 * 360)
136
147
  end
137
148
 
149
+ def draw_image(args)
150
+
151
+ dimensions, src, style = args
152
+
153
+ x, y, width, height = dimensions
154
+
155
+ gc = gc_ini(fill: style[:fill] || :none)
156
+ img = GdkPixbuf::Pixbuf.new(file: src)
157
+
158
+ x ||= 0
159
+ y ||= 0
160
+ width ||= img.width
161
+ height ||= img.height
162
+
163
+ @area.window.draw_pixbuf(gc, img, 0, 0, x, y, width, height,
164
+ Gdk::RGB::DITHER_NONE, 0, 0)
165
+
166
+ end
167
+
138
168
  def draw_line(args)
139
169
 
140
170
  coords, style = args
@@ -167,6 +197,7 @@ module Gtk2SVG
167
197
  Gdk::GC::CAP_NOT_LAST, Gdk::GC::JOIN_MITER)
168
198
  @area.window.draw_lines(gc, points)
169
199
  end
200
+
170
201
 
171
202
  def draw_rectangle(args)
172
203
 
@@ -271,8 +302,18 @@ module Gtk2SVG
271
302
 
272
303
  @svg = svg
273
304
  @doc = Svgle.new(svg, callback: self)
274
-
305
+
275
306
  @area = area = Gtk::DrawingArea.new
307
+
308
+ doc = @doc
309
+
310
+ def @doc.element_by_id(id)
311
+ self.root.element("//*[@id='#{id}']")
312
+ end
313
+
314
+
315
+
316
+
276
317
  client_code = []
277
318
 
278
319
  window = Gtk::Window.new
@@ -284,8 +325,13 @@ module Gtk2SVG
284
325
 
285
326
  @dirty = true
286
327
 
287
- area.signal_connect("expose_event") do
328
+ @doc.root.xpath('//script').each {|x| eval x.text.unescape }
288
329
 
330
+ x1 = 150
331
+
332
+ area.signal_connect("expose_event") do
333
+ y1 = 30; x2 = 200; y2 = 70
334
+ area.window.draw_rectangle(area.style.fg_gc(area.state), 1, x1, y1, x2, y2)
289
335
  if @dirty then
290
336
 
291
337
  Thread.new { @doc.root.xpath('//script').each {|x| eval x.text.unescape } }
@@ -322,6 +368,20 @@ module Gtk2SVG
322
368
  end
323
369
 
324
370
  window.add(area).show_all
371
+
372
+ Thread.new do
373
+ @doc.root.xpath('//*[@onload]').each do |x|
374
+
375
+ eval x.onload()
376
+
377
+ end
378
+ end
379
+
380
+ #Thread.new do
381
+ # 3.times { x1 -= 1; @area.queue_draw; sleep 0.1}
382
+ #end
383
+ sleep 0.01
384
+ #@area.queue_draw; sleep 0.01
325
385
  window.show_all.signal_connect("destroy"){Gtk.main_quit}
326
386
 
327
387
  irb ? Thread.new {Gtk.main } : Gtk.main
@@ -329,18 +389,22 @@ module Gtk2SVG
329
389
 
330
390
  def onmousemove(x,y)
331
391
 
332
- end
333
-
334
- def refresh()
335
- @dirty = true
336
- @area.queue_draw
337
- end
392
+ end
338
393
 
339
394
  def svg=(svg)
340
395
  @svg = svg
341
396
  @doc = Svgle.new(svg, callback: self)
342
397
  end
343
398
 
399
+ def timeout(duration, loopx=true)
400
+
401
+ GLib::Timeout.add(duration) do
402
+ yield
403
+ loopx
404
+ end
405
+
406
+ end
407
+
344
408
  end
345
409
  end
346
410
 
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gtk2svg
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.13
4
+ version: 0.3.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -31,7 +31,7 @@ cert_chain:
31
31
  S+VWAhfVm13yzrA556/5JtfZb/HMd97bm5U2ypMzi+hn2PRRxQ32RY58lYUVpxhE
32
32
  QK5w9QJyQ1G9ag==
33
33
  -----END CERTIFICATE-----
34
- date: 2016-12-05 00:00:00.000000000 Z
34
+ date: 2017-01-26 00:00:00.000000000 Z
35
35
  dependencies:
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: gtk2
@@ -94,7 +94,7 @@ dependencies:
94
94
  - !ruby/object:Gem::Version
95
95
  version: 0.4.0
96
96
  description:
97
- email: james@r0bertson.co.uk
97
+ email: james@jamesrobertson.eu
98
98
  executables: []
99
99
  extensions: []
100
100
  extra_rdoc_files: []
@@ -120,7 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
120
120
  version: '0'
121
121
  requirements: []
122
122
  rubyforge_project:
123
- rubygems_version: 2.5.1
123
+ rubygems_version: 2.6.8
124
124
  signing_key:
125
125
  specification_version: 4
126
126
  summary: Renders SVG using GTK2
metadata.gz.sig CHANGED
Binary file