term-ansicolor 1.1.5 → 1.2.0
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/.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
|