geo_pattern 1.3.2 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (132) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +58 -0
  3. data/.simplecov +25 -0
  4. data/.travis.yml +12 -0
  5. data/Gemfile +3 -1
  6. data/README.md +125 -23
  7. data/Rakefile +72 -9
  8. data/fixtures/generated_patterns/chevrons.svg +1 -0
  9. data/fixtures/generated_patterns/concentric_circles.svg +1 -0
  10. data/fixtures/generated_patterns/diamonds.svg +1 -0
  11. data/fixtures/generated_patterns/diamonds_with_base_color.svg +1 -0
  12. data/fixtures/generated_patterns/diamonds_with_color.svg +1 -0
  13. data/fixtures/generated_patterns/hexagons.svg +1 -0
  14. data/fixtures/generated_patterns/mosaic_squares.svg +1 -0
  15. data/fixtures/generated_patterns/nested_squares.svg +1 -0
  16. data/fixtures/generated_patterns/octagons.svg +1 -0
  17. data/fixtures/generated_patterns/overlapping_circles.svg +1 -0
  18. data/fixtures/generated_patterns/overlapping_rings.svg +1 -0
  19. data/fixtures/generated_patterns/plaid.svg +1 -0
  20. data/fixtures/generated_patterns/plus_signs.svg +1 -0
  21. data/fixtures/generated_patterns/sine_waves.svg +1 -0
  22. data/fixtures/generated_patterns/squares.svg +1 -0
  23. data/fixtures/generated_patterns/tessellation.svg +1 -0
  24. data/fixtures/generated_patterns/triangles.svg +1 -0
  25. data/fixtures/generated_patterns/xes.svg +1 -0
  26. data/geo_pattern.gemspec +8 -2
  27. data/lib/geo_pattern.rb +42 -20
  28. data/lib/geo_pattern/background.rb +25 -0
  29. data/lib/geo_pattern/background_generators/solid_generator.rb +52 -0
  30. data/lib/geo_pattern/color.rb +25 -0
  31. data/lib/geo_pattern/color_generators/base_color_generator.rb +55 -0
  32. data/lib/geo_pattern/color_generators/simple_generator.rb +27 -0
  33. data/lib/geo_pattern/color_preset.rb +26 -0
  34. data/lib/geo_pattern/errors.rb +7 -0
  35. data/lib/geo_pattern/geo_pattern_task.rb +59 -0
  36. data/lib/geo_pattern/helpers.rb +47 -0
  37. data/lib/geo_pattern/pattern.rb +84 -0
  38. data/lib/geo_pattern/pattern_generator.rb +33 -82
  39. data/lib/geo_pattern/pattern_helpers.rb +31 -2
  40. data/lib/geo_pattern/pattern_preset.rb +23 -0
  41. data/lib/geo_pattern/pattern_sieve.rb +36 -0
  42. data/lib/geo_pattern/pattern_store.rb +63 -0
  43. data/lib/geo_pattern/pattern_validator.rb +27 -0
  44. data/lib/geo_pattern/rake_task.rb +109 -0
  45. data/lib/geo_pattern/roles/comparable_metadata.rb +35 -0
  46. data/lib/geo_pattern/roles/named_generator.rb +13 -0
  47. data/lib/geo_pattern/seed.rb +21 -0
  48. data/lib/geo_pattern/structure.rb +25 -0
  49. data/lib/geo_pattern/structure_generators/base_generator.rb +85 -0
  50. data/lib/geo_pattern/structure_generators/chevrons_generator.rb +55 -0
  51. data/lib/geo_pattern/structure_generators/concentric_circles_generator.rb +56 -0
  52. data/lib/geo_pattern/structure_generators/diamonds_generator.rb +66 -0
  53. data/lib/geo_pattern/structure_generators/hexagons_generator.rb +67 -0
  54. data/lib/geo_pattern/structure_generators/mosaic_squares_generator.rb +85 -0
  55. data/lib/geo_pattern/structure_generators/nested_squares_generator.rb +60 -0
  56. data/lib/geo_pattern/structure_generators/octagons_generator.rb +44 -0
  57. data/lib/geo_pattern/structure_generators/overlapping_circles_generator.rb +55 -0
  58. data/lib/geo_pattern/structure_generators/overlapping_rings_generator.rb +55 -0
  59. data/lib/geo_pattern/structure_generators/plaid_generator.rb +55 -0
  60. data/lib/geo_pattern/structure_generators/plus_signs_generator.rb +62 -0
  61. data/lib/geo_pattern/structure_generators/sine_waves_generator.rb +43 -0
  62. data/lib/geo_pattern/structure_generators/squares_generator.rb +36 -0
  63. data/lib/geo_pattern/structure_generators/tessellation_generator.rb +103 -0
  64. data/lib/geo_pattern/structure_generators/triangles_generator.rb +61 -0
  65. data/lib/geo_pattern/structure_generators/xes_generator.rb +67 -0
  66. data/lib/geo_pattern/svg_image.rb +101 -0
  67. data/lib/geo_pattern/version.rb +1 -1
  68. data/script/bootstrap +30 -0
  69. data/script/console +8 -0
  70. data/script/test +21 -0
  71. data/spec/background_generators/solid_generator_spec.rb +50 -0
  72. data/spec/background_spec.rb +25 -0
  73. data/spec/color_generators/base_color_generator_spec.rb +31 -0
  74. data/spec/color_generators/simple_generator_spec.rb +12 -0
  75. data/spec/color_preset_spec.rb +53 -0
  76. data/spec/color_spec.rb +15 -0
  77. data/spec/geo_pattern_spec.rb +95 -24
  78. data/spec/helpers_spec.rb +65 -0
  79. data/spec/pattern_preset_spec.rb +41 -0
  80. data/spec/pattern_sieve_spec.rb +66 -0
  81. data/spec/pattern_spec.rb +72 -0
  82. data/spec/pattern_store_spec.rb +47 -0
  83. data/spec/pattern_validator_spec.rb +28 -0
  84. data/spec/seed_spec.rb +14 -0
  85. data/spec/spec_helper.rb +1 -6
  86. data/spec/structure_generators/chevrons_generator_spec.rb +5 -0
  87. data/spec/structure_generators/concentric_circles_generator_spec.rb +5 -0
  88. data/spec/structure_generators/diamonds_generator_spec.rb +5 -0
  89. data/spec/structure_generators/hexagons_generator_spec.rb +5 -0
  90. data/spec/structure_generators/mosaic_squares_generator_spec.rb +5 -0
  91. data/spec/structure_generators/nested_squares_generator_spec.rb +5 -0
  92. data/spec/structure_generators/octagons_generator_spec.rb +5 -0
  93. data/spec/structure_generators/overlapping_circles_generator_spec.rb +5 -0
  94. data/spec/structure_generators/overlapping_rings_generator_spec.rb +5 -0
  95. data/spec/structure_generators/plaid_generator_spec.rb +5 -0
  96. data/spec/structure_generators/plus_signs_generator_spec.rb +5 -0
  97. data/spec/structure_generators/sine_waves_generator_spec.rb +5 -0
  98. data/spec/structure_generators/squares_generator_spec.rb +5 -0
  99. data/spec/structure_generators/tessellation_generator_spec.rb +5 -0
  100. data/spec/structure_generators/triangles_generator_spec.rb +5 -0
  101. data/spec/structure_generators/xes_generator_spec.rb +5 -0
  102. data/spec/structure_spec.rb +38 -0
  103. data/spec/support/helpers/fixtures.rb +12 -0
  104. data/spec/support/kernel.rb +40 -0
  105. data/spec/support/matchers/image.rb +17 -0
  106. data/spec/support/matchers/name.rb +15 -0
  107. data/spec/support/rspec.rb +1 -1
  108. data/spec/support/shared_examples/generator.rb +46 -0
  109. data/spec/support/shared_examples/pattern.rb +31 -0
  110. data/spec/support/shared_examples/pattern_name.rb +7 -0
  111. data/spec/support/shared_examples/structure.rb +48 -0
  112. data/spec/svg_spec.rb +3 -3
  113. metadata +141 -25
  114. data/lib/geo_pattern/pattern/base_pattern.rb +0 -47
  115. data/lib/geo_pattern/pattern/chevron_pattern.rb +0 -45
  116. data/lib/geo_pattern/pattern/concentric_circles_pattern.rb +0 -47
  117. data/lib/geo_pattern/pattern/diamond_pattern.rb +0 -56
  118. data/lib/geo_pattern/pattern/hexagon_pattern.rb +0 -57
  119. data/lib/geo_pattern/pattern/mosaic_squares_pattern.rb +0 -76
  120. data/lib/geo_pattern/pattern/nested_squares_pattern.rb +0 -51
  121. data/lib/geo_pattern/pattern/octagon_pattern.rb +0 -35
  122. data/lib/geo_pattern/pattern/overlapping_circles_pattern.rb +0 -46
  123. data/lib/geo_pattern/pattern/overlapping_rings_pattern.rb +0 -46
  124. data/lib/geo_pattern/pattern/plaid_pattern.rb +0 -49
  125. data/lib/geo_pattern/pattern/plus_sign_pattern.rb +0 -53
  126. data/lib/geo_pattern/pattern/sine_wave_pattern.rb +0 -36
  127. data/lib/geo_pattern/pattern/square_pattern.rb +0 -27
  128. data/lib/geo_pattern/pattern/tessellation_pattern.rb +0 -93
  129. data/lib/geo_pattern/pattern/triangle_pattern.rb +0 -51
  130. data/lib/geo_pattern/pattern/xes_pattern.rb +0 -58
  131. data/lib/geo_pattern/svg.rb +0 -77
  132. data/spec/support/helpers.rb +0 -34
