usps_flags 0.5.9 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f7668f981b685971d9920b30cdc6fdac6bc7aa98df4b735e9d87deec582e05cb
4
- data.tar.gz: 3c0101f8ad5aa5713fec0848040ab67bdf61a37fa8d571a9a612eada714b9aa4
3
+ metadata.gz: 834c5fd9b07cda04e1abbb43ce057be5bcb75a2338c4c9c9b30bf90e873c70a3
4
+ data.tar.gz: 2c1967a3acab412d00a70d2b7b529494128daf71c99c9484f8fd5dc51edade5d
5
5
  SHA512:
6
- metadata.gz: 8f32f4ec49c1ecf428aa9fbea996196fa630472c57f2ab965447ebd2092c8fbd78873303f9a11ddeece882cf99b38167b9b786c557f766e727113f5e129665a3
7
- data.tar.gz: 10da9cd1e199d2add0044816d4f902933cf04ecc9a05ae3f8abfdf3addd0876b35360ad9c07c17d92eba2b5f16053751ac69c66fb99e5de0e60b0c30bd3c50f5
6
+ metadata.gz: 79d043fc636b58a3bc1181716b9a21fb2fe64b552b6e376035b096ea97682aa2d36bb24896ae711b86baef52779c457dadabf17b364cc23500cb1edb1d802145
7
+ data.tar.gz: 3eef4c97b191637097e01444658635882cb1b4552c2705543b6c0c77e4c5923a211430d1026f9a202d6f637a101128df6224ef5f90e0be070d4b0efa64554ab4
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- usps_flags (0.5.9)
4
+ usps_flags (0.6.0)
5
5
  file_utils (~> 1.1, >= 1.1.2)
6
6
  mini_magick (~> 4.9, >= 4.9.4)
7
7
  rubyzip (~> 1.3, >= 1.3.0)
@@ -15,7 +15,7 @@ GEM
15
15
  file_utils (1.1.2)
16
16
  jaro_winkler (1.5.4)
17
17
  json (2.1.0)
18
- mini_magick (4.9.5)
18
+ mini_magick (4.10.1)
19
19
  parallel (1.19.1)
20
20
  parser (2.6.5.0)
21
21
  ast (~> 2.4.0)
@@ -8,30 +8,47 @@ class USPSFlags
8
8
  class Core
9
9
  class Tridents
10
10
  class << self
11
+ # The side C/C tridents are angled 45 degrees, and intersect the central one at 1/3 up from the bottom
12
+ #
13
+ # Note: translate(132, 130) corrects the center of rotation for each angled trident due to the (transparent)
14
+ # field size of the include trident SVG
15
+ #
16
+ # Center of rotation:
17
+ # # radius = USPSFlags.configuration.trident[:bar_width] / 2
18
+ # <circle cx="#{cc_center[:x]}" cy="#{cc_center[:y]}" r="#{radius}" fill="red" />
11
19
  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
20
  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
21
  <<~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>
22
+ <g transform="translate(132, 130)">
23
+ <g transform="rotate(-45, #{cc_center[:x]}, #{cc_center[:y]})">
24
+ #{trident}
25
+ </g>
26
+ <g transform="rotate(45, #{cc_center[:x]}, #{cc_center[:y]})">
27
+ #{trident}
28
+ </g>
29
+ </g>
30
+ #{trident}
20
31
  SVG
21
32
  end
22
33
 
34
+ # V/C tridents are angled 45 degrees, and intersect at 15/32 up from the bottom
35
+ #
36
+ # Note: translate(132, 50) corrects the center of rotation for each angled trident due to the (transparent)
37
+ # field size of the include trident SVG
23
38
  def vc(type, trident_color:)
24
- # V/C tridents are angled 45 degrees, and intersect at 15/32 up from the bottom
25
39
  trident = USPSFlags::Core.trident(type, color: trident_color)
26
- x_distance = USPSFlags::Config::BASE_FLY * 4 / 55
27
40
  <<~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>
