shattered_machine 0.0.8 → 0.1.2

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.
data/doc/index.html CHANGED
@@ -61,6 +61,11 @@
61
61
 
62
62
  <p>The Shattered Machine is a gem that aim to create glitched png images easily.</p>
63
63
 
64
+ <ul>
65
+ <li><a href="https://rubygems.org/gems/shattered_machine">Rubygems page</a></li>
66
+ <li><a href="https://www.rubydoc.info/gems/shattered_machine">Documentation</a></li>
67
+ </ul>
68
+
64
69
  <h2 id="features">Features</h2>
65
70
 
66
71
  <ul>
@@ -71,34 +76,44 @@
71
76
  </ul>
72
77
 
73
78
  <h2 id="usageexamples">Usage/Examples</h2>
74
- <p>### Glitcher</p>
75
79
 
76
- <p>```ruby
77
- require ‘shattered_machine’</p>
80
+ <h3 id="glitcher">Glitcher</h3>
81
+
82
+ <p>```ruby</p>
83
+
84
+ <p>require ‘shattered_machine’</p>
78
85
 
79
- <p>io = ShatteredMachine::Io.new( ‘input_image.png’, ‘output_folder’, ‘output_filename’)
80
- ShatteredMachine::Glitcher.new(‘Slim’, io).call
81
- ```</p>
86
+ <p>io = ShatteredMachine::Io.new(‘input_image.png’, ‘output_folder’, ‘output_filename’)
87
+ ShatteredMachine::Glitcher.new(‘Slim’, io).call</p>
88
+
89
+ <p>```</p>
82
90
 
83
91
  <h3 id="sampler">Sampler</h3>
84
92
 
85
- <p>```ruby
86
- require ‘shattered_machine’</p>
93
+ <p>```ruby</p>
94
+
95
+ <p>require ‘shattered_machine’</p>
96
+
97
+ <p>io = ShatteredMachine::Io.new(‘input_image.png’, ‘output_folder’, ‘output_filename’)
98
+ ShatteredMachine::Sampler.new(io).call</p>
87
99
 
88
- <p>io = ShatteredMachine::Io.new( ‘input_image.png’, ‘output_folder’, ‘output_filename’)
89
- ShatteredMachine::Sampler.new(io).call
90
- ```</p>
100
+ <p>```</p>
91
101
 
92
102
  <h3 id="converter">Converter</h3>
93
103
 
94
- <p>```ruby
95
- require ‘shattered_machine’</p>
104
+ <p>```ruby</p>
105
+
106
+ <p>require ‘shattered_machine’</p>
107
+
108
+ <p>io = ShatteredMachine::Io.new(‘input_image.jpg’, ‘output_folder’, ‘output_filename’)
109
+ ShatteredMachine::Converter.new(io).call</p>
96
110
 
97
- <p>io = ShatteredMachine::Io.new( ‘input_image.jpg’, ‘output_folder’, ‘output_filename’)
98
- ShatteredMachine::Converter.new(io).call
99
- ```</p>
111
+ <p>```</p>
100
112
 
101
113
  <h2 id="development">Development</h2>
114
+
115
+ <h3 id="install-locally">Install locally</h3>
116
+
102
117
  <p>The Shattered Machine using two main libraries for glitching :
103
118
  - <a href="https://github.com/ucnv/pnglitch">pnglitch</a>
104
119
  - <a href="https://framagit.org/Radoteur/rusty_engine">rusty engine</a></p>
@@ -108,12 +123,30 @@ To install the needed dependencies you need to install the <a href="https://www.
108
123
 
109
124
  <p>Then run <code>bundle install</code> to fetch the needed gems.</p>
110
125
 
126
+ <h3 id="create-new-version">Create new version</h3>
127
+
128
+ <ul>
129
+ <li>Fill the CHANGELOG with the changes contained in the new version</li>
130
+ <li>Ensure the specs are green</li>
131
+ <li>Change the versions in <code>lib/shattered_machine.rb</code> and <code>shattered_machine.gemspec</code></li>
132
+ <li>Create git tag</li>
133
+ <li>Compile the gem : <code>gem build shattered_machine.gemspec</code></li>
134
+ <li>Push the new version : <code>gem push shattered_machine-x.x.x.gem</code></li>
135
+ </ul>
136
+
111
137
  <h3 id="specs">Specs</h3>
