usps_flags 0.5.0 → 0.5.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +22 -11
- data/.travis.yml +1 -1
- data/Gemfile.lock +5 -2
- data/README.md +6 -0
- data/lib/usps_flags.rb +35 -44
- data/lib/usps_flags/config.rb +89 -87
- data/lib/usps_flags/core.rb +44 -42
- data/lib/usps_flags/core/ensign.rb +53 -49
- data/lib/usps_flags/core/field.rb +96 -92
- data/lib/usps_flags/core/footer.rb +9 -5
- data/lib/usps_flags/core/headers.rb +58 -48
- data/lib/usps_flags/core/icons.rb +11 -7
- data/lib/usps_flags/core/icons/anchor.rb +62 -56
- data/lib/usps_flags/core/icons/binoculars.rb +21 -15
- data/lib/usps_flags/core/icons/lighthouse.rb +28 -22
- data/lib/usps_flags/core/icons/star.rb +21 -15
- data/lib/usps_flags/core/icons/trident.rb +136 -127
- data/lib/usps_flags/core/icons/trident_parts/hashes.rb +62 -55
- data/lib/usps_flags/core/icons/trumpet.rb +34 -28
- data/lib/usps_flags/core/pennant.rb +50 -46
- data/lib/usps_flags/core/trident_spec.rb +135 -131
- data/lib/usps_flags/core/trident_specs.rb +11 -7
- data/lib/usps_flags/core/trident_specs/base.rb +36 -26
- data/lib/usps_flags/core/trident_specs/circle.rb +36 -30
- data/lib/usps_flags/core/trident_specs/delta.rb +41 -30
- data/lib/usps_flags/core/trident_specs/header.rb +56 -50
- data/lib/usps_flags/core/trident_specs/horizontal.rb +80 -0
- data/lib/usps_flags/core/trident_specs/long.rb +41 -25
- data/lib/usps_flags/core/trident_specs/overlay.rb +40 -0
- data/lib/usps_flags/core/trident_specs/short.rb +30 -156
- data/lib/usps_flags/core/trident_specs/vertical.rb +108 -0
- data/lib/usps_flags/core/tridents.rb +54 -50
- data/lib/usps_flags/core/us.rb +40 -44
- data/lib/usps_flags/core/wheel.rb +7 -3
- data/lib/usps_flags/errors.rb +25 -23
- data/lib/usps_flags/generate.rb +111 -107
- data/lib/usps_flags/generate/flag.rb +160 -157
- data/lib/usps_flags/generate/generator_methods.rb +139 -0
- data/lib/usps_flags/generate/helper_methods.rb +88 -0
- data/lib/usps_flags/helpers.rb +163 -165
- data/lib/usps_flags/helpers/builders.rb +92 -85
- data/lib/usps_flags/helpers/spec_arrows.rb +127 -123
- data/lib/usps_flags/helpers/valid_flags.rb +45 -41
- data/lib/usps_flags/rational.rb +35 -0
- data/spec/usps_flags/config_spec.rb +17 -10
- data/spec/usps_flags/core_spec.rb +31 -31
- data/spec/usps_flags/generate_spec.rb +76 -73
- data/spec/usps_flags/helpers_spec.rb +8 -8
- data/spec/usps_flags/rational_spec.rb +17 -0
- data/spec/usps_flags_spec.rb +19 -21
- data/usps_flags.gemspec +7 -6
- metadata +34 -10
- data/lib/rational.rb +0 -39
- data/lib/usps_flags/generate/private.rb +0 -199
- data/spec/rational_spec.rb +0 -19
@@ -4,35 +4,51 @@
|
|
4
4
|
#
|
5
5
|
# This class should never need to be called directly.
|
6
6
|
# @private
|
7
|
-
class USPSFlags
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
class USPSFlags
|
8
|
+
class Core
|
9
|
+
module TridentSpecs
|
10
|
+
class Long < USPSFlags::Core::TridentSpecs::Base
|
11
|
+
def p
|
12
|
+
output('Long', 40, :n)
|
13
|
+
end
|
11
14
|
|
12
|
-
private
|
15
|
+
private
|
13
16
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
17
|
+
def boundary_box
|
18
|
+
<<~SVG
|
19
|
+
<!-- Boundary box -->
|
20
|
+
<rect x="#{@box_left}" y="#{@box_top}" width="#{@box_right - @box_left}" height="#{BH * 3 / 4}" stroke="#666666" stroke-width="#{BF / 600}" stroke-dasharray="15, 15" fill="none" />
|
21
|
+
SVG
|
22
|
+
end
|
20
23
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
24
|
+
def right
|
25
|
+
<<~SVG
|
26
|
+
<!-- Right -->
|
27
|
+
#{hash_to_bottom} <!-- Hash to bottom -->
|
28
|
+
SVG
|
29
|
+
end
|
27
30
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
31
|
+
def left
|
32
|
+
arrow = SA.vertical(
|
33
|
+
@box_left - @config[:bar_width] * 1.5, @box_top, @box_bottom,
|
34
|
+
pointer_top: @box_left, pointer_bottom: @box_left, label_offset: -BF / 30,
|
35
|
+
label_offset_y: -BF / 4.5, label_align: 'middle', fly: @fly, unit: @unit
|
36
|
+
)
|
37
|
+
<<~SVG
|
38
|
+
<!-- Left -->
|
39
|
+
#{arrow} <!-- Boundary height -->
|
40
|
+
SVG
|
41
|
+
end
|
34
42
|
|
35
|
-
|
36
|
-
|
43
|
+
def hash_to_bottom
|
44
|
+
SA.vertical(
|
45
|
+
@box_right + @config[:bar_width], @box_top + @config[:crossbar_from_top] + @config[:bar_width] * 3,
|
46
|
+
@box_bottom,
|
47
|
+
pointer_top: @config[:center_point] + @config[:hash_width] / 2, pointer_bottom: @box_right,
|
48
|
+
fly: @fly, unit: @unit
|
49
|
+
)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
37
53
|
end
|
38
54
|
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: false
|
2
|
+
|
3
|
+
# Core SVG data for the trident specification sheet.
|
4
|
+
#
|
5
|
+
# This class should never need to be called directly.
|
6
|
+
# @private
|
7
|
+
class USPSFlags
|
8
|
+
class Core
|
9
|
+
module TridentSpecs
|
10
|
+
module Overlay
|
11
|
+
# This module defined no public methods
|
12
|
+
def _; end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def overlay
|
17
|
+
<<~SVG
|
18
|
+
<!-- Overlay -->
|
19
|
+
<!-- Main point barb -->
|
20
|
+
#{overlay_lines}
|
21
|
+
<text x="#{@config[:center_point] + @config[:bar_width] * 9 / 8}" y="#{@box_top + @config[:center_point_height] - @config[:main_point_barb]}" font-family="sans-serif" font-size="#{Base::BF / 100}px" fill="#041E42" text-anchor="left">#{@barb_label}</text>
|
22
|
+
SVG
|
23
|
+
end
|
24
|
+
|
25
|
+
def overlay_lines
|
26
|
+
<<~SVG
|
27
|
+
#{overlay_line(@box_top + @config[:center_point_height] - @config[:main_point_barb], @box_top + @config[:center_point_height] - @config[:main_point_barb] * 5)}
|
28
|
+
#{overlay_line(@box_top + @config[:center_point_height], @box_top + @config[:center_point_height])}
|
29
|
+
SVG
|
30
|
+
end
|
31
|
+
|
32
|
+
def overlay_line(y1, y2)
|
33
|
+
<<~SVG
|
34
|
+
<line x1="#{@config[:center_point] + @config[:bar_width] / 2}" y1="#{y1}" x2="#{@config[:center_point] + @config[:bar_width] * 3 / 2}" y2="#{y2}" stroke="#666666" stroke-width="2" stroke-dasharray="5, 5" />
|
35
|
+
SVG
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -4,162 +4,36 @@
|
|
4
4
|
#
|
5
5
|
# This class should never need to be called directly.
|
6
6
|
# @private
|
7
|
-
class USPSFlags
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
7
|
+
class USPSFlags
|
8
|
+
class Core
|
9
|
+
module TridentSpecs
|
10
|
+
class Short < USPSFlags::Core::TridentSpecs::Base
|
11
|
+
include USPSFlags::Core::TridentSpecs::Vertical
|
12
|
+
include USPSFlags::Core::TridentSpecs::Horizontal
|
13
|
+
include USPSFlags::Core::TridentSpecs::Overlay
|
14
|
+
|
15
|
+
def p
|
16
|
+
output('Short', 14, :s) do
|
17
|
+
<<~SVG
|
18
|
+
#{boundary_box}
|
19
|
+
#{right}
|
20
|
+
#{left}
|
21
|
+
#{bottom}
|
22
|
+
#{top}
|
23
|
+
#{overlay}
|
24
|
+
SVG
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def boundary_box
|
31
|
+
<<~SVG
|
32
|
+
<!-- Boundary box -->
|
33
|
+
<rect x="#{@box_left}" y="#{@box_top}" width="#{@box_right - @box_left}" height="#{BH / 2}" stroke="#666666" stroke-width="#{BF / 600}" stroke-dasharray="15, 15" fill="none" />
|
34
|
+
SVG
|
35
|
+
end
|
36
|
+
end
|
18
37
|
end
|
19
38
|
end
|
20
|
-
|
21
|
-
private
|
22
|
-
|
23
|
-
def boundary_box
|
24
|
-
<<~SVG
|
25
|
-
<!-- Boundary box -->
|
26
|
-
<rect x="#{@box_left}" y="#{@box_top}" width="#{@box_right - @box_left}" height="#{BH / 2}" stroke="#666666" stroke-width="#{BF / 600}" stroke-dasharray="15, 15" fill="none" />
|
27
|
-
SVG
|
28
|
-
end
|
29
|
-
|
30
|
-
def right
|
31
|
-
<<~SVG
|
32
|
-
<!-- Right -->
|
33
|
-
#{SA.vertical(@box_right + @config[:bar_width], @box_top, @box_top + @config[:bar_width] * 4 / 5, pointer_top: @box_right, pointer_bottom: @box_right, fly: @fly, unit: @unit)} <!-- Side spike top gap -->
|
34
|
-
#{right_top_gap_to_hash_gap} <!-- Top gap to hash gap -->
|
35
|
-
#{right_crossbar_to_hash_gap} <!-- Crossbar to hash gap -->
|
36
|
-
|
37
|
-
#{right_hash} <!-- Hash -->
|
38
|
-
#{right_hash_to_bottom} <!-- Hash to bottom -->
|
39
|
-
SVG
|
40
|
-
end
|
41
|
-
|
42
|
-
def right_top_gap_to_hash_gap
|
43
|
-
SA.vertical(@box_right + @config[:bar_width], @box_top + @config[:bar_width] * 4 / 5, right_top_gap_bottom, pointer_bottom: @box_right, fly: @fly, unit: @unit)
|
44
|
-
end
|
45
|
-
|
46
|
-
def right_top_gap_bottom
|
47
|
-
@box_top + @config[:bar_width] * 9 / 10 * 2 + @config[:side_point_height] + @config[:side_spike_height]
|
48
|
-
end
|
49
|
-
|
50
|
-
def right_crossbar_to_hash_gap
|
51
|
-
SA.vertical(@box_right + @config[:bar_width], right_crossbar_top, right_crossbar_bottom, pointer_bottom: @config[:center_point] + @config[:hash_width] / 2, fly: @fly, unit: @unit)
|
52
|
-
end
|
53
|
-
|
54
|
-
def right_crossbar_top
|
55
|
-
@box_top + @config[:bar_width] * 18 / 10 + @config[:side_point_height] + @config[:side_spike_height]
|
56
|
-
end
|
57
|
-
|
58
|
-
def right_crossbar_bottom
|
59
|
-
@box_top + @config[:bar_width] * 28 / 10 + @config[:side_point_height] + @config[:side_spike_height]
|
60
|
-
end
|
61
|
-
|
62
|
-
def right_hash
|
63
|
-
SA.vertical(@box_right + @config[:bar_width], right_hash_top, right_hash_bottom, pointer_bottom: @config[:center_point] + @config[:hash_width] / 2, fly: @fly, unit: @unit)
|
64
|
-
end
|
65
|
-
|
66
|
-
def right_hash_top
|
67
|
-
@box_top + @config[:bar_width] * 28 / 10 + @config[:side_point_height] + @config[:side_spike_height]
|
68
|
-
end
|
69
|
-
|
70
|
-
def right_hash_bottom
|
71
|
-
@box_top + @config[:bar_width] * 38 / 10 + @config[:side_point_height] + @config[:side_spike_height]
|
72
|
-
end
|
73
|
-
|
74
|
-
def right_hash_to_bottom
|
75
|
-
SA.vertical(@box_right + @config[:bar_width], @box_top + @config[:bar_width] * 38 / 10 + @config[:side_point_height] + @config[:side_spike_height], @box_bottom, pointer_bottom: @box_right, fly: @fly, unit: @unit)
|
76
|
-
end
|
77
|
-
|
78
|
-
def left
|
79
|
-
<<~SVG
|
80
|
-
<!-- Left -->
|
81
|
-
#{SA.vertical(@box_left - @config[:bar_width] * 5.25, @box_top, @box_bottom, pointer_top: @box_left, pointer_top: @box_left, fly: @fly, unit: @unit)} <!-- Boundary height -->
|
82
|
-
#{left_main_point_height} <!-- Main point height -->
|
83
|
-
#{left_side_point_height} <!-- Side point height -->
|
84
|
-
SVG
|
85
|
-
end
|
86
|
-
|
87
|
-
def left_main_point_height
|
88
|
-
SA.vertical(@box_left - @config[:bar_width] * 0.75, @box_top, @box_top + @config[:center_point_height], pointer_bottom: @config[:center_point] - @config[:bar_width], label_offset: -BF / 24, label_offset_y: -BF / 60, label_align: 'middle', fly: @fly, unit: @unit)
|
89
|
-
end
|
90
|
-
|
91
|
-
def left_side_point_height
|
92
|
-
SA.vertical(@box_left - @config[:bar_width] * 1.5, @box_top + @config[:bar_width] * 4 / 5, left_side_point_bottom, pointer_top: @box_left, pointer_bottom: @box_left + @config[:bar_width], label_offset: -BF / 24, label_align: 'middle', fly: @fly, unit: @unit)
|
93
|
-
end
|
94
|
-
|
95
|
-
def left_side_point_bottom
|
96
|
-
@box_top + @config[:bar_width] * 4 / 5 + @config[:side_point_height]
|
97
|
-
end
|
98
|
-
|
99
|
-
def bottom
|
100
|
-
<<~SVG
|
101
|
-
<!-- Bottom -->
|
102
|
-
#{bottom_bar_width} <!-- Bar width -->
|
103
|
-
#{bottom_hash_width} <!-- Hash width -->
|
104
|
-
#{SA.horizontal(@box_bottom + @config[:bar_width] * 4, @box_left, @box_right, pointer_left: @box_bottom, pointer_right: @box_bottom, fly: @fly, unit: @unit)} <!-- Boundary width -->
|
105
|
-
SVG
|
106
|
-
end
|
107
|
-
|
108
|
-
def bottom_bar_width
|
109
|
-
SA.horizontal(@box_bottom + @config[:bar_width], @config[:center_point] - @config[:bar_width] / 2, @config[:center_point] + @config[:bar_width] / 2, pointer_left: @box_bottom, pointer_right: @box_bottom, fly: @fly, unit: @unit)
|
110
|
-
end
|
111
|
-
|
112
|
-
def bottom_hash_width
|
113
|
-
SA.horizontal(@box_bottom + @config[:bar_width] * 2.5, @config[:center_point] - @config[:hash_width] / 2, @config[:center_point] + @config[:hash_width] / 2, pointer_left: bottom_hash_width_pointer_left, pointer_right: bottom_hash_width_pointer_right, fly: @fly, unit: @unit)
|
114
|
-
end
|
115
|
-
|
116
|
-
def bottom_hash_width_pointer_left
|
117
|
-
@box_top + @config[:bar_width] * 4 + @config[:center_point_height] + @config[:side_spike_height]
|
118
|
-
end
|
119
|
-
|
120
|
-
def bottom_hash_width_pointer_right
|
121
|
-
@box_top + @config[:bar_width] * 4 + @config[:center_point_height] + @config[:side_spike_height]
|
122
|
-
end
|
123
|
-
|
124
|
-
def top
|
125
|
-
<<~SVG
|
126
|
-
<!-- Top -->
|
127
|
-
#{top_side_point_width} <!-- Side point width -->
|
128
|
-
#{top_main_point_width} <!-- Main point width -->
|
129
|
-
SVG
|
130
|
-
end
|
131
|
-
|
132
|
-
def top_side_point_width
|
133
|
-
SA.horizontal(@box_top - @config[:bar_width], @box_left, @box_left + @config[:bar_width] * 3 / 2, pointer_left: @box_top, pointer_right: @box_top + @config[:bar_width] * 4 / 5 + @config[:side_point_height], label_offset: -BF / 60, fly: @fly, unit: @unit)
|
134
|
-
end
|
135
|
-
|
136
|
-
def top_main_point_width
|
137
|
-
SA.horizontal(@box_top - @config[:bar_width] * 2.5, top_main_point_top, @config[:center_point] + @config[:bar_width], pointer_left: @box_top + @config[:center_point_height], pointer_right: @box_top + @config[:center_point_height], label_offset: -BF / 60, fly: @fly, unit: @unit)
|
138
|
-
end
|
139
|
-
|
140
|
-
def top_main_point_top
|
141
|
-
@config[:center_point] - @config[:bar_width]
|
142
|
-
end
|
143
|
-
|
144
|
-
def overlay
|
145
|
-
<<~SVG
|
146
|
-
<!-- Overlay -->
|
147
|
-
<!-- Main point barb -->
|
148
|
-
#{overlay_lines}
|
149
|
-
<text x="#{@config[:center_point] + @config[:bar_width] * 9 / 8}" y="#{@box_top + @config[:center_point_height] - @config[:main_point_barb]}" font-family="sans-serif" font-size="#{BF / 100}px" fill="#041E42" text-anchor="left">#{@barb_label}</text>
|
150
|
-
SVG
|
151
|
-
end
|
152
|
-
|
153
|
-
def overlay_lines
|
154
|
-
<<~SVG
|
155
|
-
#{overlay_line(@box_top + @config[:center_point_height] - @config[:main_point_barb], @box_top + @config[:center_point_height] - @config[:main_point_barb] * 5)}
|
156
|
-
#{overlay_line(@box_top + @config[:center_point_height], @box_top + @config[:center_point_height])}
|
157
|
-
SVG
|
158
|
-
end
|
159
|
-
|
160
|
-
def overlay_line(y1, y2)
|
161
|
-
<<~SVG
|
162
|
-
<line x1="#{@config[:center_point] + @config[:bar_width] / 2}" y1="#{y1}" x2="#{@config[:center_point] + @config[:bar_width] * 3 / 2}" y2="#{y2}" stroke="#666666" stroke-width="2" stroke-dasharray="5, 5" />
|
163
|
-
SVG
|
164
|
-
end
|
165
39
|
end
|
@@ -0,0 +1,108 @@
|
|
1
|
+
# frozen_string_literal: false
|
2
|
+
|
3
|
+
# Core SVG data for the trident specification sheet.
|
4
|
+
#
|
5
|
+
# This class should never need to be called directly.
|
6
|
+
# @private
|
7
|
+
class USPSFlags
|
8
|
+
class Core
|
9
|
+
module TridentSpecs
|
10
|
+
module Vertical
|
11
|
+
# This module defined no public methods
|
12
|
+
def _; end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def right
|
17
|
+
<<~SVG
|
18
|
+
<!-- Right -->
|
19
|
+
#{Base::SA.vertical(@box_right + @config[:bar_width], @box_top, @box_top + @config[:bar_width] * 4 / 5, pointer_top: @box_right, pointer_bottom: @box_right, fly: @fly, unit: @unit)} <!-- Side spike top gap -->
|
20
|
+
#{right_top_gap_to_hash_gap} <!-- Top gap to hash gap -->
|
21
|
+
#{right_crossbar_to_hash_gap} <!-- Crossbar to hash gap -->
|
22
|
+
|
23
|
+
#{right_hash} <!-- Hash -->
|
24
|
+
#{right_hash_to_bottom} <!-- Hash to bottom -->
|
25
|
+
SVG
|
26
|
+
end
|
27
|
+
|
28
|
+
def right_top_gap_to_hash_gap
|
29
|
+
Base::SA.vertical(
|
30
|
+
@box_right + @config[:bar_width], @box_top + @config[:bar_width] * 4 / 5, right_top_gap_bottom,
|
31
|
+
pointer_bottom: @box_right, fly: @fly, unit: @unit
|
32
|
+
)
|
33
|
+
end
|
34
|
+
|
35
|
+
def right_top_gap_bottom
|
36
|
+
@box_top + @config[:bar_width] * 9 / 10 * 2 + @config[:side_point_height] + @config[:side_spike_height]
|
37
|
+
end
|
38
|
+
|
39
|
+
def right_crossbar_to_hash_gap
|
40
|
+
Base::SA.vertical(
|
41
|
+
@box_right + @config[:bar_width], right_crossbar_top, right_crossbar_bottom,
|
42
|
+
pointer_bottom: @config[:center_point] + @config[:hash_width] / 2, fly: @fly, unit: @unit
|
43
|
+
)
|
44
|
+
end
|
45
|
+
|
46
|
+
def right_crossbar_top
|
47
|
+
@box_top + @config[:bar_width] * 18 / 10 + @config[:side_point_height] + @config[:side_spike_height]
|
48
|
+
end
|
49
|
+
|
50
|
+
def right_crossbar_bottom
|
51
|
+
@box_top + @config[:bar_width] * 28 / 10 + @config[:side_point_height] + @config[:side_spike_height]
|
52
|
+
end
|
53
|
+
|
54
|
+
def right_hash
|
55
|
+
Base::SA.vertical(
|
56
|
+
@box_right + @config[:bar_width], right_hash_top, right_hash_bottom,
|
57
|
+
pointer_bottom: @config[:center_point] + @config[:hash_width] / 2, fly: @fly, unit: @unit
|
58
|
+
)
|
59
|
+
end
|
60
|
+
|
61
|
+
def right_hash_top
|
62
|
+
@box_top + @config[:bar_width] * 28 / 10 + @config[:side_point_height] + @config[:side_spike_height]
|
63
|
+
end
|
64
|
+
|
65
|
+
def right_hash_bottom
|
66
|
+
@box_top + @config[:bar_width] * 38 / 10 + @config[:side_point_height] + @config[:side_spike_height]
|
67
|
+
end
|
68
|
+
|
69
|
+
def right_hash_to_bottom
|
70
|
+
Base::SA.vertical(
|
71
|
+
@box_right + @config[:bar_width],
|
72
|
+
@box_top + @config[:bar_width] * 38 / 10 + @config[:side_point_height] + @config[:side_spike_height],
|
73
|
+
@box_bottom, pointer_bottom: @box_right, fly: @fly, unit: @unit
|
74
|
+
)
|
75
|
+
end
|
76
|
+
|
77
|
+
def left
|
78
|
+
<<~SVG
|
79
|
+
<!-- Left -->
|
80
|
+
#{Base::SA.vertical(@box_left - @config[:bar_width] * 5.25, @box_top, @box_bottom, pointer_top: @box_left, pointer_bottom: @box_left, fly: @fly, unit: @unit)} <!-- Boundary height -->
|
81
|
+
#{left_main_point_height} <!-- Main point height -->
|
82
|
+
#{left_side_point_height} <!-- Side point height -->
|
83
|
+
SVG
|
84
|
+
end
|
85
|
+
|
86
|
+
def left_main_point_height
|
87
|
+
Base::SA.vertical(
|
88
|
+
@box_left - @config[:bar_width] * 0.75, @box_top, @box_top + @config[:center_point_height],
|
89
|
+
pointer_bottom: @config[:center_point] - @config[:bar_width], label_offset: -Base::BF / 24,
|
90
|
+
label_offset_y: -Base::BF / 60, label_align: 'middle', fly: @fly, unit: @unit
|
91
|
+
)
|
92
|
+
end
|
93
|
+
|
94
|
+
def left_side_point_height
|
95
|
+
Base::SA.vertical(
|
96
|
+
@box_left - @config[:bar_width] * 1.5, @box_top + @config[:bar_width] * 4 / 5, left_side_point_bottom,
|
97
|
+
pointer_top: @box_left, pointer_bottom: @box_left + @config[:bar_width], label_offset: -Base::BF / 24,
|
98
|
+
label_align: 'middle', fly: @fly, unit: @unit
|
99
|
+
)
|
100
|
+
end
|
101
|
+
|
102
|
+
def left_side_point_bottom
|
103
|
+
@box_top + @config[:bar_width] * 4 / 5 + @config[:side_point_height]
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
@@ -4,60 +4,64 @@
|
|
4
4
|
#
|
5
5
|
# These methods should never need to be called directly.
|
6
6
|
# @private
|
7
|
-
class USPSFlags
|
8
|
-
class
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
7
|
+
class USPSFlags
|
8
|
+
class Core
|
9
|
+
class Tridents
|
10
|
+
class << self
|
11
|
+
def cc(type, trident_color:)
|
12
|
+
# The side C/C tridents are angled 45 degrees, and intersect the central one at 1/3 up from the bottom
|
13
|
+
trident = USPSFlags::Core.trident(type, color: trident_color)
|
14
|
+
x_distance = USPSFlags::Config::BASE_FLY * 4 / 39
|
15
|
+
y_distance = USPSFlags::Config::BASE_FLY * 5 / 78
|
16
|
+
<<~SVG
|
17
|
+
<g transform="translate(-#{x_distance}, #{y_distance})"><g transform="rotate(-45, #{USPSFlags::Config::BASE_FLY / 2}, #{USPSFlags::Config::BASE_HOIST / 2})">\n#{trident}</g></g>
|
18
|
+
\n#{trident}
|
19
|
+
<g transform="translate(#{x_distance}, #{y_distance})"><g transform="rotate(45, #{USPSFlags::Config::BASE_FLY / 2}, #{USPSFlags::Config::BASE_HOIST / 2})">\n#{trident}</g></g>
|
20
|
+
SVG
|
21
|
+
end
|
20
22
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
23
|
+
def vc(type, trident_color:)
|
24
|
+
# V/C tridents are angled 45 degrees, and intersect at 15/32 up from the bottom
|
25
|
+
trident = USPSFlags::Core.trident(type, color: trident_color)
|
26
|
+
x_distance = USPSFlags::Config::BASE_FLY * 4 / 55
|
27
|
+
<<~SVG
|
28
|
+
<g transform="translate(-#{x_distance})"><g transform="rotate(-45, #{USPSFlags::Config::BASE_FLY / 2}, #{USPSFlags::Config::BASE_HOIST / 2})">\n#{trident}</g></g>
|
29
|
+
<g transform="translate(#{x_distance})"><g transform="rotate(45, #{USPSFlags::Config::BASE_FLY / 2}, #{USPSFlags::Config::BASE_HOIST / 2})">\n#{trident}</g></g>
|
30
|
+
SVG
|
31
|
+
end
|
30
32
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
33
|
+
def three(type, trident_color:, field_color:)
|
34
|
+
# Cdr and D/C tridents are spaced 1/2 the fly apart with the central one 1/4 the fly above the sides
|
35
|
+
trident = USPSFlags::Core.trident(type, color: trident_color, field_color: field_color)
|
36
|
+
x_distance = USPSFlags::Config::BASE_FLY / 4
|
37
|
+
y_distance = USPSFlags::Config::BASE_FLY / 16
|
38
|
+
<<~SVG
|
39
|
+
<g transform="translate(-#{x_distance}, #{y_distance})">\n#{trident}</g>
|
40
|
+
<g transform="translate(0, -#{y_distance + 1})">\n#{trident}</g>
|
41
|
+
<g transform="translate(#{x_distance}, #{y_distance})">\n#{trident}</g>
|
42
|
+
SVG
|
43
|
+
end
|
42
44
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
45
|
+
def two(type, trident_color:, field_color:)
|
46
|
+
# Lt/C and D/Lt/C tridents are spaced 1/3 the fly apart
|
47
|
+
trident = USPSFlags::Core.trident(type, color: trident_color, field_color: field_color)
|
48
|
+
x_distance = USPSFlags::Config::BASE_FLY / 6
|
49
|
+
<<~SVG
|
50
|
+
<g transform="translate(-#{x_distance})">\n#{trident}</g>
|
51
|
+
<g transform="translate(#{x_distance})">\n#{trident}</g>
|
52
|
+
SVG
|
53
|
+
end
|
52
54
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
55
|
+
def offset(type, field_color:, field: true)
|
56
|
+
# Swallowtail tridents need to move towards the hoist due to the tails
|
57
|
+
x_distance = USPSFlags::Config::BASE_FLY / 10 if field
|
58
|
+
svg = +''
|
59
|
+
svg << "<g transform=\"translate(-#{x_distance})\">" if field
|
60
|
+
svg << USPSFlags::Core.trident(type, field_color: field_color, color: :red)
|
61
|
+
svg << '</g>' if field
|
62
|
+
svg
|
63
|
+
end
|
64
|
+
end
|
61
65
|
end
|
62
66
|
end
|
63
67
|
end
|