@@ -1,10 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
- RSpec.describe SVG do
3
+ RSpec.describe SvgImage do
4
4
  context '#<=>' do
5
5
  it 'is comparable' do
6
- svg1 = SVG.new
7
- svg2 = SVG.new
6
+ svg1 = SvgImage.new
7
+ svg2 = SvgImage.new
8
8
 
9
9
  expect(svg1).to eq svg2
10
10
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: geo_pattern
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.2
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason Long
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-09 00:00:00.000000000 Z
11
+ date: 2015-02-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: color
@@ -48,54 +48,133 @@ files:
48
48
  - ".gitignore"
49
49
  - ".rspec"
50
50
  - ".rubocop.yml"
51
+ - ".simplecov"
52
+ - ".travis.yml"
51
53
  - Gemfile
52
54
  - LICENSE.txt
53
55
  - README.md
54
56
  - Rakefile
57
+ - fixtures/generated_patterns/chevrons.svg
58
+ - fixtures/generated_patterns/concentric_circles.svg
59
+ - fixtures/generated_patterns/diamonds.svg
60
+ - fixtures/generated_patterns/diamonds_with_base_color.svg
61
+ - fixtures/generated_patterns/diamonds_with_color.svg
62
+ - fixtures/generated_patterns/hexagons.svg
63
+ - fixtures/generated_patterns/mosaic_squares.svg
64
+ - fixtures/generated_patterns/nested_squares.svg
65
+ - fixtures/generated_patterns/octagons.svg
66
+ - fixtures/generated_patterns/overlapping_circles.svg
67
+ - fixtures/generated_patterns/overlapping_rings.svg
68
+ - fixtures/generated_patterns/plaid.svg
69
+ - fixtures/generated_patterns/plus_signs.svg
70
+ - fixtures/generated_patterns/sine_waves.svg
71
+ - fixtures/generated_patterns/squares.svg
72
+ - fixtures/generated_patterns/tessellation.svg
73
+ - fixtures/generated_patterns/triangles.svg
74
+ - fixtures/generated_patterns/xes.svg
55
75
  - geo_pattern.gemspec