138
+
112
139
  <p>This project uses <a href="https://rspec.info/">Rspec</a> for writting specs, to run them simply run <code>bundle rspec</code></p>
140
+
141
+ <h2 id="acknowledgements">Acknowledgements</h2>
142
+
143
+ <p>This gem is relying heavily on the <a href="https://github.com/ucnv/pnglitch">pnglitch gem</a> and the <a href="https://framagit.org/Radoteur/rusty_engine">rusty engine gem</a>.
144
+ The png image used in the specs has been created with <a href="https://100r.co/site/ronin.html">Ronin</a> while the jpg one is painting from Karl Wiener.
145
+ Icons made by <a href="http://www.freepik.com/">Freepik</a> from <a href="https://www.flaticon.com/">www.flaticon.com</a></p>
113
146
  </div></div>
114
147
 
115
148
  <div id="footer">
116
- Generated on Sun May 23 18:36:58 2021 by
149
+ Generated on Fri Aug 6 17:15:03 2021 by
117
150
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
118
151
  0.9.26 (ruby-2.6.6).
119
152
  </div>
data/doc/method_list.html CHANGED
@@ -46,101 +46,109 @@
46
46
 
47
47
  <li class="odd ">
48
48
  <div class="item">
49
- <span class='object_link'><a href="ShatteredMachine/ChangeByte.html#call-instance_method" title="ShatteredMachine::ChangeByte#call (method)">#call</a></span>
50
- <small>ShatteredMachine::ChangeByte</small>
49
+ <span class='object_link'><a href="ShatteredMachine/Sampler.html#call-instance_method" title="ShatteredMachine::Sampler#call (method)">#call</a></span>
50
+ <small>ShatteredMachine::Sampler</small>
51
51
  </div>
52
52
  </li>
53
53
 
54
54
 
55
55
  <li class="even ">
56
56
  <div class="item">
57
- <span class='object_link'><a href="ShatteredMachine/Transpose.html#call-instance_method" title="ShatteredMachine::Transpose#call (method)">#call</a></span>
58
- <small>ShatteredMachine::Transpose</small>
57
+ <span class='object_link'><a href="ShatteredMachine/Exchange.html#call-instance_method" title="ShatteredMachine::Exchange#call (method)">#call</a></span>
58
+ <small>ShatteredMachine::Exchange</small>
59
59
  </div>
60
60
  </li>
61
61
 
62
62
 
63
63
  <li class="odd ">
64
64
  <div class="item">
65
- <span class='object_link'><a href="ShatteredMachine/Sampler.html#call-instance_method" title="ShatteredMachine::Sampler#call (method)">#call</a></span>
66
- <small>ShatteredMachine::Sampler</small>
65
+ <span class='object_link'><a href="ShatteredMachine/PixelSorter.html#call-instance_method" title="ShatteredMachine::PixelSorter#call (method)">#call</a></span>
66
+ <small>ShatteredMachine::PixelSorter</small>
67
67
  </div>
68
68
  </li>
69
69
 
70
70
 
71
71
  <li class="even ">
72
72
  <div class="item">
73
- <span class='object_link'><a href="ShatteredMachine/Converter.html#call-instance_method" title="ShatteredMachine::Converter#call (method)">#call</a></span>
74
- <small>ShatteredMachine::Converter</small>
73
+ <span class='object_link'><a href="ShatteredMachine/Glitcher.html#call-instance_method" title="ShatteredMachine::Glitcher#call (method)">#call</a></span>
74
+ <small>ShatteredMachine::Glitcher</small>
75
75
  </div>
76
76
  </li>
77
77
 
78
78
 
79
79
  <li class="odd ">
80
80
  <div class="item">
81
- <span class='object_link'><a href="ShatteredMachine/Exchange.html#call-instance_method" title="ShatteredMachine::Exchange#call (method)">#call</a></span>
82
- <small>ShatteredMachine::Exchange</small>
81
+ <span class='object_link'><a href="ShatteredMachine/Brush.html#call-instance_method" title="ShatteredMachine::Brush#call (method)">#call</a></span>
82
+ <small>ShatteredMachine::Brush</small>
83
83
  </div>
84
84
  </li>
85
85
 
86
86
 
87
87
  <li class="even ">
88
88
  <div class="item">
