term-ansicolor 1.1.5 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/CHANGES +3 -0
- data/README.rdoc +12 -3
- data/Rakefile +5 -2
- data/VERSION +1 -1
- data/bin/term_display +90 -0
- data/bin/term_mandel +52 -0
- data/examples/ColorTest.gif +0 -0
- data/examples/Mona_Lisa.jpg +0 -0
- data/examples/Stilleben.jpg +0 -0
- data/examples/lambda-red-plain.ppm +135 -0
- data/examples/lambda-red.png +0 -0
- data/examples/lambda-red.ppm +4 -0
- data/examples/pacman.jpg +0 -0
- data/examples/smiley.png +0 -0
- data/examples/smiley.txt +36 -0
- data/examples/wool.jpg +0 -0
- data/lib/term/ansicolor.rb +3 -1
- data/lib/term/ansicolor/attribute.rb +61 -15
- data/lib/term/ansicolor/ppm_reader.rb +96 -0
- data/lib/term/ansicolor/rgb_color_metrics.rb +161 -0
- data/lib/term/ansicolor/rgb_triple.rb +36 -6
- data/lib/term/ansicolor/version.rb +1 -1
- data/term-ansicolor.gemspec +13 -9
- data/tests/ansicolor_test.rb +1 -1
- data/tests/attribute_test.rb +43 -3
- data/tests/ppm_reader_test.rb +46 -0
- data/tests/rgb_color_metrics_test.rb +100 -0
- data/tests/rgb_triple_test.rb +47 -5
- metadata +292 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: af8a2335a9c7525731899d81ed738d42f1476acf
|
4
|
+
data.tar.gz: 39ad9bcec2cc2cb6e35e751abe0a9dcb1a874df3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4cf91d3f8b52f8440741ba9e84f3f436fedfaa27d10ffa52a95782e8e044c103e4fbfa423e349368afa88dedcaee11ca2b4672a448144c2b2f7336f961c9c2b0
|
7
|
+
data.tar.gz: dd425666ea88970b3da1ca256892e8c2da08a5c37a1f48328f452d5e41204392ac5f5d0a6611d3cb758601d58cbbefd74e50597152a71822ffce82836ac646b0
|
data/.gitignore
CHANGED
data/CHANGES
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
2013-05-16 - 1.2.0 * Add term_mandel and term_display executables.
|
2
|
+
* Implement configurable color metrics.
|
3
|
+
* Add gradient functionality for color attributes.
|
1
4
|
2013-04-18 - 1.1.5 * Add colortab executable to rubygem binary config
|
2
5
|
2013-03-26 - 1.1.4 * Easier access to color attributes via color(123) or
|
3
6
|
approximate html colors like color('#336caf').
|
data/README.rdoc
CHANGED
@@ -31,9 +31,18 @@ The homepage of this library is located at
|
|
31
31
|
|
32
32
|
== Examples
|
33
33
|
|
34
|
-
|
35
|
-
|
36
|
-
|
34
|
+
The following executables are provided with Term::ANSIColor:
|
35
|
+
|
36
|
+
* cdiff: colors a diff patch
|
37
|
+
* decolor: decolors any text file that was colored with ANSI escape sequences
|
38
|
+
* colortab: Displays a table of the 256 terminal colors with their indices and
|
39
|
+
nearest html equivalents.
|
40
|
+
* term_display: displays a ppm3 or ppm6 image file in the terminal. If the netpbm
|
41
|
+
programs are installed it can handle a lot of other image file formats.
|
42
|
+
* term_mandel: displays the mandelbrot set in the terminal
|
43
|
+
|
44
|
+
Additionally the file examples/example.rb in the source/gem-distribution shows
|
45
|
+
how this library can be used.
|
37
46
|
|
38
47
|
== Author
|
39
48
|
|
data/Rakefile
CHANGED
@@ -13,12 +13,15 @@ GemHadar do
|
|
13
13
|
description 'This library uses ANSI escape sequences to control the attributes of terminal output'
|
14
14
|
licenses << 'GPL-2'
|
15
15
|
test_dir 'tests'
|
16
|
-
ignore '.*.sw[pon]', 'pkg', 'Gemfile.lock', '.rvmrc', 'coverage'
|
16
|
+
ignore '.*.sw[pon]', 'pkg', 'Gemfile.lock', '.rvmrc', 'coverage', 'tags'
|
17
17
|
readme 'README.rdoc'
|
18
|
-
executables << 'cdiff' << 'decolor' << 'colortab'
|
18
|
+
executables << 'cdiff' << 'decolor' << 'colortab' << 'term_mandel' << 'term_display'
|
19
19
|
|
20
|
+
dependency 'tins', '~>0.8'
|
20
21
|
development_dependency 'simplecov'
|
21
22
|
|
23
|
+
post_install_message File.read(File.join(File.dirname(__FILE__), 'examples/smiley.txt'))
|
24
|
+
|
22
25
|
install_library do
|
23
26
|
destdir = "#{ENV['DESTDIR']}"
|
24
27
|
libdir = CONFIG["sitelibdir"]
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.2.0
|
data/bin/term_display
ADDED
@@ -0,0 +1,90 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'tempfile'
|
4
|
+
require 'term/ansicolor'
|
5
|
+
require 'tins/xt'
|
6
|
+
include Tins::GO
|
7
|
+
|
8
|
+
def provide_ppm_file(filename, opts)
|
9
|
+
pnmtopnm = `which pnmtopnm`
|
10
|
+
if pnmtopnm.empty?
|
11
|
+
STDERR.puts "You might consider installing netpbm to enable image conversion/scaling!"
|
12
|
+
File.new(filename, 'rb')
|
13
|
+
else
|
14
|
+
cmd = [ pnmtopnm.chomp! ]
|
15
|
+
ext = File.extname(filename)
|
16
|
+
scale = `which pamscale`.chomp!
|
17
|
+
console_scale = "#{scale} -#{opts['s']} #{opts['C']} #{opts['R']}"
|
18
|
+
cmd.unshift console_scale
|
19
|
+
aspect_scaling = "#{scale} -xscale #{opts['a']}"
|
20
|
+
cmd.unshift aspect_scaling
|
21
|
+
convert_to_pnm =
|
22
|
+
case ext
|
23
|
+
when /\A(\.ppm\d*|\.pnm|\z)/
|
24
|
+
''
|
25
|
+
when /\A.(jpe?g|exif|jfif)\z/i
|
26
|
+
'jpegtopnm'
|
27
|
+
when /\A.tiff?\z/i
|
28
|
+
'tifftopnm'
|
29
|
+
else
|
30
|
+
"#{ext[1..-1].downcase}topnm"
|
31
|
+
end
|
32
|
+
unless convert_to_pnm.empty?
|
33
|
+
convert_to_pnm = `which #{convert_to_pnm}`.chomp!
|
34
|
+
convert_to_pnm.empty? and fail "unknown pnm converter #{convert_to_pnm}"
|
35
|
+
cmd.unshift convert_to_pnm
|
36
|
+
end
|
37
|
+
temp = Tempfile.open(File.basename($0))
|
38
|
+
cmd *= '|'
|
39
|
+
STDERR.puts "Executing #{cmd.inspect}"
|
40
|
+
IO.popen(cmd, 'r+') do |converter|
|
41
|
+
File.open(filename, 'rb') do |input|
|
42
|
+
until input.eof?
|
43
|
+
converter.write input.read(8192)
|
44
|
+
end
|
45
|
+
converter.close_write
|
46
|
+
end
|
47
|
+
until converter.eof?
|
48
|
+
temp.write(converter.read)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
temp.tap(&:rewind)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def usage(rc = 0)
|
56
|
+
puts to <<-end
|
57
|
+
Usage: #$0 [OPTIONS] FILENAME"
|
58
|
+
|
59
|
+
Options are
|
60
|
+
|
61
|
+
-m METRIC for distance (METRIC = #{Term::ANSIColor::RGBColorMetrics.metrics * '|'})
|
62
|
+
-g yes|no use/don't use gray values, defaults to yes
|
63
|
+
-s xyfit|xyfill scaling strategy, defaults to xyfit
|
64
|
+
-a ASPECT x:y aspect, defaults to 2.2
|
65
|
+
-C COLS number of columns for rendering with aspect, defaults to max
|
66
|
+
-R ROWS number of rows for rendering with aspect, defaults to max - 1
|
67
|
+
-h this help
|
68
|
+
|
69
|
+
end
|
70
|
+
exit rc
|
71
|
+
end
|
72
|
+
|
73
|
+
opts = go 'hm:g:s:a:C:R:'
|
74
|
+
opts['h'] and usage
|
75
|
+
filename = ARGV.shift or usage 1
|
76
|
+
metric = Term::ANSIColor::RGBColorMetrics.metric(opts['m'] || 'CIELab')
|
77
|
+
gray = (opts['g'] || 'yes') == 'yes'
|
78
|
+
opts['s'] ||= 'xyfit'
|
79
|
+
opts['a'] ||= '2.2'
|
80
|
+
opts['C'] ||= Tins::Terminal.cols
|
81
|
+
opts['R'] ||= [ Tins::Terminal.rows - 1, 0 ].max
|
82
|
+
|
83
|
+
file = provide_ppm_file(filename, opts)
|
84
|
+
ppm = Term::ANSIColor::PPMReader.new(
|
85
|
+
file,
|
86
|
+
:metric => metric,
|
87
|
+
:gray => gray
|
88
|
+
)
|
89
|
+
|
90
|
+
puts ppm
|
data/bin/term_mandel
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'term/ansicolor'
|
4
|
+
require 'tins/xt'
|
5
|
+
require "complex"
|
6
|
+
include Tins::GO
|
7
|
+
|
8
|
+
@width, @height = Tins::Terminal.cols, Tins::Terminal.lines
|
9
|
+
|
10
|
+
def color_random
|
11
|
+
(1..3).map { rand(255) }
|
12
|
+
end
|
13
|
+
|
14
|
+
def draw_set(rx, ry)
|
15
|
+
sx = (rx.end - rx.begin).abs / @width
|
16
|
+
sy = (ry.end - ry.begin).abs / @height
|
17
|
+
|
18
|
+
ac = Term::ANSIColor
|
19
|
+
color =
|
20
|
+
ac::Attribute[ color_random ].gradient_to(ac::Attribute[ color_random ], :steps => 16) +
|
21
|
+
ac::Attribute[ color_random ].gradient_to(ac::Attribute[ color_random ], :steps => 16) +
|
22
|
+
ac::Attribute[ color_random ].gradient_to(ac::Attribute[ color_random ], :steps => 16) +
|
23
|
+
ac::Attribute[ color_random ].gradient_to(ac::Attribute[ color_random ], :steps => 16) +
|
24
|
+
ac::Attribute[ color_random ].gradient_to(ac::Attribute[ color_random ], :steps => 16) +
|
25
|
+
ac::Attribute[ color_random ].gradient_to(ac::Attribute[ color_random ], :steps => 16) +
|
26
|
+
ac::Attribute[ color_random ].gradient_to(ac::Attribute[ color_random ], :steps => 16) +
|
27
|
+
ac::Attribute[ color_random ].gradient_to(ac::Attribute['#000'], :steps => 16)
|
28
|
+
iters = color.size - 2
|
29
|
+
|
30
|
+
text = ''
|
31
|
+
for j in 0...@height
|
32
|
+
for i in 0...@width
|
33
|
+
n, z_n = 0, Complex(0, 0)
|
34
|
+
c = Complex(sx * i + rx.begin, sy * j + ry.begin)
|
35
|
+
while n <= iters
|
36
|
+
break if z_n.abs > 2
|
37
|
+
z_n = z_n ** 2 + c
|
38
|
+
n += 1
|
39
|
+
end
|
40
|
+
text << ac.on_color(color[n]) << ' '
|
41
|
+
end
|
42
|
+
text << ac.reset << "\n"
|
43
|
+
end
|
44
|
+
puts text
|
45
|
+
end
|
46
|
+
|
47
|
+
opts = go 'x:y:'
|
48
|
+
|
49
|
+
rx = opts['x'].full? { |r| Range.new(*(r.split('..', 2).map(&:to_f))) } || (-2.0..1.0)
|
50
|
+
ry = opts['y'].full? { |r| Range.new(*(r.split('..', 2).map(&:to_f))) } || (-1.0..1.0)
|
51
|
+
|
52
|
+
draw_set rx, ry
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,135 @@
|
|
1
|
+
P3
|
2
|
+
44 22
|
3
|
+
255
|
4
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
5
|
+
249 242 242 236 209 209 230 188 188 229 182 182 229 182 182 230 188 187 235 207 207 247 238 238
|
6
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
7
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
8
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
9
|
+
255 255 255 255 255 255 255 255 255 255 255 255
|
10
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 246 234 234 215 137 136
|
11
|
+
203 34 30 206 30 24 206 29 24 206 28 24 207 29 24 206 28 24 206 28 24 203 30 25
|
12
|
+
213 126 125 244 229 229 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
13
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
14
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
15
|
+
255 255 255 255 255 255 255 255 255 255 255 255
|
16
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 247 237 238 202 67 64 206 28 24
|
17
|
+
205 29 24 202 37 32 207 68 65 207 96 95 208 91 89 204 52 49 203 28 23 206 28 24
|
18
|
+
206 28 24 202 51 47 234 207 207 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
19
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
20
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
21
|
+
255 255 255 255 255 255 255 255 255 255 255 255
|
22
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 227 184 184 205 29 24 212 124 123
|
23
|
+
241 221 221 253 250 250 255 255 255 255 255 255 255 255 255 255 254 254 249 239 239 230 194 194
|
24
|
+
206 82 80 206 28 24 202 36 32 234 207 207 255 255 255 255 255 255 255 255 255 255 255 255
|
25
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
26
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
27
|
+
255 255 255 255 255 255 255 255 255 255 255 255
|
28
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 243 230 230 234 204 203 250 245 245
|
29
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
30
|
+
250 244 244 209 118 117 206 29 24 202 47 43 242 223 223 255 255 255 255 255 255 255 255 255
|
31
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
32
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
33
|
+
255 255 255 255 255 255 255 255 255 255 255 255
|
34
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
35
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
36
|
+
255 255 255 250 245 245 206 98 97 206 28 24 202 74 72 247 237 238 255 255 255 255 255 255
|
37
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
38
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
39
|
+
255 255 255 255 255 255 255 255 255 255 255 255
|
40
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
41
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
42
|
+
255 255 255 255 255 255 246 234 234 201 41 37 206 28 24 206 105 104 252 247 247 255 255 255
|
43
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
44
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
45
|
+
255 255 255 255 255 255 255 255 255 255 255 255
|
46
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
47
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
48
|
+
255 255 255 254 251 252 215 146 146 204 28 24 206 28 24 206 29 24 213 137 136 255 253 253
|
49
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
50
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
51
|
+
255 255 255 255 255 255 255 255 255 255 255 255
|
52
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
53
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
54
|
+
252 248 249 212 133 132 205 28 24 206 28 24 206 29 24 206 29 24 204 29 24 221 169 168
|
55
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
56
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
57
|
+
255 255 255 255 255 255 255 255 255 255 255 255
|
58
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
59
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 250 245 245
|
60
|
+
209 118 117 205 28 24 206 29 24 206 28 24 206 28 24 206 28 24 206 28 24 202 29 25
|
61
|
+
231 198 198 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
62
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
63
|
+
255 255 255 255 255 255 255 255 255 255 255 255
|
64
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
65
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 249 240 240 207 104 103
|
66
|
+
206 29 24 206 28 24 206 29 24 206 28 24 206 28 24 206 28 24 205 32 27 206 29 24
|
67
|
+
202 44 40 240 219 219 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
68
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
69
|
+
255 255 255 255 255 255 255 255 255 255 255 255
|
70
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
71
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 246 236 236 206 90 89 206 28 24
|
72
|
+
206 28 24 206 28 24 206 28 24 206 28 24 206 28 24 206 105 103 243 228 229 204 92 91
|
73
|
+
206 28 24 202 71 68 246 235 235 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
74
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
75
|
+
255 255 255 255 255 255 255 255 255 255 255 255
|
76
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
77
|
+
255 255 255 255 255 255 255 255 255 255 255 255 244 229 229 203 77 75 206 28 24 206 28 24
|
78
|
+
206 28 24 206 29 24 206 28 24 205 30 24 210 120 118 250 245 245 255 255 255 245 233 233
|
79
|
+
202 64 61 206 28 24 206 101 100 251 246 247 255 255 255 255 255 255 255 255 255 255 255 255
|
80
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
81
|
+
255 255 255 255 255 255 255 255 255 255 255 255
|
82
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
83
|
+
255 255 255 255 255 255 255 255 255 241 222 221 203 64 62 206 28 24 206 28 24 206 28 24
|
84
|
+
206 28 24 206 29 24 205 29 24 213 135 134 252 249 249 255 255 255 255 255 255 255 255 255
|
85
|
+
239 216 215 202 38 34 206 30 24 212 132 130 255 253 253 255 255 255 255 255 255 255 255 255
|
86
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
87
|
+
255 255 255 255 255 255 255 255 255 255 255 255
|
88
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
89
|
+
255 255 255 255 255 255 237 212 212 202 53 49 206 28 24 206 28 24 206 28 24 206 28 24
|
90
|
+
206 28 24 204 29 24 217 152 151 254 252 252 255 255 255 255 255 255 255 255 255 255 255 255
|
91
|
+
255 255 255 229 192 192 202 29 25 204 29 24 220 164 164 255 255 255 255 255 255 255 255 255
|
92
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
93
|
+
255 255 255 255 255 255 255 255 255 255 255 255
|
94
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
95
|
+
255 255 255 233 203 203 203 41 36 206 29 24 205 28 24 206 28 24 206 28 24 206 28 24
|
96
|
+
204 29 25 221 167 167 255 254 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
97
|
+
255 255 255 255 255 255 219 162 162 205 29 24 202 30 25 230 194 194 255 255 255 255 255 255
|
98
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
99
|
+
255 255 255 255 255 255 255 255 255 255 255 255
|
100
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
101
|
+
229 191 191 202 32 28 206 29 24 206 28 24 206 29 24 206 28 24 206 29 24 203 31 26
|
102
|
+
227 182 182 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
103
|
+
255 255 255 255 255 255 254 252 253 212 131 130 206 30 24 203 41 35 236 211 211 255 255 255
|
104
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 252 250 250
|
105
|
+
249 243 243 251 247 247 255 255 255 255 255 255
|
106
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 224 177 177
|
107
|
+
203 29 25 206 28 24 206 28 24 206 28 24 206 28 24 206 29 24 203 38 34 232 197 197
|
108
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
109
|
+
255 255 255 255 255 255 255 255 255 251 246 246 205 100 98 206 29 24 203 42 38 229 192 191
|
110
|
+
255 254 254 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 254 252 252 214 141 140
|
111
|
+
203 26 22 206 130 130 255 255 255 255 255 255
|
112
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 254 254 220 163 163 204 29 24
|
113
|
+
206 28 24 206 28 24 206 28 24 206 28 24 206 29 24 203 49 46 236 209 209 255 255 255
|
114
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
115
|
+
255 255 255 255 255 255 255 255 255 255 255 255 247 235 235 202 69 67 206 29 24 205 29 24
|
116
|
+
209 96 94 224 166 165 232 190 190 233 203 203 233 195 194 225 170 170 209 95 93 205 29 24
|
117
|
+
206 28 24 213 147 147 255 255 255 255 255 255
|
118
|
+
255 255 255 255 255 255 255 255 255 255 255 255 254 252 252 216 149 148 205 28 24 206 29 24
|
119
|
+
206 28 24 206 28 24 206 28 24 206 28 24 202 62 59 239 219 219 255 255 255 255 255 255
|
120
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
121
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 243 226 226 203 72 69 206 29 24
|
122
|
+
206 28 24 206 28 24 206 28 24 206 28 24 206 28 24 206 28 24 206 28 24 206 29 24
|
123
|
+
204 79 76 246 233 234 255 255 255 255 255 255
|
124
|
+
255 255 255 255 255 255 255 255 255 252 250 250 209 137 136 202 33 29 203 33 29 203 33 28
|
125
|
+
203 33 28 203 33 28 203 34 28 203 78 76 243 228 228 255 255 255 255 255 255 255 255 255
|
126
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
127
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 249 241 241 223 164 163
|
128
|
+
205 75 73 203 29 24 205 28 24 206 28 24 206 28 24 203 30 25 208 90 88 224 174 173
|
129
|
+
250 244 244 255 255 255 255 255 255 255 255 255
|
130
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
131
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
132
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
133
|
+
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
134
|
+
255 255 255 248 241 241 243 228 228 242 227 226 243 228 228 249 244 244 255 255 255 255 255 255
|
135
|
+
255 255 255 255 255 255 255 255 255 255 255 255
|
Binary file
|
@@ -0,0 +1,4 @@
|
|
1
|
+
P6
|
2
|
+
44 22
|
3
|
+
255
|
4
|
+
������������������������������漼嶶嶶漻�����������������������������������������������������������������������������������������������������������������"��������~}����������������������������������������������������������������������������������������������������C@���% �DA�`_�[Y�41����3/���������������������������������������������������������������������������������������������㸸��|{�������������������������RP��$ �������������������������������������������������������������������������������������������������������������������������������vu��/+�������������������������������������������������������������������������������������������������������������������������������ba��JH�������������������������������������������������������������������������������������������������������������������������������)%��ih������������������������������������������������������������������������������������������������������������������������ג����Չ�������������������������������������������������������������������������������������������������������������������ԅ������ݩ��������������������������������������������������������������������������������������������������������������vu�����������������������������������������������������������������������������������������������������������������hg������� ��,(����������������������������������������������������������������������������������������������������ZY�������ig����\[��GD����������������������������������������������������������������������������������������������MK�������xv����������@=��ed����������������������������������������������������������������������������������������@>������Շ�����������������&"�Ԅ�����������������������������������������������������������������������������������51������٘������������������������ܤ�����������������������������������������������������������������������������)$������ݧ�������������������������ۢ������������������������������������������������������������������������忿� ������㶶������������������������������ԃ���)#����������������������������������������������������������������������&"����������������������������������������db��*&������������������������֍���������������������������ܣ��������1.����������������������������������������������EC���`^থ达������᪪�_]��Փ����������������������ؕ��������>;����������������������������������������������������HE����������OL���������������������щ��!�!�!�!�!�"�NL���������������������������������������������������������ߤ��KI������ZX������������������������������������������������������������������������������������������������������������������������������������������������
|
data/examples/pacman.jpg
ADDED
Binary file
|
data/examples/smiley.png
ADDED
Binary file
|
data/examples/smiley.txt
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
[48;5;0m [48;5;0m [48;5;232m [48;5;234m [48;5;235m [48;5;236m [48;5;236m [48;5;236m [48;5;235m [48;5;234m [48;5;0m [48;5;0m [0m
|
2
|
+
[48;5;0m [48;5;235m [48;5;58m [48;5;100m [48;5;143m [48;5;142m [48;5;185m [48;5;185m [48;5;185m [48;5;184m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;184m [48;5;184m [48;5;142m [48;5;142m [48;5;142m [48;5;2m [48;5;58m [48;5;234m [48;5;0m [0m
|
3
|
+
[48;5;0m [48;5;234m [48;5;101m [48;5;143m [48;5;185m [48;5;185m [48;5;228m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;184m [48;5;142m [48;5;100m [48;5;58m [48;5;233m [48;5;0m [0m
|
4
|
+
[48;5;0m [48;5;0m [48;5;59m [48;5;143m [48;5;186m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;184m [48;5;100m [48;5;58m [48;5;0m [0m
|
5
|
+
[48;5;0m [48;5;240m [48;5;143m [48;5;186m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;142m [48;5;58m [48;5;0m [0m
|
6
|
+
[48;5;0m [48;5;233m [48;5;101m [48;5;186m [48;5;229m [48;5;229m [48;5;229m [48;5;229m [48;5;229m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;2m [48;5;232m [48;5;0m [0m
|
7
|
+
[48;5;0m [48;5;233m [48;5;101m [48;5;186m [48;5;229m [48;5;229m [48;5;229m [48;5;229m [48;5;229m [48;5;229m [48;5;229m [48;5;229m [48;5;229m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;100m [48;5;232m [48;5;0m [0m
|
8
|
+
[48;5;0m [48;5;0m [48;5;101m [48;5;186m [48;5;229m [48;5;229m [48;5;229m [48;5;229m [48;5;229m [48;5;229m [48;5;229m [48;5;229m [48;5;229m [48;5;229m [48;5;229m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;58m [48;5;0m [0m
|
9
|
+
[48;5;0m [48;5;236m [48;5;143m [48;5;228m [48;5;228m [48;5;229m [48;5;229m [48;5;229m [48;5;229m [48;5;229m [48;5;229m [48;5;229m [48;5;229m [48;5;229m [48;5;229m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;185m [48;5;185m [48;5;143m [48;5;185m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;142m [48;5;184m [48;5;184m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;142m [48;5;235m [48;5;0m [0m
|
10
|
+
[48;5;0m [48;5;58m [48;5;185m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;229m [48;5;229m [48;5;229m [48;5;229m [48;5;229m [48;5;229m [48;5;229m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;185m [48;5;58m [48;5;0m [48;5;236m [48;5;142m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;142m [48;5;236m [48;5;0m [48;5;58m [48;5;184m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;58m [48;5;0m [0m
|
11
|
+
[48;5;0m [48;5;101m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;237m [48;5;0m [48;5;142m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;142m [48;5;0m [48;5;58m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;58m [48;5;0m [0m
|
12
|
+
[48;5;0m [48;5;58m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;143m [48;5;0m [48;5;58m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;58m [48;5;0m [48;5;142m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;58m [48;5;0m [0m
|
13
|
+
[48;5;0m [48;5;238m [48;5;185m [48;5;227m [48;5;227m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;228m [48;5;143m [48;5;0m [48;5;58m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;58m [48;5;0m [48;5;142m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;237m [48;5;0m [0m
|
14
|
+
[48;5;0m [48;5;0m [48;5;185m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;228m [48;5;228m [48;5;228m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;237m [48;5;0m [48;5;142m [48;5;227m [48;5;227m [48;5;227m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;142m [48;5;0m [48;5;58m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;142m [48;5;0m [0m
|
15
|
+
[48;5;0m [48;5;58m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;185m [48;5;58m [48;5;0m [48;5;236m [48;5;142m [48;5;227m [48;5;227m [48;5;227m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;142m [48;5;236m [48;5;0m [48;5;58m [48;5;184m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;58m [48;5;0m [0m
|
16
|
+
[48;5;0m [48;5;142m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;184m [48;5;185m [48;5;142m [48;5;184m [48;5;227m [48;5;227m [48;5;227m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;142m [48;5;184m [48;5;184m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;142m [48;5;0m [0m
|
17
|
+
[48;5;0m [48;5;0m [48;5;184m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;0m [0m
|
18
|
+
[48;5;0m [48;5;232m [48;5;184m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;227m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;232m [48;5;0m [0m
|
19
|
+
[48;5;0m [48;5;232m [48;5;184m [48;5;227m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;232m [48;5;0m [0m
|
20
|
+
[48;5;0m [48;5;0m [48;5;184m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;0m [0m
|
21
|
+
[48;5;0m [48;5;142m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;2m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;100m [48;5;184m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;142m [48;5;0m [0m
|
22
|
+
[48;5;0m [48;5;58m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;100m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;100m [48;5;184m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;58m [48;5;0m [0m
|
23
|
+
[48;5;0m [48;5;142m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;184m [48;5;142m [48;5;142m [48;5;100m [48;5;58m [48;5;184m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;58m [48;5;100m [48;5;142m [48;5;142m [48;5;184m [48;5;184m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;142m [48;5;0m [0m
|
24
|
+
[48;5;0m [48;5;237m [48;5;184m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;142m [48;5;235m [48;5;142m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;142m [48;5;235m [48;5;142m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;237m [48;5;0m [0m
|
25
|
+
[48;5;0m [48;5;58m [48;5;184m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;58m [48;5;58m [48;5;184m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;58m [48;5;58m [48;5;184m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;58m [48;5;0m [0m
|
26
|
+
[48;5;0m [48;5;58m [48;5;184m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;142m [48;5;236m [48;5;58m [48;5;142m [48;5;11m [48;5;11m [48;5;11m [48;5;142m [48;5;58m [48;5;236m [48;5;142m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;58m [48;5;0m [0m
|
27
|
+
[48;5;0m [48;5;58m [48;5;184m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;142m [48;5;58m [48;5;232m [48;5;2m [48;5;142m [48;5;184m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;142m [48;5;2m [48;5;232m [48;5;58m [48;5;142m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;58m [48;5;0m [0m
|
28
|
+
[48;5;0m [48;5;235m [48;5;142m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;142m [48;5;58m [48;5;232m [48;5;236m [48;5;2m [48;5;142m [48;5;184m [48;5;184m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;184m [48;5;142m [48;5;2m [48;5;236m [48;5;232m [48;5;58m [48;5;142m [48;5;184m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;142m [48;5;235m [48;5;0m [0m
|
29
|
+
[48;5;0m [48;5;58m [48;5;184m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;142m [48;5;100m [48;5;58m [48;5;232m [48;5;0m [48;5;232m [48;5;237m [48;5;58m [48;5;58m [48;5;2m [48;5;2m [48;5;2m [48;5;58m [48;5;58m [48;5;237m [48;5;232m [48;5;0m [48;5;232m [48;5;58m [48;5;100m [48;5;142m [48;5;184m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;58m [48;5;0m [0m
|
30
|
+
[48;5;0m [48;5;232m [48;5;100m [48;5;184m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;184m [48;5;184m [48;5;142m [48;5;142m [48;5;142m [48;5;142m [48;5;142m [48;5;184m [48;5;184m [48;5;184m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;100m [48;5;232m [48;5;0m [0m
|
31
|
+
[48;5;0m [48;5;232m [48;5;2m [48;5;184m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;2m [48;5;232m [48;5;0m [0m
|
32
|
+
[48;5;0m [48;5;58m [48;5;142m [48;5;184m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;142m [48;5;58m [48;5;0m [0m
|
33
|
+
[48;5;0m [48;5;58m [48;5;100m [48;5;184m [48;5;184m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;184m [48;5;100m [48;5;58m [48;5;0m [0m
|
34
|
+
[48;5;0m [48;5;233m [48;5;58m [48;5;100m [48;5;142m [48;5;184m [48;5;184m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;184m [48;5;142m [48;5;100m [48;5;58m [48;5;233m [48;5;0m [0m
|
35
|
+
[48;5;0m [48;5;234m [48;5;58m [48;5;2m [48;5;142m [48;5;142m [48;5;142m [48;5;184m [48;5;184m [48;5;184m [48;5;184m [48;5;11m [48;5;11m [48;5;11m [48;5;184m [48;5;184m [48;5;184m [48;5;184m [48;5;142m [48;5;142m [48;5;142m [48;5;2m [48;5;58m [48;5;234m [48;5;0m [0m
|
36
|
+
[48;5;0m [48;5;0m [48;5;233m [48;5;235m [48;5;235m [48;5;236m [48;5;235m [48;5;235m [48;5;233m [48;5;0m [48;5;0m [0m
|
data/examples/wool.jpg
ADDED
Binary file
|
data/lib/term/ansicolor.rb
CHANGED
@@ -6,6 +6,7 @@ module Term
|
|
6
6
|
require 'term/ansicolor/version'
|
7
7
|
require 'term/ansicolor/attribute'
|
8
8
|
require 'term/ansicolor/rgb_triple'
|
9
|
+
require 'term/ansicolor/ppm_reader'
|
9
10
|
|
10
11
|
Attribute.set :clear , 0 # String#clear is already used to empty string in Ruby 1.9
|
11
12
|
Attribute.set :reset , 0 # synonym for :clear
|
@@ -202,7 +203,8 @@ module Term
|
|
202
203
|
end
|
203
204
|
|
204
205
|
def on_color(name, string = nil, &block)
|
205
|
-
|
206
|
+
attribute = Attribute[name] or raise ArgumentError, "unknown attribute #{name.inspect}"
|
207
|
+
color("on_#{attribute.name}", string, &block)
|
206
208
|
end
|
207
209
|
|
208
210
|
class << self
|
@@ -3,16 +3,37 @@ module Term
|
|
3
3
|
class Attribute
|
4
4
|
@__store__ = {}
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
6
|
+
if RUBY_VERSION < '1.9'
|
7
|
+
@__order__ = []
|
8
|
+
|
9
|
+
def self.set(name, code, options = {})
|
10
|
+
name = name.to_sym
|
11
|
+
result = @__store__[name] = new(name, code, options)
|
12
|
+
@__order__ << name
|
13
|
+
@rgb_colors = nil
|
14
|
+
result
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.attributes(&block)
|
18
|
+
@__order__.map { |name| @__store__[name] }
|
19
|
+
end
|
20
|
+
else
|
21
|
+
def self.set(name, code, options = {})
|
22
|
+
name = name.to_sym
|
23
|
+
result = @__store__[name] = new(name, code, options)
|
24
|
+
@rgb_colors = nil
|
25
|
+
result
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.attributes(&block)
|
29
|
+
@__store__.each_value(&block)
|
30
|
+
end
|
11
31
|
end
|
12
32
|
|
13
33
|
def self.[](name)
|
14
34
|
case
|
15
35
|
when self === name then name
|
36
|
+
when Array === name then nearest_rgb_color name
|
16
37
|
when name.to_s =~ /\A(on_)?(\d+)\z/ then get "#$1color#$2"
|
17
38
|
when name.to_s =~ /\A#([0-9a-f]{3}){1,2}\z/i then nearest_rgb_color name
|
18
39
|
when name.to_s =~ /\Aon_#([0-9a-f]{3}){1,2}\z/i then nearest_rgb_on_color name
|
@@ -24,10 +45,6 @@ module Term
|
|
24
45
|
@__store__[name.to_sym]
|
25
46
|
end
|
26
47
|
|
27
|
-
def self.attributes(&block)
|
28
|
-
@__store__.each_value(&block)
|
29
|
-
end
|
30
|
-
|
31
48
|
def self.rgb_colors(&block)
|
32
49
|
@rgb_colors ||= attributes.select(&:rgb_color?).each(&block)
|
33
50
|
end
|
@@ -36,14 +53,22 @@ module Term
|
|
36
53
|
@named_attributes ||= attributes.reject(&:rgb_color?).each(&block)
|
37
54
|
end
|
38
55
|
|
39
|
-
def self.nearest_rgb_color(color)
|
56
|
+
def self.nearest_rgb_color(color, options = {})
|
40
57
|
rgb = RGBTriple[color]
|
41
|
-
|
58
|
+
colors = rgb_colors
|
59
|
+
if options.key?(:gray) && !options[:gray]
|
60
|
+
colors = colors.reject(&:gray?)
|
61
|
+
end
|
62
|
+
colors.reject(&:background?).min_by { |c| c.distance_to(rgb, options) }
|
42
63
|
end
|
43
64
|
|
44
|
-
def self.nearest_rgb_on_color(color)
|
65
|
+
def self.nearest_rgb_on_color(color, options = {})
|
45
66
|
rgb = RGBTriple[color]
|
46
|
-
|
67
|
+
colors = rgb_colors
|
68
|
+
if options.key?(:gray) && !options[:gray]
|
69
|
+
colors = colors.reject(&:gray?)
|
70
|
+
end
|
71
|
+
colors.select(&:background?).min_by { |c| c.distance_to(rgb, options) }
|
47
72
|
end
|
48
73
|
|
49
74
|
def initialize(name, code, options = {})
|
@@ -66,6 +91,10 @@ module Term
|
|
66
91
|
end
|
67
92
|
end
|
68
93
|
|
94
|
+
def apply(string = nil, &block)
|
95
|
+
::Term::ANSIColor.color(self, string, &block)
|
96
|
+
end
|
97
|
+
|
69
98
|
def background?
|
70
99
|
@name.to_s.start_with?('on_')
|
71
100
|
end
|
@@ -76,20 +105,37 @@ module Term
|
|
76
105
|
!!@rgb
|
77
106
|
end
|
78
107
|
|
108
|
+
def gray?
|
109
|
+
rgb_color? && to_rgb_triple.gray?
|
110
|
+
end
|
111
|
+
|
79
112
|
def to_rgb_triple
|
80
113
|
@rgb
|
81
114
|
end
|
82
115
|
|
83
|
-
def distance_to(other)
|
116
|
+
def distance_to(other, options = {})
|
84
117
|
if our_rgb = to_rgb_triple and
|
85
118
|
other.respond_to?(:to_rgb_triple) and
|
86
119
|
other_rgb = other.to_rgb_triple
|
87
120
|
then
|
88
|
-
our_rgb.distance_to
|
121
|
+
our_rgb.distance_to(other_rgb, options)
|
89
122
|
else
|
90
123
|
1 / 0.0
|
91
124
|
end
|
92
125
|
end
|
126
|
+
|
127
|
+
def gradient_to(other, options = {})
|
128
|
+
if our_rgb = to_rgb_triple and
|
129
|
+
other.respond_to?(:to_rgb_triple) and
|
130
|
+
other_rgb = other.to_rgb_triple
|
131
|
+
then
|
132
|
+
our_rgb.gradient_to(other_rgb, options).map do |rgb_triple|
|
133
|
+
self.class.nearest_rgb_color(rgb_triple, options)
|
134
|
+
end
|
135
|
+
else
|
136
|
+
[]
|
137
|
+
end
|
138
|
+
end
|
93
139
|
end
|
94
140
|
end
|
95
141
|
end
|