56
76
  - lib/geo_pattern.rb
77
+ - lib/geo_pattern/background.rb
78
+ - lib/geo_pattern/background_generators/solid_generator.rb
79
+ - lib/geo_pattern/color.rb
80
+ - lib/geo_pattern/color_generators/base_color_generator.rb
81
+ - lib/geo_pattern/color_generators/simple_generator.rb
82
+ - lib/geo_pattern/color_preset.rb
83
+ - lib/geo_pattern/errors.rb
84
+ - lib/geo_pattern/geo_pattern_task.rb
57
85
  - lib/geo_pattern/helpers.rb
58
- - lib/geo_pattern/pattern/base_pattern.rb
59
- - lib/geo_pattern/pattern/chevron_pattern.rb
60
- - lib/geo_pattern/pattern/concentric_circles_pattern.rb
61
- - lib/geo_pattern/pattern/diamond_pattern.rb
62
- - lib/geo_pattern/pattern/hexagon_pattern.rb
63
- - lib/geo_pattern/pattern/mosaic_squares_pattern.rb
64
- - lib/geo_pattern/pattern/nested_squares_pattern.rb
65
- - lib/geo_pattern/pattern/octagon_pattern.rb
66
- - lib/geo_pattern/pattern/overlapping_circles_pattern.rb
67
- - lib/geo_pattern/pattern/overlapping_rings_pattern.rb
68
- - lib/geo_pattern/pattern/plaid_pattern.rb
69
- - lib/geo_pattern/pattern/plus_sign_pattern.rb
70
- - lib/geo_pattern/pattern/sine_wave_pattern.rb
71
- - lib/geo_pattern/pattern/square_pattern.rb
72
- - lib/geo_pattern/pattern/tessellation_pattern.rb
73
- - lib/geo_pattern/pattern/triangle_pattern.rb
74
- - lib/geo_pattern/pattern/xes_pattern.rb
86
+ - lib/geo_pattern/pattern.rb
75
87
  - lib/geo_pattern/pattern_generator.rb