89
- <span class='object_link'><a href="ShatteredMachine/PixelSorter.html#call-instance_method" title="ShatteredMachine::PixelSorter#call (method)">#call</a></span>
90
- <small>ShatteredMachine::PixelSorter</small>
89
+ <span class='object_link'><a href="ShatteredMachine/Converter.html#call-instance_method" title="ShatteredMachine::Converter#call (method)">#call</a></span>
90
+ <small>ShatteredMachine::Converter</small>
91
91
  </div>
92
92
  </li>
93
93
 
94
94
 
95
95
  <li class="odd ">
96
96
  <div class="item">
97
- <span class='object_link'><a href="ShatteredMachine/Glitcher.html#call-instance_method" title="ShatteredMachine::Glitcher#call (method)">#call</a></span>
98
- <small>ShatteredMachine::Glitcher</small>
97
+ <span class='object_link'><a href="ShatteredMachine/ProgressivePixelSorter.html#call-instance_method" title="ShatteredMachine::ProgressivePixelSorter#call (method)">#call</a></span>
98
+ <small>ShatteredMachine::ProgressivePixelSorter</small>
99
99
  </div>
100
100
  </li>
101
101
 
102
102
 
103
103
  <li class="even ">
104
104
  <div class="item">
105
- <span class='object_link'><a href="ShatteredMachine/Slim.html#call-instance_method" title="ShatteredMachine::Slim#call (method)">#call</a></span>
106
- <small>ShatteredMachine::Slim</small>
105
+ <span class='object_link'><a href="ShatteredMachine/Transpose.html#call-instance_method" title="ShatteredMachine::Transpose#call (method)">#call</a></span>
106
+ <small>ShatteredMachine::Transpose</small>
107
107
  </div>
108
108
  </li>
109
109
 
110
110
 
111
111
  <li class="odd ">
112
112
  <div class="item">
113
- <span class='object_link'><a href="ShatteredMachine/WrongFilter.html#call-instance_method" title="ShatteredMachine::WrongFilter#call (method)">#call</a></span>
114
- <small>ShatteredMachine::WrongFilter</small>
113
+ <span class='object_link'><a href="ShatteredMachine/Defect.html#call-instance_method" title="ShatteredMachine::Defect#call (method)">#call</a></span>
114
+ <small>ShatteredMachine::Defect</small>
115
115
  </div>
116
116
  </li>
117
117
 
118
118
 
119
119
  <li class="even ">
120
120
  <div class="item">
121
- <span class='object_link'><a href="ShatteredMachine/Brush.html#call-instance_method" title="ShatteredMachine::Brush#call (method)">#call</a></span>
122
- <small>ShatteredMachine::Brush</small>
121
+ <span class='object_link'><a href="ShatteredMachine/ChangeByte.html#call-instance_method" title="ShatteredMachine::ChangeByte#call (method)">#call</a></span>
122
+ <small>ShatteredMachine::ChangeByte</small>
123
123
  </div>
124
124
  </li>
125
125
 
126
126
 
127
127
  <li class="odd ">
128
128
  <div class="item">
129
- <span class='object_link'><a href="ShatteredMachine/Defect.html#call-instance_method" title="ShatteredMachine::Defect#call (method)">#call</a></span>
130
- <small>ShatteredMachine::Defect</small>
129
+ <span class='object_link'><a href="ShatteredMachine/Slim.html#call-instance_method" title="ShatteredMachine::Slim#call (method)">#call</a></span>
130
+ <small>ShatteredMachine::Slim</small>
131
131
  </div>
132
132
  </li>
133
133
 
134
134
 
135
135
  <li class="even ">
136
136
  <div class="item">
137
- <span class='object_link'><a href="ShatteredMachine/Exchange.html#initialize-instance_method" title="ShatteredMachine::Exchange#initialize (method)">#initialize</a></span>
138
- <small>ShatteredMachine::Exchange</small>
137
+ <span class='object_link'><a href="ShatteredMachine/WrongFilter.html#call-instance_method" title="ShatteredMachine::WrongFilter#call (method)">#call</a></span>
138
+ <small>ShatteredMachine::WrongFilter</small>
139
139
  </div>
140
140
  </li>
141
141
 
142
142
 
143
143
  <li class="odd ">
