usps_flags 0.5.0 → 0.5.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
- 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
|