76
88
  - lib/geo_pattern/pattern_helpers.rb
77
- - lib/geo_pattern/svg.rb
89
+ - lib/geo_pattern/pattern_preset.rb
90
+ - lib/geo_pattern/pattern_sieve.rb
91
+ - lib/geo_pattern/pattern_store.rb
92
+ - lib/geo_pattern/pattern_validator.rb
93
+ - lib/geo_pattern/rake_task.rb
94
+ - lib/geo_pattern/roles/comparable_metadata.rb
95
+ - lib/geo_pattern/roles/named_generator.rb
96
+ - lib/geo_pattern/seed.rb
97
+ - lib/geo_pattern/structure.rb
98
+ - lib/geo_pattern/structure_generators/base_generator.rb
99
+ - lib/geo_pattern/structure_generators/chevrons_generator.rb
100
+ - lib/geo_pattern/structure_generators/concentric_circles_generator.rb
101
+ - lib/geo_pattern/structure_generators/diamonds_generator.rb
102
+ - lib/geo_pattern/structure_generators/hexagons_generator.rb
103
+ - lib/geo_pattern/structure_generators/mosaic_squares_generator.rb
104
+ - lib/geo_pattern/structure_generators/nested_squares_generator.rb
105
+ - lib/geo_pattern/structure_generators/octagons_generator.rb
106
+ - lib/geo_pattern/structure_generators/overlapping_circles_generator.rb
107
+ - lib/geo_pattern/structure_generators/overlapping_rings_generator.rb
108
+ - lib/geo_pattern/structure_generators/plaid_generator.rb
109
+ - lib/geo_pattern/structure_generators/plus_signs_generator.rb
110
+ - lib/geo_pattern/structure_generators/sine_waves_generator.rb
111
+ - lib/geo_pattern/structure_generators/squares_generator.rb
112
+ - lib/geo_pattern/structure_generators/tessellation_generator.rb
113
+ - lib/geo_pattern/structure_generators/triangles_generator.rb
114
+ - lib/geo_pattern/structure_generators/xes_generator.rb
115
+ - lib/geo_pattern/svg_image.rb
78
116
  - lib/geo_pattern/version.rb