144
+ <div class="item">
145
+ <span class='object_link'><a href="ShatteredMachine/Glitcher.html#initialize-instance_method" title="ShatteredMachine::Glitcher#initialize (method)">#initialize</a></span>
146
+ <small>ShatteredMachine::Glitcher</small>
147
+ </div>
148
+ </li>
149
+
150
+
151
+ <li class="even ">
144
152
  <div class="item">
145
153
  <span class='object_link'><a href="ShatteredMachine/Io.html#initialize-instance_method" title="ShatteredMachine::Io#initialize (method)">#initialize</a></span>
146
154
  <small>ShatteredMachine::Io</small>
@@ -148,7 +156,7 @@
148
156
  </li>
149
157
 
150
158
 
151
- <li class="even ">
159
+ <li class="odd ">
152
160
  <div class="item">
153
161
  <span class='object_link'><a href="ShatteredMachine/Slim.html#initialize-instance_method" title="ShatteredMachine::Slim#initialize (method)">#initialize</a></span>
154
162
  <small>ShatteredMachine::Slim</small>
@@ -156,7 +164,7 @@
156
164
  </li>
157
165
 
158
166
 
159
- <li class="odd ">
167
+ <li class="even ">
160
168
  <div class="item">
161
169
  <span class='object_link'><a href="ShatteredMachine/Brush.html#initialize-instance_method" title="ShatteredMachine::Brush#initialize (method)">#initialize</a></span>
162
170
  <small>ShatteredMachine::Brush</small>
@@ -164,7 +172,7 @@
164
172
  </li>
165
173
 
166
174
 
167
- <li class="even ">
175
+ <li class="odd ">
168
176
  <div class="item">
169
177
  <span class='object_link'><a href="ShatteredMachine/Defect.html#initialize-instance_method" title="ShatteredMachine::Defect#initialize (method)">#initialize</a></span>
170
178
  <small>ShatteredMachine::Defect</small>
@@ -172,7 +180,7 @@
172
180
  </li>
173
181
 
174
182
 
175
- <li class="odd ">
183
+ <li class="even ">
176
184
  <div class="item">
177
185
  <span class='object_link'><a href="ShatteredMachine/Sampler.html#initialize-instance_method" title="ShatteredMachine::Sampler#initialize (method)">#initialize</a></span>
178
186
  <small>ShatteredMachine::Sampler</small>
@@ -180,15 +188,15 @@
180
188
  </li>
181
189
 
182
190
 
183
- <li class="even ">
191
+ <li class="odd ">
184
192
  <div class="item">
185
- <span class='object_link'><a href="ShatteredMachine/Glitcher.html#initialize-instance_method" title="ShatteredMachine::Glitcher#initialize (method)">#initialize</a></span>
186
- <small>ShatteredMachine::Glitcher</small>
193
+ <span class='object_link'><a href="ShatteredMachine/Exchange.html#initialize-instance_method" title="ShatteredMachine::Exchange#initialize (method)">#initialize</a></span>
194
+ <small>ShatteredMachine::Exchange</small>
187
195
  </div>
188
196
  </li>
189
197
 
190
198
 
191
- <li class="odd ">
199
+ <li class="even ">
192
200
  <div class="item">
193
201
  <span class='object_link'><a href="ShatteredMachine/Converter.html#initialize-instance_method" title="ShatteredMachine::Converter#initialize (method)">#initialize</a></span>
194
202
  <small>ShatteredMachine::Converter</small>
@@ -196,7 +204,7 @@
196
204
  </li>
197
205
 
198
206
 
199
- <li class="even ">
207
+ <li class="odd ">
200
208
  <div class="item">
201
209
  <span class='object_link'><a href="ShatteredMachine/Transpose.html#initialize-instance_method" title="ShatteredMachine::Transpose#initialize (method)">#initialize</a></span>
202
210
  <small>ShatteredMachine::Transpose</small>
@@ -204,7 +212,7 @@
204
212
  </li>
205
213
 
206
214
 
207
- <li class="odd ">
215
+ <li class="even ">
208
216
  <div class="item">
209
217
  <span class='object_link'><a href="ShatteredMachine/ChangeByte.html#initialize-instance_method" title="ShatteredMachine::ChangeByte#initialize (method)">#initialize</a></span>
210
218
  <small>ShatteredMachine::ChangeByte</small>
@@ -212,7 +220,7 @@
212
220
  </li>
213
221
 
214
222
 
215
- <li class="even ">
223
+ <li class="odd ">
216
224
  <div class="item">
