gtk2svg 0.1.0
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 +7 -0
- checksums.yaml.gz.sig +3 -0
- data/lib/gtk2svg.rb +152 -0
- data.tar.gz.sig +0 -0
- metadata +107 -0
- metadata.gz.sig +1 -1
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 561a0f8ef7b86006040e05e643470edd7b5039a8
|
4
|
+
data.tar.gz: 08402678a96a5e634cd01dc867f9bf44c026b06c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 41302cb344ee54d3ef835383cb7fc5314dda7c273a66b8f3c5e2b03930b2d4e4ad2ffa808162d99b2616bdfc06441b223d457d0cb8f8d822fa56d3ed5fc260c8
|
7
|
+
data.tar.gz: 43c3375eb84623df41c6fdc1e3dc3e22bed589d4531b302cebe324ff0f0cacebef1156e1c54547b2351c90ee8d998c248de33543c6c40aa6bb7a0ee80b255c93
|
checksums.yaml.gz.sig
ADDED
data/lib/gtk2svg.rb
ADDED
@@ -0,0 +1,152 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# file: gtk2svg.rb
|
4
|
+
|
5
|
+
require 'gtk2'
|
6
|
+
require 'dom_render'
|
7
|
+
|
8
|
+
|
9
|
+
# Description: Experimental gem to render SVG within an GTK2 application.
|
10
|
+
# Currently it can only render rectangles along with the fill colour.
|
11
|
+
|
12
|
+
module SVG
|
13
|
+
class Element
|
14
|
+
|
15
|
+
attr_reader :style
|
16
|
+
|
17
|
+
def initialize(attributes, style)
|
18
|
+
|
19
|
+
@h = {x: '0', y: '0'}.merge attributes
|
20
|
+
|
21
|
+
@style = {fill: 'black'}
|
22
|
+
@style.merge!(style) if attributes[:style]
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
def attributes()
|
27
|
+
@h
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
module Gtk2SVG
|
34
|
+
|
35
|
+
class Render < DomRender
|
36
|
+
|
37
|
+
def svg(x, attributes, style)
|
38
|
+
[:window, render_all(x)]
|
39
|
+
end
|
40
|
+
|
41
|
+
def rect(e, attributes, style)
|
42
|
+
|
43
|
+
e2 = SVG::Element.new attributes, style
|
44
|
+
h = e2.attributes
|
45
|
+
style = e2.style
|
46
|
+
|
47
|
+
|
48
|
+
x1, y1, width, height = %i(x y width height).map{|x| h[x].to_i }
|
49
|
+
x2, y2, = x1 + width, y1 + height
|
50
|
+
|
51
|
+
[:draw_rectangle, [x1, y1, x2, y2], style, render_all(e)]
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
class DrawingInstructions
|
57
|
+
|
58
|
+
attr_accessor :area
|
59
|
+
|
60
|
+
|
61
|
+
def initialize(area=nil)
|
62
|
+
|
63
|
+
@area = area if area
|
64
|
+
|
65
|
+
end
|
66
|
+
|
67
|
+
def draw_rectangle(args)
|
68
|
+
|
69
|
+
coords, style = args
|
70
|
+
|
71
|
+
x1, y1, x2, y2 = coords
|
72
|
+
gc = gc_ini(fill: style[:fill] || :none)
|
73
|
+
@area.window.draw_rectangle(gc, 1, x1, y1, x2, y2)
|
74
|
+
end
|
75
|
+
|
76
|
+
def window(args)
|
77
|
+
end
|
78
|
+
|
79
|
+
def render(a)
|
80
|
+
draw a
|
81
|
+
end
|
82
|
+
|
83
|
+
private
|
84
|
+
|
85
|
+
def draw(a)
|
86
|
+
|
87
|
+
a.each do |rawx|
|
88
|
+
|
89
|
+
x, *remaining = rawx
|
90
|
+
|
91
|
+
if x.is_a? Symbol then
|
92
|
+
method(x).call(args=remaining.take(2))
|
93
|
+
elsif x.is_a? String then
|
94
|
+
draw remaining
|
95
|
+
elsif x.is_a? Array
|
96
|
+
draw remaining
|
97
|
+
else
|
98
|
+
method(x).call(remaining.take 2)
|
99
|
+
end
|
100
|
+
|
101
|
+
end
|
102
|
+
|
103
|
+
end
|
104
|
+
|
105
|
+
def set_colour(fill)
|
106
|
+
|
107
|
+
colour = case fill
|
108
|
+
when /^rgb/
|
109
|
+
regex = /rgb\((\d{1,3}), *(\d{1,3}), *(\d{1,3})\)$/
|
110
|
+
r, g, b = fill.match(regex).captures.map {|x| x.to_i * 257}
|
111
|
+
colour = Gdk::Color.new(r, g, b)
|
112
|
+
when /^#/
|
113
|
+
Gdk::Color.parse(fill)
|
114
|
+
else
|
115
|
+
Gdk::Color.parse(fill)
|
116
|
+
end
|
117
|
+
|
118
|
+
colormap = Gdk::Colormap.system
|
119
|
+
colormap.alloc_color(colour, false, true)
|
120
|
+
|
121
|
+
colour
|
122
|
+
end
|
123
|
+
|
124
|
+
def gc_ini(fill: 'black')
|
125
|
+
gc = Gdk::GC.new(area.window)
|
126
|
+
gc.set_foreground(set_colour(fill)) unless fill == :none
|
127
|
+
gc
|
128
|
+
end
|
129
|
+
|
130
|
+
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
|
135
|
+
if __FILE__ == $0 then
|
136
|
+
|
137
|
+
# Read an SVG file
|
138
|
+
s = File.read(ARGV[0])
|
139
|
+
|
140
|
+
area = Gtk::DrawingArea.new
|
141
|
+
|
142
|
+
area.signal_connect("expose_event") do
|
143
|
+
|
144
|
+
drawing = Gtk2SVG::DrawingInstructions.new area
|
145
|
+
drawing.render Gtk2SVG::Render.new(s).to_a
|
146
|
+
|
147
|
+
end
|
148
|
+
|
149
|
+
Gtk::Window.new.add(area).show_all
|
150
|
+
Gtk.main
|
151
|
+
|
152
|
+
end
|
data.tar.gz.sig
ADDED
Binary file
|
metadata
ADDED
@@ -0,0 +1,107 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: gtk2svg
|
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
|
+
MIIDljCCAn6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBIMRIwEAYDVQQDDAlnZW1t
|
14
|
+
YXN0ZXIxHjAcBgoJkiaJk/IsZAEZFg5qYW1lc3JvYmVydHNvbjESMBAGCgmSJomT
|
15
|
+
8ixkARkWAmV1MB4XDTE1MTEyMTEyNDM1MloXDTE2MTEyMDEyNDM1MlowSDESMBAG
|
16
|
+
A1UEAwwJZ2VtbWFzdGVyMR4wHAYKCZImiZPyLGQBGRYOamFtZXNyb2JlcnRzb24x
|
17
|
+
EjAQBgoJkiaJk/IsZAEZFgJldTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
18
|
+
ggEBALfXiqh75fe/C7nt7T1ZqmXgBEESOxF0pZY88NPI6DTcxOmKe2sGbGqs5G9s
|
19
|
+
QqRDG0pNNJk1z91VGo86hOKycJmU3kyWDs+Ezr5q/lpgvIBlzjyMMI6G/mEAU7dC
|
20
|
+
2LRVUd4TLD2IaXUBY6VquXYQm02WuN38mJHRgYLigFsiZ+TLnoA3iDFAARt6AIgJ
|
21
|
+
pbKgZ4148CEOorgY+38ezduTxL/dhgYYzCksCKPutEWY/e270V8sNS8BiBU2rA6W
|
22
|
+
zsnv1OFzGfZ8QBTEoDZGxBtkRI3pMyUP/R3SHHSybIw3Ttul5ERfWWzjkRi5Co6Q
|
23
|
+
GU6BathuDXN8dA7x2D2FIlfw6qcCAwEAAaOBijCBhzAJBgNVHRMEAjAAMAsGA1Ud
|
24
|
+
DwQEAwIEsDAdBgNVHQ4EFgQUFNzydmBb4YGbQwY2NEWGNmu4eM4wJgYDVR0RBB8w
|
25
|
+
HYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1h
|
26
|
+
c3RlckBqYW1lc3JvYmVydHNvbi5ldTANBgkqhkiG9w0BAQUFAAOCAQEAHhAyamfK
|
27
|
+
rHF9N9fcNVhk9SLn562e0dQccSTZJwz3LRRnivXIEp5I0hTxOq1++pKhYlBX77zy
|
28
|
+
T7lRF7gAA+bh1EsWiHou9LA/jHUx/xiFbls66a4nB9KiCYXhJGpHvi6Mp/Mf9btD
|
29
|
+
N+urRJSVHfKdNi67NyBz4TWC8ff3oyh5ZxeAeJwXehPKjzTZjlQ/LEqc4jiSAuEi
|
30
|
+
85UVSWgrMaL5EfU0RRl4+6ZfY6KmrUI9Y4ZaV11zbtG76KO7qPGarfbfqA3XMRuP
|
31
|
+
fnNu6z0ydxzHCvBhE0pU4jDzxPTASZiyllpSpQgz9OX3DAlUgWFQLHmj1hGk6GH4
|
32
|
+
QldMu2GTc/3h2w==
|
33
|
+
-----END CERTIFICATE-----
|
34
|
+
date: 2015-11-21 00:00:00.000000000 Z
|
35
|
+
dependencies:
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: gtk2
|
38
|
+
requirement: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - "~>"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '3.0'
|
43
|
+
- - ">="
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 3.0.7
|
46
|
+
type: :runtime
|
47
|
+
prerelease: false
|
48
|
+
version_requirements: !ruby/object:Gem::Requirement
|
49
|
+
requirements:
|
50
|
+
- - "~>"
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '3.0'
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: 3.0.7
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: dom_render
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - "~>"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0.2'
|
63
|
+
- - ">="
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: 0.2.0
|
66
|
+
type: :runtime
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: !ruby/object:Gem::Requirement
|
69
|
+
requirements:
|
70
|
+
- - "~>"
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: '0.2'
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 0.2.0
|
76
|
+
description:
|
77
|
+
email: james@r0bertson.co.uk
|
78
|
+
executables: []
|
79
|
+
extensions: []
|
80
|
+
extra_rdoc_files: []
|
81
|
+
files:
|
82
|
+
- lib/gtk2svg.rb
|
83
|
+
homepage: https://github.com/jrobertson/gtk2svg
|
84
|
+
licenses:
|
85
|
+
- MIT
|
86
|
+
metadata: {}
|
87
|
+
post_install_message:
|
88
|
+
rdoc_options: []
|
89
|
+
require_paths:
|
90
|
+
- lib
|
91
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - ">="
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '0'
|
96
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
97
|
+
requirements:
|
98
|
+
- - ">="
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: '0'
|
101
|
+
requirements: []
|
102
|
+
rubyforge_project:
|
103
|
+
rubygems_version: 2.4.8
|
104
|
+
signing_key:
|
105
|
+
specification_version: 4
|
106
|
+
summary: Experimental gem to render SVG using GTK2
|
107
|
+
test_files: []
|
metadata.gz.sig
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
|
-
�_T�I�K �Y�H�́,�t\�t�MG���9�8`��i1��e@J"\+oH+�}J)�K�����`�m�t�ͽ��1Q8��t5}�e�� @9��'�"�e,��Y��=�34
|