117
+ - script/bootstrap
118
+ - script/console
119
+ - script/test
120
+ - spec/background_generators/solid_generator_spec.rb
121
+ - spec/background_spec.rb
122
+ - spec/color_generators/base_color_generator_spec.rb
123
+ - spec/color_generators/simple_generator_spec.rb
124
+ - spec/color_preset_spec.rb
125
+ - spec/color_spec.rb
79
126
  - spec/geo_pattern_spec.rb
127
+ - spec/helpers_spec.rb
128
+ - spec/pattern_preset_spec.rb
129
+ - spec/pattern_sieve_spec.rb
130
+ - spec/pattern_spec.rb
131
+ - spec/pattern_store_spec.rb
132
+ - spec/pattern_validator_spec.rb
133
+ - spec/seed_spec.rb
80
134
  - spec/spec_helper.rb
135
+ - spec/structure_generators/chevrons_generator_spec.rb
136
+ - spec/structure_generators/concentric_circles_generator_spec.rb
137
+ - spec/structure_generators/diamonds_generator_spec.rb
138
+ - spec/structure_generators/hexagons_generator_spec.rb
139
+ - spec/structure_generators/mosaic_squares_generator_spec.rb
140
+ - spec/structure_generators/nested_squares_generator_spec.rb
141
+ - spec/structure_generators/octagons_generator_spec.rb
142
+ - spec/structure_generators/overlapping_circles_generator_spec.rb
143
+ - spec/structure_generators/overlapping_rings_generator_spec.rb
144
+ - spec/structure_generators/plaid_generator_spec.rb
145
+ - spec/structure_generators/plus_signs_generator_spec.rb
146
+ - spec/structure_generators/sine_waves_generator_spec.rb
147
+ - spec/structure_generators/squares_generator_spec.rb
148
+ - spec/structure_generators/tessellation_generator_spec.rb
149
+ - spec/structure_generators/triangles_generator_spec.rb
150
+ - spec/structure_generators/xes_generator_spec.rb
151
+ - spec/structure_spec.rb
81
152
  - spec/support/aruba.rb
82
- - spec/support/helpers.rb
153
+ - spec/support/helpers/fixtures.rb
154
+ - spec/support/kernel.rb
155
+ - spec/support/matchers/image.rb
156
+ - spec/support/matchers/name.rb
83
157
  - spec/support/rspec.rb
158
+ - spec/support/shared_examples/generator.rb
159
+ - spec/support/shared_examples/pattern.rb
160
+ - spec/support/shared_examples/pattern_name.rb
161
+ - spec/support/shared_examples/structure.rb
84
162
  - spec/support/string.rb
85
163
  - spec/svg_spec.rb
86
164
  homepage: https://github.com/jasonlong/geo_pattern
87
165
  licenses:
88
166
  - MIT
89
167
  metadata: {}
90
- post_install_message:
168
+ post_install_message: |
169
+ Class style pattern names are deprecated as of 1.3.1
91
170
  rdoc_options: []
92
171
  require_paths:
93
172
  - lib
94
173
  required_ruby_version: !ruby/object:Gem::Requirement
95
174
  requirements:
96
- - - ">="
175
+ - - "~>"
97
176
  - !ruby/object:Gem::Version
98
- version: '0'
177
+ version: '2'
99
178
  required_rubygems_version: !ruby/object:Gem::Requirement
100
179
  requirements:
101
180
  - - ">="
@@ -108,11 +187,48 @@ signing_key:
108
187
  specification_version: 4
109
188
  summary: Generate SVG beautiful patterns
110
189
  test_files:
190
+ - spec/background_generators/solid_generator_spec.rb
191
+ - spec/background_spec.rb
192
+ - spec/color_generators/base_color_generator_spec.rb
193
+ - spec/color_generators/simple_generator_spec.rb
194
+ - spec/color_preset_spec.rb
195
+ - spec/color_spec.rb
111
196
  - spec/geo_pattern_spec.rb
197
+ - spec/helpers_spec.rb
198
+ - spec/pattern_preset_spec.rb
199
+ - spec/pattern_sieve_spec.rb
200
+ - spec/pattern_spec.rb
201
+ - spec/pattern_store_spec.rb
202
+ - spec/pattern_validator_spec.rb
203
+ - spec/seed_spec.rb
112
204
  - spec/spec_helper.rb
