astromapper 1.0.5 → 1.0.6
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
- data/lib/astromapper/svg.rb +24 -111
- data/lib/astromapper/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6a9cfe24acc8a2bc95bdd68bb086bea417e6a88f
|
|
4
|
+
data.tar.gz: 8112420708e36c7b322d75fe396e8c70739db970
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 32fc9e5f9f16656b4bcf83803136dd4b1ecbdd3a2cd9c1eabf93fe57b1cfd5e745c271d575c1417f34735cad5ab6469e578511c8b13234c7369b7cdb55d8491a
|
|
7
|
+
data.tar.gz: 37f9179db14c9c620c3b1f9b73b1733679df91a424232b15d92299863e1cdcee3ca9db9bb7006a415bb334d19cb7df063156d6582b8b69159510744c9739cb5f
|
data/lib/astromapper/svg.rb
CHANGED
|
@@ -17,53 +17,7 @@ module Astromapper
|
|
|
17
17
|
@zones = []
|
|
18
18
|
@volumes = []
|
|
19
19
|
@name = config['name']
|
|
20
|
-
# puts "Height: #{@height}; Width: #{@width}"
|
|
21
20
|
|
|
22
|
-
base03 = config['colors']['base03'] || '#002b36'
|
|
23
|
-
base02 = config['colors']['base02'] || '#073642'
|
|
24
|
-
base01 = config['colors']['base01'] || '#586e75'
|
|
25
|
-
base00 = config['colors']['base03'] || '#657b83'
|
|
26
|
-
base0 = config['colors']['base0'] || '#839496'
|
|
27
|
-
base1 = config['colors']['base1'] || '#93a1a1'
|
|
28
|
-
base2 = config['colors']['base2'] || '#eee8d5'
|
|
29
|
-
base3 = config['colors']['base3'] || '#fdf6e3'
|
|
30
|
-
yellow = config['colors']['yellow'] || '#b58900'
|
|
31
|
-
orange = config['colors']['orange'] || '#cb4b16'
|
|
32
|
-
red = config['colors']['red'] || '#dc322f'
|
|
33
|
-
magenta = config['colors']['magenta'] || '#d33682'
|
|
34
|
-
violet = config['colors']['violet'] || '#6c71c4'
|
|
35
|
-
blue = config['colors']['blue'] || '#268bd2'
|
|
36
|
-
cyan = config['colors']['cyan'] || '#2aa198'
|
|
37
|
-
green = config['colors']['green'] || '#859900'
|
|
38
|
-
white = config['colors']['white'] || '#FFFFFF'
|
|
39
|
-
black = config['colors']['black'] || '#222222'
|
|
40
|
-
|
|
41
|
-
@theme = {
|
|
42
|
-
'dark' => {
|
|
43
|
-
:background => base03,
|
|
44
|
-
:zone => {'AZ' => yellow, 'RZ' => red},
|
|
45
|
-
:hex => base1,
|
|
46
|
-
:hex_id => base2,
|
|
47
|
-
:world_text => base2,
|
|
48
|
-
:black => base3,
|
|
49
|
-
:base02 => base2,
|
|
50
|
-
:base1 => base01,
|
|
51
|
-
:white => white,
|
|
52
|
-
:tract_id => base01
|
|
53
|
-
},
|
|
54
|
-
'lite' => {
|
|
55
|
-
:background => white,
|
|
56
|
-
:zone => {'AZ' => yellow, 'RZ' => red},
|
|
57
|
-
:hex => base1,
|
|
58
|
-
:hex_id => base01,
|
|
59
|
-
:world_text => base01,
|
|
60
|
-
:black => black,
|
|
61
|
-
:base02 => base02,
|
|
62
|
-
:base1 => base1,
|
|
63
|
-
:white => white,
|
|
64
|
-
:tract_id => base2
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
21
|
theme = (%w{lite dark}.include?(config['svg_theme'])) ? config['svg_theme'] : 'lite'
|
|
68
22
|
@color = @theme[theme]
|
|
69
23
|
@hex = {
|
|
@@ -71,47 +25,6 @@ module Astromapper
|
|
|
71
25
|
:side_w => (@side / 2).tweak,
|
|
72
26
|
:width => @side
|
|
73
27
|
}
|
|
74
|
-
# @style = {
|
|
75
|
-
# :circle => "fill='#{@color[:black]}' stroke='#{@color[:white]}' stroke-width='1'",
|
|
76
|
-
# :polyline => "fill='none'",
|
|
77
|
-
# :polygon => "fill='#{@color[:black]}' stroke='none' stroke-width='1'",
|
|
78
|
-
# :ellipse => "fill='none' stroke='#{@color[:base02]}' stroke-width='1'",
|
|
79
|
-
# :Belt => "stroke='#{@color[:white]}' stroke-width='1'",
|
|
80
|
-
# :AZ_zone => "fill='none' stroke='#{@color[:zone]['AZ']}' stroke-width='3' stroke-dasharray='5%,5%'",
|
|
81
|
-
# :RZ_zone => "fill='none' stroke='#{@color[:zone]['RZ']}' stroke-width='3'",
|
|
82
|
-
# :Planet => "fill='#{@color[:black]}' stroke='#{@color[:black]}' stroke-width='1'",
|
|
83
|
-
# :Desert => "fill='none' stroke='#{@color[:black]}' stroke-width='2'",
|
|
84
|
-
# :Frame => "fill='none' stroke='#{@color[:black]}' stroke-width='4'",
|
|
85
|
-
# :Tract => "fill='none' stroke='#{@color[:hex]}' stroke-width='1'",
|
|
86
|
-
# :Hexgrid => "fill='none' stroke='#{@color[:hex]}' stroke-width='1'",
|
|
87
|
-
# :Name => "text-anchor='middle' font-size='#{@side/5}px' fill='#{@color[:world_text]}' font-family='Verdana'",
|
|
88
|
-
# :symbol => "text-anchor='middle' font-size='#{@side/2.5}px' fill='#{@color[:black]}' font-family='Verdana'",
|
|
89
|
-
# :Spaceport => "text-anchor='middle' font-size='#{@side/3}px' fill='#{@color[:world_text]}' font-family='Verdana'",
|
|
90
|
-
# :TractID => "text-anchor='middle' font-size='#{@side*3}px' fill='#{@color[:tract_id]}' font-family='Verdana'",
|
|
91
|
-
# :VolumeId => "text-anchor='middle' font-size='#{@side/5}px' fill='#{@color[:hex_id]}' font-family='Verdana'",
|
|
92
|
-
# :rect => "fill='#{@color[:background]}'"
|
|
93
|
-
# }
|
|
94
|
-
@style = {
|
|
95
|
-
:circle => "fill='#{@color[:black]}' stroke='#{@color[:white]}' stroke-width='1'",
|
|
96
|
-
:polyline => "fill='none'",
|
|
97
|
-
:polygon => "fill='#{@color[:black]}' stroke='none' stroke-width='1'",
|
|
98
|
-
:ellipse => "fill='none' stroke='#{@color[:base02]}' stroke-width='1'",
|
|
99
|
-
:Belt => "stroke='#{@color[:white]}' stroke-width='1'",
|
|
100
|
-
:AZ_zone => "class='lowsec'",
|
|
101
|
-
:RZ_zone => "class='lowsec'",
|
|
102
|
-
:Planet => "",
|
|
103
|
-
:Desert => "",
|
|
104
|
-
:Frame => "",
|
|
105
|
-
:Tract => "",
|
|
106
|
-
:Hexgrid => "",
|
|
107
|
-
:Name => "",
|
|
108
|
-
:symbol => "",
|
|
109
|
-
:Spaceport => "",
|
|
110
|
-
:TractID => "",
|
|
111
|
-
:VolumeId => "",
|
|
112
|
-
:rect => "fill='#{@color[:background]}'"
|
|
113
|
-
}
|
|
114
|
-
@style[:UWP] = @style[:Name]
|
|
115
28
|
end
|
|
116
29
|
def from_file
|
|
117
30
|
File.open(@source_filename,'r').readlines.each { |line| @volumes << line if /^\d{4}/.match(line) }
|
|
@@ -150,10 +63,10 @@ module Astromapper
|
|
|
150
63
|
fill: #eed;
|
|
151
64
|
font: 120px sans-serif;
|
|
152
65
|
}
|
|
153
|
-
text.
|
|
66
|
+
text.namestamp {
|
|
154
67
|
font-size: 13px;
|
|
155
68
|
}
|
|
156
|
-
text.
|
|
69
|
+
text.symbol {
|
|
157
70
|
font-size: 14px;
|
|
158
71
|
fill: #222;
|
|
159
72
|
}
|
|
@@ -191,7 +104,7 @@ module Astromapper
|
|
|
191
104
|
stroke-dasharray: 3,6;
|
|
192
105
|
}
|
|
193
106
|
</style>
|
|
194
|
-
<rect
|
|
107
|
+
<rect width='#{@width}' height='#{@height}' />
|
|
195
108
|
EOS
|
|
196
109
|
end
|
|
197
110
|
def center_of(locx)
|
|
@@ -234,12 +147,12 @@ module Astromapper
|
|
|
234
147
|
|
|
235
148
|
output = "<!-- Volume: #{volume.strip.gsub(/\t/,' // ')} -->\n"
|
|
236
149
|
output += (size == '0') ? draw_belt(c) : draw_planet(c,uwp)
|
|
237
|
-
output += " <text
|
|
238
|
-
output += " <text
|
|
239
|
-
output += " <text
|
|
150
|
+
output += " <text class='spaceport' x='#{c[0]}' y='#{(c[1] + @side / 2).tweak}'>#{spaceport.strip}</text>\n"
|
|
151
|
+
output += " <text x='#{c[0]}' y='#{(c[1]+(@side/1.3)).tweak}'>#{uwp.strip}</text>\n"
|
|
152
|
+
output += " <text x='#{c[0]}' y='#{(c[1]-(@side/2.1)).tweak}'>#{name.strip}</text>\n"
|
|
240
153
|
unless zone == '..'
|
|
241
154
|
style = zone + '_zone'
|
|
242
|
-
output += " <path
|
|
155
|
+
output += " <path d='M #{c[0] - curve/2;} #{c[1] - (curve/1.4)} a #{curve} #{curve} 0 1 0 20 0' />\n"
|
|
243
156
|
end
|
|
244
157
|
output += navy_base(c) if nsg.include?('N')
|
|
245
158
|
output += scout_base(c) if nsg.include?('S')
|
|
@@ -256,7 +169,7 @@ module Astromapper
|
|
|
256
169
|
x = (c[0]+(@side/1.8)).tweak + 2
|
|
257
170
|
y = (c[1]-(@side/3)).tweak + 3
|
|
258
171
|
stars.split('/').each do |star|
|
|
259
|
-
output += " <text
|
|
172
|
+
output += " <text x='#{x}' y='#{y}'>#{star[0..1].strip}</text>\n"
|
|
260
173
|
x += 3
|
|
261
174
|
y += 7
|
|
262
175
|
end
|
|
@@ -264,21 +177,21 @@ module Astromapper
|
|
|
264
177
|
end
|
|
265
178
|
def draw_planet(c,w)
|
|
266
179
|
k = (w[3] == '0') ? 'Desert' : 'Planet'
|
|
267
|
-
" <circle
|
|
180
|
+
" <circle class='planet' cx='#{c[0]}' cy='#{c[1]}' r='#{@side/7}' />\n"
|
|
268
181
|
end
|
|
269
182
|
def draw_belt(c)
|
|
270
183
|
output = " <g stroke='none' fill='none'>\n"
|
|
271
184
|
7.times do
|
|
272
185
|
x = c[0] + Random.rand(@side/3) - @side/6
|
|
273
186
|
y = c[1] + Random.rand(@side/3) - @side/6
|
|
274
|
-
output += " <circle
|
|
187
|
+
output += " <circle class='belt' cx='#{x.tweak}' cy='#{y.tweak}' r='#{(@side/15).tweak}' />\n"
|
|
275
188
|
end
|
|
276
189
|
output + " </g>\n"
|
|
277
190
|
end
|
|
278
191
|
def frame(k='Frame')
|
|
279
192
|
style = k.to_sym
|
|
280
193
|
z = 0; w = @width - 0; h = @height - z;
|
|
281
|
-
" <polyline
|
|
194
|
+
" <polyline class='frame' points='#{z},#{z} #{w},#{z} #{w},#{h} #{z},#{h} #{z},#{z}' />"
|
|
282
195
|
end
|
|
283
196
|
def tract_marks
|
|
284
197
|
height = (@height / 4).floor
|
|
@@ -292,8 +205,8 @@ module Astromapper
|
|
|
292
205
|
w2 = 0
|
|
293
206
|
4.times do |c|
|
|
294
207
|
w1 = w2; w2 += (width - [-4,4,5,-4][c])
|
|
295
|
-
output += " <text
|
|
296
|
-
output += " <polyline
|
|
208
|
+
output += " <text class='tract' x='#{w1 + 70}' y='#{h1 + 110}'>#{letters.shift}</text>\n"
|
|
209
|
+
output += " <polyline class='tract' points='#{w1},#{h1} #{w2},#{h1} #{w2},#{h2} #{w1},#{h2} #{w1},#{h1}' />\n"
|
|
297
210
|
# raise output
|
|
298
211
|
end
|
|
299
212
|
end
|
|
@@ -306,42 +219,42 @@ module Astromapper
|
|
|
306
219
|
(@columns+1).times do |c|
|
|
307
220
|
x = @side + ((c-1) * @side * 1.5)
|
|
308
221
|
y = (c % 2 == 1) ? (r-1) * @side * @factor + (0.2 * @side) : (r-1) * @side * @factor + @hex[:side_h]+ (0.2 * @side)
|
|
309
|
-
output += "<text
|
|
222
|
+
output += "<text class='volume-id' x='#{x.tweak}' y='#{y.tweak}'>%02d%02d</text>\n" % [c,r]
|
|
310
223
|
end
|
|
311
224
|
end
|
|
312
225
|
output
|
|
313
226
|
end
|
|
314
227
|
def polygon(x, y, sx, sy, sides=4)
|
|
315
228
|
polygon = star_coords(sx, sy, sides).map { |c| "#{x + c[0]},#{y.tweak+c[1]}" }
|
|
316
|
-
" <polygon
|
|
229
|
+
" <polygon points='#{polygon.join(' ')}' />\n"
|
|
317
230
|
end
|
|
318
231
|
def gas_giant(c)
|
|
319
232
|
x = (c[0]+(@side/1.8)).tweak; y = (c[1]+(@side/3)).tweak;
|
|
320
233
|
return<<-GIANT
|
|
321
|
-
<g><!-- Has Gas Giant -->
|
|
322
|
-
<ellipse
|
|
323
|
-
<circle
|
|
234
|
+
<g class='gas-giant'><!-- Has Gas Giant -->
|
|
235
|
+
<ellipse cx='#{x}' cy='#{y}' rx='#{(@side/(@mark * 0.5)).tweak}' ry='#{(@side/@mark * 0.3).tweak}' />
|
|
236
|
+
<circle cx='#{x}' cy='#{y}' r='#{(@side/(@mark * 1.2)).tweak}' />
|
|
324
237
|
</g>
|
|
325
238
|
GIANT
|
|
326
239
|
end
|
|
327
240
|
def pirates(c);
|
|
328
|
-
return "<!-- Pirates --><text
|
|
241
|
+
return "<!-- Pirates --><text class='symbol' x='#{c[0]-(@side/3.1)}' y='#{c[1]+(@side/7)}'>\u2620</text>\n"
|
|
329
242
|
end
|
|
330
243
|
def consulate(c);
|
|
331
|
-
return "<!-- Consulate --><text
|
|
244
|
+
return "<!-- Consulate --><text class='symbol' x='#{c[0]-(@side/1.5)}' y='#{c[1]+(@side/7)}'>\u2691</text>\n"
|
|
332
245
|
end
|
|
333
246
|
def scout_base(c);
|
|
334
|
-
return "<!-- Scout Base --><text
|
|
247
|
+
return "<!-- Scout Base --><text class='symbol' x='#{c[0]-(@side/1.8)}' y='#{c[1]+(@side/2.4)}'>\u269C</text>\n"
|
|
335
248
|
'<!-- SB -->' + polygon(c[0]-(@side/1.8),c[1]+(@side/3.7), @side/(@mark/2), @side/@mark, 3);
|
|
336
249
|
end
|
|
337
250
|
def navy_base(c);
|
|
338
|
-
return "<!-- Navy Base --><text
|
|
251
|
+
return "<!-- Navy Base --><text class='symbol' x='#{c[0]-(@side/1.8)}' y='#{c[1]-(@side/6)}'>\u2693</text>\n"
|
|
339
252
|
'<!-- NB -->' +polygon(c[0]-(@side/1.8), c[1]-(@side/3.7), @side/(@mark/2), @side/@mark, 5);
|
|
340
253
|
end
|
|
341
254
|
def hex_grid; (@rows * 3 + 2).times.map { |j| hex_row((j/2).floor, (j % 2 != 0)) };
|
|
342
255
|
end
|
|
343
256
|
def namestamp
|
|
344
|
-
return "<text
|
|
257
|
+
return "<text class='namestamp' x='30' y='2800'>#{@name}</text>"
|
|
345
258
|
end
|
|
346
259
|
def hex_row(row, top=false)
|
|
347
260
|
ly = (row * 2 * @hex[:side_h]) + @hex[:side_h]
|
|
@@ -369,7 +282,7 @@ module Astromapper
|
|
|
369
282
|
x += @hex[:side_w]
|
|
370
283
|
y = (top) ? y - @hex[:side_h] : y + @hex[:side_h]
|
|
371
284
|
points << "#{x.tweak},#{y.tweak}"
|
|
372
|
-
" <polyline
|
|
285
|
+
" <polyline points='#{points.join(' ')}' />"
|
|
373
286
|
end
|
|
374
287
|
end
|
|
375
288
|
end
|
data/lib/astromapper/version.rb
CHANGED