217
225
  <span class='object_link'><a href="ShatteredMachine/PixelSorter.html#initialize-instance_method" title="ShatteredMachine::PixelSorter#initialize (method)">#initialize</a></span>
218
226
  <small>ShatteredMachine::PixelSorter</small>
@@ -220,7 +228,7 @@
220
228
  </li>
221
229
 
222
230
 
223
- <li class="odd ">
231
+ <li class="even ">
224
232
  <div class="item">
225
233
  <span class='object_link'><a href="ShatteredMachine/WrongFilter.html#initialize-instance_method" title="ShatteredMachine::WrongFilter#initialize (method)">#initialize</a></span>
226
234
  <small>ShatteredMachine::WrongFilter</small>
@@ -228,26 +236,18 @@
228
236
  </li>
229
237
 
230
238
 
231
- <li class="even ">
232
- <div class="item">
233
- <span class='object_link'><a href="ShatteredMachine/Io/Paths.html#input-instance_method" title="ShatteredMachine::Io::Paths#input (method)">#input</a></span>
234
- <small>ShatteredMachine::Io::Paths</small>
235
- </div>
236
- </li>
237
-
238
-
239
239
  <li class="odd ">
240
240
  <div class="item">
241
- <span class='object_link'><a href="ShatteredMachine/Io.html#jpg_images-instance_method" title="ShatteredMachine::Io#jpg_images (method)">#jpg_images</a></span>
242
- <small>ShatteredMachine::Io</small>
241
+ <span class='object_link'><a href="ShatteredMachine/ProgressivePixelSorter.html#initialize-instance_method" title="ShatteredMachine::ProgressivePixelSorter#initialize (method)">#initialize</a></span>
242
+ <small>ShatteredMachine::ProgressivePixelSorter</small>
243
243
  </div>
244
244
  </li>
245
245
 
246
246
 
247
247
  <li class="even ">
248
248
  <div class="item">
249
- <span class='object_link'><a href="ShatteredMachine/Io/Paths.html#output-instance_method" title="ShatteredMachine::Io::Paths#output (method)">#output</a></span>
250
- <small>ShatteredMachine::Io::Paths</small>
249
+ <span class='object_link'><a href="ShatteredMachine/Io.html#jpg_images-instance_method" title="ShatteredMachine::Io#jpg_images (method)">#jpg_images</a></span>
250
+ <small>ShatteredMachine::Io</small>
251
251
  </div>
252
252
  </li>
253
253
 
@@ -100,7 +100,7 @@
100
100
  </div>
101
101
 
102
102
  <div id="footer">
103
- Generated on Sun May 23 18:36:58 2021 by
103
+ Generated on Fri Aug 6 17:15:03 2021 by
104
104
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
105
105
  0.9.26 (ruby-2.6.6).
106
106
  </div>
@@ -43,7 +43,7 @@ module ShatteredMachine
43
43
  end
44
44
 
45
45
  def rust_formatted_sorting_by
46
- ruby_to_rust_sorting_by = { hue: '0', staturation: '1' }
46
+ ruby_to_rust_sorting_by = { hue: '0', saturation: '1' }
47
47
  ruby_to_rust_sorting_by[@sorting_by]
48
48
  end
