r2dsvg 0.1.0 → 0.1.1
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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/r2dsvg.rb +105 -2
- data.tar.gz.sig +0 -0
- metadata +1 -1
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8296973a57c753bc725b879e70c9479f439a50feb5d7b5330be4694f54b5605e
|
4
|
+
data.tar.gz: 2ef0ea5d588963e2e429817ae0e044f258e3f2af08b8dca29171998595357ae8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 55f66186da14d03535b3c1c5a201e8aa9f2c8c331ec5c7df5b13269e3357a0bd083ddebcaeeb3a9b21beed39a13d65638074f324dec8abd5b434a71bf23af335
|
7
|
+
data.tar.gz: ea0e41cfb9a3751f53692ba1890f433ba80cfbc39698ccd500b9a58cd99bff9d31885671831664a5707ad6bd1c3feaae9e67cb96b8dbfec3191d36bf49c4e0e3
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/lib/r2dsvg.rb
CHANGED
@@ -9,6 +9,14 @@ require 'svgle'
|
|
9
9
|
require 'ruby2d' # experimental gem depends upon simple2d binaries
|
10
10
|
require 'dom_render'
|
11
11
|
|
12
|
+
DEFAULT_CSS = <<CSS
|
13
|
+
|
14
|
+
svg {background-color: white}
|
15
|
+
rect {fill: yellow}
|
16
|
+
line, polyline {stroke: green; stroke-width: 3}
|
17
|
+
text {fill: red, size: 20}
|
18
|
+
|
19
|
+
CSS
|
12
20
|
|
13
21
|
|
14
22
|
class R2dSvg
|
@@ -16,6 +24,21 @@ class R2dSvg
|
|
16
24
|
using ColouredText
|
17
25
|
|
18
26
|
class Render < DomRender
|
27
|
+
|
28
|
+
def audio(e, attributes, raw_style)
|
29
|
+
|
30
|
+
puts 'inside audio attributes: ' + attributes.inspect if @debug
|
31
|
+
style = style_filter(attributes).merge(raw_style)
|
32
|
+
h = attributes
|
33
|
+
|
34
|
+
sources = e.xpath('source').map do |x|
|
35
|
+
h = x.attributes.to_h
|
36
|
+
h.delete :style
|
37
|
+
h
|
38
|
+
end
|
39
|
+
|
40
|
+
[:embed_audio, sources ]
|
41
|
+
end
|
19
42
|
|
20
43
|
def rect(e, attributes, raw_style)
|
21
44
|
|
@@ -28,6 +51,10 @@ class R2dSvg
|
|
28
51
|
|
29
52
|
[:draw_rectangle, [x1, y1, x2, y2], style, render_all(e)]
|
30
53
|
end
|
54
|
+
|
55
|
+
def script(e, attributes, style)
|
56
|
+
[:script]
|
57
|
+
end
|
31
58
|
|
32
59
|
def svg(e, attributes, raw_style)
|
33
60
|
|
@@ -38,6 +65,16 @@ class R2dSvg
|
|
38
65
|
|
39
66
|
[:draw_rectangle, [0, 0, width, height], style, render_all(e)]
|
40
67
|
end
|
68
|
+
|
69
|
+
def text(e, attributes, raw_style)
|
70
|
+
|
71
|
+
style = style_filter(attributes).merge(raw_style)
|
72
|
+
style.merge!({font_size: '20'})
|
73
|
+
|
74
|
+
x, y = %i(x y).map{|x| attributes[x].to_i }
|
75
|
+
|
76
|
+
[:draw_text, [x, y], e.text, style, render_all(e)]
|
77
|
+
end
|
41
78
|
|
42
79
|
private
|
43
80
|
|
@@ -83,6 +120,51 @@ class R2dSvg
|
|
83
120
|
|
84
121
|
end
|
85
122
|
|
123
|
+
def draw_text(args)
|
124
|
+
|
125
|
+
coords, text, style = args
|
126
|
+
|
127
|
+
x, y = coords
|
128
|
+
|
129
|
+
if @debug then
|
130
|
+
puts 'inside draw_text'.info
|
131
|
+
puts ('style: ' + style.inspect).debug
|
132
|
+
end
|
133
|
+
|
134
|
+
@window.add Text.new(
|
135
|
+
text,
|
136
|
+
x: x, y: y,
|
137
|
+
#font: 'vera.ttf',
|
138
|
+
size: style[:font_size].to_i,
|
139
|
+
color: style[:color],
|
140
|
+
z: style[:"z-index"].to_i
|
141
|
+
)
|
142
|
+
|
143
|
+
end
|
144
|
+
|
145
|
+
# Ruby 2D supports a number of popular audio formats, including WAV,
|
146
|
+
# MP3, Ogg Vorbis, and FLAC.
|
147
|
+
|
148
|
+
def embed_audio(args)
|
149
|
+
|
150
|
+
sources, _ = args
|
151
|
+
|
152
|
+
if @debug then
|
153
|
+
puts 'sources: ' + sources.inspect if @debug
|
154
|
+
puts 'inside embed_audio'.info
|
155
|
+
end
|
156
|
+
|
157
|
+
audio = sources.find do |source|
|
158
|
+
File.exists? source[:src]
|
159
|
+
end
|
160
|
+
|
161
|
+
return unless audio
|
162
|
+
|
163
|
+
file = File.exists? audio[:src]? audio[:src] : nil
|
164
|
+
@window.add = Sound.new(file)
|
165
|
+
|
166
|
+
end
|
167
|
+
|
86
168
|
def window(args)
|
87
169
|
end
|
88
170
|
|
@@ -91,6 +173,9 @@ class R2dSvg
|
|
91
173
|
draw a[3]
|
92
174
|
end
|
93
175
|
|
176
|
+
def script(args)
|
177
|
+
|
178
|
+
end
|
94
179
|
|
95
180
|
private
|
96
181
|
|
@@ -127,9 +212,27 @@ class R2dSvg
|
|
127
212
|
puts ('instructions: ' + instructions.inspect).debug if @debug
|
128
213
|
|
129
214
|
@width, @height = %i(width height).map{|x| doc.root.attributes[x].to_i }
|
130
|
-
window.set title: title, width: @width, height: @height
|
131
|
-
|
215
|
+
window.set title: title, width: @width, height: @height
|
216
|
+
|
217
|
+
def doc.element_by_id(id)
|
218
|
+
self.root.element("//*[@id='#{id}']")
|
219
|
+
end
|
220
|
+
|
221
|
+
doc.root.xpath('//script').each {|x| eval x.text.unescape }
|
222
|
+
|
132
223
|
drawing.render instructions
|
224
|
+
|
225
|
+
window.on :mouse_move do |event|
|
226
|
+
|
227
|
+
@doc.root.xpath('//*[@onmousemove]').each do |x|
|
228
|
+
|
229
|
+
eval x.onmousemove() if x.hotspot? event.x, event.y
|
230
|
+
|
231
|
+
end
|
232
|
+
|
233
|
+
end
|
234
|
+
|
235
|
+
@doc = doc
|
133
236
|
window.show
|
134
237
|
end
|
135
238
|
end
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
metadata.gz.sig
CHANGED
Binary file
|