205
+ - spec/structure_generators/chevrons_generator_spec.rb
206
+ - spec/structure_generators/concentric_circles_generator_spec.rb
207
+ - spec/structure_generators/diamonds_generator_spec.rb
208
+ - spec/structure_generators/hexagons_generator_spec.rb
209
+ - spec/structure_generators/mosaic_squares_generator_spec.rb
210
+ - spec/structure_generators/nested_squares_generator_spec.rb
211
+ - spec/structure_generators/octagons_generator_spec.rb
212
+ - spec/structure_generators/overlapping_circles_generator_spec.rb
213
+ - spec/structure_generators/overlapping_rings_generator_spec.rb
214
+ - spec/structure_generators/plaid_generator_spec.rb
215
+ - spec/structure_generators/plus_signs_generator_spec.rb
216
+ - spec/structure_generators/sine_waves_generator_spec.rb
217
+ - spec/structure_generators/squares_generator_spec.rb
218
+ - spec/structure_generators/tessellation_generator_spec.rb
219
+ - spec/structure_generators/triangles_generator_spec.rb
220
+ - spec/structure_generators/xes_generator_spec.rb
221
+ - spec/structure_spec.rb
113
222
  - spec/support/aruba.rb
114
- - spec/support/helpers.rb
223
+ - spec/support/helpers/fixtures.rb
224
+ - spec/support/kernel.rb
225
+ - spec/support/matchers/image.rb
226
+ - spec/support/matchers/name.rb
115
227
  - spec/support/rspec.rb
228
+ - spec/support/shared_examples/generator.rb
229
+ - spec/support/shared_examples/pattern.rb
230
+ - spec/support/shared_examples/pattern_name.rb
231
+ - spec/support/shared_examples/structure.rb
116
232
  - spec/support/string.rb
117
233
  - spec/svg_spec.rb
118
234
  has_rdoc:
