pxlsrt 1.6 → 1.6.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/bin/pxlsrt +1 -1
- data/lib/pxlsrt/brute.rb +2 -2
- data/lib/pxlsrt/colors.rb +4 -2
- data/lib/pxlsrt/helpers.rb +2 -2
- data/lib/pxlsrt/lines.rb +21 -21
- data/lib/pxlsrt/smart.rb +2 -2
- data/lib/pxlsrt/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6ef9f339272ae1b0a3e64f18977fbff964134b27
|
4
|
+
data.tar.gz: 7b2b1da4aed79741292035875de61a5021e914be
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 806ffa517135b62506f57c4f25f000c6850318474241090da870e9778ac112da2216ec31f131bcc2b766a9313f73add3523c409889f04903cbaac58382945a6c
|
7
|
+
data.tar.gz: e50c87887ec75c396874dedb234521b6eeff6e3440ffb44f4a243ebbbaddd116e7eb0e58f6f4f61c8dd55d16c99c9d9bf5284b582d028c7375af65b8e7f974ad
|
data/bin/pxlsrt
CHANGED
@@ -14,7 +14,7 @@ require 'thor'
|
|
14
14
|
# * verbose - Have pxlsrt tell you what it's working on.
|
15
15
|
# * help - More in depth commands.
|
16
16
|
class CLI < Thor
|
17
|
-
class_option :reverse, :
|
17
|
+
class_option :reverse, :default => false, :aliases => "-r"
|
18
18
|
class_option :vertical, :type => :boolean, :default => false, :aliases => "-v"
|
19
19
|
class_option :diagonal, :type => :boolean, :default => false, :aliases => "-d"
|
20
20
|
class_option :smooth, :type => :boolean, :default => false, :aliases => "-s"
|
data/lib/pxlsrt/brute.rb
CHANGED
@@ -19,7 +19,7 @@ module Pxlsrt
|
|
19
19
|
def self.brute(input, o={})
|
20
20
|
startTime=Time.now
|
21
21
|
defOptions={
|
22
|
-
:reverse =>
|
22
|
+
:reverse => false,
|
23
23
|
:vertical => false,
|
24
24
|
:diagonal => false,
|
25
25
|
:smooth => false,
|
@@ -31,7 +31,7 @@ module Pxlsrt
|
|
31
31
|
:middle => false
|
32
32
|
}
|
33
33
|
defRules={
|
34
|
-
:reverse =>
|
34
|
+
:reverse => :anything,
|
35
35
|
:vertical => [false, true],
|
36
36
|
:diagonal => [false, true],
|
37
37
|
:smooth => [false, true],
|
data/lib/pxlsrt/colors.rb
CHANGED
@@ -52,18 +52,19 @@ module Pxlsrt
|
|
52
52
|
if ca.length==1
|
53
53
|
return ca.first
|
54
54
|
end
|
55
|
+
Pxlsrt::Helpers.verbose(ca) if ca.length == 0
|
55
56
|
if !chunky
|
56
57
|
r=((ca.collect { |c| c[0] }).inject{ |sum, el| sum+el }).to_f / ca.size
|
57
58
|
g=((ca.collect { |c| c[1] }).inject{ |sum, el| sum+el }).to_f / ca.size
|
58
59
|
b=((ca.collect { |c| c[2] }).inject{ |sum, el| sum+el }).to_f / ca.size
|
59
60
|
a=((ca.collect { |c| c[3] }).inject{ |sum, el| sum+el }).to_f / ca.size
|
60
|
-
return [r,g,b,a]
|
61
|
+
return [r.to_i, g.to_i, b.to_i, a.to_i]
|
61
62
|
else
|
62
63
|
r=((ca.collect { |c| ChunkyPNG::Color.r(c) }).inject{ |sum, el| sum+el }).to_f / ca.size
|
63
64
|
g=((ca.collect { |c| ChunkyPNG::Color.g(c) }).inject{ |sum, el| sum+el }).to_f / ca.size
|
64
65
|
b=((ca.collect { |c| ChunkyPNG::Color.b(c) }).inject{ |sum, el| sum+el }).to_f / ca.size
|
65
66
|
a=((ca.collect { |c| ChunkyPNG::Color.a(c) }).inject{ |sum, el| sum+el }).to_f / ca.size
|
66
|
-
return ChunkyPNG::Color.rgba(r,g,b,a)
|
67
|
+
return ChunkyPNG::Color.rgba(r.to_i, g.to_i, b.to_i, a.to_i)
|
67
68
|
end
|
68
69
|
end
|
69
70
|
##
|
@@ -102,6 +103,7 @@ module Pxlsrt
|
|
102
103
|
# * alpha
|
103
104
|
def self.pixelSort(list, how, reverse)
|
104
105
|
mhm=[]
|
106
|
+
Pxlsrt::Helpers.error(list) if list.length == 0
|
105
107
|
case how.downcase
|
106
108
|
when "sum-rgb"
|
107
109
|
mhm= list.sort_by { |c| ChunkyPNG::Color.r(c)+ChunkyPNG::Color.g(c)+ChunkyPNG::Color.b(c) }
|
data/lib/pxlsrt/helpers.rb
CHANGED
@@ -59,9 +59,9 @@ module Pxlsrt
|
|
59
59
|
##
|
60
60
|
# Pixel sorting helper to eliminate repetition.
|
61
61
|
def self.handlePixelSort(band, o)
|
62
|
-
if o[:reverse].downcase == "reverse"
|
62
|
+
if (o[:reverse].class == String and (o[:reverse].downcase == "reverse" or o[:reverse] == "")) or o[:reverse] == true
|
63
63
|
reverse = 1
|
64
|
-
elsif o[:reverse].downcase == "either"
|
64
|
+
elsif o[:reverse].class == String and o[:reverse].downcase == "either"
|
65
65
|
reverse = -1
|
66
66
|
else
|
67
67
|
reverse = 0
|
data/lib/pxlsrt/lines.rb
CHANGED
@@ -88,32 +88,32 @@ module Pxlsrt
|
|
88
88
|
# Because of the requirements of pxlsrt, it doesn't actually slice the array, but returns a range-like array. Example:
|
89
89
|
# [[0, 5], [6, 7], [8, 10]]
|
90
90
|
def self.randomSlices(mainLength, minLength, maxLength)
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
if
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
91
|
+
if mainLength <= 1
|
92
|
+
return [[0, 0]]
|
93
|
+
else
|
94
|
+
min = [minLength, maxLength].min
|
95
|
+
max = [minLength, maxLength].max
|
96
|
+
min = mainLength if min > mainLength
|
97
|
+
max = mainLength if max > mainLength
|
98
|
+
min = 1 if min < 1
|
99
|
+
max = 1 if max < 1
|
100
|
+
nu = [[0, rand(min..max) - 1]]
|
101
|
+
last = nu.last.last
|
102
|
+
sorting = true
|
103
|
+
i = 0
|
104
104
|
while sorting do
|
105
|
-
if (
|
106
|
-
|
107
|
-
|
105
|
+
if (mainLength - last) <= max
|
106
|
+
if last + 1 <= mainLength - 1
|
107
|
+
nu.push([last + 1, mainLength - 1])
|
108
|
+
end
|
109
|
+
sorting = false
|
108
110
|
else
|
109
|
-
nu.push([last+1, last+
|
110
|
-
last=nu.last[1]
|
111
|
+
nu.push([last+1, last + rand(min..max)])
|
111
112
|
end
|
113
|
+
last = nu.last.last
|
112
114
|
end
|
113
|
-
|
114
|
-
nu=[[0,0]]
|
115
|
+
return nu
|
115
116
|
end
|
116
|
-
return nu
|
117
117
|
end
|
118
118
|
##
|
119
119
|
# Uses math to turn an array into an array of diagonals.
|
data/lib/pxlsrt/smart.rb
CHANGED
@@ -20,7 +20,7 @@ module Pxlsrt
|
|
20
20
|
def self.smart(input, o={})
|
21
21
|
startTime=Time.now
|
22
22
|
defOptions={
|
23
|
-
:reverse =>
|
23
|
+
:reverse => false,
|
24
24
|
:vertical => false,
|
25
25
|
:diagonal => false,
|
26
26
|
:smooth => false,
|
@@ -32,7 +32,7 @@ module Pxlsrt
|
|
32
32
|
:middle => false
|
33
33
|
}
|
34
34
|
defRules={
|
35
|
-
:reverse =>
|
35
|
+
:reverse => :anything,
|
36
36
|
:vertical => [false, true],
|
37
37
|
:diagonal => [false, true],
|
38
38
|
:smooth => [false, true],
|
data/lib/pxlsrt/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pxlsrt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- EVA-01
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-08-
|
11
|
+
date: 2014-08-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -103,7 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
103
103
|
version: '0'
|
104
104
|
requirements: []
|
105
105
|
rubyforge_project:
|
106
|
-
rubygems_version: 2.
|
106
|
+
rubygems_version: 2.4.1
|
107
107
|
signing_key:
|
108
108
|
specification_version: 4
|
109
109
|
summary: Pixel sort PNG files.
|