49
49
  end
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'pixel_sorter'
4
+ module ShatteredMachine
5
+ # Call the pixel sorter multiple time in steps for given png image(s)
6
+ class ProgressivePixelSorter
7
+ # @param io [ShatteredMachine::Io] Io containing paths for images to glitch
8
+ # @param options [Hash] options for the pixel sorting algorithm
9
+ def initialize(io, options)
10
+ @io = io
11
+ @options = options
12
+ @images_count = @io.png_images.count
13
+ @steps = define_steps
14
+ end
15
+
16
+ def call
17
+ @io.png_images.sort_by { |path| [path.input[/\d+/].to_i, path.input] }.each_with_index do |item, index|
18
+ PixelSorter.new(sorter_options(index)).call(item.input, item.output)
19
+ end
20
+ end
21
+
22
+ private
23
+
24
+ def sorter_options(index)
25
+ return @options unless @options[:smart_sorting]
26
+
27
+ step_options = @options.clone
28
+ step_options[:multiple_ranges] = false
29
+ step_options[:detection_min] = (define_new_min_limit(index)).round.to_s
30
+ step_options[:detection_max] = (define_new_max_limit(index)).round.to_s
31
+ step_options
32
+ end
33
+
34
+ def define_steps
35
+ { min: min_step, max: max_step }
36
+ end
37
+
38
+ def min_step
39
+ positive_subtraction(@options[:detection_min].to_f, @options[:detection_min_two].to_f) / (@images_count - 1)
40
+ end
41
+
42
+ def max_step
43
+ positive_subtraction(@options[:detection_max].to_f, @options[:detection_max_two].to_f) / (@images_count - 1)
44
+ end
45
+
46
+ def positive_subtraction(value1, value2)
47
+ value1 > value2 ? value1 - value2 : value2 - value1
48
+ end
49
+
50
+ def define_new_min_limit(index)
51
+ if @options[:detection_min].to_f > @options[:detection_min_two].to_f
52
+ (@options[:detection_min].to_f - (index * @steps[:min]))
53
+ else
54
+ (@options[:detection_min].to_f + (index * @steps[:min]))
55
+ end
56
+ end
57
+
58
+ def define_new_max_limit(index)
59
+ if @options[:detection_max].to_f > @options[:detection_max_two].to_f
60
+ (@options[:detection_max].to_f - (index * @steps[:max]))
61
+ else
62
+ (@options[:detection_max].to_f + (index * @steps[:max]))
63
+ end
64
+ end
65
+ end
66
+ end
@@ -11,7 +11,7 @@ module ShatteredMachine
11
11
  # @param options [Hash] options for specifying which
12
12
  def initialize(io, options = {})
13
13
  @io = io
14
- @base_output_filename = io.output_filename || 'sample'
14
+ @base_output_filename = io.output_filename.empty? ? 'sample' : io.output_filename
15
15
  @algorithms_to_sample = options[:algorithms_to_sample] || ALL_ALGORITHMS
16
16
  end
17
17
 
@@ -30,8 +30,7 @@ module ShatteredMachine
30
30
  private
31
31
 
32
32
  FILTERS = %w[none sub up average paeth].freeze
33
- SLIM_DIRECTION = %w[up_to_down down_to_up left_to_right right_to_left].freeze
34
- BRUSH_DIRECTION = %w[vertical vertical_inverted horizontal horizontal_inverted].freeze
33
+ DIRECTION = %w[vertical vertical_inverted horizontal horizontal_inverted].freeze
35
34
 
36
35
  def update_io(output_filename_appendix)
37
36
  @io.output_filename = "#{@base_output_filename}_#{output_filename_appendix}"
@@ -65,7 +64,7 @@ module ShatteredMachine
65
64
  def sample_slim
66
65
  return unless @algorithms_to_sample.include? 'slim'
67
66
 
68
- SLIM_DIRECTION.each do |direction|
67
+ DIRECTION.each do |direction|
69
68
  update_io("slim_#{direction}")
70
69
  slim_options = { direction: direction.to_sym }
71
70
  Glitcher.new('Slim', @io, slim_options).call
@@ -75,7 +74,7 @@ module ShatteredMachine
75
74
  def sample_brush
76
75
  return unless @algorithms_to_sample.include? 'brush'
77
76
 
78
- BRUSH_DIRECTION.each do |direction|
77
+ DIRECTION.each do |direction|
79
78
  update_io("brush_#{direction}")
80
79
  brush_options = { direction: direction.to_sym }
81
80
  Glitcher.new('Brush', @io, brush_options).call
@@ -11,7 +11,7 @@ module ShatteredMachine
11
11
  # @param options [Hash] options for slim algorithm
12
12
  def initialize(options = {})
13
13
  @colors = options[:colors] || ALL_COLORS
14
- @direction = options[:direction] || :up_to_down
14
+ @direction = options[:direction] || :vertical_inverted
15
15
  @probability = (options[:probability] || 95).to_s
16
16
  @probability_area = options[:probability_area] || 'global'
17
17
  @colors_with_proba = colors_with_proba(options[:colors_with_proba])
@@ -38,7 +38,9 @@ module ShatteredMachine
38
38
 
39
39
  def rust_formatted_direction
40
40
  ruby_to_rust_directions = { up_to_down: '1', down_to_up: '2',
41
- left_to_right: '3', right_to_left: '4' }
41
+ left_to_right: '3', right_to_left: '4',
42
+ vertical: '1', vertical_inverted: '2',
43
+ horizontal: '3', horizontal_inverted: '4' }
42
44
  ruby_to_rust_directions[@direction]