@@ -1,47 +0,0 @@
1
- module GeoPattern
2
- class BasePattern < Struct.new(:svg, :hash)
3
- FILL_COLOR_DARK = "#222"
4
- FILL_COLOR_LIGHT = "#ddd"
5
- STROKE_COLOR = "#000"
6
- STROKE_OPACITY = 0.02
7
- OPACITY_MIN = 0.02
8
- OPACITY_MAX = 0.15
9
-
10
- # Public: mutate the given `svg` object with a rendered pattern
11
- #
12
- # Note: this method _must_ be implemented by sub-
13
- # classes.
14
- #
15
- # svg - the SVG container
16
- #
17
- # Returns a reference to the same `svg` object
18
- # only this time with more patterns.
19
- def render_to_svg
20
- raise NotImplementedError
21
- end
22
-
23
- def hex_val(index, len)
24
- PatternHelpers.hex_val(hash, index, len)
25
- end
26
-
27
- def fill_color(val)
28
- (val.even?) ? FILL_COLOR_LIGHT : FILL_COLOR_DARK
29
- end
30
-
31
- def opacity(val)
32
- map(val, 0, 15, OPACITY_MIN, OPACITY_MAX)
33
- end
34
-
35
- def map(value, v_min, v_max, d_min, d_max)
36
- PatternHelpers.map(value, v_min, v_max, d_min, d_max)
37
- end
38
-
39
- protected
40
- def build_plus_shape(square_size)
41
- [
42
- "rect(#{square_size},0,#{square_size},#{square_size * 3})",
43
- "rect(0, #{square_size},#{square_size * 3},#{square_size})"
44
- ]
45
- end
46
- end
47
- end
@@ -1,45 +0,0 @@
1
- module GeoPattern
2
- class ChevronPattern < BasePattern
3
- def render_to_svg
4
- chevron_width = map(hex_val(0, 1), 0, 15, 30, 80)
5
- chevron_height = map(hex_val(0, 1), 0, 15, 30, 80)
6
- chevron = build_chevron_shape(chevron_width, chevron_height)
7
-
8
- svg.set_width(chevron_width * 6)
9
- svg.set_height(chevron_height * 6 * 0.66)
10
-
11
- i = 0
12
- for y in 0..5
13
- for x in 0..5
14
- val = hex_val(i, 1)
15
- opacity = opacity(val)
16
- fill = fill_color(val)
17
-
18
- styles = {
19
- "stroke" => STROKE_COLOR,
20
- "stroke-opacity" => STROKE_OPACITY,
21
- "fill" => fill,
22
- "fill-opacity" => opacity,
23
- "stroke-width" => 1
24
- }
25
-
26
- svg.group(chevron, styles.merge({"transform" => "translate(#{x*chevron_width},#{y*chevron_height*0.66 - chevron_height/2})"}))
27
-
28
- # Add an extra row at the end that matches the first row, for tiling.
29
- if (y == 0)
30
- svg.group(chevron, styles.merge({"transform" => "translate(#{x*chevron_width},#{6*chevron_height*0.66 - chevron_height/2})"}))
31
- end
32
- i += 1
33
- end
34
- end
35
- end
36
-
37
- def build_chevron_shape(width, height)
38
- e = height * 0.66
39
- [
40
- %Q{polyline("0,0,#{width/2},#{height-e},#{width/2},#{height},0,#{e},0,0")},
41
- %Q{polyline("#{width/2},#{height-e},#{width},0,#{width},#{e},#{width/2},#{height},#{width/2},#{height-e}")}
42
- ]
43
- end
44
- end
45
- end
@@ -1,47 +0,0 @@
1
- module GeoPattern
2
- class ConcentricCirclesPattern < BasePattern
3
- def render_to_svg
4
- scale = hex_val(0, 1)
5
- ring_size = map(scale, 0, 15, 10, 60)
6
- stroke_width = ring_size / 5
7
-
8
- svg.set_width((ring_size + stroke_width) * 6)
9
- svg.set_height((ring_size + stroke_width) * 6)
10
-
11
- i = 0
12
- for y in 0..5
13
- for x in 0..5
14
- val = hex_val(i, 1)
15
- opacity = opacity(val)
16
- fill = fill_color(val)
17
-
18
- svg.circle(
19
- x*ring_size + x*stroke_width + (ring_size + stroke_width)/2,
20
- y*ring_size + y*stroke_width + (ring_size + stroke_width)/2,
21
- ring_size/2, {
22
- "fill" => "none",
23
- "stroke" => fill,
24
- "style" => {
25
- "opacity" => opacity,
26
- "stroke-width" => "#{stroke_width}px"
27
- }
28
- })
29
-
30
- val = hex_val(39-i, 1)
31
- opacity = opacity(val)
32
- fill = fill_color(val)
33
-
34
- svg.circle(
35
- x*ring_size + x*stroke_width + (ring_size + stroke_width)/2,
36
- y*ring_size + y*stroke_width + (ring_size + stroke_width)/2,
37
- ring_size/4, {
38
- "fill" => fill,
39
- "fill-opacity" => opacity
40
- })
41
-
42
- i += 1
43
- end
44
- end
45
- end
46
- end
47
- end
@@ -1,56 +0,0 @@
1
- module GeoPattern
2
- class DiamondPattern < BasePattern
3
- def render_to_svg
4
- diamond_width = map(hex_val(0, 1), 0, 15, 10, 50)
5
- diamond_height = map(hex_val(1, 1), 0, 15, 10, 50)
6
- diamond = build_diamond_shape(diamond_width, diamond_height)
7
-
8
- svg.set_width(diamond_width * 6)
9
- svg.set_height(diamond_height * 3)
10
-
11
- i = 0
12
- for y in 0..5
13
- for x in 0..5
14
- val = hex_val(i, 1)
15
- opacity = opacity(val)
16
- fill = fill_color(val)
17
-
18
- styles = {
19
- "fill" => fill,
20
- "fill-opacity" => opacity,
21
- "stroke" => STROKE_COLOR,
22
- "stroke-opacity" => STROKE_OPACITY
23
- }
24
-
25
- dx = (y % 2 == 0) ? 0 : diamond_width / 2
26
-
27
- svg.polyline(diamond, styles.merge({
28
- "transform" => "translate(#{x*diamond_width - diamond_width/2 + dx}, #{diamond_height/2*y - diamond_height/2})"}))
29
-
30
- # Add an extra one at top-right, for tiling.
31
- if (x == 0)
32
- svg.polyline(diamond, styles.merge({
33
- "transform" => "translate(#{6*diamond_width - diamond_width/2 + dx}, #{diamond_height/2*y - diamond_height/2})"}))
34
- end
35
-
36
- # Add an extra row at the end that matches the first row, for tiling.
37
- if (y == 0)
38
- svg.polyline(diamond, styles.merge({
39
- "transform" => "translate(#{x*diamond_width - diamond_width/2 + dx}, #{diamond_height/2*6 - diamond_height/2})"}))
40
- end
41
-
42
- # Add an extra one at bottom-right, for tiling.
43
- if (x == 0 and y == 0)
44
- svg.polyline(diamond, styles.merge({
45
- "transform" => "translate(#{6*diamond_width - diamond_width/2 + dx}, #{diamond_height/2*6 - diamond_height/2})"}))
46
- end
47
- i += 1
48
- end
49
- end
50
- end
51
-
52
- def build_diamond_shape(width, height)
53
- "#{width/2}, 0, #{width}, #{height/2}, #{width/2}, #{height}, 0, #{height/2}"
54
- end
55
- end
56
- end
@@ -1,57 +0,0 @@
1
- module GeoPattern
2
- class HexagonPattern < BasePattern
3
- def render_to_svg
4
- scale = hex_val(0, 1)
5
- side_length = map(scale, 0, 15, 8, 60)
6
- hex_height = side_length * Math.sqrt(3)
7
- hex_width = side_length * 2
8
- hex = build_hexagon_shape(side_length)
9
-
10
- svg.set_width((hex_width * 3) + (side_length * 3))
11
- svg.set_height(hex_height * 6)
12
-
13
- i = 0
14
- for y in 0..5
15
- for x in 0..5
16
- val = hex_val(i, 1)
17
- dy = x % 2 == 0 ? y*hex_height : y*hex_height + hex_height/2
18
- opacity = opacity(val)
19
- fill = fill_color(val)
20
-
21
- styles = {
22
- "fill" => fill,
23
- "fill-opacity" => opacity,
24
- "stroke" => STROKE_COLOR,
25
- "stroke-opacity" => STROKE_OPACITY
26
- }
27
-
28
- svg.polyline(hex, styles.merge({"transform" => "translate(#{x*side_length*1.5 - hex_width/2}, #{dy - hex_height/2})"}))
29
-
30
- # Add an extra one at top-right, for tiling.
31
- if (x == 0)
32
- svg.polyline(hex, styles.merge({"transform" => "translate(#{6*side_length*1.5 - hex_width/2}, #{dy - hex_height/2})"}))
33
- end
34
-
35
- # Add an extra row at the end that matches the first row, for tiling.
36
- if (y == 0)
37
- dy = x % 2 == 0 ? 6*hex_height : 6*hex_height + hex_height/2;
38
- svg.polyline(hex, styles.merge({"transform" => "translate(#{x*side_length*1.5 - hex_width/2}, #{dy - hex_height/2})"}))
39
- end
40
-
41
- # Add an extra one at bottom-right, for tiling.
42
- if (x == 0 && y == 0)
43
- svg.polyline(hex, styles.merge({"transform" => "translate(#{6*side_length*1.5 - hex_width/2}, #{5*hex_height + hex_height/2})"}))
44
- end
45
- i += 1
46
- end
47
- end
48
- end
49
-
50
- def build_hexagon_shape(sideLength)
51
- c = sideLength
52
- a = c/2
53
- b = Math.sin(60 * Math::PI / 180)*c
54
- "0,#{b},#{a},0,#{a+c},0,#{2*c},#{b},#{a+c},#{2*b},#{a},#{2*b},0,#{b}"
55
- end
56
- end
57
- end