usps_flags 0.2.5 → 0.2.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
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +3 -2
- data/README.md +1 -13
- data/lib/usps_flags/core/trident_spec.rb +39 -16
- data/lib/usps_flags/generate.rb +85 -64
- data/lib/usps_flags/helpers/spec_arrows.rb +28 -38
- data/usps_flags.gemspec +2 -2
- metadata +2 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 230cbb0c6890872f99ec67e5a5db72eb528b84bc
|
4
|
+
data.tar.gz: 54251932a8c574ebfa8efea790086eeec8cc5459
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 57d576e35c377d8527988d9fd51628712d6a3eaf8db4c9c137f4e657e61fb174f11c1868d407ab2dffce080ccdde5631e586e1f71e6b0fc610984ee8cf42ebaa
|
7
|
+
data.tar.gz: 80160eaa9c095e3a3af76d0c27550183b081c9599140c43b0a8c378e99359d96f65c1f6c32554238cbdd60e09908d5c57fe5635c81a0da6938c752fc0c54ff3d
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
@@ -1,2 +1,3 @@
|
|
1
|
-
��
|
2
|
-
|
1
|
+
j�7x��9Qb�?>q�����ڜ/4�����.��'n�
|
2
|
+
g
|
3
|
+
��e+Dc�챢���
|
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
[](https://rubygems.org/gems/usps_flags)
|
4
4
|
[](https://travis-ci.org/jfiander/usps-flags)
|
5
|
-
[](https://codeclimate.com/github/jfiander/usps-flags/test_coverage)
|
6
6
|
[](https://codeclimate.com/github/jfiander/usps-flags/maintainability)
|
7
7
|
|
8
8
|
This gem allows you to generate precise SVG and PNG flag images based on
|
@@ -26,16 +26,6 @@ USPSFlags::Config.new do |config|
|
|
26
26
|
end
|
27
27
|
```
|
28
28
|
|
29
|
-
### Other
|
30
|
-
|
31
|
-
Run the following commands:
|
32
|
-
|
33
|
-
```ruby
|
34
|
-
gem install usps_flags
|
35
|
-
require 'usps_flags'
|
36
|
-
USPSFlags::Config.flags_dir "path/to/flags/dir"
|
37
|
-
```
|
38
|
-
|
39
29
|
## Available flags
|
40
30
|
|
41
31
|
- US Ensign
|
@@ -134,8 +124,6 @@ flag.svg #=> Generates SVG file at "/path/to/svg/output.svg"
|
|
134
124
|
flag.png #=> Generates PNG file at "/path/to/png/output.png"
|
135
125
|
```
|
136
126
|
|
137
|
-
- Calling any DSL method without argument, or with `nil` as argument will return
|
138
|
-
the current value.
|
139
127
|
- You can explicitly set `svg_file` to `""` to suppress printing the SVG content
|
140
128
|
to console/log.
|
141
129
|
- Calling `.png` requires `png_file` to be set.
|
@@ -89,8 +89,7 @@ class USPSFlags::Core::TridentSpec
|
|
89
89
|
<<~SVG
|
90
90
|
<!-- Short Trident -->
|
91
91
|
<g transform="translate(-#{USPSFlags::Config::BASE_FLY*14/80},#{USPSFlags::Config::BASE_HOIST*9/32})"><g transform="scale(0.7)">
|
92
|
-
|
93
|
-
<text x="#{USPSFlags::Config::BASE_FLY/2}" y="#{USPSFlags::Config::BASE_HOIST*5/80}" font-family="sans-serif" font-size="#{USPSFlags::Config::BASE_HOIST/40}px" fill="#BF0D3E" text-anchor="middle">Squadron Officers</text>
|
92
|
+
#{trident_heading(:s)}
|
94
93
|
|
95
94
|
#{USPSFlags::Core::Trident.new(:s).svg}
|
96
95
|
|
@@ -132,8 +131,7 @@ class USPSFlags::Core::TridentSpec
|
|
132
131
|
<<~SVG
|
133
132
|
<!-- Delta Trident -->
|
134
133
|
<g transform="translate(#{USPSFlags::Config::BASE_FLY*5/80},#{USPSFlags::Config::BASE_HOIST*9/32})"><g transform="scale(0.7)">
|
135
|
-
|
136
|
-
<text x="#{USPSFlags::Config::BASE_FLY/2}" y="#{USPSFlags::Config::BASE_HOIST*5/80}" font-family="sans-serif" font-size="#{USPSFlags::Config::BASE_HOIST/40}px" fill="#BF0D3E" text-anchor="middle">District Officers</text>
|
134
|
+
#{trident_heading(:d)}
|
137
135
|
|
138
136
|
#{USPSFlags::Core::Trident.new(:d).svg}
|
139
137
|
|
@@ -155,21 +153,18 @@ class USPSFlags::Core::TridentSpec
|
|
155
153
|
<<~SVG
|
156
154
|
<!-- Circle Trident -->
|
157
155
|
<g transform="translate(#{USPSFlags::Config::BASE_FLY*23/80},#{USPSFlags::Config::BASE_HOIST*9/32})"><g transform="scale(0.7)">
|
158
|
-
|
159
|
-
<text x="#{USPSFlags::Config::BASE_FLY/2}" y="#{USPSFlags::Config::BASE_HOIST*5/80}" font-family="sans-serif" font-size="#{USPSFlags::Config::BASE_HOIST/40}px" fill="#BF0D3E" text-anchor="middle">Staff Commanders Only</text>
|
156
|
+
#{trident_heading(:stf)}
|
160
157
|
|
161
158
|
#{USPSFlags::Core::Trident.new(:stf).svg}
|
162
159
|
|
163
|
-
|
164
|
-
<rect x="#{box_left}" y="#{box_top}" width="#{box_right-box_left}" height="#{USPSFlags::Config::BASE_HOIST*3/4}" stroke="#666666" stroke-width="#{USPSFlags::Config::BASE_FLY/600}" stroke-dasharray="15, 15" fill="none" />
|
160
|
+
#{long_trident_boundary_box(box_top, box_left, box_right)}
|
165
161
|
|
166
162
|
<!-- Right -->
|
167
163
|
#{USPSFlags::Helpers::SpecArrows.vertical(box_right+@trident_config[:bar_width], box_top+@trident_config[:crossbar_from_top]+@trident_config[:bar_width]*2, box_top+@trident_config[:crossbar_from_top]+@trident_config[:width], @trident_config[:center_point], @trident_config[:center_point], fly: @fly, unit: @unit, font_size: @label_font_size)} <!-- Inner circle diameter -->
|
168
164
|
#{USPSFlags::Helpers::SpecArrows.vertical(box_right+@trident_config[:bar_width], box_top+@trident_config[:crossbar_from_top]+@trident_config[:width], box_top+@trident_config[:crossbar_from_top]+@trident_config[:bar_width]+@trident_config[:width], nil, @trident_config[:center_point]+@trident_config[:bar_width]/2, fly: @fly, unit: @unit, font_size: @label_font_size)} <!-- Outer circle diameter -->
|
169
165
|
#{USPSFlags::Helpers::SpecArrows.vertical(box_right+@trident_config[:bar_width], box_top+@trident_config[:crossbar_from_top]+@trident_config[:bar_width]+@trident_config[:width], box_bottom, nil, box_right, fly: @fly, unit: @unit, font_size: @label_font_size)} <!-- Circle to bottom -->
|
170
166
|
|
171
|
-
|
172
|
-
#{USPSFlags::Helpers::SpecArrows.vertical(box_left-@trident_config[:bar_width]*1.5, box_top, box_bottom, box_left, box_left, fly: @fly, unit: @unit, label_offset: -USPSFlags::Config::BASE_FLY/30, label_offset_y: -USPSFlags::Config::BASE_FLY/4.5, font_size: @label_font_size, label_align: "middle")} <!-- Boundary height -->
|
167
|
+
#{long_trident_left_arrow(box_top, box_bottom, box_left, box_right)}
|
173
168
|
</g></g>
|
174
169
|
SVG
|
175
170
|
end
|
@@ -178,20 +173,48 @@ class USPSFlags::Core::TridentSpec
|
|
178
173
|
<<~SVG
|
179
174
|
<!-- Long Trident -->
|
180
175
|
<g transform="translate(#{USPSFlags::Config::BASE_FLY*40/80},#{USPSFlags::Config::BASE_HOIST*9/32})"><g transform="scale(0.7)">
|
181
|
-
|
182
|
-
<text x="#{USPSFlags::Config::BASE_FLY/2}" y="#{USPSFlags::Config::BASE_HOIST*5/80}" font-family="sans-serif" font-size="#{USPSFlags::Config::BASE_HOIST/40}px" fill="#BF0D3E" text-anchor="middle">National Officers</text>
|
176
|
+
#{trident_heading(:n)}
|
183
177
|
|
184
178
|
#{USPSFlags::Core::Trident.new(:n).svg}
|
185
179
|
|
186
|
-
|
187
|
-
<rect x="#{box_left}" y="#{box_top}" width="#{box_right-box_left}" height="#{USPSFlags::Config::BASE_HOIST*3/4}" stroke="#666666" stroke-width="#{USPSFlags::Config::BASE_FLY/600}" stroke-dasharray="15, 15" fill="none" />
|
180
|
+
#{long_trident_boundary_box(box_top, box_left, box_right)}
|
188
181
|
|
189
182
|
<!-- Right -->
|
190
183
|
#{USPSFlags::Helpers::SpecArrows.vertical(box_right+@trident_config[:bar_width], box_top+@trident_config[:crossbar_from_top]+@trident_config[:bar_width]*3, box_bottom, @trident_config[:center_point]+@trident_config[:hash_width]/2, box_right, fly: @fly, unit: @unit, font_size: @label_font_size)} <!-- Hash to bottom -->
|
191
184
|
|
192
|
-
|
193
|
-
#{USPSFlags::Helpers::SpecArrows.vertical(box_left-@trident_config[:bar_width]*1.5, box_top, box_bottom, box_left, box_left, fly: @fly, unit: @unit, label_offset: -USPSFlags::Config::BASE_FLY/30, label_offset_y: -USPSFlags::Config::BASE_FLY/4.5, font_size: @label_font_size, label_align: "middle")} <!-- Boundary height -->
|
185
|
+
#{long_trident_left_arrow(box_top, box_bottom, box_left, box_right)}
|
194
186
|
</g></g>
|
195
187
|
SVG
|
196
188
|
end
|
189
|
+
|
190
|
+
def trident_heading(type_sym)
|
191
|
+
type, description = case type_sym
|
192
|
+
when :s
|
193
|
+
["Short", "Squadron Officers"]
|
194
|
+
when :d
|
195
|
+
["Delta", "District Officers"]
|
196
|
+
when :stf
|
197
|
+
["Circle", "Staff Commanders Only"]
|
198
|
+
when :n
|
199
|
+
["Long", "National Officers"]
|
200
|
+
end
|
201
|
+
<<~SVG
|
202
|
+
<text x="#{USPSFlags::Config::BASE_FLY/2}" y="#{USPSFlags::Config::BASE_HOIST*1/40}" font-family="sans-serif" font-size="#{USPSFlags::Config::BASE_HOIST/30}px" font-weight="bold" fill="#BF0D3E" text-anchor="middle">#{type}</text>
|
203
|
+
<text x="#{USPSFlags::Config::BASE_FLY/2}" y="#{USPSFlags::Config::BASE_HOIST*5/80}" font-family="sans-serif" font-size="#{USPSFlags::Config::BASE_HOIST/40}px" fill="#BF0D3E" text-anchor="middle">#{description}</text>
|
204
|
+
SVG
|
205
|
+
end
|
206
|
+
|
207
|
+
def long_trident_boundary_box(box_top, box_left, box_right)
|
208
|
+
<<~SVG
|
209
|
+
<!-- Boundary box -->
|
210
|
+
<rect x="#{box_left}" y="#{box_top}" width="#{box_right-box_left}" height="#{USPSFlags::Config::BASE_HOIST*3/4}" stroke="#666666" stroke-width="#{USPSFlags::Config::BASE_FLY/600}" stroke-dasharray="15, 15" fill="none" />
|
211
|
+
SVG
|
212
|
+
end
|
213
|
+
|
214
|
+
def long_trident_left_arrow(box_top, box_bottom, box_left, box_right)
|
215
|
+
<<~SVG
|
216
|
+
<!-- Left -->
|
217
|
+
#{USPSFlags::Helpers::SpecArrows.vertical(box_left-@trident_config[:bar_width]*1.5, box_top, box_bottom, box_left, box_left, fly: @fly, unit: @unit, label_offset: -USPSFlags::Config::BASE_FLY/30, label_offset_y: -USPSFlags::Config::BASE_FLY/4.5, font_size: @label_font_size, label_align: "middle")} <!-- Boundary height -->
|
218
|
+
SVG
|
219
|
+
end
|
197
220
|
end
|
data/lib/usps_flags/generate.rb
CHANGED
@@ -79,26 +79,16 @@ class USPSFlags::Generate
|
|
79
79
|
# @param [Boolean] svg Generate zip archive of SVG images.
|
80
80
|
# @param [Boolean] png Generate zip archive of PNG images.
|
81
81
|
def zips(svg: true, png: true)
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
else
|
93
|
-
z.add(f.split("/").last, f)
|
94
|
-
end
|
95
|
-
end
|
96
|
-
end
|
97
|
-
puts "Generated #{format.upcase} Zip"
|
98
|
-
end
|
99
|
-
rescue Errno::EACCES => e
|
100
|
-
puts "Error: Failed to generate #{format.upcase} Zip -> #{e.message}"
|
101
|
-
end
|
82
|
+
begin
|
83
|
+
generate_zip("svg") if svg
|
84
|
+
rescue Errno::EACCES => e
|
85
|
+
puts "Error: Failed to generate SVG Zip -> #{e.message}"
|
86
|
+
end
|
87
|
+
|
88
|
+
begin
|
89
|
+
generate_zip("png") if png
|
90
|
+
rescue Errno::EACCES => e
|
91
|
+
puts "Error: Failed to generate SVG Zip -> #{e.message}"
|
102
92
|
end
|
103
93
|
end
|
104
94
|
|
@@ -134,6 +124,26 @@ class USPSFlags::Generate
|
|
134
124
|
[@svg_file, @png_file, @svg_ins_file, @png_ins_file]
|
135
125
|
end
|
136
126
|
|
127
|
+
def generate_zip(type)
|
128
|
+
raise "Error: Flags directory not found." unless ::Dir.exist?("#{USPSFlags::Config.flags_dir}/ZIP")
|
129
|
+
|
130
|
+
zip = "#{USPSFlags::Config.flags_dir}/ZIP/USPS_Flags.#{type}.zip"
|
131
|
+
::File.delete(zip) if ::File.exist?(zip)
|
132
|
+
|
133
|
+
::Zip::File.open(zip, Zip::File::CREATE) do |z|
|
134
|
+
::Dir.glob("#{USPSFlags::Config.flags_dir}/#{type.upcase}/**/*").each do |f|
|
135
|
+
add_to_zip(z, f)
|
136
|
+
end
|
137
|
+
end
|
138
|
+
puts "Generated #{type.upcase} Zip"
|
139
|
+
end
|
140
|
+
|
141
|
+
def add_to_zip(z, f)
|
142
|
+
filename = f.split("/").last
|
143
|
+
filename = "insignia/#{filename}" if f.split("/").last(2).first == "insignia"
|
144
|
+
z.add(filename, f)
|
145
|
+
end
|
146
|
+
|
137
147
|
def generate_static_images_for(flag, svg: true, png: true)
|
138
148
|
start_time = Time.now
|
139
149
|
# USPSFlags::Helpers.log " | | _ _ _ _ _ | \r".rjust(USPSFlags::Helpers.max_flag_name_length+31, " ")
|
@@ -159,55 +169,66 @@ class USPSFlags::Generate
|
|
159
169
|
end
|
160
170
|
|
161
171
|
def generate_static_svg(flag)
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
USPSFlags::Helpers.log "I"
|
171
|
-
end
|
172
|
-
rescue => e
|
173
|
-
USPSFlags::Helpers.log "x -> #{e.message}"
|
172
|
+
USPSFlags::Helpers.log " "
|
173
|
+
svg flag, outfile: @svg_file, scale: 1
|
174
|
+
USPSFlags::Helpers.log "S"
|
175
|
+
if USPSFlags::Helpers.valid_flags(:past).include?(flag) || !USPSFlags::Helpers.valid_flags(:insignia).include?(flag)
|
176
|
+
USPSFlags::Helpers.log "-"
|
177
|
+
else
|
178
|
+
svg flag, field: false, outfile: @svg_ins_file, scale: 1
|
179
|
+
USPSFlags::Helpers.log "I"
|
174
180
|
end
|
181
|
+
rescue => e
|
182
|
+
USPSFlags::Helpers.log "x -> #{e.message}"
|
175
183
|
end
|
176
184
|
|
177
185
|
def generate_static_png(flag)
|
178
186
|
USPSFlags::Helpers.log " | "
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
187
|
+
generate_fullsize_png
|
188
|
+
generate_fullsize_png_insignia(flag)
|
189
|
+
generate_reduced_size_pngs
|
190
|
+
rescue => e
|
191
|
+
USPSFlags::Helpers.log "x -> #{e.message}"
|
192
|
+
end
|
193
|
+
|
194
|
+
def generate_fullsize_png
|
195
|
+
png(File.read(@svg_file), outfile: @png_file) unless ::File.exist?(@png_file)
|
196
|
+
USPSFlags::Helpers.log "F"
|
197
|
+
end
|
198
|
+
|
199
|
+
def generate_fullsize_png_insignia(flag)
|
200
|
+
if USPSFlags::Helpers.valid_flags(:past).include?(flag) || !USPSFlags::Helpers.valid_flags(:insignia).include?(flag)
|
201
|
+
USPSFlags::Helpers.log "-"
|
202
|
+
else
|
203
|
+
png(File.read(@svg_ins_file), outfile: @png_ins_file, trim: true) unless ::File.exist?(@png_ins_file)
|
204
|
+
USPSFlags::Helpers.log "I"
|
205
|
+
end
|
206
|
+
end
|
207
|
+
|
208
|
+
def generate_reduced_size_pngs
|
209
|
+
USPSFlags::Helpers.png_sizes.keys.each do |size|
|
210
|
+
USPSFlags::Helpers.log(".") and next if ::File.exist?("#{USPSFlags::Config.flags_dir}/PNG/#{flag}.#{size}.png")
|
211
|
+
size, size_key = USPSFlags::Helpers.size_and_key(size: size, flag: flag)
|
212
|
+
generate_smaller_png(flag, size, size_key)
|
213
|
+
generate_smaller_png_insignia(flag, size, size_key)
|
214
|
+
end
|
215
|
+
end
|
216
|
+
|
217
|
+
def generate_smaller_png(flag, size, size_key)
|
218
|
+
USPSFlags::Helpers.resize_png(@png_ins_file, flag: flag, size: size, size_key: size_key) if USPSFlags::Helpers.valid_flags(:insignia).include?(flag)
|
219
|
+
USPSFlags::Helpers.log USPSFlags::Helpers.png_sizes[size_key]
|
220
|
+
end
|
221
|
+
|
222
|
+
def generate_smaller_png_insignia(flag, size, size_key)
|
223
|
+
if ::File.exist?(@png_ins_file) && ::File.exist?("#{USPSFlags::Config.flags_dir}/PNG/insignia/#{flag}.#{size}.png")
|
224
|
+
USPSFlags::Helpers.log "."
|
225
|
+
elsif ::File.exist?(@png_ins_file) && MiniMagick::Image.open(@png_ins_file)[:width] > size && USPSFlags::Helpers.valid_flags(:insignia).include?(flag)
|
226
|
+
USPSFlags::Helpers.resize_png(@png_ins_file, flag: flag, size: size, size_key: size_key)
|
227
|
+
USPSFlags::Helpers.log "i"
|
228
|
+
elsif ::File.exist?(@png_ins_file)
|
229
|
+
USPSFlags::Helpers.log "+"
|
230
|
+
else
|
231
|
+
USPSFlags::Helpers.log "-"
|
211
232
|
end
|
212
233
|
end
|
213
234
|
end
|
@@ -9,26 +9,11 @@ class USPSFlags::Helpers::SpecArrows
|
|
9
9
|
# This is used USPSFlags::Core.trident_spec, and should never need to be called directly.
|
10
10
|
# @private
|
11
11
|
def vertical(x, top, bottom, pointer_top = nil, pointer_bottom = nil, label: nil, label_offset: (USPSFlags::Config::BASE_FLY/120), label_offset_y: 0, label_align: "left", color: "#CCCCCC", stroke_width: (USPSFlags::Config::BASE_FLY/600), stroke_dash: "10, 10", font_size: (USPSFlags::Config::BASE_FLY/60), arrow_size: (USPSFlags::Config::BASE_FLY/120), fly: USPSFlags::Config::BASE_FLY, unit: nil)
|
12
|
-
label = bottom
|
13
|
-
label = label.to_i if label - label.to_i == 0
|
14
|
-
label = Rational(label) * fly / USPSFlags::Config::BASE_FLY
|
15
|
-
if label == label.to_i
|
16
|
-
label = label.to_i
|
17
|
-
label_fraction = ""
|
18
|
-
else
|
19
|
-
label, label_fraction = label.to_simplified_a
|
20
|
-
end
|
12
|
+
label, label_fraction = get_labels(bottom, top, fly, label: label)
|
21
13
|
svg = ""
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
SVG
|
26
|
-
end
|
27
|
-
unless pointer_bottom.nil?
|
28
|
-
svg << <<~SVG
|
29
|
-
<line x1="#{x}" y1="#{bottom}" x2="#{pointer_bottom}" y2="#{bottom}" stroke="#{color}" stroke-width="#{stroke_width}" stroke-dasharray="#{stroke_dash}" />
|
30
|
-
SVG
|
31
|
-
end
|
14
|
+
|
15
|
+
svg << arrow_pointer(x, pointer_top, top, top, color, stroke_width, stroke_dash) unless pointer_top.nil?
|
16
|
+
svg << arrow_pointer(x, pointer_bottom, bottom, bottom, color, stroke_width, stroke_dash) unless pointer_bottom.nil?
|
32
17
|
|
33
18
|
svg << <<~SVG
|
34
19
|
<path d="M#{x} #{top} l #{arrow_size} #{arrow_size} M#{x} #{top} l -#{arrow_size} #{arrow_size} M#{x} #{top} l 0 #{bottom - top} l #{arrow_size} -#{arrow_size} M#{x} #{bottom} l -#{arrow_size} -#{arrow_size}" stroke="#{color}" stroke-width="#{stroke_width}" fill="none" />
|
@@ -46,26 +31,11 @@ class USPSFlags::Helpers::SpecArrows
|
|
46
31
|
# This is used USPSFlags::Core.trident_spec, and should never need to be called directly.
|
47
32
|
# @private
|
48
33
|
def horizontal(y, left, right, pointer_left = nil, pointer_right = nil, label: nil, label_offset: (USPSFlags::Config::BASE_FLY/45), label_offset_x: 0, label_align: "middle", color: "#CCCCCC", stroke_width: (USPSFlags::Config::BASE_FLY/600), stroke_dash: "10, 10", font_size: (USPSFlags::Config::BASE_FLY/60), arrow_size: (USPSFlags::Config::BASE_FLY/120), fly: USPSFlags::Config::BASE_FLY, unit: nil)
|
49
|
-
label = right
|
50
|
-
label = label.to_i if label - label.to_i == 0
|
51
|
-
label = Rational(label) * fly / USPSFlags::Config::BASE_FLY
|
52
|
-
if label == label.to_i
|
53
|
-
label = label.to_i
|
54
|
-
label_fraction = ""
|
55
|
-
else
|
56
|
-
label, label_fraction = label.to_simplified_a
|
57
|
-
end
|
34
|
+
label, label_fraction = get_labels(right, left, fly, label: label)
|
58
35
|
svg = ""
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
SVG
|
63
|
-
end
|
64
|
-
unless pointer_right.nil?
|
65
|
-
svg << <<~SVG
|
66
|
-
<line x1="#{right}" y1="#{y}" x2="#{right}" y2="#{pointer_right}" stroke="#{color}" stroke-width="#{stroke_width}" stroke-dasharray="#{stroke_dash}" />
|
67
|
-
SVG
|
68
|
-
end
|
36
|
+
|
37
|
+
svg << arrow_pointer(left, left, pointer_left, y, color, stroke_width, stroke_dash) unless pointer_left.nil?
|
38
|
+
svg << arrow_pointer(right, right, y, pointer_right, color, stroke_width, stroke_dash) unless pointer_right.nil?
|
69
39
|
|
70
40
|
svg << <<~SVG
|
71
41
|
<path d="M#{left} #{y} l #{arrow_size} #{arrow_size} M#{left} #{y} l #{arrow_size} -#{arrow_size} M#{left} #{y} l #{right - left} 0 l -#{arrow_size} -#{arrow_size} M#{right} #{y} l -#{arrow_size} #{arrow_size}" stroke="#{color}" stroke-width="#{stroke_width}" fill="none" />
|
@@ -77,5 +47,25 @@ class USPSFlags::Helpers::SpecArrows
|
|
77
47
|
|
78
48
|
svg
|
79
49
|
end
|
50
|
+
|
51
|
+
private
|
52
|
+
def arrow_pointer(x1, x2, y1, y2, color, stroke_width, stroke_dash)
|
53
|
+
<<~SVG
|
54
|
+
<line x1="#{x1}" y1="#{y1}" x2="#{x2}" y2="#{y2}" stroke="#{color}" stroke-width="#{stroke_width}" stroke-dasharray="#{stroke_dash}" />
|
55
|
+
SVG
|
56
|
+
end
|
57
|
+
|
58
|
+
def get_labels(a, b, fly, label: nil)
|
59
|
+
label = a - b if label.nil?
|
60
|
+
label = label.to_i if label - label.to_i == 0
|
61
|
+
label = Rational(label) * fly / USPSFlags::Config::BASE_FLY
|
62
|
+
if label == label.to_i
|
63
|
+
label = label.to_i
|
64
|
+
label_fraction = ""
|
65
|
+
else
|
66
|
+
label, label_fraction = label.to_simplified_a
|
67
|
+
end
|
68
|
+
[label, label_fraction]
|
69
|
+
end
|
80
70
|
end
|
81
71
|
end
|
data/usps_flags.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'usps_flags'
|
3
|
-
s.version = '0.2.
|
4
|
-
s.date = '2017-11-
|
3
|
+
s.version = '0.2.6'
|
4
|
+
s.date = '2017-11-06'
|
5
5
|
s.summary = 'Flag generator for United States Power Squadrons'
|
6
6
|
s.description = 'A flag image (PNG, SVG) generator for United States Power Squadrons.'
|
7
7
|
s.homepage = 'http://rubygems.org/gems/usps_flags'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: usps_flags
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Julian Fiander
|
@@ -30,7 +30,7 @@ cert_chain:
|
|
30
30
|
3YzYAc+kXfD7kkzA2NMvLT6Q1v03qQyIZ8BS8SNk5wLGAdLM+IravFDLEs448fjz
|
31
31
|
lEAU0RHLFVbE+CXW6makIlWGHR0=
|
32
32
|
-----END CERTIFICATE-----
|
33
|
-
date: 2017-11-
|
33
|
+
date: 2017-11-06 00:00:00.000000000 Z
|
34
34
|
dependencies:
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
36
|
name: file_utils
|
metadata.gz.sig
CHANGED
Binary file
|