41
+ <g transform="translate(132, 50) rotate(-45, #{vc_center[:x]}, #{vc_center[:y]})">
42
+ #{trident}
43
+ </g>
44
+ <g transform="translate(132, 50) rotate(45, #{vc_center[:x]}, #{vc_center[:y]})">
45
+ #{trident}
46
+ </g>
30
47
  SVG
31
48
  end
32
49
 
50
+ # Cdr and D/C tridents are spaced 1/2 the fly apart with the central one 1/4 the fly above the sides
33
51
  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
52
  trident = USPSFlags::Core.trident(type, color: trident_color, field_color: field_color)
36
53
  x_distance = USPSFlags::Config::BASE_FLY / 4
37
54
  y_distance = USPSFlags::Config::BASE_FLY / 16
@@ -42,8 +59,8 @@ class USPSFlags
42
59
  SVG
43
60
  end
44
61
 
62
+ # Lt/C and D/Lt/C tridents are spaced 1/3 the fly apart
45
63
  def two(type, trident_color:, field_color:)
46
- # Lt/C and D/Lt/C tridents are spaced 1/3 the fly apart
47
64
  trident = USPSFlags::Core.trident(type, color: trident_color, field_color: field_color)
48
65
  x_distance = USPSFlags::Config::BASE_FLY / 6
49
66
  <<~SVG
@@ -52,8 +69,8 @@ class USPSFlags
52
69
  SVG
53
70
  end
54
71
 
72
+ # Swallowtail tridents need to move towards the hoist due to the tails
55
73
  def offset(type, field_color:, field: true)
56
- # Swallowtail tridents need to move towards the hoist due to the tails
57
74
  x_distance = USPSFlags::Config::BASE_FLY / 10 if field
58
75
  svg = +''
59
76
  svg << "<g transform=\"translate(-#{x_distance})\">" if field
@@ -61,6 +78,29 @@ class USPSFlags
61
78
  svg << '</g>' if field
62
79
  svg
63
80
  end
81
+
82
+ private
83
+
84
+ def rotation_center(height_fraction)
85
+ {
86
+ x: USPSFlags::Config::BASE_FLY / 2,
87
+ y: (USPSFlags::Config::BASE_HOIST * 7 / 8) - (n_staff_height * height_fraction)
88
+ }
89
+ end
90
+
91
+ def cc_center
92
+ rotation_center(Rational(1, 3))
93
+ end
94
+
95
+ def vc_center
96
+ rotation_center(Rational(15, 32))
97
+ end
98
+
99
+ def n_staff_height
100
+ top_height = USPSFlags.configuration.trident[:crossbar_from_top]
101
+ bars = (USPSFlags.configuration.trident[:bar_width] * 3)
102
+ USPSFlags.configuration.trident_heights[:n] - top_height - bars
103
+ end
64
104
  end
65
105
  end
66
106
  end
@@ -120,6 +120,7 @@ class USPSFlags
120
120
 
121
121
  dirs = path.split('/')
122
122
  dirs.pop
123
+ dirs = ['.'] if dirs.empty?
123
124
  ::FileUtils.mkdir_p(dirs.join('/')).first
124
125
  end
125
126
 
@@ -42,7 +42,7 @@ describe USPSFlags::Core do
42
42
  l #{@fly} 0
43
43
  l 0 #{@hoist}
44
44
  l -#{@fly} 0
45
- l 0 -#{@hoist}
45
+ l 0 -#{@hoist} z
46
46
  " fill="#FFFFFF" stroke="#000000" stroke-width="#{USPSFlags::Config::BASE_FLY / 600}" />
47
47
  SVG
48
48
  )
@@ -55,7 +55,7 @@ describe USPSFlags::Core do
55
55
  l #{@fly} 0
56
56
  l 0 #{@hoist}
57
57
  l -#{@fly} 0
58
- l 0 -#{@hoist}
58
+ l 0 -#{@hoist} z
59
59
  " fill="#{@red}" />