43
45
  end
44
46
 
@@ -3,11 +3,12 @@
3
3
  require 'shattered_machine/converter'
4
4
  require 'shattered_machine/glitcher'
5
5
  require 'shattered_machine/io'
6
+ require 'shattered_machine/progressive_pixel_sorter'
6
7
  require 'shattered_machine/sampler'
7
8
 
8
9
  # main file for ShatteredMachine gem
9
10
  module ShatteredMachine
10
- VERSION = '0.0.8'
11
+ VERSION = '0.1.1'
11
12
 
12
13
  class << self
13
14
  end
@@ -4,7 +4,7 @@ require 'English'
4
4
 
5
5
  Gem::Specification.new do |s|
6
6
  s.name = 'shattered_machine'
7
- s.version = '0.0.8'
7
+ s.version = '0.1.2'
8
8
  s.required_ruby_version = '>= 2.0.0'
9
9
  s.required_rubygems_version = '>= 1.8.11'
10
10
  s.summary = 'Shattered Machine core engine'
@@ -17,9 +17,10 @@ Gem::Specification.new do |s|
17
17
  s.test_files = ['spec']
18
18
  s.require_paths = ['lib']
19
19
  s.homepage =
20
- 'https://git.sr.ht/~pouet/shattered_machine'
20
+ 'https://gitlab.com/girflo/shattered-machine'
21
21
  s.license = 'MIT'
22
- s.add_dependency 'rusty_engine_ffi', '>=0.0.2'
22
+ s.add_dependency 'pnglitch', '~> 0.0.5'
23
+ s.add_dependency 'rusty_engine_ffi', '~> 0.1.0'
23
24
  s.add_development_dependency('rspec', '~> 3')
24
25
  s.add_development_dependency('yard', '~> 0.9')
25
26
  end
metadata CHANGED
@@ -1,29 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shattered_machine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Flo Girardo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-07-01 00:00:00.000000000 Z
11
+ date: 2022-02-08 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: pnglitch
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.0.5
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.0.5
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: rusty_engine_ffi
15
29
  requirement: !ruby/object:Gem::Requirement
16
30
  requirements:
17
- - - ">="
31
+ - - "~>"
18
32
  - !ruby/object:Gem::Version
19
- version: 0.0.2
33
+ version: 0.1.0
20
34
  type: :runtime
21
35
  prerelease: false
22
36
  version_requirements: !ruby/object:Gem::Requirement
23
37
  requirements:
24
- - - ">="
38
+ - - "~>"
25
39
  - !ruby/object:Gem::Version
26
- version: 0.0.2
40
+ version: 0.1.0
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: rspec
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -61,7 +75,7 @@ extra_rdoc_files: []
61
75
  files:
62
76
  - ".gitignore"
63
77
  - ".rspec"
64
- - CHANGELOG
78
+ - CHANGELOG.md
65
79
  - Gemfile
66
80
  - LICENSE
67
81
  - README.md
@@ -75,6 +89,7 @@ files:
75
89
  - doc/ShatteredMachine/Io.html
76
90
  - doc/ShatteredMachine/Io/Paths.html
77
91
  - doc/ShatteredMachine/PixelSorter.html
92
+ - doc/ShatteredMachine/ProgressivePixelSorter.html
78
93
  - doc/ShatteredMachine/Sampler.html
79
94
  - doc/ShatteredMachine/Slim.html
80
95
  - doc/ShatteredMachine/Transpose.html
@@ -103,12 +118,13 @@ files:
103
118
  - lib/shattered_machine/glitcher.rb
104
119
  - lib/shattered_machine/io.rb
105
120
  - lib/shattered_machine/pixel_sorter.rb
121
+ - lib/shattered_machine/progressive_pixel_sorter.rb
106
122
  - lib/shattered_machine/sampler.rb
107
123
  - lib/shattered_machine/slim.rb
108
124
  - lib/shattered_machine/transpose.rb
109
125
  - lib/shattered_machine/wrong_filter.rb
110
126
  - shattered_machine.gemspec
111
- homepage: https://git.sr.ht/~pouet/shattered_machine
127
+ homepage: https://gitlab.com/girflo/shattered-machine
112
128
  licenses:
113
129
  - MIT
114
130
  metadata: {}