60
60
  SVG
61
61
  )
@@ -78,7 +78,7 @@ describe USPSFlags::Core do
78
78
  expect(described_class.field(style: :past, color: :blue)).to eql(
79
79
  <<~SVG
80
80
  <g transform="translate(2, 1)">
81
- <path d="M 0 5 l #{@fly / 2} #{@hoist * 1 / 12}
81
+ <path d="M 0 2 l #{@fly / 2} #{@hoist * 1 / 12}
82
82
  l 0 #{@hoist * 10 / 12}
83
83
  l -#{@fly / 2} #{@hoist * 1 / 12}
84
84
  " fill="#{@blue}" />
@@ -6,7 +6,7 @@ describe USPSFlags::Generate do
6
6
  describe 'general features' do
7
7
  it 'generates a flag with the correct size' do
8
8
  expect(described_class.svg('LtC', outfile: '')).to include(
9
- 'width="1024" height="682" viewBox="0 0 3072 2048"'
9
+ 'width="1024" height="682" viewBox="-3.072 -4.096 3084.288 2058.24"'
10
10
  )
11
11
  end
12
12
 
@@ -17,7 +17,7 @@ describe USPSFlags::Generate do
17
17
  l 3072 0
18
18
  l 0 2048
19
19
  l -3072 0
20
- l 0 -2048
20
+ l 0 -2048 z
21
21
  " fill="#E4002B" />
22
22
  SVG
23
23
  )
@@ -40,7 +40,7 @@ describe USPSFlags::Generate do
40
40
 
41
41
  describe 'officer flags' do
42
42
  %w[
43
- PLTC PC PDLTC PDC PSTFC PRC PVC PCC
43
+ PLTC PC PDLTC PDC PNFLT PSTFC PRC PVC PCC
44
44
  PORTCAP FLEETCAP FLT DAIDE DFLT NAIDE NFLT
45
45
  LT 1LT LTC CDR DLT D1LT DLTC DC STFC RC VC CC
46
46
  ].each do |flag|
@@ -11,7 +11,7 @@ describe USPSFlags::Helpers do
11
11
  it 'returns all officer flags but nothing else when given type :officer' do
12
12
  expect(described_class.valid_flags(:officer).sort).to eql(%w[
13
13
  PLTC PC PORTCAP FLEETCAP LT FLT 1LT LTC CDR PDLTC PDC DLT DAIDE
14
- DFLT D1LT DLTC DC PSTFC PRC PVC PCC NAIDE NFLT STFC RC VC CC
14
+ DFLT D1LT DLTC DC PNFLT PSTFC PRC PVC PCC NAIDE NFLT STFC RC VC CC
15
15
  ].sort)
16
16
  end
17
17
 
@@ -7,7 +7,7 @@ describe USPSFlags do
7
7
  @valid_header = <<~SVG
8
8
  <?xml version="1.0" standalone="no"?>
9
9
  <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
10
- <svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="614" height="409" viewBox="0 0 3072 2048" preserveAspectRatio="xMidYMid meet">
10
+ <svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="614" height="409" viewBox="-3.072 -4.096 3084.288 2058.24" preserveAspectRatio="xMidYMid meet">
11
11
  <title>LTC</title>
12
12
  <metadata>
13
13
  <desc id="created-by">Julian Fiander</desc>
@@ -2,8 +2,8 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'usps_flags'
5
- s.version = '0.5.9'
6
- s.date = '2019-12-16'
5
+ s.version = '0.6.0'
6
+ s.date = '2020-02-17'
7
7
  s.summary = 'Flag generator for United States Power Squadrons'
8
8
  s.description = 'A flag image (PNG, SVG) generator for United States Power Squadrons.'
9
9
  s.homepage = 'http://rubygems.org/gems/usps_flags'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: usps_flags
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.9
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Julian Fiander
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-12-16 00:00:00.000000000 Z
11
+ date: 2020-02-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: file_utils